基于STM32的超声波测距系统的设计.docx
- 文档编号:11525782
- 上传时间:2023-03-14
- 格式:DOCX
- 页数:36
- 大小:1,004.05KB
基于STM32的超声波测距系统的设计.docx
《基于STM32的超声波测距系统的设计.docx》由会员分享,可在线阅读,更多相关《基于STM32的超声波测距系统的设计.docx(36页珍藏版)》请在冰豆网上搜索。
本科毕业设计(论文)
学院(部) 机电工程学院
题目 基于STM32的超声波测距系统设计
年级 2014级 专业 电气工程及其自动化
班级 14电气 学号 1429402053
姓名蒋旭
指导老师李晓旭 职称副教授
论文提交日期 2018年5月19号
目录
摘要 1
Abstract 2
前言 3
第一章绪论 4
1.1超声波测距的发展现状以及未来发展趋势 4
1.2本设计的研究内容和意义 5
1.2.1本设计的研究内容 5
1.2.2本设计的研究意义 5
第二章硬件方案设计 6
2.1控制系统的设计要求 6
2.2系统总体设计思路及框图 6
2.3控制芯片的选择和介绍 6
2.4单片机最小系统模块设计 7
2.5外部电路模块化设计 8
2.5.1电压转换模块 8
2.5.2超声波模块 10
2.5.3液晶显示模块 12
2.5.4程序下载及复位模块 13
第三章软件部分的设计 15
3.1距离显示程序 15
3.1.15110液晶屏显示 15
3.1.2串口显示距离 19
3.2测距方法及框图设计 21
3.2.1单次测距主程序框图 21
3.2.2多次测距主函数与中断程序框图 23
3.3STM32工程的新建 26
第四章性能测试及实验 28
4.1测试条件 28
4.2测试方法 28
4.3测试结果 28
4.3.15110液晶屏显示测试结果 28
4.3.2串口通信显示测试结果 28
4.4测量性能评价 29
4.5测距电路精度改进 29
第五章总结与展望 31
5.1总结 31
5.2展望 31
参考文献 32
致谢 33
摘要
本文提出了一种基于STM32微处理器的超声波测距系统的设计方案,此次设计选取的超声波模块型号为HC-SR04,利用定时器测量发射信号跟接收到回响信号之间的时间差,根据公式得出本次测量的数据。
此次设计软硬件方面涉及到STM32单片机,HC-SR04超声波模块,5110液晶显示屏,定时器,中断及keil5软件的编程。
实验研究表明超声波测距精度到0.3mm。
关键词:
STM32单片机;HC-SR04;超声波测距;keil5
Abstract
AnultrasonicdistancemeasuringsystembasedonSTM32smicrocontrollerwasproposed.Theselectedsensorwasanon-contactHC-SR04ultrasonicrangingmodule.Thetimerusedtomeasurethetimedifferencebetweentheultrasonicsignalandthereverberationsignalwassubstitutedintotheformulatocompletethedistance.Measurement.ThedesignofhardwareandsoftwarerelatedtotheSTM32microcontroller,HC-SR04ultrasonicmodule,5110liquidcrystaldisplay,timer,interruptandkeil5softwareprogramming.Experimentalstudieshaveshownthatultrasonicrangingaccuracyto0.3mm.
Keywords:
STM32Microcontroller;HC-SR04;ultrasonicranging;keil5
前言
从古至今,科学家们致力于对测距方法的研究,发展出了很多不同的测量方法,非接触式测量就是其中一种。
伴随着科学技术通信技术的迅猛发展,大量非接触式测距的研究也被科学的滚轮不停地向前推动。
非接触式测量的研究不仅包括红外线与激光,还包括微波以及红外,还有超声波等。
在这之中,激光测距的精度是这些里面最高的,但是特别容易被周围环境所影响,并且激光测距后期的检测与维护成本相对较高,不是很适合在日常社会生活以及普通工作的应用,大多是应用于军事航空等高端专业领域。
再谈微波测距,微波测距的电路部分的线路复杂,制作维护成本非常高,只适用于军事、精密工业等专业领域。
与之相反,红外测距成本较低,不过精度比较差,以及方向性不是特别好,只适用于粗略测量,实用价值不高。
而超声波测距模块比较容易集成,制作相对简单点,成品造价不会太高[1]。
除此之外,超声波测距可以完成在固体内部、空气中和液面下的测量,适用领域较广。
在低成本测距领域,超声波传播速度远低于红外线,如果距离相同,测量时间比之红外线增加很多,降低测量难度,减少测量误差。
本次毕业设计以此为背景,借助STM32单片机和HC-SR04超声波模块,设计出了一个超声波测距系统。
此系统主要利用超声波传感器完成声能与电能之间的转换,控制定时器驱动超声波发射器,用定时器计算超声波信号发出到接收到回响信号的时间间隔,来实现测距功能[2]。
超声波测距属于一种经典的非接触式测量。
它同时具备具备定向性能好、通信能量集中衰减小和具备较强反射能力等一系列优点。
所以超声波测距在现代工控、工程定点测量以及人机交互等领域应用非常广泛,同时,在日常生活中也能经常遇到如倒车雷达,建筑测量等超声波相关应用。
综上超声波测距的研究是非常有前景的,本次的研究很有意义。
第一章绪论
1.1超声波测距的发展现状以及未来发展趋势
先谈国外,就目前所能查阅到的资料而言,关于超声波的研究最早是科学家高尔顿的气哨实验[3],高尔顿生活于18世纪,是18世纪著名的科学研究者。
气哨实验是人类历史上第一次通过实验产生高频声波,是科学史上的里程碑。
但是那个时代有关超声波的研究也止步于此了,由于技术层面不达标,超声波的相关概念依旧鲜为人知。
直至一战爆发,超声波被逐渐应用于军事领域上,僵局才被打破。
一战期间,德国有一个著名科学家利用晶体传感器完成了发出与接收超声波的实验,由于此项实验是在水下进行的,并且只能完成低频波的接收,因此这项研究可被应用于水下物体检测和通信,大大推动了潜水艇的研究和发展,这位科学家的名字叫做郎之万。
在此之后,利用超声波的行业越来越多,超声波的应用领域也越来越广泛。
索科洛夫在1928年第一次提出超声波探伤的概念,利用超声波特性完成对金属内部是否存在缺损的检测。
1930年,穆尔豪瑟提出的超声波检测方法申请专利。
超声波相关研究的发展更进一步[4]。
1935年,索科洛夫发表超声波相关论文,叙述了超声波水下穿透测试和发表相关数据。
同时期伯格曼出版了《超声波》,书中对超声波数据进行了更完整的叙述。
这些都是早期有关超声波的发展所能查阅到的比较可信比较系统的资料,对后来超声波事业的研究与发展有着重要影响。
探伤仪是超声波的一个重要应用,有关探伤仪的研究最先出现在费尔斯通和斯普罗尔的论文中。
以此研究为基础,科学家们对超声波应用的理解更加全面。
即使到了现在,超声波在无损检测之中的地位依然无可撼动。
再看国内,超声波研究也取得了极大的进展。
例如,国内实验室已经系统地研究了超声波测距的方向,并且得到了大量令人信服的数据和研究成果。
从国内发表的论文来看,本国科学家对超声波距离测量的原理做出了详细的解释,对许多超声波相关实验数据也做出了令人信服的分析,各中情况可以参见李茂山老师所写的《超声波原理及实践技术》,解释非常详细,对初学者也非常友好。
厦门大学佟锋教授也为中国超声波技术的发展做出了卓越贡献,他提出的改进高精度测距的方法在超声波精度研究方面具有重大意义。
根据佟教授的结论,可以得知测距误差是回波脉冲检测方法本身造成的。
佟教授通过实验完成了回波包络方程的验证,得出了软硬件设计的改进方案。
尽管就目前的研究成果而言,中国的超声波测距技术可以讲是比较成熟了,但与其他发达国家相比,仍然还是有相当大的一段差距,尤其是精度方面。
中国科技方面正处于高速发展时期,有差距并不是坏事,有差距才有动力。
因此更应该重点研究逐个突破,为中国超声波技术的发展献上绵薄之力。
科学研究的不断进步是以高精度高质量的实验仪器为基础的,所以提高对精度研究的重视刻不容缓。
综上,可以看出超声波测距的发展前景依然十分乐观,甚至可以说的前景非常明朗。
超声波存在着巨大的市场,这得益于它成本较低,操作方便,适应性强。
超声波测距与人们的生活有着丝丝缕缕的联系,密不可分,相信在未来也会给人们的日常生活带来更大的惊喜。
1.2本设计的研究内容和意义
1.2.1本设计的研究内容
现在是工业4.0时代,有很多的行业都会涉及超声波测距。
如倒车雷达、现代工业自动控制和工业现场的勘测等。
超声波测距已经在无形中对日常生活造成影响,为人们提供各种便利。
本次毕业设计的目标是设计出基于STM32单片机应用超声波模块完成测距的系统。
本次设计主要利用超声波传感器完成声能与电能之间的转换,控制定时器驱动超声波发射器,利用定时器计算超声波信号发出到接收到回响信号的时间间隔,以实现测距功能。
1.2.2本设计的研究意义
伴随着如今科学通讯技术的迅猛发展,超声波测距技术在汽车自动化行业,军事领域以及建筑制造行业中到处都有。
因此对超声波测距的深度研究会让大家对超声波原理理解更加透彻,甚至可以亲自动手组装一个简易的超声波测距仪完成平时生活中对距离的粗略测量,为生活带来便利。
更重要的是这次设计凸显了理论知识与实际操作之间的差距,同时锻炼了查阅资料和动手操作的能力,为日后进入社会打下一定基础。
第二章硬件方案设计
2.1控制系统的设计要求
利用STM32和HC-SR04超声波模块测出TRIG和ECHO信号的时间间隔,并计算出距离,在5110液晶屏上显示。
2.2系统总体设计思路及框图
图2.1系统总体设计框图
从图2.1框图可以看出本次超声波测距系统由STM32单片机、HC-SR04超声波模块、复位电路、电源和5110液晶屏组成。
控制器通过控制HC-SR04超声波传感器完成超声波的收发,得到距离数据。
最后在液晶屏上显示出来完成对距离的测量。
系统总体设计实物图如图2.2所示
图2.2系统总体设计实物图
2.3控制芯片的选择和介绍
本次设计选用单片机和超声波模块进行距离的测量,控制模块选用了现在应用很
广泛的STM32单片机。
STM32的内核为ARMCortex-M3,研发公司为意法半导体集团。
它的内部包含3个16位定时器,2个12位ADC,1个12位模数转换器以及丰富的外设接口等等[5]。
选取STM32作为主控制器的原因:
(1) STM32拥有标准的AMR®32位系统结构。
(2)高性能低功耗,比AMR7TDMI改进了差不多30%。
(3)集成度很高,其内部包含复位电路,调压器及RC振荡器等[6]。
(4)外设一流
2.4单片机最小系统模块设计
ST芯片可按容量分为三大类。
第一类:
LD(小于64K)、第二类:
MD(小于256K)、
第三类:
HD(大于256K)o
STM32F103ZET6其是属于第三类增强型的错误!
未找到引用源。
,并具备以下特性:
(1)内核为AMRCortex-M3,其工作频率最高为72MHz。
(2)多达80个I/O快速接端口,5V信号差不多能给所有端口提供电压。
(3)利用片内BOOT下载模块,可下载串口程序。
(4)3个1口的12位AD输入(输入通道多达21个)。
(5)内设共H个定时器,其中包含4个16位定时器。
(6)同时支持SWD以及JTAG的调试。
单片机最小模块一般包含电源电路、时钟电路以及复位电路等,有时为了达到实验要求也会酌情增加外围电路[7]。
本次设计中,芯片选用的是144脚贴片封装的STM32F103ZET6芯片,设计的芯片和外围电路如图2.3所示
图2.3STM32芯片及外围电路图
2.5外部电路模块化设计
2.5.1电压转换模块
由STM32数据手册可得STM32F103ZET6芯片正常工作的电压为3.3V,而电源电路提供的直流电压为24V,同时有些外围电路芯片的工作电压为5V,因此需要利用降压模块对电压进行变换,以得到能使整个电路正常运行的电压。
电压24V转换为5V的电路如图2.4所示,电压5V转换为3.3V的电路如图2.5所示
12
图2.4电压24V转换为5V的电路
图2.5电压5V转换为3.3V的电路
电压转换模块用到了LM2596DC-DC型降压芯片和adP3338稳压芯片。
两种芯片
的相干性能指标如表2.1以及表2.2所示:
型号/名称
LM2596DC-DC降压模块
输入电压
3.2—40V
输出电流
3A(最大)
转换效率
92%(最大)
负载调整率
±0.5%
工作温度
-45℃—+85℃
表2.1LM2596DC-DC降压芯片相关性能指标
型号/名称
adP3338稳压模块
输入电压
2.7—8V
输出电流
1A(最大)
负载调整率
±0.8%(25℃)
工作温度
-40℃—+85℃
表2.2adP3338稳压芯片相关性能指标
13
本此设计的电源模块的电压分配如下表2.3所示
表2.3电源模块的电压分配
电压
分配
24V
降压芯片的输入电压
5V
稳压芯片输入电压;超声模块工作电压
3.3V
下载电路工作电压;复位电路工作电压;液晶屏工作电压
2.5.2超声波模块
本次设计选用的超声波模块型号为HC-SR04,超声波模块在发射端口发出一个最小为lOpLS的高电平信号,在接收口等待高电平输出,一接收到高电平输出就开启定时器开始计时,当这个端口变成了低电平的时候,就读取定时器的值测距时间,记为本次测距时间,最后代入相关公式及可完成测距。
超声波模块实物图如2.6所示
图2.6超声波模块实物图
引脚介绍:
VCC端接电源,TRIG端为触发信号输入,ECHO端为回响信号输出,最后GND端为地线。
超声波模块时序图如图2.7所示
图2.7超声波模块时序图
超声波模块原理图如图2.8所示,超声波模块插排原理图如图2.9所示
图2.8超声波模块原理图
图2.9超声波模块插排原理图
16
HC-S04超声波模块相关性能指标如表2.4所示
表2.4HC-SR04超声波模块相关性能指标
HC-SR04超声波模块
使用电压
DC5V
静态电流
小于2mA
电平输出
iWj5V,底0V
测距范围
2cm-400cm
感应角度
不大于15度
高精度
可达0.3cm
尺寸规格
45*20*15mm
其中静态电流意思是在没有信号输入情况下模块内部的电流,感应角度是指所能接收到信号的最大倾斜角度。
2.5.3液晶显示模块
本次设计选用的液晶屏为5110型液晶屏,由于STM32芯片共有144个I/O管脚,但实现测距功能所需占用的管脚较少,因此液晶屏的管脚可以直接连接STM的PC0-PC4o液晶显示模块实物图如图2.10所示
图2.10液晶屏显示模块实物图
选用5110液晶屏的原因:
⑴可显示32个字符,可完成本次设计的显示功能。
⑵接口简单,需要占用的I/O端口较少。
⑶集成度较高,在编程的时候,可直接调用底层显示原理的函数。
(4)价格比较低廉。
⑸可以显示汉字,数字和符号,满足实验显示需求。
原理图如图2.11所示,其中一部分为图2.3中的PC0-PC4
图2.H5110液晶屏排插口原理图
5110液晶显示屏引脚介绍如表2.5所示
表2.55110液晶显示屏引脚介绍LCD5110引脚
说明
功能
VCC
模块电源
GND
接地
RST
模块复位引脚
应用于初始化模块,低电平有效
SCE
模块使能引脚
允许输入数据,低电平有效
D/C
模式选择
选择命令/地址或输入数据
DIN
串行数据引脚
串行输入数据线
SCLK
串行时钟引脚
时钟信号,0〜4.0Mbit/s
2.5.4程序下载及复位模块
STM32有三种启动模式,STM32芯片上都会存在B00T1和BOOTO这两个管脚,两者在复位时的电平状态决定了在复位后主程序从何处开始进行。
STM32启动的三种模式如表2,6所示
表2.6STM32三种启动模式
启动模式选择引脚
启动模式
备注
BOOT1
BOOTO
X
0
主闪存存储器
正常工作状态
0
1
系统存储器
ISP下载
1
1
内置SRAM
可用于调试
本次设计选用的是第二种启动模式,首先把B00T1置成0,BOOTO置成1,接下来按下复位按钮,启动BootLoader。
利用BootLoader,把程序下载到Flash当中。
在完成程序下载之后,把BOOTO置成GND,最后手动复位,STM32就可以从Flash之中启动[8]。
需要注意的是单片机I/O□电平为TTL电平,无法直接下载程序(电脑为USB接口),需要电平转换,USB转TTL下载线。
下载模块原理图如图2.12所示
图2.12下载模块原理图
串行下载线黑线接GND,绿线接PA10,白线接PA9。
程序下载线实物图如图2.13所示
图2.13下载线实物图
复位功能由复位模块提供,复位模块的作用就是可以让电路回到其初始状态,来保证CPU在电路中正常工作。
复位模块原理图如图2.14所示
图2.14复位模块原理图
18
第三章软件部分的设计
3.1距离显示程序
3.1.15110液晶屏显示
图3.15110时序图串行总线协议
5110液晶显示屏可以显示字母、数字、汉字以及各种符号。
由于应用广泛,可以轻易的查找到所需要的传送显示程序。
然后对这些底层函数进行合理调用就可以满足本次设计所需要的显示要求。
本次设计中需要利用5110液晶显示屏达到显示距离的目的。
在查阅数据手册的时候,发现GPIO的配置种类竟然多达8种,如表3.1所示
GPIO配置种类
说明
GPIO_Mode_AIN
模拟输入
GPIO_Mode_IN_FLOATING
浮空输入
GPIO_Mode_IPD
下拉输入
GPIO_Mode_IPU
上拉输入
GPIO_Mode_Out_OD
开漏输出
GPIO_Mode_Out_PP
推拉输出
GPIO_Mode_AF_OD
复用开漏输出
GPIO_Mode_AF_PP
复用推挽输出
表3.1GPIO配置种类
19
LCD5110是利用发送指令以及写入数据RAM来显示与控制的。
根据时序图,可以知道其数据均从高位开始发送,每次存进一个字节,其地址计数均会自动递增,在增至最后一位字节的时候,就能够读取D/C信号电平。
LCD5no时序图串行总线协议如图3.1所示
5110液晶显示屏引脚接的是PC0-PC4,选用的GPIO配置为推拉输出,如图3.2
所示
图3.2LCD5110GPIO配置程序
可以在主程序中完成发送和接收超声波信号的控制。
由超声波模块时序可知,要先向TRIG发送最少102的高电平,在ECHO端等待高电平输出,捕捉到上升沿后,开启定时器开始计时,捕捉到下降沿后,停止定时器计时,读取定时器测量数值,计算时间间隔。
液晶屏初始化及定时器配置程序如图3.3所示
20
图3.3液晶屏初始化及定时器配置程序
初始化结束后主程序运行如图3.4所示
21
图3.45110液晶显示屏测距主程序
超声波模块接的引脚为PA1和PA2,配置超声波模块的TRIG与ECHO,相关配置程序如图3.5所示
表3.2中断优先级分组情况
组号
高位
低位
第0组
所有4位用于指定响应优先级
第1组
最高1位用于指定抢占式优先级
后面3位用于指定响应优先级
第2组
最高2位用于指定抢占式优先级
后面2位用于指定响应优先级
第3组
最高3位用于指定抢占式优先级
后面1位用于指定响应优先级
第4组
所有4位用于指定抢占式优先级
在抢占式优先级之中,高抢占式优先级中断能够在低抢占式优先级中断中嵌套,但需要注意的是,抢占式优先级别相同的中断是不可以相互嵌套的[10]。
在STM32单片机中,GPIO中断以组为单位的,每个GPIO都可以触发一次中断,但是同组GPIO同一时间段只可以触发一次。
触发中断的条件是打开GPIO复用时钟,对应设置程序如图3.6所示
uoidRCC_ConFiguration(uoid)
<
Systenlnit();//72m
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI0A,ENABLE);〃谟翼PA输出端使能
RCcZAPB1PeriphClockCmd(RCcZAPB1PeriphZTIM2,ENABLE);〃谯置定时急TIM西秤中使能
图3.6RCC时钟函数
设置完时钟函数后就可以设置相应的中断了。
具体代码如图3.7所示
图3.7配置中断优先级程序
23
图3.8时钟配置图
(2)GPIO初始化,配置USART1时钟PA9(TX)和PA10(RX)两个引脚,程序如图3.9所示
3.1.2 串口显示距离
上面已经介绍了5110液晶显示屏测距方法,接下来介绍另一种串口通信方式。
串口通信,通过串口中断,下位机上传距离参数至上位机,由上位机显示距离。
同步异步发生器可以进行同步单向通信以及半双工单线通信。
同步异步发生器双向通信至少需要两个引脚,一个用来接收数据输入,另一个用来发送数据输出。
常用的串行接口是RS-232和RS-485,就目前而言RS-232的应用最为广泛,同时RS-232被标定为低速串行通信过程中提高通讯距离的单端标准[H]。
而RS-485可以在二线以及四线两种方式中选择,其中的二线制可以真正做到多点双向通信[12]。
USART的配置步骤:
(1)打开USART1时钟和GPIOA端口时钟,选取RCC_APB2PeriphClockCmd()进行初始化,程序如图3.8所示
USART模式下的字段
说明
USART_BaudRate
波特率,视具体设备而定
USART_WordLength
字长
USART_StopBits
停止
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 超声波 测距 系统 设计