当前位置:文档之家› 超声波测距模块总结报告

超声波测距模块总结报告

超声波测距模块总结报告董升亮Senscomp公司的超声波测距系统包括两个部分,分别是测距模块(6500)和静电换能器(600)。

前者驱动后者,后者负责发送和接收超声波,之后用户便可根据超声波发收这一时间间隔计算出与目标物之间的距离。

经过多次户外实验与优化,目前可实现一片单片机对4个超声波测距模块的控制,并且每个的探测距离都可达到10米左右。

一、超声波测距原理超声波是指频率高于20khz的机械波。

为了以超声波作为检测手段,必须产生超声波和接收超声波。

完成这种功能的装置就是超声波换能器或超声波探头。

超声波换能器有发送器和接收器,600系列换能器同时具有发送和接收声波的作用。

超声波换能器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距原理也很简单,就是测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就可以得到二倍的声源与障碍物之间的距离。

即:D=C*T/2。

其中,D为600换能器到障碍物之间的距离;C为超声波此时在空气中的传播速度;T为超声波的发收时间。

在空气中,声波的传播速度一般受温湿度的影响,在没有温湿度传感器或对测量精度要求不高的情况下,一般取340m/s。

在以上几次实验中,程序中采用C=340m/s。

二、6500驱动模块我们所采用的这款6500驱动模块,手册上说可以实现6英寸-35英尺(0.152m-10.668m)的准确测距,但由于所采用的600模块是自发自收的,在发送过程中从障碍物返回的信号就无法捕获。

另外,超声波换能器有一定的惯性,发送结束后还留有一定的余振,这种余振经换能器同样产生电压信号,扰乱了系统捕捉返回信号的工作。

因此,在余振未消失以前,还不能启动系统进行回波接收(要等待2.38ms),以上两个原因造成了超声传感器具有测量一定的测量范围。

模块最近可以到测量37cm。

当然实际实验过程中会在这些标准上稍有浮动。

该模块操作简单,但要特别注意的是它的噪声干扰问题。

该模块共有九个引脚如图1。

图11引脚:接地2引脚:BLNK,多返回模式时,用于控制(拉低)ECHO信号3引脚:不用4引脚:INIT,拉高启动模块发射超声波。

拉低时,ECHO也同时拉低5引脚:不用6引脚:OSC,6500模块内部时钟,一般用不到7引脚:ECHO,当超声波遇到障碍物返回至换能器时,该引脚拉高。

该引脚需要一个470KΩ的电阻上拉至Vcc8引脚:BINH,可使能探测37cm以内的障碍物9引脚:Vcc,4.5V-6.8V供电,我们采用5V供电说明:在这9个引脚当中,我们只用到其中的4个(Vcc,GND,INIT,ECHO)。

另外一点值得强调的是,由于BLNK和BINH受内部噪声影响比较大,因此这两个引脚直接连接到GND。

并且6500模块与单片机控制板之间的连接排线长度尽量要短。

6500驱动模块具有两种工作方式。

第一种工作方式测量的是换能器到其前方第一个障碍物之间的距离。

第二种工作方式可探测多个障碍物的回波,其区分能力为间隔3英寸以上的障碍物。

图2 单返回模式,控制时序实例三、600系列换能器此超声波换能器是集发送与接收一体的一种换能器。

传感器里面有一个圆形的薄片,薄片的材料是塑料,在其正面涂了一层金属薄膜,在其背面有一个铝制的后板。

薄片和后板构成了一个电容器,当给薄片加上频率为49.4khz、电压为300vacpk-pk左右的方波电压时,薄片以同样的频率震动,从而产生频率为49.4khz 的超声波。

当接收回波时,6500内有一个调谐电路,使得只有频率接近49.4khz的信号才能被接收,而其它频率的信号则被过滤。

换能器在将电信号转化成声波的过程中,所产生的声波并不是理想中的矩形,而是一个类似花瓣一样形状,发送超声波的波束角大约为30度,见图3。

在实际应用中,该波束应为一个立体的圆锥形,这也导致两个问题:1)随着探测距离的延长,探测障碍物方位的准确性下降。

即无法对障碍物进行准确定位。

2)探测距离越远,能量扩散越严重,在障碍物不理想的情况下,返回信号减弱,以至于在标准探测范围内,返回脉冲也达不到600换能器的判断阈值。

图3四、单片机控制模块系统采用PIC30F4011控制芯片,同时集成串口和CAN总线两种数据传输方式。

该电路共配置了8个6500模块接口,目前已经用到了其中的4个。

为了减小相互之间的干扰,每个模块之间都采用了LC滤波电路。

同时在每个模块的电源到地之间增加了一个1uF的旁路电容和一个470uF的铝电解电容,前者用来消除内部干扰对BINH引脚的影响,后者起储能作用,这两者视情况可选择使用。

其电路连接如图4,PCB布线如图5。

两者中的电感用相近引脚间距的电容做了代替。

图4图5五、程序控制模块由于该单片机控制多个超声波测距模块,因此在编程过程中要首先考虑到各个模块之间的相互影响,最基本的要求是某一个模块突然的硬件错误不会对其他模块的正常运行造成影响。

