超声波测距误差分析—— 能“瞄准”的超声波测距传感器误差释疑
0赞
[提要] 针对大家提出的超声波测距精度问题,本文做了一个大概的分析,主要解释了误差的概念,误差的来源,以及本站设计的超声波传感器误差的情况。
一、 背景
出于一个偶然原因,我设计了一个超声波测距传感器,并详细将其细节公开,起初目的是为了让学习单片机的同学多一个素材,为搞机器人的同学提供一个可以自己掌控的测距传感器,所以提供了配套的DIY套件。但推出后很多同学问我测量的精度是多少?
我本来认为这个是DIY套件,无所谓精度,但细细想来,也有道理,不管怎样,这也是一个测量单元。只要牵涉到测量,就应该有精度的概念,就要分析其误差来源和大小,使制作者心中有底,可以规划其可以使用的场合。
所以,在此将所做的超声波测距传感器误差分析一下,供大家参考。
二、 超声波测距原理
在分析误差之前,首先简要介绍一下超声波测距的原理:

以上为超声波测距的原理框图,所谓“测距”实质是计时,即通过测量声波从发射到收到反射波的时间,再根据声波的速度计算出距离。
这是一个十分简单的原理,但很有效,只是受声波物理特性的限制,无法实现长距离测量,同时指向性略差。
三、 测量误差的概念
在分析误差之前,需要先澄清测量误差的概念。
有很多同学问我:这个传感器精度多少?让我很难回答。
实际上,测量误差包含两个最基本的概念:
A. 准确度 —— 测量值与真实值的偏差
B. 精确度(稳定度)—— 多次测量结果的重复性。
此外还有:
a) 线性度 —— 测量结果与被测量之间的关系是否为线性关系;
b) 回差 —— 被测量从小到大的测量结果和从大到小的测量结果之间的偏差。
因为线性度问题在当今单片机十分普及的前提下,已不再影响测量,因为再复杂的关系曲线都可以借助于单片机换算为线性的,即使找不到数学表达式,用分段线性化方式,“以折代曲”也可以解决。
而回差是针对某些测量原理而存在的,对于超声波测距原理似乎不存在。
所以这两个指标此处不再讨论,重点讨论准确度和精确度。
所谓准确度,是针对某一类测量器具,在不加修正的情况下,它的测量结果和真实值之间的偏差。如你有一把尺,用来测量某个长度为1m的东西,结果为1.002m,误差就是0.002m,这把尺的准确度就是0.002。
一批产品,由于制作的原因,不可能都准,所以需要给一个允许的误差范围,这就是产品的准确度,也就是“精度等级”。
但对于一个特定的测量器具,可以通过修正的方式来弥补误差,但是前提是测量的结果必须重复,即多次测量同一对象,其结果不变!
这就引出了“精确度”的概念,即数据的重复性,或者稳定性。如果一个测量器具,其测量结果不断变化,对于同一个对象,这次是1.000m,下次是1.005m,再下次是0.999m……,这样你将无法修正,因为无法确定测量结果的偏差到底多大。
从上述分析看,测量的稳定性,或者说精确度比准确度更重要,特别是针对一个特定的测量器具,而不是一批产品,因为特定的可以通过修正值消除误差。
对于你自己将要做的超声波测距传感器,应该属于一个特定的测量器具,完全有条件获取修正值,所以需要关注的是测量的精确度,也就是稳定性。
四、 超声波测距误差分析
根据超声波测距的原理,测量误差的来源有:
1、启动发射和启动计时之间的偏差;
2、收到回波到被检测出的滞后;
3、收到中断到中断响应停止计时之间的滞后;
4、计时器本身的误差;
5、温度对声波速度以及上述因素的影响。
大致为上述五个来源,逐一分析如下:
第一项偏差源于单片机一次只能处理一件事,所以启动发射和启动计时实际上是先后完成的,存在时差,但只要指令速度足够快,其偏差可以忽略,即使需要弥补,也有可能。
第二项误差源于检测电路的灵敏度和判断偏差,从收到实际回波到电路确认并输出相应信号肯定存在滞后,这和回波信号强弱、检测电路原理以及判断电路的敏感性相关,也是超声波测距的核心。
因为如果灵敏度过高,则会将一些干扰信号误作为回波,导致测量出错,如果过低,又大大限制了检测距离,因为回波衰减是距离的平方关系。
这部分误差是导致数据不稳定的主要来源,因为判断滞后会随着回波的强弱而变化。
第三项误差源于单片机的中断机制,收到中断信号后,单片机不可能立刻响应,至少要完成当前的指令,有时还要等待其它中断服务结束,所以这个滞后时间也不确定,从而导致测量结果的变化。
但这个因素可以通过提高单片机速度,使用高优先级中断弱化之。
第四项误差源于计时器本身,由于目前多数使用晶体振荡器,其稳定度和准确度为20-50 PPM 级别,对于音速而言,其带来的误差在mm级(10us对应340m/s的音速)。为减小此项误差,应该提高计时的最小单位,从而降低量化误差,同时选用质量好的晶振。
第五项误差是源于环境的影响,由于温度不同,音速会变化,计时的频率会变化,检测电路的灵敏度也会变化,所以比较复杂,通常可以借助测温修正音速变化,但后两个变化似乎只能忽略,好在其影响量有限。
五、 能“瞄准”的超声波传感器之误差
我所设计的传感器针对上述误差来源做了如下处理:
1、 采用速度较快的STC12LE5410AD单片机,其指令速度是经典51的8倍左右,所用时钟为 22.1184MHz,对应的指令周期为最快为 0.045us(单周期指令),平均约为0.1us。
2、 回波检测采用TL852 电路,其最大特征在于变增益,它支持通过控制将增益逐渐变大,这样可以利用单片机根据时间去控制。
距离越近,回波时间越短,其信号强度也越大,所以需要的灵明度可以略低。随着距离加大,时间变长,回波信号减弱,就需要提高增益,以检出信号。这样处理就回避了固定增益带来的干扰问题。
同时,发射电路采用了变压器升压,大大增加了发射强度,使得回波信号相应增强,也为可靠检出信号提供了保证。
3、 中断响应滞后问题也由于所选择的单片机速度快而化解。
4、 计时精度部分,除选择较好的晶体外,此单片机可以以Fosc/2的速率计时,大大提高了计时器的分辨率,降低了量化误差。目前方案的计时最小单位为 0.09us(对应22.1184MHz晶振),而经典51只能以 Fosc/12 的速率计时。
5、 至于温度影响,本设计只是预留了一个18B20的位置,留给学习者自己去完成吧,程序中未设计相应的处理。
为了更直观的了解本设计误差的实际情况,借助PC程序做了如下测试:
对墙测量(约1m):


对屋顶测量(约1.8m):


对墙测量(约4.3m):

六、 结语
从上述结果看,此方案的稳定性和分辨率都可以满足多数要求,也正是基于此,我才敢设计这个能“瞄准”的传感器,如果数据波动很大,那根本就无法区分两“耳”的距离差。
南京嵌入之梦工作室
2009年4月21日星期二
PDF格式文档下载
9670517733872.pdf
