用TL084做超声波测距仪
前言,由于项目上要用到超声波测距,虽然淘宝上也有成品出售,价格也就是7块多,但是老大说要自己动手做出来才是实实在在的财富,东搬西凑的不太好。毕竟是在学习阶段。我深以为然。
一、检测方法大致有三种:相位检测法,幅值检测法和渡越时间检测法。相位检测精度高,但检测范围有限;幅值检测容易受到发射波的影响,误差较大;最直接有效的是渡越时间检测法。即计算从发射时刻到接收时刻之间的时间T,与声速相乘,取其一半即是障碍物与检测器的距离。
二、电路设计
1、超声波发射电路
(1)发射信号产生:
驱动超声波传感器发射超声波的是正负交替的40kHz的方波,所以方波的产生有两种途径,一种是直接单片机利用定时器产生,一种是利用555施密特振荡器来产生;这里我首先考虑用单片机,如果后续单片机的定时器不够用时就改为施密特振荡器来做。
(2)信号驱动电路
为了提高超声波的发射强度,检测更远的距离,所以需要增加信号驱动电路;大致方案有三种,第一种是最简单的三极管放大电路,与之搭配的通常是反相器和变压器,反相器不仅用来反相,而且也可增大驱动电流;变压器用来变换电压,具体型号不得而知,应该变压到5V即可。参考电路如图一
第二种方案就是用推挽的形式利用多个反相器多级递增来完成放大的任务,这种比较常用。 参考电路如下:
第三种方案就是利用MAX232(或ST202,型号不一样而已)里的电压汞把信号放大,由于MAX232的单个通道的驱动能力有限,所以一般是把两个发送通道都用上;如此,输出大约会有P-P值20V左右的电压。参考电路图如下:
此外,为了实现对超声波测距的控制(何时测量),可以通过控制发射电路的开闭,如上图通过一个PNP二极管控制电源电压即可。
2、超声波接收电路
接收电路分为集成与分立两种方案,集成方案是芯片Cx20106A,用来完成信号的放大、限幅、带通滤波、峰值检波和波形整形等功能,价格也便宜。不过它本身来用来检测38k的红外信号的,所以用在40kHz的超声波上,难免会产生误差的。参考电路如下:
分立方案则是主要由放大电路、滤波电路和波形整形电路组成,选择性加上限幅峰值检波电路。
放大电路如下,由于接收回来的信号幅值约十几到几十毫伏,所以只需要放大200~500倍即可。注意如果是单电源给运放供电,要在运放输入端给电源电压的一半作为偏置电压,以确保信号不失真地放大。
由两个肖特基二极管和电容组成的倍压检波电路,取出发射回来的检测脉冲信号,送给后面电路处理,参考电路如下:
最后比较重要的是信号比较器,当所检测到的脉冲信号高于参考电压时,输出低电平,反之输出高电平。如此可以接单片机的外部中断引脚,作为停止计数的中断信号。参考电压在这里,暂设为2.5V 。
3、测温修正误差电路
由于超声波的传播速度是受到周遭环境如空气湿度、温度、压强等因素影响的, 其中影响比较大的是温度,所以如果想得到比较高的测量精度,则可加入测量温度的电路,通过所测得的温度来选择声波传播速度v。
其关系为v=331.5+0.6×t,其中v的单位为m/s,t为环境温度,单位为℃。
三、制作实物验证思路
不多说,直接画原理图和PCB ,腐蚀板子来调试。
我为了验证、对比反相器与MAX232两种不同方案的实际效果,于是同时采用了两种方案,最后在超声波换能器(即超声波发送接收的传感器,实物见下图)处用短路帽来选择哪一个驱动换能器。
工作进度如下:
(1)早上八点开始画原理图;
(2)下午午二点画好PCB,下午四点即完成电路板的整体焊接与检查。
(3)六点吃饭前初步写了test程序,用STC12C5616AD单片机的定时器产生两路相位相反的40kHz的方波,用两个不同IO口来输出,一个IO来控制MAX232的关断,对反相器74HC04没有作控制处理;
(4)六点半至八点,调试电路板;
发现问题与现象如下:
问题与现象1:
反相器的驱动效果不如MAX232好。用示波器观测发射端信号可知,反相器的驱动效果是使方波的幅值达到了5.12V,而MAX232的驱动效果则是达到了9V;
问题与现象2:
当发射端的方波幅值是5V时,接收端输出的信号(正弦波)幅度大约是28mV,由于电源电压是5V,所以放大100~150倍即可。然而,按照之前文章的设计分析看,放大200~500是不太靠谱的。当然,视所使用的运放与供电电压所决定的,我这里运放是单电源5V供电,所以只能放大100~150倍较好。网上有文章说接收端输出幅度是几毫伏,我不得而知,也许是所使用的超声波换能器不一样吧。没有实践就没有发言权。我这里的结果却是这样。
问题与现象3:
放大电路后的倍压检波电路设计存在问题,由于是单电源供电,所以在放大电路后输出信号是在0V以上的,没有负向电压,所以,第一个二极管与电容没有达到充电保持的作用。所以经过此倍压检波电路后,输出信号只是被整流成幅值不变的直流信号,没有达到倍压的目的。
继续调试,未完待续。
原理图——
生活远没有那么容易和顺利,原以为不是很难的超声波,今天又是调试了一整天,终于排除各种问题,来到最后一步了--写程序测量具体距离。现在将调试过程记录如下:
问题与现象4:
MAX232在几分钟后发烫, 一开始波形输出是幅值为9V的方波,然后方波就变成奇怪的乱波形了,幅值在1.2V左右;
问题解决:尚未找到原因;
问题与现象5:
超声波接收端输出的信号幅值是不稳定的,小则100mV,大则1V,导致第一级(LM324)放大10倍后输出的波形是幅值为2.44V,波峰被削平了的正弦波。疑惑是,如果放大饱和,那么以LM324的性能来说,应该可以输出3.5V(即便由于不是满摆幅运放,不能输出电源电压,此时供电电压是4.94V);到了放大的第二级,输出居然是幅值为3V的三角波了。于是最后被整流成2.4V的直流电压。
问题解决:所用的运放是国产的LM324,质量实在是不敢恭维啊,随后换了在德州仪器申请的TL084(高精度四运放,本来应该用TL074低噪声四运放的,但是手上没有这货),换上后问题5基本解决了。
问题与现象6:
最后一个运放是用作比较器的,但是不知为何,TL084居然没有实现比较器的功能,无论正反相输入端的电压孰大孰小,其都是输出1.4V,检查过电路焊接和原理图,都确认没有问题后。。
问题解决:有些运放是不适宜用作比较器的,我后来用MULtism仿真发现,用OP07或NE5534都是输出2V的所谓“低电平”,输出“3V”的所谓高电平,换成LM358后,才正常地输出“7mV”的低电平和“3.5V”的高电平,符合我们的推算和datasheet指标。所以最终应该用LM358作比较器的,TL074不晓得行不行,没有试过,但是TL084是不行的了。
很详细 LM324慎用啊
求联系方式 想请帮忙做个超声波的电路