基于AT89C2051的超声波测距系统
超声波接收单元中包括:模拟放大、滤波电路、电平转换电路,如图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分别是向上加值和向下减值,每按一次加或减一厘米,由数码管输出显示。
4 系统软件设计
该系统软件采用8051汇编语言编写,主程序流程图如图8所示。AT89C2051单片机有2个外中断口,分别用于接收回波中断和按键输人中断,对应2个外中断子程序。此外,还用到了内部中断定时器, 它用于控制发送载波脉冲,如图9所示。 定时器65 ms产生中断一次,主要是发送载波脉冲和计数器清零。外中断0将在有下降沿触发时产生中断,用于读取定时器产生的计时值和使标志位置位。外中断1是按键输人中断,用于提供比较值来输出控制信号。S0第一次触发为中断产生信号,再次触发则为输入确定信号。S1和S2按键是输入值增加和减少按键,它们通过判断对应的10口状态来确定是否输入。
图8 主程序流程图
图9 各中断子程序流程图
5 测试结果与分析
超声波测距系统调试完成后,对系统进行了测试。在超声波换能器与较大平面(如墙壁面)法线方向一致时,量程为0.04-10 m,测距盲区为4Cm,分辨率为0.01 m,最大测量误差≤0.02 m.因为超声波具有一定发散角,所以当在正前方和斜前方都有物体时,会以距发射器最近的物体作为探测目标。
误差分析:限制该系统最大可测距离的因素包括:超声波的幅度、反射面的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。测距误差主要来源于以下几个方面:①超声波波束对探测目标的入射角的影响;②超声波回波声强与待测距离的远近有直接关系;③超声波传播速度对测距是有影响的。稳定准确的超声波传播速度是保证测量精度的必要条件,传播媒质的特性,如温度、压力、密度对声速都将产生影响。因此,为了准确地计算距离,应对声速加以修正,系统程序中采用了软件补偿措施。
6 结束语
介绍了一种超声波测距系统,采用单片机及专门设计的驱动和接收电路,通过超声波换能器,可以测量和显示0.04-10 m内的物体距离,分辨率可达到O.O1 m.这种测距系统可用于物面和液面测量,汽车倒车报警装置。硬件采用模块化设计,可以嵌入到其他系统中。
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)