简易超声波测距模块设计

多图预警!

文章添加的有些晚了,本文本身应该在一个半月以前发,但是最近真的事情太多,拖到现在,补上

本文所有仿真均采用NI Multisim。


本文是关于一个简单的超声波测距系统的设计,超声波测距的基本原理十分简单

超声测距的原理是通过超声波发射器向某一方向发射超声波,在发射的同时产生一个方波,超声波在空气中碰到障碍物后就立即返回,超声波接收器在接收到反射波的时候产生一个正弦波。假设超声波在空气中的速度为v,而根据两个波形之间的时间差是∆t,则可以计算出发射点到障碍物之间的距离L,计算公式如下:

    \[L = v * \frac{\Delta t}{2}\]

由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是344 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大。温度校正公式为:

    \[v = 311.45 *(1+\frac{t}{T})\]

从这个角度出发的话,我们期望在发出超声波后,测量多长时间后超声波的接收装置接收到超声波信号,由此即可以得到超声波实际传播的距离。由两种基本实现计时的方案,第一种是两个超声波探头分别在两个位置并且探头相对,这个要求两个探头时间同步,意味着较长的距离有较长的连线;第二种是两个超声波在同一位置,通过反射测量两倍时间得到两倍的距离在除以2,这种情况下,电路相对简单,但是会影响到测量精度。

综合考虑需求后采用方案二实现,即整个测量过程分为三个部分:第一部分是脉冲的40KHz方波信号发出模块;第二部分是接收信号处理模块;第三部分是比较输出部分,这部分输出的高点平时长即为实际测量时长。下面对三个部分的实现进行简介:

一、脉冲的40KHz方波信号发出模块

图1
图1 40KHz方波发生模块

由上面的表述我们知道,测量发出信号后多久测量到接收信号即可知道测量的距离,如果发射长时间40KHz方波信号那么只能够完成一次测量,所以本电路除了40KHz发生电路以外还设计了一个低频方波发生电路,用于产生低频低占空比载波,如此以来实现反复发出40KHz方波的作用。因此,脉冲的40KHz方波信号发出模块分为两个模块组成,分别为40KHz方波信号发生模块和低频载波(100Hz左右)发生模块,下面分别介绍这两个模块的实现方法。

1、40KHz方波发生模块

40KHz方波产生电路采用了非对称多谐振荡电路实现(图1),使用了四个CMOS与非门,其中三个与非门作为非门使用。A与非门的两个引脚之一作为该系统的使能信号。

当系统刚上电时,若给A一个输入端提供高电平,另一个输入端默认为低电平,此时A输出低电平,B输出高电平。因为是CMOS元器件,电压控制所以与非门的输入可以看做开路,所以A的第二个输入引脚和电容之间看以看做短路。所以电容两端加上了电源电压,电容开始充电,A的第二输入引脚电平升高,直到该电平高于高电平的基准值,导致A的输出反向,进而B的输出反向。如此周而复始实现方波的输出。仿真输出波形如下图:

图2
图2 40KHz方波发生模块仿真信号

电容充电过程的响应为

    \[v=5(1-e^{-\frac{t}{RC}})\]

对于CMOS,输入低于1.5V即为逻辑0,输入高于3.5即为逻辑1,所以当充电过程经过一个\tau 就完成了输入电平的转换。所以响应时间为

    \[RC=\frac{T}{2}\]

所以频率

    \[f=\frac{1}{2RC}\]

若取

    \[C=1000pF\]

,则

    \[R=\frac{1}{2fC}=\frac{1}{2-40,000*1,000*10^{-12}}=12.5K\Omega\]

实际电路通过一个滑动变阻器对频率进行微调。

2、低频方波产生电路

图3
图3 555定时器原理图

低频方波电路用于产生低频载波,在一定时间内反复测量距离。因此,只要保证该方波的低电平时长(并非周期,保证上一次测量不会干扰下一次)乘以声速低于最长可以测量的距离就可以使该电路正常工作,所以该电路的实际频率准确度并不高,但是需要电路能控制产生方波的占空比,实现一个低占空比的方波,这样可以控制方波的频率相对较高,能在同一时间测量更多次数。

