龙空技术网

如何保证超声波测距既精确又稳定?

历途说AI 217

前言:

而今小伙伴们对“超声测距算法”大约比较关心,兄弟们都需要学习一些“超声测距算法”的相关文章。那么小编也在网摘上网罗了一些关于“超声测距算法””的相关知识,希望各位老铁们能喜欢,朋友们快快来学习一下吧!

超声波测距有明显弱势,我们为什么还要坚持用它?市场上又不是只有这一种方式可以测距,为什么非用它不可?既然要用超声波测距,有什么好办法可以克服它的先天不足呢?

今天请来了历途电子研发部副主管,针对以上疑问给大家做深入解析。

为了测量机器人到玻璃面的距离以及识别障碍物边沿,需要使用一些测距模块,市场上比较常用的测距模块有以下两种:

一种是激光测距。这种模块的特点就是速度快、精确度高、测量距离远,但是如果在玻璃面上测量,就会导致有很大几率测不到反射回的激光。

另一种是超声波测距。这种模块速度较慢、精确度受环境影响,而且测量距离小于5米,但不受被测量面的材质限制。

根据以上模块的优缺点并结合实际作业环境,以及大量的实验数据得出:超声波在玻璃面上测距更具有可行性。

01

如何控制超声波测量精度

对于技术人员来说,超声波测距的原理大家应该都清楚,这里直接粘贴百度到的信息:

超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

用“HC-SR04”超声波测距模块举例,如下图:

VCC供电源5V,GND为地线,TRIG为触发控制信号输入,ECHO为回响信号输出。

基本性能如下:

声音在大气中的传播速度与温度和大气压力都有关系,所以在用超声波模块做高精度距离测量时,需要注意校准声速基准。

02

如何保证数据读取的稳定性

超声波测距导致数据不稳的几个原因:

1.测量面密度较低,超声波穿透物体,会有多个回波;

2.测量面凹凸不平,超声波被打散,同样会有多个回波;

3.测量面倾斜,超声波没有正确反射;

4.测量面过小,超声波反射回的量不够。

所以用超声波较准确的读取距离值、识别边沿还是有比较多的难度。

超声波的工作顺序分为以下几个步骤:

1.采用IO触发测距,给至少10us的高电平信号;

2.模块自动发送8个40khz的方波,自动检测是否有信号返回;

3.有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间;

4.测试距离=(高电平时间*声速(340M/S))/2。

具体示意图如下:

首先是发波,将代码设计为毎100ms测量一次,把测量周期设置改为每次测量一旦结束,马上开启下一次测量。

为保证测量准确,测量脉冲宽度要求在上升沿下降沿分别中断捕获定时器计数值,两者差值经过转化即可得到声音在空气传播的时间,进而获得距离值。

为了能够使用超声波检测边沿,我们需要得到比较稳定的数据,使用卡尔曼算法滤波就可以很好的解决这个难题。

卡尔曼滤波效果由滤波频率,噪声因子,偏差因子决定。我们把由卡尔曼滤波得到距离值打印出来,放入表格,生成波形图,如下:

分析,在测距模块不动作时,超声波值在±0.5mm内变动,稳定度不错。把本次减去上次的差值,也生成波形图,如下:

当测距模块远离或贴近障碍面时(模拟边沿),数据的增大或减小都比较稳定,根据这些数据编写出边沿识别算法。

经过多次调整卡尔曼和边沿识别算法的参数,在20mm-40mm边沿识别准确率在95%以上,在40mm以上的边沿识别准确率在99%以上,很好的保证了超声波测距时数据读取的稳定性。

标签: #超声测距算法 #为什么超声波模块怎么不能测距