现在的位置: 首页 > 综合 > 正文

(转载)高精度超声波测距系统设计

2018年03月16日 ⁄ 综合 ⁄ 共 2805字 ⁄ 字号 评论关闭

原文:http://www.21ic.com/app/test/200903/38887.htm

引言

利用超声波测量距离的原理可简单描述为:超声波定期发送超声波,遭遇障碍物时发生反射,发射波经由接收器接收并转化为电信号,这样测距技术只要测出发送和接收的时间差,然后按照下式计算,即可求出距离:           

由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此,广泛应用于倒车提醒、建筑工地、工业现场等的距离测量。目前的测距量程上能达到百米数量级,测量的精度往往能达到厘米数量级。本文在分析现有超声波测距技术基础之上,给出了一种改进方案,测量精度可达毫米级。

2 系统方案分析与论证

2.1 影响精度的因素分析

根据超声波测距式(1)可知测距的误差主要是由超声波的传播速度误差和测量距离传播的时间误差引起的。

对于时间误差主要由发送计时点和接收计时点准确性确定,为了能够提高计时点选择的准确性,本文提出了对发射信号和加收信号通过校正的方式来实现准确计时。此外,当要求测距误差小于1 mm时,假定超声波速度C=344 m/s(20℃室温),忽略声速的传播误差。则测距误差s△t<0.000 002 907 s,即2.907 ms。根据以上过计算可知,在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1 mm的误差。使用的12 MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用AT89S51的定一时器能保证时间误差在1 mm的测量范围内。

超声波的传播速度主要受空气密度所的影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系。温度与超声波的速度之间的近似公式为:          

式中:C0为零度时的声波速度332 m/s;T为实际温度(℃)。由此可见,测量精度与温度有着直接的关系,本文采用DS18B20温度传感器,对外界温度进行测量,并在软件中实现温度补偿。

2.2 整体方案设计

本文主要采用单片机控制技术,实现精确的超声波测距方案,整个系统由超声波收发单元、波形校准单元、温度测量单元、显示单元和控制单元5个单元组成。其中,超声波收发单元主要实现超声波的接发送和接收;信号处理单元主要实现去除干扰、波形整形、锁相环等功能,便于实现准确计时;温度测量单元主要测量外界温度,实现温度补偿;显示单元实现测量数据的显示;单片机为控制单元,完成指令发送,接收数据,进行计算等任务。

3 系统硬件设计

3.1 超声波发射部分

本文中脉冲发射采用软件方式,利用AT89S51的P1.0口发射40 kHz的方波信号,经过74HC04放大后输出到超声波换能器,产生超声波。74HC04是一个高速CMOS六反相器,具有放大作用,具有对称的传输延迟和转换时间,而相对于LSTTL逻辑IC,它的功耗减少很多。对于HC类型,其工作电压为2~6 V,它具有高抗扰度,可以兼容直接输入LSTTL逻辑信号和CMOS逻辑输入等特点。

本系统将40 kHz方波信号分成两路,分别由74HC04经两次和一次反向放大,从而构成推拉式反向放大。电路图如图2所示。

3.2 超声波接收部分

超声波接收部分采用集成芯片CX20106A,这是一款红外线检波接收的专用芯片。内部电路由前置放大器、自动偏置电平控制电路、限幅放大器、带通滤波器、峰值检波器和整形输出电路组成。可以利用它作为超声波检测电路。

接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适的幅值;再经过带通滤波器滤波得到有用信号,滤除干扰信号;最后由峰值检波器和整形电路输出到锁相环路,实现准确的计时。CX20106A的外部接线图如图3所示。 

图3中1脚是接收信号输入端,2脚是调节接收信号灵敏度,电阻越小,灵敏度越高。电容越大,灵敏度越高。电容一般取1μF,电阻50~300 Ω的,在干扰较大的场合增加电阻阻值可将灵敏度调低,干扰小的场合减小阻值将灵敏度调高。5脚主要用来调节中心频率,这里取200 kΩ,7脚接上拉电阻,这里取1 kΩ左右。

3.3 显示部分

显示部分采用共阴极数码管,由单片机实现控制,单片机的P0口输出段码,P2口用作位码,用PNP型三极管驱动(本设计采用9018),由于单片机I/O口的驱动能力非常小,P0口需外接上拉电阻来增加驱动能力,应用时要注意,在低电平时,可能由于电流直接经电阻流进I/O的灌流太大而烧毁单片机,所以提升电阻一般取600~1 000 Ω。实验证明,数码管亮度合适。其原理图如图4所示。

3.4 温度测量部分

DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,将其数据线与单片机的P1.3相连,就可以实现温度测量。测量的温度精度可以达到0.1℃,测量的温度的范围在-20~+100℃。电路如图5所示。

4 系统软件设计

测距系统软件采用汇编语言,由发射脉冲子程序、用中断实现回波接收子程序、计算距离子程序、数码管显示子程序和计时单元延时子程序几部分组成,采用模块化编程。其软件流程图如图6所示。

程序首先初始化需要用到的寄存器,内存单元,设置中断触发方式,并初始化DS18B20,然后控制P1.0口输出12μs的高电平,再输出13μs的低电平,循环10次便可发射10个频率为40 kHz的脉冲信号。经过一段延时后,CPU开放中断,开始计数,将计数器初值设为延时所经过的距离,计数器每过一个计时单元加一。中断产生,停止计数,最后将计数器中的值数据处理后显示到数码管上。如果计数器中的值小于预定值就由软件产生一定频率的信号到蜂鸣器报警,并启动报警灯。当需要所存数据时,由外部中断判断键盘是否按下,通过不断显示上次测量数据来锁定数据。当检测到键盘再一次按下时,按取消锁存,并继续测量距离。

5 结语

应用本系统3 mm~20 m内的目标做了多次测量,测量结果为,其最大误差为1.5 mm,且重复性好。可见基于单片机设计的超声波测距系统具有硬件结构简单、工作可靠、测量误差小等特点。因此,它可用于许多对测量要求精度高,测量范围适当的设备和各种检测系统中。

 

 

 

 

这是网上的一篇文章,相关图片没有粘贴过来!

原文:http://www.21ic.com/app/test/200903/38887.htm

我有找到一个开源的超声波测距项目

网址:http://open.robotsky.com/chuanganqi/

资料:

http://mcudata.com/Webmaster/danpianjiyuanli/2009/0607/2021.html

 

抱歉!评论已关闭.