该低频方波产生电路,采用555定时器(图3)实现。555定时器是一种应用极为广泛的中规模集成电路,该电路使用灵活、方便,只需外接少量的阻容原件就可以构成单稳、多谐和施密特触发器。因而广泛用于信号的产生、变换、控制和检测。555的原理在此省略,详情请参考TI文档或者维基百科

如上两个部分连接到一个与门即可实现脉冲40KHz高频方波发生模块的功能,将该模块直接连接到超声波发生器或者通过驱动电路连接到超声波发生器即可。

二、接收信号处理模块

图4
图4 接收信号处理模块

超声波传感器接收到的信号是一个40KHz的正弦波,通常来说当距离比较远的时候,该信号的幅值比较小。该电路的最终目的是将这个正弦信号变成一个高电平,即当该电路接收到40KHz的正弦信号时为高电平,未收到时为低电平。

该电路(图4)由两个做比较器的LM324运放和一个RC无源滤波器组成,如果接收到输入信号,该信号经过第一个比较器之后会变成40KHz的方波,通过RC滤波器滤掉40KHz其次高次谐波,滤波器输出结果是接近稳定的电压,其幅值约为电源电压一半,再次经过比较器输出为一个与电源幅值相同的高电平。

其中RC滤波器的截止频率为

    \[f=\frac{1}{2\pi RC}=\frac{1}{2\pi *100*10^{-6}}Hz=1592Hz\]

电路的仿真如图5所示。

图5
图5 接收模块各部分仿真信号

该电路实际使用过程中需要考虑运放单电源供电时存在一个接近低电平的时候无法正确相应,所以需要使负输入引脚接上一个略高于零的电平。另一方面,因为滤波器存在电容,当输入停止时无法立刻由高电平变为低电平,存在电容放电的过程,所以实际输出的高电平比输入时新建表格间要长,不过该问题并不影响电路的测量结果。

三、比较输出部分

理论上通过前两部分的电路已经实现超声波发射到接受的全部过程,之后可以通过单片机或者示波器实现发射到接收时间的测量。但是为了简化这个过程实现更简单的控制测量,本电路添加了第三个部分即逻辑比较判断部分。

逻辑电路的目的是实现超声波测量结果的可视化,该逻辑电路由四个或非门构成,其中一个或非门用作非门使用,另有两个或非门构成RS锁存器,该电路的逻辑表如下:

A B Q \~Q
1 0 置1 置0
x 1 置0 置1
0 0 不变 不变

其中A为低频方波信号,B为运放处理得到的方波,Q为输出信号。

由此可以看到当低频方波由低变高,输出也由低变高,标志开始计时;当运放处理得到的方波由低变高,输出由高变低,标志计时结束。由此实现对于超声波发射到接收时长的测量。

由上述逻辑表也可以看出,当没有接收到任何信号的时候(距离过远),输出恒为高电平。


综合电路图:

图6
图6 简易超声波测量总电路

图6为综合电路图,该电路采用5V单电源供电(也可以采用10V单电源),仿真输出结果如下:

图6
图6 整体电路仿真结果

其中CH1为发射的方波(幅值仅为实际一半),CH2为模拟的接收到的正弦波,CH3为最终输出的方波。


实际电路出现的问题:

最终手工焊出来的电路如图7所示。

图7 实际焊接电路
图7 实际焊接电路

该电路基本完成了预期功能,但是具有比较大的局限性:

  • 测量距离较短,最好情况不超过50cm,超过该距离无法收到信号
  • 存在零漂误差,整个距离测量由3~5cm的零漂误差,这可能是由于反射造成的,同时因为信号测量电路存在电容,其充电需要时间,也会产生一定的零漂
  • 短距离下线性度不好,考虑到两个传感器之间有横向距离,当测量距离较短时,该距离不能忽略
  • 测量结果波动比较大,测量结果在几十毫米之间波动,这可能是由于反射介质表面相对粗糙造成的

该电路理论上可以从如下几个方面改进:

  • 使用高精度高林敏度的运放或者专门的超声波信号处理芯片
  • 在软件上通过多次测量取平均值的方式提升测量精度,减小随机误差
  • 尽量减少发射和接收传感器之间的距离

本次设计感谢王磊同学的帮助。

如果有更多问题欢迎在下面留言。

以上

发表评论