摘要:介绍一种基于单片机控制的三种超声测距系统的构成、工作原理和误差分析。利用本系统及其设计方法可以作为农业机器人辅助视觉系统。
关键词:机器人 超声波测距 单片机 串行通讯 数据采集
机器人作为一种能代替人工作业的智能机器,有着广泛的应用前景。其关键技术取决于机器人视觉系统设计的精确与否。超声波传感器以其价格低廉、硬件容易实现等优点,被广泛用作测距传感器,实现定位及环境建模。越声波测距作为辅助视觉系统与其他视觉系统(如CCD图象传感器)配合使用,可实现整个视觉功能[7]。
超声测距原理很简单,一般采用渡越时间法:即D=CT/2,其中D为机器人与视测物之间的距离,C为声波在介质中的传播速度(C=331.4乘以根呈号(1+t/273)m/s,t为摄氏温度),T为超声发射到返回的时间间隔。本超声测距系统共有3对超声换能器,分别放在智能移动车的上、中、下三个位置上。本系统采用一片89C51单片机对三路超声信号进行循环采集,并将数据送到数据缓冲区存储[1,2]。上位机采用PC-586。当上位机需要数据时,向下位机发出申请,下位机通过中断的方式向上位机发送数据。上位机与下位机通过RS-232串行口相连。
1 系统硬件设计
为了能在测量距离的同时判断出物体的大致形状,应设计成多传感器测距系统。经分析可知,频率为40kHz左右的超声波在空气中传播的效率最佳;同时,为了方便处理,发射的超声滤被调制成40kHz左右、具有一定间隔的调制脉冲波信号。该测距系统结构框图如图1所示。由图可见,测距系统由超声波发送、接收、时间计测、微机控制和温度测量五个部分组成。
1.1 超声波发送
这部分包括超声波信号的产生、多路选择及换能器等环节。
超声波发送脉冲如图2所示。40kHz的超声波发送脉冲信号由单片机89C51的P1.0口送出,其脉冲宽度及脉冲间隔均由软件控制。脉冲宽度约为125μs~200μs,即在一个调制脉冲内包5~8个40kHz的方波。脉冲发送间隔取决于要求测量的最大距离及测量通道数。本系统有三路测距通道,采用分时工作,按上、中、下的顺序循环测距。若在有效测距范围内有被测物的话,则在后一路超声波束发出之前应当接收到前一路发同的反射波,否则认为前一路无被测物。因此按有效测距范围可以估算出最短的脉冲间隔发送时间。例如:最大测距范围为5m时,脉冲间隔时间t=2s/v=2×5/340≈30ms,实际应取t≥30ms。
发送的超声波脉冲经多路选择开关CD4052按序分别送到上、中、下三路发送转换能器上。采用缓冲器CD4050是考虑用其两个门来驱动一路发送换能器,以加大发射驱动能力。
1.2 超声波接收
这部分由接收换能器、多路选择开关、比较及控制等环节组成。由于在距离较远的情况下,声的回波很弱,因而转换为电信号的幅值也较小,为此要求将信号放大60万倍左右。采有三级放大:前两级种放大100倍,采用高速精密放大器LM318,
其带宽为15MHz,放大倍数为100倍时,能充分满足要求;第三级采用LF353运算放大器,带宽为4MHz,对于62倍的放大倍数,能充分满足条件[3,6]。放大后的交流信号经光电隔离送入比较器,比较器的作用是将交流信号整形输出一个方波信号,此方波信号上升沿使D触发器触发,向CPU发中断申请。在中断服务程序中,读取时间计数器的计数值,并结合温度换算出的速度算出发射到接收的距离。图3给出了一路超声波接收电路原理图(略去多路选择开关)。
1.3 时间计测
超过波从发射到接收的间隔时间的测定是由单片机内部的计数器T1来完成的。在调试过程中出现的发送部分与接收部分的直接串扰问题是由于换能器之间的距离不大,有部分声波未经被测物就直接绕射到接收换能器上。从发射开始一直到“虚假反射波”结束[5]这段时间,通过控制触发器(74LS74)不能触发,从而不会发中断申请,可有效躲避干扰,但也会形成所谓的“盲区”。本系统的盲区约为20cm左右。
1.4 微机控制部分
由单片机控制的多路选择开在来决定上、中、下三个通道分时工作的顺序。CD4052的X侧选择发送通道,Y侧选择接收通道,由89C51的P1.1和P1.2按顺序发出通道选择信号,接到CD4052的A、B端,使发送通道与接收通道一一对应地接能。
由于受环境温度以及超声固有宽波束角等因素的影响,超声传感器所测量的值与实际值总有一些误差。本超声测距系统采用曲线拟合的最小二乘法对测量数据进行拟合,使其精度达到±4cm。
2 系统软件设计
2.1 超声数据的采集与处理软件
本系统软件分两部分:主程序和中断服务程序。主程序完成系统初始化、选择能路号、控制发射和接收超声波等。主程序流程图如图4所示。
中断服务程序包括内部T0中断和外部INT0、
INT1中断服务程序。T0设置为30ms中断一次,其任务就是每隔30ms产生5~8个40kHz的方波作为超声脉冲并按序送到三个通道,即产生如图2所示的超声波发射脉冲,图2也给出了一个通道的工作时序图。T0中断服务程序流程图如图5所示。INT0中断子程序读取A/D转换结果,并将相应数据值转换为环境温度值;INT1停止T0、T1计数,根据T1内容计算时间T,并进行最终距离的计算。先计算超声波传播速度:C=331.4×(根号1+t/273),再计算距离:D=CT/2,并将计算结果送入缓冲区以备通讯。T1工作在方式2,并设计成门控方式。
2.2 串行通讯程序
为了不影响下拉机完成其他工作,本系统采用下位机以中断的方式向上位机发送测距数据,在测距主程序中开串行口中断。进入中断程序后,仍采用查询方式发送数据。
上位机(PC-586)以子程序的形式给出接收程序。若系统需要新的测距值时,就调用一次接收子程序。接收子程序框图如图6所示。接收子程序收到一个数据后,判断数据传输是否有错,若有错就向下位机发“01”命令,下位机收到此命令后,则重表发送;若传输过程无错,向下位机发送“00”命令,下位机则继续发送下一个数据。
3 误差分析
本系统最大测距误差在8cm左右,测距的盲区为20cm。
测距误差主要来源于以下几个方面:
(1)超声波波束对探测目标的入射角的影响;
(2)超声波回波声强与待测距离的远近有直接关系,所以实际测量时,不一定是第一个回波的过零点触发;
(3)超声波传播速度对测距的影响。稳定准确的超声波传播速度是保证测量精度的必要条件,波的传播速度取决于传播媒质的特性。传播媒质的温度、压力、密度对声速都将产生直接的影响。因此需对声速加以修正。对于测距而言,引起声速变化的主要原因是媒质温度的变化。本文采用声速预置和媒质温度测量结合的方法对声速进行修正,可有效地消除温度变化对精度的影响。
影响测量误差的因素很多,还包括现场环境干扰、时基脉冲频率等。
本系统硬件简单、容易实现、测距范围比较大、测量误差可以控制在±4cm左右。超声测距系统向上位机发送数据和下位机的数据采集相互独立,可以同时进行,保证了测距数据的实时性。
|