超声波测距模块总结报告_超声波测距总结报告
超声波测距模块总结报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“超声波测距总结报告”。
超声波测距模块总结报告
董升亮
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。
图1
1引脚:接地
2引脚:BLNK,多返回模式时,用于控制(拉低)ECHO信号 3引脚:不用
4引脚:INIT,拉高启动模块发射超声波。拉低时,ECHO也同时拉低 5引脚:不用
6引脚:OSC,6500模块内部时钟,一般用不到
7引脚:ECHO,当超声波遇到障碍物返回至换能器时,该引脚拉高。该引脚需要一个470KΩ的电阻上拉至Vcc 8引脚: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();//完成距离计算及数据发送
LATBbits.LATB8=0;//关闭6500-1超声波换能器
Con6500=2;//下一次6500-2模块发送
Timer1Lock=0;//标记所有模块都关闭
goto StartChk;//等待下一个模块开启
}
else if(TMR3>=WaitTMR3)//如果6500-1超时
{
LATBbits.LATB8=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();//完成距离计算及数据发送
LATBbits.LATB7=0;//关闭6500-2超声波换能器
Con6500=3;//下一次6500-3模块发送
Timer1Lock=0;//标记所有模块都关闭
goto StartChk;//等待下一个模块开启
}
else if(TMR3>=WaitTMR3)//若6500-2超时
{
LATBbits.LATB7=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;//超声波收发时间计时开始
LATBbits.LATB8=1;//开启6500-1超声波换能器
Timer1Lock=1;//标记有模块开启
} if(Con6500==2)//判断SonarLock=1是为了防止6500-1不工作
{
TMR2=0;//超声波收发时间计时开始
LATBbits.LATB7=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左右,远远高于人类能够听到的频率。但是周围环境也会产生类似频率的噪音。比如,电机在转动过程会产生一定的高频,轮子在比较硬的地面上的摩擦所产生的高频噪音,机器人本身的抖动。这些都将对换能器接收信号造成影响。但这一类噪音出现的几率比较低,有时可以忽略不计。
由于换能器发送的超声波并不是理想的圆柱型,而是开口呈30度的圆锥形。这将导致测距模块对障碍物的方位判断产生误差。即超声波可能会先碰到周围的物体产生返回信号,从而无法准确探测换能器与目标物体之间的距离。这个问题也是在后期实验过程中验证了的。在这种情况下,可采用复合返回模式,但这样又极易造成内部干扰。因此在对测距精度要求不高的情况下,我们还是采用单返回模式。
最后一个要注意的是多模块之间的交叉问题,由于我们所采用的超声波测距模块发射的超声波几乎完全相同,这就导致相互间产生干扰的几率增大,其解决方案为增大模块之间的朝向角,也可以在换能器前加一遮挡物,前提是不影响超声波的发送。
七、实验过程及测试结果分析
实验过程完全没有预想中的那么顺利,看似操作简单的测距模块,至今为止已经耗费了一个多月的时间。总结起来,大部分时间都耗费在了消除噪音上。
第一阶段主要是对第一套测距模块的测试和相关电路的设计修改。但在一开始就遇到了麻烦,主要原因归结于自己的粗心大意和不重视官方材料。以至于在电路设计时忽略了ECHO引脚的上拉电阻,导致无法测得返回信号。由于英语水平并不很高和当时的习惯问题,并未意识到从官方网站上查找相关资料,而是仅仅局限于对电路电气规则的检查。
第二阶段主要集中于对噪声的发现与处理。在相关电路及元件问题解决后,模块仍无法正常工作,具体表现就是ECHO引脚的突然拉高从而导致无法进行正常测量,这也是该超声波测距模块最常见的问题。其原因是BINH引脚对噪声过于敏感,而噪声有来源于模块内部,即在每次发送超声波时产生的脉冲会对供电电压造成影响。经过示波器观察会发现在BINH引脚和GND引脚上有峰峰值(大约为3.6V)较大脉冲信号。我们采取的主要解决办法是将BINH和BLNK引脚在排线末端直接
连接到地,并在Vcc与GND之间加一个1uF的滤波电容。后期实验我们发现,即使这样也会存在问题。
第三阶段主要是对多个6500模块控制程序的编写。由于PIC30F4011控制芯片只有两个外部中断引脚,于是我们选择用查询的方式监测返回信号。经过多次尝试,最终放弃了在操作系统上进行编程。新方案的详细介绍见第五部分:程序控制模块。
第四阶段为对4个模块的组装与调试。由于有先前积累的经验与教训,这一阶段耗时相对较少,主要问题仍然是噪音处理,将个别模块1uF的滤波电容换成了330uF,主要用来稳定改模块的供电电压。实验时,我们将四个6500模块和单片机控制电路安装在小车上,其中两侧各一个,前方两个。为了减震,将4个模块和控制电路固定在了一块泡沫砖上。实验场地前期选在一楼东门口的丁字路口上,后期沿路行进至环校公路。各个6500模块的探测周期设定为1次/秒。
静态测量时,地点选在东门口,测试数据稳定,效果较好。后来选取一10米左右障碍物(楼梯),该障碍物形状很不规范。对4个6500模块进行分别测量测试数据基本稳定,但偶尔会无返回信号,测试数据见附件。在移动测量时,发现有时测得的数据并不反映真实情况,特别是在周围环境比较复杂的情况下,会无法探测到与前方障碍物之间的真正距离。但总体来讲,效果还可以。另外还有一点需要注意,那就是车子不能移动太快,否则将会影响超声波返回信号的接收。
实验至此还存在的不足是,其中的一个模块仍不很稳定,其内部干扰有时会影响正常。一般断电重启就能解决。
八、心得体会
经过这么长时间的锻炼,得到的最重要的一点体会是:不能急功近利,遇事不能浮躁,要想解决问题最终还是要靠静下心来仔细分析。遇到困难不能退缩更不能半途而废,不懂的可以上网查,这也是一个不断学习和不断积累经验的过程。另外实验室的设备齐全,要学会充分利用。
对于烧毁的那个三极管Q1,其原因最终还要归结于TL851芯片的XMIT引脚脉冲持续时间过长,导致Q1长时间导通,而三极管的集电极与发射极又直接与Vcc和GND相连,从而致使短路电流持续时间过长,超过三极管允许极限,进而将其烧毁。
九、附件说明
附件1为东门口静态测试,单位为米。为了便于观察,对串口输出做了规范,1
至4列分别对应1至4个模块测得的数据,空白单元代表无返回数据。
附件2为静态远距(9m-10m)测试结果。
附件3为由东门口行至南楼西侧以及返回所得数据。附件4为该测距系统的相关电路与PCB板图。里面电感用相同引脚电容做了代替。
附件5为PIC30F4011芯片的4模块控制程序。
十、补充
ECHO引脚会出现一个尖峰脉冲影响对返回时间的判断,需要接一104电容加以滤除。
电子技术实验课程设计超声波测距系统总结报告自03 胡效赫 2010012351 自03 胡效赫 2010012351一、课题内容及分析首先根据课程所给的几个题目进行选择,由于自己最近在做电子......
超声波测距超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传......
超声波测距超声波传感器用于超声控制元件,它分为发射器和接收器。发射器将电磁振荡转换为超声波向空气发射,接收器将接受的超声波进行声电转换变为电脉冲信号。实质上是一种......
超声波测距的具体方案流程图距离显示LED发射电路缓冲器高频振荡器接受电路放大器比较器单片机声光报警模块定时器该方案采用超声波测距系统,超声波的优点如下:超声波指向性强,......
超声波测距试验心得/* ............................IO口可以由高电平接地拉成低电平, 但是不能由低电平接Vcc拉成高电平.............................*/ #include #includ......
