[讨论] 基于单片机的超声波测距仪

qixiangyujj   2010-4-26 21:31 楼主

摘要:随着检测技术研究的不断深入,对超声检测仪器的功能要求越来越高,单数码显示的超声检测仪测读会带来较大的测试误差。进一步要求以后生产的超声仪能够具有双显及内带有单板机的微处理功能。本文简要介绍了基于单片机的超声波测距仪的主要硬件电路。
    关键词:超声波 设计原理 发射电路 接收电路
    传统的测距方式在某些特殊场合存在不可克服的缺陷。如液面测量、井下测量等受到很大的限制。利用超声波测距可解决这些问题,因此超声波测距技术在工业控制、勘探测量、机器人定位等领域得到了广泛应用。所谓超声波是指高于20KHZ的机械波,具有强度大、方向性好等特点。本系统选用M68HC08单片机为控制部件。
    一、设计原理
    当超声波从空气中垂直入射到汽油、木材、钢材时,几乎产生全反射,这样,反射回来的回波具有足够的能量被接收探头所接收,为超声波测距创造了可能性。 a3943acf363612a57d35810f5a02387f.jpg

"     如图1所示,超声波测距原理是通过超声波发射传感器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就停止计时。常温下超声波在空气中的传播速度为C=340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(S),即:s=c*t/2=c*t0(t0就是所谓的渡越时间)
    二、超声波测距系统硬件设计总体方案
    本系统中选用的探头是40KHz的超声传感器,有一支接收传感器SZW-R40-10P和一支发射传感器SZW-S40-12M。
    MC68HC908GP32单片机是Motorola公司的第2代8位微控制器,由于其高性价比,非常适用于中小型MCU开发商和生产厂家的欢迎。这类MCU的指令集非常精简,容易被用户掌握。其主要硬件资源有:片内307字节的监控ROM,32KB的片内FLASH存储器和512B RAM,33根通用的I/O引脚,2个16位的双通道定时器接口模块,外部中断,同时具有看门狗监视复位,低电压极限检测复位,非法指令检测复位等,使得应用系统免除了进入死循环的危险。



一)发射电路。本系统采用方波调制的脉冲发射电路,即采用单片机的PORTA4口作为IO口,同时外接驱动芯片来提高其输出电流的驱动能力,保证40KHz的脉冲信号有一定的功率。单片机产生以5个40KHz为一组的脉冲群,加到压电晶片上能使晶片发出超声波,当信号为高电平时,发射传感器两端就加上了高电压,内部的压电晶片开始振动,此时接收传感器的两端可以检测到有40KHz信号;当信号为低电平时,发射传感器通过回路放电,此时接收传感器可以接收到回波信号。
    (二)接收前置及带通放大电路。放大电路共有三级:前置放大器是高阻抗输入级,高输入阻抗是为了与传感器的高阻抗匹配。
    课题中的带通放大器采用了集成滤波器MAX275,这是一款连续时间模拟集成有源滤波器,片内硬件由四个运算放大器及若干电阻电容组成。MAX275组成的滤波器具有外接元件少、结构简单、参数调整方便和不受运算放大器本身频率特性影响等优点;由于没有外接电容,而且是单片结构,因而高频场合时受分布电容的影响较小。MAX275使用±5V电源,电源电流最大不超过30mA。

297bc7fafba838347ec4412adc95217b.jpg
216f91fef2b7edceed8ad373a3777f9a.jpg
    (三)LED显示电路。MAX7219就是一种高性能,低价格的多位LED显示驱动器,可同时驱动8位共阴极LED或64只独立的LED发光二极管,其内部具有14*8RAM数字和功能控制寄存器,可方便的对每位数字进行单独控制,刷新,不需重写整个显示器寄存器。如图5,通信方式采用串行数据方式,可与68HC08系列的任何一种微控制器方便的接口,广泛应用在条状图形显示器,7段数码管显示器,工业控制器显示模板,面板表与LED矩阵显示屏等众多场合。
    三、结论
    本系统在空气中测量范围为0~3m左右,对固体,液体表面均可测量,但要求被测表面比较光滑平坦,确保超声波能够被反射回来,并被探头接收。在实验中,对8~260cm范围进行测量,经误差补偿后近距离是最大误差达30mm。线性度,稳定性和重复性都比较好

你好呀

回复评论 (2)

回复 楼主 qixiangyujj 的帖子

能在详细点就好了
努力学习!OK
点赞  2010-5-6 09:18
是啊,能详细介绍下发射驱动那块就好啦!
点赞  2010-6-30 16:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复