基于STM32的超声波测距系统的设计Word格式文档下载.docx
- 文档编号:7771751
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:23
- 大小:29.32KB
基于STM32的超声波测距系统的设计Word格式文档下载.docx
《基于STM32的超声波测距系统的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于STM32的超声波测距系统的设计Word格式文档下载.docx(23页珍藏版)》请在冰点文库上搜索。
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)。
STM32F103ZET6其是属于第三类增强型的[9],并具备以下特性:
(1)内核为AMRCortex-M3,其工作频率最高为72MHz。
(2)多达80个I/O快速接端口,5V信号差不多能给所有端口提供电压。
(3)利用片内BOOT下载模块,可下载串口程序。
(4)3个1s的12位AD输入(输入通道多达21个)。
(5)内设共11个定时器,其中包含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所示
电压转换模块用到了LM2596DC-DC型降压芯片和adP3338稳压芯片。
两种芯片的相干性能指标如表2.1以及表2.2所示:
2.5.2超声波模块
本次设计选用的超声波模块型号为HC-SR04,超声波模块在发射端口发出一个最小为10s的高电平信号,在接收口等待高电平输出,一接收到高电平输出就开启定时器开始计时,当这个端口变成了低电平的时候,就读取定时器的值测距时间,记为本次测距时间,最后代入相关公式及可完成测距。
超声波模块实物图如2.6所示
图2.6超声波模块实物图
引脚介绍:
VCC端接电源,TRIG端为触发信号输入,ECHO端为回响信号输出,最后GND端为地线。
2.5.3液晶显示模块
本次设计选用的液晶屏为5110型液晶屏,由于STM32芯片共有144个I/O管脚,但实现测距功能所需占用的管脚较少,因此液晶屏的管脚可以直接连接STM的PC0-PC4。
液晶显示模块实物图如图2.10所示
图2.10液晶屏显示模块实物图
选用5110液晶屏的原因:
(1)可显示32个字符,可完成本次设计的显示功能。
(2)接口简单,需要占用的I/O端口较少。
(3)集成度较高,在编程的时候,可直接调用底层显示原理的函数。
(4)价格比较低廉。
(5)可以显示汉字,数字和符号,满足实验显示需求。
原理图如图2.11所示,其中一部分为图2.3中的PC0-PC4
图2.115110液晶屏排插口原理图
5110液晶显示屏引脚介绍如表2.5所示
表2.55110液晶显示屛引脚介绍
LCD5110引脚说明功能
VCC模块电源
GND接地
RST模块复位引脚应用于初始化模块,低电平有效
SCE模块使能引脚允许输入数据,低电平有效
D/C模式选择选择命令/地址或输入数据
DIN串行数据引脚串行输入数据线
SCLK串行时钟引脚时钟信号,0~4.0Mbit/s
2.5.4程序下载及复位模块
STM32有三种启动模式,STM32芯片上都会存在BOOT1和BOOT0这两个管脚,两者在复位时的电平状态决定了在复位后主程序从何处开始进行。
STM32启动的三种模式如表2.6所示
表2.6STM32三种启动模式
启动模式选择引脚启动模式备注
BOOT1BOOT0
x0主闪存存储器正常工作状态
01系统存储器ISP下载
11内置SRAM可用于调试
本次设计选用的是第二种启动模式,首先把BOOT1置成0,BOOT0置成1,接下来按下复位按钮,启动BootLoader。
利用BootLoader,把程序下载到Flash当中。
在完成程序下载之后,把BOOT0置成GND,最后手动复位,STM32就可以从Flash之中启动[8]。
需要注意的是单片机I/O口电平为TTL电平,无法直接下载程序(电脑为USB接口),需要电平转换,USB转TTL下载线。
图2.12下载模块原理图
串行下载线黑线接GND,绿线接PA10,白线接PA9。
程序下载线实物图如图2.13所示
图2.13下载线实物图
复位功能由复位模块提供,复位模块的作用就是可以让电路回到其初始状态,来保证CPU在电路中正常工作。
复位模块原理图如图2.14所示
图2.14复位模块原理图
第三章软件部分的设计
3.1距离显示程序
3.1.15110液晶屏显示
LCD5110是利用发送指令以及写入数据RAM来显示与控制的。
根据时序图,可以知道其数据均从高位开始发送,每次存进一个字节,其地址计数均会自动递增,在增至最后一位字节的时候,就能够读取D/C信号电平。
LCD5110时序图串行总线协议如图3.1所示
图3.15110时序图串行总线协议
5110液晶显示屏可以显示字母、数字、汉字以及各种符号。
由于应用广泛,可以轻易的查找到所需要的传送显示程序。
然后对这些底层函数进行合理调用就可以满足本次设计所需要的显示要求。
本次设计中需要利用5110液晶显示屏达到显示距离的目的。
在查阅数据手册的时候,发现GPIO的配置种类竟然多达8种,如表3.1所示
表3.1GPIO配置种类
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复用推挽输出
5110液晶显示屏引脚接的是PC0-PC4,选用的GPIO配置为推拉输出,如图3.2所示
图3.2LCD5110GPIO配置程序
可以在主程序中完成发送和接收超声波信号的控制。
由超声波模块时序可知,要先向TRIG发送最少10s的高电平,在ECHO端等待高电平输出,捕捉到上升沿后,开启定时器开始计时,捕捉到下降沿后,停止定时器计时,读取定时器测量数值,计算时间间隔。
液晶屏初始化及定时器配置程序如图3.3所示
图3.45110液晶显示屏测距主程序
超声波模块接的引脚为PA1和PA2,配置超声波模块的TRIG与ECHO,相关配置程序如图3.5所示
图3.5超声波模块引脚配置
中断之于开发嵌入式系统的影响之大不容置疑。
本次设计选用的STM32单片机却足足有84个中断,其中包含16个内部中断以及68个外部中断,同时STM32还可以设置编程中断优先级,不过只使用其设置8位当中的高4位[9]。
4位中断优先级可分为2组,抢占式优先级以及响应优先级。
如果以此种方时分组,共可以划分为5组,如表3.2所示
表3.2中断优先级分组情况
组号高位低位
第0组所有4位用于指定响应优先级
第1组最高1位用于指定抢占式优先级后面3位用于指定响应优先级
第2组最高2位用于指定抢占式优先级后面2位用于指定响应优先级
第3组最高3位用于指定抢占式优先级后面1位用于指定响应优先级
第4组所有4位用于指定抢占式优先级
在抢占式优先级之中,高抢占式优先级中断能够在低抢占式优先级中断中嵌套,但需要注意的是,抢占式优先级别相同的中断是不可以相互嵌套的[10]。
在STM32单片机中,GPIO中断以组为单位的,每个GPIO都可以触发一次中断,但是同组GPIO同一时间段只可以触发一次。
触发中断的条件是打开GPIO复用时钟,对应设置程序如图3.6所示
3.1.2串口显示距离
上面已经介绍了5110液晶显示屏测距方法,接下来介绍另一种串口通信方式。
串口通信,通过串口中断,下位机上传距离参数至上位机,由上位机显示距离。
同步异步发生器可以进行同步单向通信以及半双工单线通信。
同步异步发生器双向通信至少需要两个引脚,一个用来接收数据输入,另一个用来发送数据输出。
常用的串行接口是RS-232和RS-485,就目前而言RS-232的应用最为广泛,同时RS-232被标定为低速串行通信过程中提高通讯距离的单端标准[11]。
而RS-485可以在二线以及四线两种方式中选择,其中的二线制可以真正做到多点双向通信[12]。
打开USART1时钟和GPIOA端口时钟,选取RCC_APB2PeriphClockCmd()进行初始化,程序如图3.8所示
图3.8时钟配置图
(2)GPIO初始化,配置USART1时钟PA9(TX)和PA10(RX)两个引脚,程序如图3.9所示(3)配置USART1外设关联属性,所用程序如图3.10所示
3.2测距方法及框图设计
3.2.1单次测距主程序框图
单次测距主函数框图如图3.12所示,中断程序框图如图3.13所示,由于只进行单次测量,所以只需要控制发射端口发送触发信号,打开定时器,在接收到回响信号时,停止计时器,读取时间间隔,计算出测量距离并在5110液晶显示屏上显示出相应数值,然后复位结束运行就可以得到实验结果了。
3.2.2多次测距主函数与中断程序框图
多次测距求平均值的主程序框图如图3.14所示,中断程序框图与图3.13相同,程序开始时初始化各类函数初始化包括了定时器的初始化以及中断优先级的初始化。
中断优先级初始化前面已经做过介绍,这边就不加赘述了。
定时器共有5种种类,分别为接通延时型、断开延时型、保持型接通延时、脉冲型和扩张型脉冲定时器[13]。
定时器详细说明如表3.4所示
在这之中,TIM2至TIM5均为通用定时器,而TIM6与TIM7为基本定时器。
本次设计选用的定时器为TIM2定时器。
TIM2可以完成向下计数和向上计数以及向上向下双向计数。
不同模式工作方式如表3.5所示
表3.5TIM2三种计数模式的工作方式
计数模式工作方式
向上计数计数器从0开始计数直至自动加载值,接着从0开始重新计数,并且产生一个计数器溢出事件。
向下计数计数器从自动装入的值开始向下计数直至0,接着重新从自动装入的值开始,并且产生一个计数器向下溢出事件。
向上向下双向计数计数器从0开始计数直至自动装入值-1,接着产生一个计数器溢出事件,接下来向下计数直至1并且产生一个计数器溢出事件;
最后再从0重新开始计数。
设计思路:
单次测量就得出结论显然是非常不可取的,误差较大,因此考虑加入循环结构求平均值来减小误差。
主函数中首先定义循环次数i=0和进入中断次数k=0,定义距离length,变量sum。
while
(1)里面先判断i==5?
;
若i不等于5,则发送触发信号,打开定时器;
等接收到ECHO回响信号时,停止定时器,读出定时;
将计算距离length存入变量sum,定时器复位,i递增1,k值清0;
当i==5跳出里层循环;
计算距离length=sum/5,显示;
变量sum、length、i清零;
结束。
最后的计算时间=k*定时中断设置的定时+最后一次定时器的读数。
还有需要注意的一点是定时器的定时要比较短,避免一次中断都没进就接收到了回响信3.3STM32工程的新建
本次设计是第一次接触到keil5软件,对于新手而言keil5新建STM32工程的步骤就很让人云里雾里了。
STM32工程的新建大体可以分为以下几步。
第一步,先在指定位置新建一个空白文件夹,自己重新命名,文件命最好由字母和数字组成。
第二步,在所建文件夹内再新建3个子文件夹,命名分别为USER和FWLIB以及CMSIS。
第三步,从STM32库函数中把需要文件里的函数复制到之前建立的子文件夹下面。
其中,USER文件夹内存放自主编写的main文件,FWLIB文件夹内部存放外部设备驱动文件,而CMSIS文件夹内存放内核支持文件和设备支持文件。
第四步,打开keil5,点击左上菜单栏中的project选择新建一个project工程t。
第五步,保存文件在Obj文件夹内,文件名可选默认,不用加后缀。
第六步,选择所需要的芯片型号,本次设计我选用的是STM32F103Z6,点击确认。
最后在includepath里选择头文件位置就可以了。
第四章性能测试及实验
4.1测试条件
本次设计的测试条件没有特别要求,超声波测距在特别恶劣的环境下也能正常使用,温度会对测量造成一定影响,但是本次设计过程当中室温差不多在25℃标准温度,对测量没有造成太大影响。
4.2测试方法
本次设计一共用了2种显示方法,5110液晶屏显示与串口通信显示,2种测量方法,单次测量与多次测量求平均值。
4.3测试结果
4.3.15110液晶屏显示测试结果
测量超声波模块至实验室天花板的距离实验结果图如图4.1所示
图4.15110屛显示测量结果
4.3.2串口通信显示测试结果
测量超声波模块至实验室天花板的距离实验结果图如图4.2所示
图4.2串口通信显示测量结果
4.4测量性能评价
以串口显示为例,前面数据变化是由于在移动超声波模块的距离,后面数据趋于稳定而存在的波动则是超声波模块受周围环境影响而产生的误差,多次测量求平均值已经在一定程度减小了误差,提高了测量精度,如果需要进一步提高精度,则需要增设温补电路来削弱温度对测量的影响。
4.5测距电路精度改进
众所周知,超声波拥有气体传播速度伴随着环境温度变化而改变的特性。
所以在测量距离的过程中可能会产生较大误差。
还有,超声波也是属于波的一种,其也拥有波的衍射特性,这会导致接收到的超声波信号并不一定是发出信号反射回来的波,这会导致测量产生一个盲区,在距离较近的情况下会因为错误读数导致测量的失败。
所以,需要额外增设一个温补电路,以达到设计要求。
温补电路可以利用温度传感器进行温电转换来测量出周围环境的温度,最后利用真实温度代入至计算中来尽量避免测量误差。
但是本次设计的HC-SR04超声波模块并没有温度补偿电路,在利用温度传感器组成外围电路,在查询相关资料之后,发现DALLAS公司生产的型号为DS18B20的温度传感器可以满足需求。
温度补偿电路用到温度采集模块,但是作为新手,对keil软件的使用和相关函数调用并不熟悉,很多功能仍在摸索阶段,贸然增设温补模块切实有很大难度。
除DS18B20外,型号为US-100的超声波模块会自带一个温补电路,不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 超声波 测距 系统 设计