最初考虑到在uCOS-II上进行编程,但实施过程中发现要借用互斥信号量与多个邮箱,任务多且复杂,既费时又费力,并且会对超声波往返时间的计时产生影响,同时也使对程序的阅读更加困难。

最终放弃了这个方案。

新方案采用多重循环来进行模块控制调度,为避免陷入死循环,程序中采用了goto语句。

在此程序中,我们定义了一个整型变量Con6500,让他分别等于1、2、3、4来分别控制这四个模块,同时还用到了3个定时器:Timer1:用于设置6500模块探测周期。

Timer2:用于记录各个模块超声波往返时间。

Timer3:用于防止某一模块超时。

程序中对各个模块的返回引脚均采用查询的方式,整个程序的关键代码如下:int main(void){//CAN、UART、Timer、IO初始化Con6500=1;//从第一个模块开始探测//……while(1){StartChk:while(Timer1Lock==1)//有一个6500模块开启{while(Con6500==1)//开启的是第一个模块(6500-1){TMR3=0;//为第一个模块计时,以避免其超时while(1)//查询6500-1返回引脚{if(PORTDbits.RD1==1)//ECHO1有返回{ECHO1();//完成距离计算及数据发送 TB8=0;//关闭6500-1超声波换能器Con6500=2;//下一次6500-2模块发送Timer1Lock=0;//标记所有模块都关闭goto StartChk; //等待下一个模块开启}else if(TMR3>=W aitTMR3)//如果6500-1超时{ TB8=0;//关闭6500-1超声波换能器Con6500=2;//下一次6500-2模块发送Timer1Lock=0; //标记所有模块都关闭goto StartChk;//等待下一个模块开启}}}while(Con6500==2)//若开启的是第二个模块(6500-2){TMR3=0;//为6500-2计时,避免其超时while(1)//查询6500-2返回引脚{if(PORTEbits.RE1==1)//ECHO2有返回{ECHO2();//完成距离计算及数据发送 TB7=0;//关闭6500-2超声波换能器Con6500=3;//下一次6500-3模块发送Timer1Lock=0; //标记所有模块都关闭goto StartChk; //等待下一个模块开启}else if(TMR3>=W aitTMR3)//若6500-2超时{ TB7=0;//关闭6500-2超声波换能器Con6500=3;//下一次6500-3模块发送Timer1Lock=0; //标记所有模块都关闭goto StartChk; //等待下一个模块开启}}}//……其它模块}}}/*定时器1中断服务程序*/void __attribute__((__interrupt__)) _T1Interrupt(void){IFS0bits.T1IF=0; //清除T1中断标志if(Con6500==1){TMR2=0;//超声波收发时间计时开始TB8=1;//开启6500-1超声波换能器Timer1Lock=1;//标记有模块开启}if(Con6500==2)//判断SonarLock=1是为了防止6500-1不工作{TMR2=0; //超声波收发时间计时开始TB7=1;//开启6500-2超声波换能器Timer1Lock=1; //标记有模块开启}//……}六、关于噪声干扰噪声问题是必须要注意和解决的问题,否则它将影响测距模块的可靠性和准确性,有时甚至会直接导致其无法正常工作。

对超声波测距模块产生的干扰主要包括内部干扰和外部干扰。

1、内部干扰内部干扰主要来自超声波发送时产生的发送脉冲, 6500模块的内部电路见图6。

图6其中TL851是一个数字12步测距控制集成电路。

内部有一个420khz的陶瓷晶振,6500系列超声波距离模块开始工作时,在发送的前16个周期,陶瓷晶振被8.5分频,形成49.4khz的超声波信号,然后通过三极管Q1和变压器T1输送至超声波传感器。

发送之后陶瓷晶振被4.5分频,以供单片机定时用。

在发生脉冲的过程中,通过示波器观察,会发现在GND和BINH上会有多个尖峰脉冲,其峰峰值有时甚至达到4V,这将导致在发送超声波时,ECHO引脚被突然拉高,从而导致根本无法探测障碍物。

其原因为BINH引脚对噪音过于敏感,官方提供的解决办法为将BINH直接连接到地,同时在Vcc与GND之间加1uF的旁路电容。

但在实际应用过程中我们发现,即便单个模块调试成功,当将多个6500模块集成在一个板子上同时工作时,仍会有干扰发生从而影响某一个或几个模块的正常工作。

经过反复调试,我们发现有必要在6500模块排线的末端加一大容量的铝电解电容来稳定供电电压滤除噪音。

TL852是专门为接收超声波而设计的芯片。

因为返回的超声波信号比较微弱,需要进行放大才能被单片机接收,TL852主要提供了放大电路,当TL852接收到4个脉冲信号时,就通过REC给TL851发送高电平表明超声波已经接收。

由此可见,当返回超声波信号太弱或者达不到4个返回脉冲时,将不能实现准确测距。

2、外部干扰外部比较复杂,包括外部事物产生与该超声波类似的噪音;不理想的障碍物对测距的干扰;以及个测距模块之间的相互干扰。

虽然多数超声波传感器的工作频率为50Khz左右,远远高于人类能够听到的频率。

但是周围环境也会产生类似频率的噪音。

比如,电机在转动过程会产生一定的高频,轮子在比较硬的地面上的摩擦所产生的高频噪音,机器人本身的抖动。

这些都将对换能器接收信号造成影响。

相关主题