超声波测距应用(6)

2019-06-02 14:05

4.4 系统软件设计

汽车倒车防撞系统根据超声测距原理用AT89C51单片机开发设计。整个软件采用模块化设计,由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。

根据系统的要求,系统软件应具有以下功能:

(1)控制超声波发射、接收传感器的工作状态。传感器的工作状态因行驶方向的不同而不同,而且,探测距离时发射传感器还要依次轮流工作,这些功能需靠软件程序来实现。

(2)根据汽车的行驶速度计算出倒车避撞的安全距离和报警距离。安全距离就是汽车自由停下所需的距离,这时需要的距离必然小于根据车速确定的安全距离。比安全距离稍远些的是报警距离,设计的报警距离比安全距离长出1米。通过报警来减少不必要的停车。

(3)测出超声波信号的往返时间,来计算出最近的障碍物与平台车的距离。超声波从发射出去碰到障碍物返回接收传感器的时间,需要通过软件定时器来记录。根据这个时间才能计算出障碍物的距离。

软件设计的主要思路是将预置、发射、接收、显示、声音报警等功能编成独立的模块,在主程序中采用键控循环的方式,当按下控制键后,在一定周期内,依次执行各个模块,调用预置子程序、发射子程序、查询接收子程序、定时子程序,并把测量的结果进行分析处理,根据处理结果决定显示程序的内容以及是否调用声音报警程序。当测得距离小于预置距离时,声音报警程序被调用。

主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P2清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。

由于采用的是12 MHz的晶振,计数器每计一个数就是1 s,当主程序检测到接收成功的标志位后,将计数器TO中的数(即超声波来回所用的时间)按式(3)计算,即可得被测物体与测距仪之间的距离,设计时取20℃时的声速为344 m/S则有: d=(cxt)/2=172To/10000cm (3)

其中,To为计数器T0的计算值。测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。

4.5 主程序

主程序是单片机程序的主体,整个单片机端系统软件的功能的实现都是在其中完成的,在此过程中主程序调用了子程序及中断服务程序。程序首先完成初始化过程,然后是一个重复的控制发射信号的过程,即调用发射子程序几遍,而且每次发射周期结束都会判断在发射信号后延时等待的过程中是否发生了中断,即是否有回波产生来判断程序得流程。流程图如图

图4.6主程序流程图 一、40kHz脉冲的产生与超声波发射

在脉冲产生前先对定时/计数器T0进行初始化,在这里选择的是工作方式1定时器模式,所以TMOD应该设定为01H。接着用STEB TR0指令开启T0,在开启T0的同时开发发射超声波脉冲。

测距系统中的超声波传感器采用UCM40的压电陶瓷传感器,它的工作电40kHz的脉冲信号,这由单片机执行下面程序来产生。

PUZEL:MOV 14H,#12H;超声波发射持续200ms HERE:CPL P1.0;输出40kHz方波 NOP NOP

NOP

DJZN 14H,HERE RET

前方测距电路的输入端接单片机P1.0端口,单片机执行上面的程序后,P1.0端口输出一个40kHz的脉冲信号,经过三极管T放大,驱动超声波发射头UCM40T,发出40kHz的脉冲超声波,且持续发射200ms。右侧和左侧测距电路的输入端分别接P1.1和P1.2端口,工作原理与前方测距电路相同。这里省略,只研究正对方向的障碍物。

二、超声波的接收与处理

超声波的接受是由外部中断口INT0是否有中断脉冲产生来判断的。定时子程序转回来的时候,要对中断进行初始化。选定的是INT0口,工作方式为脉冲方式。 STEB EA;中断总允许 STEB EX0;INT0中断允许

STEB PX0;设置INT0为高优先级中断 STEB IT0;设置INT0为脉冲方式 HERE:JMP$;等待中断

接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号经运算放大器IC1A和IC1B两极放大后加至IC2。IC2是带有锁定环的音频译集成块LM567,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其定带宽。调节R8在发射的载频上,则LM567输入信号大于25mV,输出端8脚高电平跃变为低电平,作为中断请求信号,送至单片机处理。前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左部分源程序如下: RECEIVE: PUSH PSW PUST ACC CLR ACC

JNB P1.1,RIGHT;P1.1引脚为0,转至右测距电路中断服务程序 JNB P1.2,LEFT;P1.2引脚为0,转至左测距电路中断服务程序 RETURN:SETB EX1;开外部中断INT1 POP ACC

POP PSW RET1

三、数据读取和储存

为了得到发射信号与接收回波间的时间差,要读出T0计数器的计数值,然后储在RAM中,而且每次发射周期的开始,需要对计数器清零,以备后续处理 RECEIVE0:PUSH PSW PUSH ACC

CLR EX0;关外部中断0 MOV R7,TH0;读取时间值 MOV R6,TL0? CL R C MOV A,R6

SUBB A,#0BBH;计算时间差 MOV 31H,A;存储结果 MOV A,R7 SUBB A,#3CH MOV 30H,A

SETB EX0;开外部中断0 POP ACC POP PSW RETI

四、计算超声波传播时间

T0中读取出来的时间差数据并不能作为距离值直接显示输出,因为时间差值与实际的距离值之间转换公式为:S=0.5*V*T。其中,V为声音在常温下的传播速度,T为发射信号到接收之间经历的时间,在这个部分中,信号处理包括计数值与距离值换算,二进制与十进制转换。

第5章 系统调试与优化

超声波测距仪的制作和调试都比较简单,安装时探头时应保持两换能器中心轴线平行并相距4~8cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C的大小,以获得合适的接收灵敏度和抗干扰能力。系统调试完后对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。 5.1发射器探头对接收器探头的影响

超声波从发射到接收的时间间隔是由控制器内部的定时器来完成的。由于发射器探头与接收器探头的距离不大,有部分波未经被测物就直接绕射到接收器上,造成发送部分与接受部分的直接串扰问题。这一干扰问题可通过软件编程,使控制器不读取接收器在从发射开始到\虚假反射波\结束的时间段里的信号。这样,就有效的避免了干扰,但另一方面也形成了20cm的“盲区”。此“盲区”很小,对本系统没有影响。 5.2温度的补偿

由于超声波也是一种声波,其声速C与温度有关,表1列出了几种不同温度下的速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。

空气中传播的超声波是由机械振动产生的纵波,由于气体具有反抗压缩和扩张的弹性模量,气体反抗压缩变化力的作用,实现超声波在空气中传播。因此,超声波的传播速度受气体的密度、温度及气体分子成份的影响即:

(5-1)

其中B为气体的弹性模量,r为气体的密度。气体弹性模量,由理想气体压缩特性可得:B=g r,其中g为定压热容与定容热容的比值,空气为1.40,P为气体的压强。气体的压强为:

(5-2)

其中,R为普适常量8.314kg/mol,T为气体温度K(绝对温度),M为气体分子量, 空气为28.8 10-3 kg/mol。所以


超声波测距应用(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教学考核教学设计与教案撰写(教育学部陈本友)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: