基于STC89C52单片机的超声波测距系统
超声波有以下特点:速度小,传播时间容易检测;频率高,反射性强,绕射性弱;传播距离较远;对光线和电磁场不敏感等。利用超声波的这些优点,结合微电子技术,超声波测距技术应运而生。与激光测距、红外线测距等相比,超声波测距更适于电磁干扰强,烟雾等恶劣环境中。而且,超声波测距技术设计方便、精度较高。超声波测距技术的优势,使它有着广泛的应用,比如:建筑施工工地,液位测量,车辆导航等。传统的超声波测距系统采用的电路结构比较复杂,且当回波信号过于微弱时,测量误差会加大。在系统接收电路中采用的增益控制部分能有效地解决这一难题。
本文引用地址:http://www.amcfsurvey.com/article/201610/307350.htm超声波测距的方法很多,有相位检测法,幅值检测法和渡越时间法等。系统采用的是渡越时间法TOF(Time of Flight)。原理如下:发射换能器在一端向某一方向发射超声波,同时计时器开始计时。超声波在传播过程中遇到障碍物被反射回来,接收换能器接收到反射回来的超声波,此时结束计时。假设计时时间为t,超声波的传播速度为n,则从换能器到障碍物之间的距离d为超声波往返距离的一半。其中超声波传播速度n与环境温度T有关。系统使用单片机的定时器对超声波的往返时间进行准确计时。采用温度传感器测量温度,并将所得温度经A/D转换,变为数字量后,送入控制器,由软件对超声波速度进行温度补偿处理。
1 系统硬件设计
系统由单片机主控部分和超声波测距部分组成,结构如图1所示。主控部分包括单片机控制模块、液晶显示模块、温度补偿模块和串口通信模块。超声波测距部分包括超声波发射模块和接收模块。
单片机控制模块通过控制发射换能器发射超声波到固定端面,同时启动定时器开始计时。超声波经反射后由接收换能器接收,当单片机控制模块接收到第一个反射波信号即停止计时。单片机根据计时器值计算出时间间隔t。温度补偿模块采集数字温度,根据公式(1)计算出超声波速度v。
其中T是空气介质的温度(℃)。在测量精度要求较高的场合,需要采用温度补偿的方式对超声波的速度校正。
最后利用公式(2)计算出换能器到障碍物之间的距离d。
液晶显示模块显示当前的温度值T和计算所得的距离d。串口通信模块可以通过串口在线下载单片机程序。
1.1 主控部分
1.1.1 单片机控制模块
单片机控制模块为系统的核心控制单元。单片机STC89C52的INT1/P3.3端口用于输出发射器所需的40 kHz方波信号,INT0/P3.2端口用于检测接收器输出的返回信号。液晶显示电路采用LCD1602,使用单片机的P0口和P2口完成显示功能。RXD/P3.0和TXD/P3.1端口用于串口数据的接收与发送。P1.2和P1.3分别为超声波的接收与发送使能端口。P3.4端口用于接收从温度传感器DS18B20获取的温度信息。
1.1.2 温度补偿模块
由(1)式可知,温度对声速的影响较大。为了提高系统的测量精度,增加了温度补偿模块。其中的温度传感器采用的是DALLAS公司生产的数字式温度传感器DS18B20。硬件接口简单,性能稳定,仅需一根接口线与单片机连接;测量温度范围为-55~+125 ℃;温度数字量转换时间为200 ms(典型值);适合于恶劣环境的现场温度测量。
DS18B20的管脚2与单片机P3.4接口相连,单片机通过此管脚以串行传送方式读取测温结果。依靠上拉电阻提供电源,以达到DS18B20工作电流为1 mA的要求。根据所测温度值,利用公式(1)对超声波的速度进行校正。
1.1.3 液晶显示模块
液晶显示模块用于显示当前的环境温度和测得的距离值。显示器件LCD1602的优点是微功耗、体积小、显示内容丰富。它识别的是ASCII码,可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值。
单片机的P0口和P2口与液晶模块相连,其中P0.0~P0.7端口用于LCD1602的数据输出,P2.0~P2.2端口分别用于显示模块的数据命令选择,读写选择和使能控制。R6和R7分别用于调节LCD1602的亮度和对比度。
1.2 超声波测距部分
超声波测距单元的框图如图2所示。系统中采用的换能器是中心频率为40.0 kHz±0.1Hz的发射器255-400ST16和接收器255-400SR16。该换能器具有很高的灵敏度和较强的抗干扰能力。安装时应保持2个换能器中心轴线平行并相距4~8 cm,若能将超声波接收电路用金属壳屏蔽起来,可提高抗干扰能力。
1.2.1 超声波发射电路
只要使用40 kHz的方波激励换能器就可以产生超声波。超声波发射电路如图3所示。电路中使用MOSFET管ZXM61P03F进行电源管理,当单片机的P1.3端口为低电平时,电路通电。MAX864为电压转换芯片,它将输入的5 V电源进行加倍,转换为正电源+10 V和负电源-10 V两路输出,提供给其后的LM8261使用。FC1和FC0为MAX864内部晶振频率选择位,当FC1和FC0均为高电平时,晶振频率为最大值,高频率可以保证MAX864不会对其它电路造成干扰,此时所需的外围电容值(C9,C11.C12,C13)为1μF。LM8261是一个具有高输出电流的运算放大器,较高的输出电流可以使产生的超声波有足够的能量传播较远的距离。LM8261的同相输入端与单片机的INT1/P3.3端口相连,在这个端口连续发出高低电平时,LM8261的输出端就会产生方波。当方波的频率为40 kHz时,就会激励超声波发射器发出超声波。
1.2.2 超声波接收电路
接收电路主要负责将超声波信号转变为电信号。换能器在接收到超声波信号时,由于压电效应会在两个接头上产生微弱的电压信号,一般为毫伏级。微弱的电压信号需通过放大电路进行放大、整形,进一步设计比较器电路将模拟信号转变成为数字信号。
因此,接收电路包括接收换能器,放大电路以及比较整形电路3部分。电路如图4所示。回波放大电路使用的是具有两级放大功能的LMV82 2MM,R15和R16组成分压电路,为同相输入端提供基准电压。其中可以通过调节第二级中的电位器R22来改变放大器的增益,从而调节放大电路的电压放大倍数,以适应接收信号变化范围大的需要。
回波放大电路和稳压电路输出的是模拟信号,电路中利用运算放大器LMC7215组成的比较器将模拟信号转变为数宇信号,以便单片机进行处理。R20和R21为比较器提供基准电压。当反向输入端电压超过基准电压时,输出低电平,否则输出为高电平。这样,若有超声波信号被接收,比较器电路输出端会有由高到低的电平跳变。单片机的INT0/P3.2端口连接到比较器的输出,以捕捉电平的跳变,从而判断超声波是否被接收。同时,比较器还解决了发射换能器发出的超声波脉冲没有经过反射物直接被接收器所接收的问题。
2 系统软件设计
程序设计部分的总体思路是:
Step1:系统的初始化工作。主要包括在液晶显示屏LCD1602上显示两行预设字符,“Temp:”和“Dist:”,分别为环境温度和测量距离的提示字符;设置定时器、外部中断的触发方式;打开发送使能端P1.3和接收使能端P1.2;清零测量成功标志succeedFlag。
Step2:利用温度传感器DS18B20测量环境温度,并将温度值显示在液晶显示屏第一行“Temp:”的后面;根据公式(2)
计算出超声波的传播速度。
Step3:启动定时器T1开始计时,同时连续发送8个频率为40 kHz的超声波信号(对P3.3口的高、低电平分别进行12μs、13μs的延时,实现从P3.3口输出频率为40 kHz的方波信号);延时10μs后,打开外部中断EX0和总中断EA,等待IT0/P3.2处电平的跳变。10μs的延时也可以有效地避免发射换能器发出的超声波脉冲没有经过反射物直接被接收器所接收的问题。
Step4:超声波在传播过程中,遇障碍物后反射回波。当接收探头接收到回波时,外部中断0被触发,此时执行中断服务程序。即取出定时器的高低位TH1和TL1,置位测量成功标志succeedFlag,并关闭中断。定时器所计的数据即为超声波所经历的时间t。
Step5:由以上步骤中所得定时器的值和超声波速度,根据式(1)计算测量距离。
Step6:重复步骤2~5五次后,获得5次测距值。去除其中的最大值和最小值,取中间3值的平均值为当前的测距结果,并将测距结果显示在液晶显示屏第二行“Dist:”之后。
Step7:重复步骤2~6,当有连续三次的预备显示测距结果与当前的显示结果不同时,将预备显示测距结果显示在液晶显示屏上。这样设计是为了避免显示频繁导致的液晶显示抖动。
Step8:重复步骤2~7进行连续地测量。
程序中显示一次测距结果的流程图如图5所示。
3 实验
3.1 调试过程中出现的问题及解决方法
1)回波信号的误接收
由于超声波发射探头和接收探头距离较近,当发射探头发射超声波后,有部分超声波没经过障碍物反射就直接绕射到接收探头上,这部分信号影响了系统的测量结果。设计中采用了两个方法来解决这个问题,一是略微增大发射探头和接收探头之间的距离,使影响降低;二是在发射完超声波之后,开外部中断之前增加10μs的延时,接收电路对此期间接收到的任何信号不予理睬,延时之后接收到的信号才是有效的回波信号。
2)外部中断0的触发方式
没有接收到超声波信号时,INT0/P3.2引脚为高电平;接收到超声波信号之后,该引脚变为低电平。因此理论上外部中断0的触发方式采用下降沿触发和低电平触发均可。而在实际电路中,当采用下降沿触发方式时,由于噪声的影响,在没有回波被接收的情况下,P3.2引脚的高电平经常会出现向下的毛刺信号,该信号引起外部中断,造成了接收到回波信号的误判。解决方法是采用低电平触发,同时在进入外部中断之后判断低电平的持续时间是否大于20μs,只有当满足持续时间要求时,才判定接收到的信号为回波信号,而非噪声。
3.2 测距结果及分析
为了验证系统的性能.在实验室进行了实地测量。将超声波探头正对平整的墙壁进行测量,根据距离不同记录了12次实验结果,测距结果如表1所示。表中的实际距离是用塑料软尺测量得到的,测量距离为测量5次结果之后的平均值。
误差产生及测量范围有限的原因主要有:
1)超声波能量的衰减。由于超声波在传播途中回波幅度随传播距离成指数规律衰减,使得远距离回波很难检测,即使系统已采用相关措施来避免误差,但是超声波能量的衰减是不可能避免的;
2)测量盲区。超声波测距系统测量盲区的计算方法为启动定时器与打开外部中断之间的时间间隔的一半与超声波速度的乘积;
3)接收整形电路造成的时延,信号传输和发射中的失真。
4 结论
设计的超声波测距系统具有很好的稳定性,连续测量时有很好的响应速度。同时,系统具有结构简单、功耗小、成本低的特点,有良好的人机界面,能方便地实时显示测距数据。当然,要满足更高的精度要求,还须进行适当改进,在某些特殊场合的应用中,还要考虑超声波的入射角、反射角以及超声波传播介质的密度、表面光滑度等因素。
评论