一、引言
由于超声波指向性强,能量消耗非常小,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位没量仪等都可以通过超声波来实现。利用超声波检测距离往往比较方便、计算简单、实时性强,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到比较广泛的应用。
为了使移动机器人能自动避开障碍物,就必须装备测距系统,以使其及时获取障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解前方、左侧和右侧的环境情况而提供一个运动距离信息。
二、超声波测距原理
1、 超声波发生器
为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器分为两大类:一类是利用电气方式产生超声波;一类是机械方式产生超声波。电气方式又包括压电型、磁致伸缩型和电动型等,机械方式有加尔统笛、液哨和气流旋笛等。它们所产生超声波的频率、功率和声波特性各不相同,在则用途也各不相同。目前较为常用的是压电式超声波发生器。
2、压电式超声波发生器原理
压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它两极外加脉冲信号,其频率等于压电晶片的固有频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成了超声波接收器了。
3、超声波测距原理
超声波发射器朝某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中遇到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。超声波在空间中的传播速度为340m/s,根据计时器记录的时间 t,就可以计算出障碍物的距离 s,即:s=340t/2
这就是所谓的时间差测距法。
三、超声波测距系统的电路设计
本系统的特点是利用单片机控制超声波的发射和对超声波的反射时间计时,单片机选用8751,经济易用,且片内有 4K ROM,便于编程。电路原理如图2所示。其中只画出前方测电路的原理图,左侧和右侧测距电路原理图与此相似,故省略。
1、40kHz 脉冲信号的产生与超声波发射
测距系统中的超声波发生器采用 UCM40 的压电陶瓷传感器,它的工作电压是 40kHz 的脉冲信号,这个信号可由单片机的 P1.0 端口来产生,其 40k Hz 的脉冲信号产生程序如下:
- PUZEL: MOV 14H,#12H ;超声波发射持续200us
- HERE: CPL P1.0 ;输出 40kHz 方波
- NOP;
- NOP;
- NOP;
- DJNZ 14H,HERE;
- RET
P1.0 输出的 40kHz 脉冲信号经三极管T放大,驱动超声波发射头 UCM40T,发出 40kHz 的脉冲超声波,且持续发射200us。右侧和左侧测距电路的输入端分别接 P1.1 和 P1.2 端口,工作原理与前方测距电路相同。
2、超声波的接收与处理
接收头采用与发射头配对的 UCM40R ,将超声波调制脉冲变为交变电压信号,经运算放大器 IC1A 和 IC1B 两级放大后加至 IC2 。IC2 是带有锁定环的音频译码集成块 LM567,内部的压控振荡器的中心频率 fo=1/1.1R8C3,电容C4决定其锁定带宽。调节R8在发射的载频上,则 LM567 输入信号大于25mV ,输出端 8 脚由高电平跃变为低电平,作为中断请示信号,送至单片机处理。
前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右侧距电路的输出通过与门 IC3A 的输出接单片机 INT1 端口,同时单片机的 P1.3 和 P1.4 接到 IC3A 的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下:
- RECEIVE1: PUSH PSW
- PUSH ACC
- CLR EX1 ;关外部中断1
- JNB P1.1,RIGHT ;P1.1引脚为0转至右测距电路中断服务程序
- JNB P1.2,LEFT ;P1.2引脚为0转至左测距电路中断服务程序
- RETURN: SETB EX1 ;开外部中断1
- POP ACC
- POP PSW
- RETI
- RIGHT: ... ;右测距电路中断服务程序入口
- ...
- AJMP RETURN
- LEFT: ... ;左测距电路中断服务程序入口
- ...
- AJMP RETURN
3、计算超声波传播时间
在启动发射电路的同时启动单片机内部的定时器 T0,利用定时器的计数功能记录超声波发射的时间和收到反射波时间。当收到超声波反射波时,接收电路输出产生一个负跳变,在 INT0 或 INT1 端产生一个中断请示信号,单片机响应外部中断请示,执行外部中断服务子程序,读取时间差,计算距离。其部分源程序如下:
- RECEIVE0: PUSH PSW
- PUSH ACC
- CLR EX0 ;关外部中断0
- MOV R7,TH0 ;读取时间值
- MOV R6,TL0
- CLR 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
四、超声波测距系统的软件设计
软件分为两部分,主程序和中断服务程序,如图3(a)(b)(c)所示。
主程序完成初始化工作、各路超声波的发射和接收顺序的控制。
定时中断服务子程序完成三方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。
五、结论
对所要求测量范围30cm~200cm内的平面物体做了多次测量发现,其最大误差为0.5cm,且重复性好。可见基于单片机设计的超声波测距系统具有硬件结构简单、工作可靠、测量误差小等特点。因此,它不仅可用于移动机器人,还可用于其它测量系统中。