测距系统的硬件设计
超声波测距系统工作原理如图1。本系统由AT89C2051 单片机、超声波发射、接收放大电路、环境温度采集电路及显示电路组成。AT89C205l单片机是整个系统的核心部件,协调各部件的工作。单片机控制的振荡源产生40kHz 的频率信号来驱动超声波传感器,每次发射包含l0 个脉冲,当第一个超声波脉冲发射后,计数器开始计数,在检测到第一个回波脉冲的瞬间,计数器停止计数,这样就能够得到从发射到接收的时间△t;温度采集电路也将现场环境温度数据采集送到单片机中,提供计算距离时对超声波传播速度的修正。最终单片机利用公式计算出被测距离,由显示器显示出来。单片机的串行口RXD、TXD 分别与显示电路的RXD 和TXD 相连,构成串行静态显示电路;定时/记数器T0,与V/F 转换器的输出端相连,实现频率采集功能;P1.7 与CMOS 多谐振荡器的控制端相连,通过软件使P1.7 口输出高或低电平,从而控制超声波的发射;P1.6 通过一个开关二极管IN4l48 与比较器LM324的基准电压产生电路控制端连接,发射超声波时置P1.6 为“1”,输出的电平可以抑制比较器的翻转,从而能有效地抑制发射器发射的超声波直接辐射到接收器而导致错误的检测;发射结束后,P1.6 置为“0”,此时通过扫描与比较器输出端连接的P1.2 121,根据P1.2 口的输入状态判断是否接收到回波。
超声波发射及驱动电路由CD4011组成的RC振荡器产生,温度传感器采用AD590。
检测法及补偿原理
超声波测距通过下列公式计算:
式中,Tf —超声波传播时间;
Vs—空气中的声速;
k—系数,近似为0.5。
超声波脉冲由一个压电式传感器发出,它的地面反射波由另一个压电式传感器接收。这两个压电式传感器紧密地并排在一起组成了探测头。由k 引起的误差通过一个校准器的校准后可以忽略不计。Tf 和Vs 可以认为是不相关的,所以被测距离的标准误差u(D)可以从下列公式得到:
这里u(Vs)和u(Tf)是声速和传播时间的系统误差。空气中的声速受到温度θ和湿度h 的影响,即:
因此,式(2)变为:
如果湿度在10%RH~90%RH 内变化,它对声速的影响在20℃时为0.15%左右。在0.3m 的范围内导致的系统误差仅为0.3mm 左右,所以没有必要安装湿度传感器。
空气中的声速可以根据下式得到:
其中:T—绝对温度。
声速在330m/s 到360m/s 范围内变化时应考虑到0℃到40℃范围内的温度变化。在测距中必须考虑到这种影响,因此需要一个温度传感器。如果应用于汽车上,另一个影响测距精度的因素是车速,这种影响随着超声波传播距离的增加而增加。如果最大车速相当于声速的10%,则测量相对误差可由下式估算:
对于车速在33m/s(约120km/h),在0℃时(Vs=330m/s)误差约为0.5%,因此一般也可以忽略这一因素带来得误差。
智能化实现
本传感器在电路上可分为两大部分,其一为时间测量(见图2),其二为温度传感器与误差的自动补偿(见图3)。其中图2 输出的Ni 即为图3 输入的Ni。
时间测量
时间测量中采用的超声波信号周期为25μs,却需要一个相当于在20°C 时约9mm 波长的超声波信号源。为了确保精度,需要一个波长检测器。超声波信号源由一个信号发生器和一个过零检测器的电路组成。任意信号发生器由一个可存放任意波形的16Kbyte EPROM,一个用来扫描EPROM的16 位计数器和一个DAC 组成。过零检测器由临界值检测器组成。检测器的临界值是接收到的信号峰值的一部分,使检测器可以根据参考零电位比较接收到的信号。这就使得在信号区的信号能最大范围地被检测到,从而使噪声干扰最小。
存储在EPROM 中的激励信号必须设计成可以接收那些低到足以防止第一个临界值接收器干扰不同周期的回声。这些特殊的信号由一个约束最优化程序处理,这种程序主要是为了使回波的能量最小从而把回波的峰值限定位一个固定值。最合适的允许接收由固定振幅的最低回波Y(f)的驱动信号X(f)可以由解下列方程得到:
最优的结果主要取决于被选回声的振幅,回声越低,振幅越低,那么被一个有关的噪声振幅干扰的可能性也越低。在任何条件下使用最好的信号取决于噪声的实际量。传感器还有一个简单的噪声测量系统。该系统可以通过在无回波阶段监测输入信号来估计实际噪声。这个噪声测量系统的输出可以在低、中、高噪声条件下转换。
另外,回波的振幅主要取决于地面的反射性和距离。这些影响可以由接收电路中的一个自动增益控制放大器来使其最小化。因此回声振幅可以保持在一个固定值。这就用到了第一个检测器中的固定临界值。越零检测器的输出可以用来驱动一个缓冲器(可以在回声到达的时间内锁存计数器输出)。如果一个新的回波未被检测到,则缓冲器的输出不被更新。这就避免了无意义的测量。被缓冲的值是根据传播时间和一个已知的固定值Na(该值由它在EPROM 中的存储方式及第一个检测器的临界值水平决定)来定。系统时钟为8MHz,因此周期为125ns,当一个距离超过1m,最大的测量时间约8ms。一个50Hz 的多谐波振荡器每20ms 提供计数器一个读数。
温度传感器与误差的自动补偿
空气温度由一个温度传感器检测并经电路处理得出。它装在探头中,误差不超过1℃。误差的自动补偿可以由图2 所示的简单模拟电路得出。V 与所测距离成正比。
软件设计思想
由于超声发射传感器与超声接收传感器相隔很近,当发射超声波时,接收传感器会收到很强的干扰信号。为防止系统的误测,在软件上采用延迟接收技术,以此提高系统的抗干扰能力。当起始键按下,即发送发射超声波的指令,控制系统开始执行程序,完成对温度的采集;发送、接收超声波的时间间隔的测量;最后通过数值处理程序计算出被测距离,送显示器显示。本系统软件采用模块化设计,由主程序、测距子程序、测温子程序、显示子程序等主要模块组成。主程序框图如图4所示。
测试结果
本系统应用于非接触式测距。对相距0.1m~0.3m的两物体、环境温度从0℃ ~40℃之间变化时,进行了实际测试,由于系统增加了温度修正系统及软件补偿技术,大大提高系统的测量准确度。实际测试证明,经修正后该系统的测量准确度可达到±0.01m。
结束语
本文提出的基于单片机的超声波测距系统,具有成本低、精度高、误差小、显示直观、电路简单以及抗干扰性好等优点,能够满足一些中小规模系统的测量要求。尤其能够应用于一些特殊的场合,如自助式停车,智能悬架和车前灯调节等。