声波测距,我相信很多人做过,没有做过的人可以搜索论坛里的帖子,看看高手是如何做的以及所遇到的问题。声波测距的原理很简单:声波发射器发出声波,接受器接收反射回波,计算中间的时延,乘以声波速度再除以2,就得到了距离。这是理想的情况,不过理想与现实之间的距离有时比探测的距离还要大。扒去理想的内衣,就会看到被遮掩的现实突出的凶兆:a)发射器功率问题,由于需要边缘检测,如果希望增大测量距离以及更好的抗干扰能力,只好加大发射器功率或接受器的灵敏度。b)测量盲区的问题,这要求发射波形信号尽可能窄短而且得处理好发射器的余震以免淹没回波c)发射器延时和接受器处理等延时会带来测量误差。我前面讲过如何通过Laplace传递函数推导出无限冲击响应滤波器(IIR)的迭代公式以及如何用傅立叶变换处理数字信号。声波测距将会把数字信号处理中的一些基本概念再次贯穿起来,让大家体会一下算法的威力。下面我会展示我的价值1万元的豪华型声波测距设备,,,4G内存,320G存储,内置双声道立体声声波发射器,以及高保真音频接受器。大家不妨猜猜我的设备以及我所用的测距方法和原理。聚集到一定的人气,我就开讲。胃口吊的差不多了,再吊下去,就成了忽悠了。现在开讲。要了解测距的秘密,首先得有些基础的知识。我会一步一步的展开,给大家一个清楚明了的解答。下面的内容是信号处理中最基本也是最重要的概念之一:卷积卷积(Convolution)在数学上是用两个已知的函数求出第三个函数的方法。对于一个线性系统,如果知道了系统的冲击响应函数h(t),那么可以通过卷积计算出一个输入x(t)所对应的输出y(t),即:y(t)=∫x(t-τ)h(τ)dτ=x(t)?h(t)写成离散的形式为:y(k)=Σx(k–i)*h(i)=x(k)*h(0)+x(k-1)*h(1)+…+x(k-N)*h(N)如何理解卷积公式呢?想象一下敲鼓,鼓槌敲击是一个冲击,鼓发出“咚“的声音就是冲击响应。如果我们面前有无数相同的鼓,我们敲击的速度够快,而且按照某个时间曲线来控制敲击的力度,那么我们听到的叠加在一起的声音就是那个时间曲线与鼓卷积后的结果。x(k-N)*[h(0)h(1)…h(N)]敲第k-N个鼓的声音x(k-N+1)*[h(0)h(1)…h(N)]敲第k-N+1个鼓的声音…x(k-1)*[h(0)h(1)…h(N)]敲第k-1个鼓的声音x(k)*[h(0)h(1)…h(N)]敲第k个鼓的声音↑因而,在第k时刻的声音y(k)=x(k)*h(0)+x(k-1)*h(1)+….卷积的用途很广泛,除了与后面的测距相关外,还可以用来构造FIR滤波器,这是与通过传递函数求出iir迭代公式不同的另一类滤波器。FIR滤波器的设计卷积在频域表现为乘积形式,即:Y(ω)=X(ω)*H(ω)这个特性将会是后面测距算法运算中的一个关键环节。因此,我们可以设计一个H(ω),把一个输入信号的频谱X(ω),变成我们所希望的频谱形状Y(ω),这就是FIR的核心思想。比如设计一个标准的低通:H(ω)=1,ω<=ωc;即Y(ω)=X(ω)H(ω)=0,ω>ωc;即Y(ω)=0把H(ω)做逆傅立叶变换,我们可以得到低通滤波器的系数。下面的例子采用了128点,截止频率为基频(采样频率Fs的1/128)的8倍处,即fc=8*Fs
声波测距思路 来自淘豆网www.taodocs.com转载请标明出处.