基于51单片机的简易超声波测距系统是利用超声波传感器实现的非接触式距离检测系统。非接触式的距离测量在工业中有广泛的应用机器人视觉系统中对距离的测量,汽车倒车雷达系统及液位、物位的检测系统等。系统中采用了AT89C2051单片机作为主控制器,把一种直流电机PWM调速芯片应用到此系统中,使得电路简单,易于控制,而且对于不同电压峰值要求的超声波传感器,可以改变其供电电压值,同时利用单片机设定距离值和输出控制信号,所测最终距离通过数码管显示出来,可以方便直观地查看距离值,以实现测距、显示、输出、控制的功能。
一、超声波传感器
超声波传感器是一种换能器,它把电能或机械能转换成声能。本设计采用压电式超声波换能器,它是利用压电晶体的谐振来工作的。该传感器有2个压电晶片和1个共振板,当其两极外加脉冲信号,且频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波。如果两极问不加电压,当共振板接收到超声波时,声波将迫使压电晶片振动,使机械能转换为电信号,这时它就成为超声波接收器。
每个传感器的中心频率都存在一定的误差,在40 kHz左右波动。而且超声波传感器发射波束时存在发散角问题,一般发散角都比较大,从而导致了方向性较差。同时,随着传播距离的增大,在不同的发散角上信号衰减的程度也有变化。它在空气中的发散角及耗散性如图1所示。
图1 发散角与耗散性
采用反射式超声波测距的原理是:当单片机控制超声波传感器向某一方向发射波束的同时,单片机内部开始计时。在传播过程中,超声波遇障碍物后反射回波。传感器接收到第一个反射波后,停止计时。由于超声波在空气中的传播速度是340 m/s,根据计时时间及公式S=340 t/2,即可得到发射点距障碍物的距离S.
二、系统总体方案设计
超声波测距系统包括4个部分,即①发射电路中振荡器驱动控制电路;②接收电路中模拟放大、滤波、信号调制电路;③数码管显示电路;④单片机系统及其串口输出、控制信号输出、按键输入部分。其方框图如图2所示。
图2 系统原理框图
三、硬件电路设计
3.1 超声波发射单元
超声波发射单元包括振荡电路和驱动电路。振荡电路是由反相器CD4069组成的非对称式多谐振荡器,它产生40 kHz的方波脉冲电路如图3所示。
图3 振荡电路
电路中G2输出的电压由于 ,的调节,可以改变输入到G1输入端的相位。当相位达到同相时,G1和G2实现正反馈,G1和G2就成了稳定的振荡器。振荡周期公式为T=2.2×Rf×C.因为CD4069为CMOS结构,所以逻辑门前的电阻RP为G1的保护电阻。当RP足够大时,G1的输入电流可忽略不计。
由于超声波换能器中心频率都有偏差,所以Pf采用电位计,可以调节到最佳谐振点,这也是不用单片机产生方波的原因。电路中Z1,Z2同时得到相位相反的2路控制脉冲,提供给驱动电路。
驱动控制电路如图4所示。它采用了L293型直流电机PWM调速芯片,它内部的H桥电路可以产生相位相反的两路脉冲。驱动电路的直流电源电压可以改变,以适应不同传感器对电压的要求。振荡电路中产生方波的Z1、Z2端,分别接到驱动电路1N1,IN2端。控制输出电路中EN端为输出使能端,它接到单片机的P1.7端口,该端口精确输出高电平时问来控制发射方波的个数。这在设计上使得控制和方波产生相对独立,从而使得电路简单、控制精确、易于调试。
图4 驱动电路
3.2 超声波接收单元
超声波接收单元中包括:模拟放大、滤波电路、电平转换电路,如图5所示。模拟放大器选用高精度仪用放大器LM318作为信号放大与滤波之用,它的单位增益带宽为15 MHz,超出音频范围能够满足40 kHz的要求。在放大电路的负反馈回路中接入电容C1构成低通滤波器。电容的选择可由公式。f=1/2πRfC求出,式中f0为采用的超声波频率,Rf为第一级的反馈电阻。因为多谐振荡器中有高频分量噪声,所以通过低通滤波器将高频噪声滤掉。经过2极放大后,通过电容耦合,信号与参考电压比较产生高低电平,提供给单片机产生中断。参考电压设定为1 V左右,以提高灵敏度。第2个比较器仅起反相作用 .
图5 接收电路
3.3 数码管显示电路
数据显示采用串行接口LED显示驱动管理芯片MC14489,它的输入端与系统CPU之间只有3条I/0口线相连。这3个端口是:使能端ENBLE、时钟端CLOCK、数据端DATA IN,通过这3个端口写控制字和数据。更新显示寄存器的内容,需要传送3个字节的信息,更新配置寄存器的内容仅需要传送一个字节的信息。这种芯片可以显示5位数码管数据,本系统只用到了4位。驱动电压为5 V,亮度调节通过 端口与地之间连接的电阻来调节,电阻增大亮度减小。显示电路如图6所示。
图6 显示电路
3.4 单片机系统
发射的超声波被调制成包含40 kHz方波的具有一定时间间隔的矩形波脉冲信号,其发射、接收脉冲工作时序图如图7所示。由单片机AT89C2051的P1.7口控制H桥电路的使能端EN,送出40 kHz的超声波脉冲信号,其脉冲宽度及脉冲间隔均由软件控制。脉冲宽度约为125~200us,即在一个调制脉冲内包含5~8个40 kHz的方波。脉冲发送间隔取决于要求测量的最大距离。若在有效测距范围内有被测物体,则在后一次超声波束发出之前应当接收到前一次发射的反射波,否则认为前方无被测物体。因此,按有效测距范围可以估算出最短的脉冲间隔发送时间。例如:最大测距范围为10m时,脉冲间隔时间t:2s/v=2×10/340≈60ms,实际应取t≥60 ms.本系统为方便起见,选择脉冲间隔定时器为65 ms.
图7 发射和接收脉冲时序图
3.5 串口输出
MC14489可以通过和单片机串口进行通信,当显示面板离主控制板较远时,数据信号将会衰减,所以可通过串口来传输数据。
3.6 按键输入
本系统可以设定距离值,当大于或小于设定值时将发出控制信号。P1.5、P1.6输出高低电平,从而可以控制继电器等外部设备。由3个按键设定距离值:S0的作用是进入和退出设定,S1和S2分别是向上加值和向下减值,每按一次加或减一厘米,由数码管输出显示。
四、系统软件设计
该系统软件采用8051汇编语言编写,主程序流程图如图8所示。AT89C2051单片机有2个外中断口,分别用于接收回波中断和按键输人中断,对应2个外中断子程序。此外,还用到了内部中断定时器, 它用于控制发送载波脉冲,如图9所示。 定时器65 ms产生中断一次,主要是发送载波脉冲和计数器清零。外中断0将在有下降沿触发时产生中断,用于读取定时器产生的计时值和使标志位置位。外中断1是按键输人中断,用于提供比较值来输出控制信号。S0第一次触发为中断产生信号,再次触发则为输入确定信号。S1和S2按键是输入值增加和减少按键,它们通过判断对应的10口状态来确定是否输入。
图8 主程序流程图
图9 各中断子程序流程图
五、测试结果与分析
超声波测距系统调试完成后,对系统进行了测试。在超声波换能器与较大平面(如墙壁面)法线方向一致时,量程为0.04-10 m,测距盲区为4Cm,分辨率为0.01 m,最大测量误差≤0.02 m.因为超声波具有一定发散角,所以当在正前方和斜前方都有物体时,会以距发射器最近的物体作为探测目标。
误差分析:限制该系统最大可测距离的因素包括:超声波的幅度、反射面的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。测距误差主要来源于以下几个方面:①超声波波束对探测目标的入射角的影响;②超声波回波声强与待测距离的远近有直接关系;③超声波传播速度对测距是有影响的。稳定准确的超声波传播速度是保证测量精度的必要条件,传播媒质的特性,如温度、压力、密度对声速都将产生影响。因此,为了准确地计算距离,应对声速加以修正,系统程序中采用了软件补偿措施。
六、总结
本文介绍的简易超声波测距系统,采用价格低廉的51系列单片机及专门设计的驱动和接收电路,通过超声波换能器,可以测量和显示0.04-10m内的物体距离,分辨率可达到O.O1m。可用于物面和液面测量,汽车倒车报警装置。硬件采用模块化设计,能够方便嵌入到其他系统中。