引用 如何DIY一个属于你的超声波测距传感器二:焊接调试
引用
的
上篇:如何DIY一个属于你的超声波测距传感器一:硬件设计
因为考虑做好后的传感器要具备一定的使用价值,所以体积略有控制,使用了一些SMD器件,给焊接带来了难度,但对于学习者而言,也提供了一个锻炼机会,因为SMD器件越来越多,很多MCU已无DIP封装。
焊接包含SMD器件的PCB也并非不可为之。
首先要有合适的工具,至少有尖头烙铁,30W即可;尖头镊子,用于抓取小器件。此外{zh0}使用细焊锡丝,我使用的是0.3mm的。
其次要注意焊接顺序:先焊小的器件,本设计中为0603电阻、0805电容,之后焊接SOP的IC,{zh1}再按器件的高度从矮到高依次焊接直插器件,体积较大的器件{zh1}焊接,如本设计中的超声波传感器、变压器等。
焊接0603电阻、0805电容时,可尝试以下方法:
先将器件的一个焊盘上锡(注意:如有一个是接大面积地线的,先给这个上锡,因为大面积地线的散热作用明显,会给后续焊接带来麻烦!):
然后用尖镊子拿住器件,先放在没有焊锡的焊盘上,再用镊子夹住(这样可保证器件贴着PCB)器件,同时用烙铁熔化上好锡的焊盘,平推器件到焊锡中,注意:为了方便另一个焊盘的焊接,可适当偏向已上锡的焊盘,为另一侧焊盘留下较大的空间。
焊好一端后,可参照我介绍过的焊接工艺:
然后用免清洗的助焊剂略涂一些(如没有,可尝试用无水酒精,我没用过,不知效果),用细焊锡丝逐脚焊接,方法和焊接直插器件类似,先放上烙铁头,略延时后将焊丝送上,只是时间稍短,锡不要给的太多,以免连焊!
全部焊好后,可以用烙铁尖点IC引脚的端头,再次让焊点熔化一次,使焊锡更好的将引脚和PCB连接。
直插器件的焊接在此就不再赘述,圆梦小车的安装说明中已有详细交待。
因为空间问题,所以有几个器件是放置在超声波收发器之下的,焊接时注意,将收发器焊的和变压器一样高即可,不要太低!
两个调整增益的电阻R7、R8、一个控制余波的限流电阻R5如觉得需要自己改变,以观察效果,可焊接在反面。
用于减弱余波的R6和初级的余波抑制电路两部分选择一个,建议选用初级的回波抑制电路,效果好一些,缺点是需要程序配合,且调试时如不慎会短路导致三极管损坏。
如采用初级的余波抑制电路,建议在调试程序时将跳线器断开,调好程序后再接上。等一切就绪后如考虑传感器的可靠性,可将跳线器焊死。
在线路上设计了2组匹配电容,C7、C8组是为了调整发射回路已达到谐振状态的,C9、C10组是为了接收回路谐振的,需要通过测量使用的超声波收发器电容值以及相应的电感、变压器次级电感确定,因为超声波收发器的电容量差别较大,电感量也有些差异。
一般情况下将C7、C9 短路即可,C8、C10不用处理(配套器材时会给出实际的值供参考,如有需要会附上匹配电容)。
焊接完成如下图:(注意图中二极管的方向)
虽然设计是用UART作为输入、输出的接口,但由于MCU的SPI没有使用,所以在PCB上引出了(由于空间限制,比较勉强),如有特殊需要或想学习SPI的使用,也可将SPI口作为与传感器交换数据的通道:
5.2 调试
调试分两步进行。首先是超声波发射部分。
先断开跳线器,检测单片机输出的波形是否正确,测量R3接MCU端的信号,保证波形的频率、占空比及脉冲的个数正确(符合你程序控制的要求,目前的程序是发送 10个脉冲):
然后测试余波减弱控制信号(如果你选择了初级余波减弱电路,并且在软件上设计了),检测R4接MCU的端子(设计欠考虑,没有留测点),注意不要短路了!{zh0}有双通道的示波器,因为需要和发送脉冲匹配,此信号应该略延时于发送脉冲结束,我设计是约 28us(想想为什么图中是接近 44us):
上述两个MCU控制调试好后,可以将跳线器接上,看一下驱动的波形和变压器次级的输出。驱动波形测量D882 的C端,也就是跳线器上。次级波形可直接检测超声波发射器两端。
注意右侧的波形,峰值电压超过50V,所以你能够听到发射器发出的“xx”声。
如果有兴趣,可以检测一下有无余波xx的差别,因为要和余波控制信号同时观察,所以用驱动信号代替输出,由于变压器的偶合作用,信号是一样的,只是幅值不同。
注意,上图中左侧余波实际上远不止388us,由于变压器的升压作用,很小的驱动信号都可以产生接收器能感受的超声波,因为收、发之间太近了!这样将使得近距离的回波淹没在余波中,导致测量范围缩小。
读者可以改变R5的数值观察一下右侧的效果的变化。
一个技巧:要想确定是否达到谐振状态,可检测没有余波抑制时的余波信号,此时的频率即为谐振频率(图中用余波抑制控制信号来指明后面的波不是由MCU产生的)。
从上图可以看出谐振频率是 40kHz。
至此,超声波发送部分基本完成。
超声波接收部分硬件比较简单,关键是软件上能控制好增益的变化,以及内部计时。
调试时首先检测一下C12上的信号,此处为TL852 的{dy}级放大输出,在信号较强时可以看到波形,以确定超声波接收器及回路是否正常,至少能看到一组波,即发射时的信号,如果有比较近的物体,应该可以看到接着有一组波形,此信号即回波。
接着看看4路增益控制有无变换,检测MCU输出给TL852的增益控制信号(其中三个连接有过孔,测量方便),而是否正确主要靠软件逻辑的检查,用波形来判断有些困难。
上图为增益控制{zd1}位GCA的波形,注意图中光标所示的时间,对照TL851资料,看看能否解释清楚 : P
确定增益控制有效后,检测SOUT端(或者C14),可以看到输出。
注意:为了xx自己发射时收到的信号干扰测量,在发射时用MCU控制了SOUT端,使之处于对地短路状态(参见前述TL851的原理和说明),发射结束后释放。之后在收到回波后,我设计的程序会根据设定的时间决定是否再次短路SOUT输出,以避免由于附近两侧的物体反射干扰。
超声波的发射、接收角度虽然号称是60度,但那是指强度大于一定数值的信号,实际上放宽信号强度会更宽,所以很近的物体虽然在测量角度以外,也许会测到。这个功能在读者设计程序时自己确定是否需要!此处只是作为参考。
SOUT的输出经过比较器后变为负跳脉冲,触发MCU中断,从而使MCU内部实现对回波的计时,即可计算出距离了,这部分在软件篇中讨论。
因为前述处理方式,中断的波形可能会比较窄,不容易测到,需要使用示波器的信号触发扫描功能。
读者可对照图6 理解上述波形。
至此,硬件部分应该算是调试结束了,而测量功能的实现主要取决于软件的设计。
5.3 调试“花絮”
现在DVD影碟都时髦附上拍摄花絮,将摄制过程中的一些“差错”汇总,以搏大家一笑。我也在此效仿一下,将调试中遇到的值得关注的问题整理与此,但不是为了搏大家一笑,而是希望读者能从中悟出些东西,从而避免“重蹈覆辙”。
上面详细描述的已是第二版,{dy}版电路设计和PCB排版均有不少问题,调试后做了较多修改。
新PCB拿到后,我十分自信,边拍照边焊接,很快硬件就大功告成。
下载程序后,得意的启动测量,亲切的“xx”声即刻响起;随即接上示波器准备记录调试部分的波形。
可一看测量结果,给我当头一棒,测量数据根本不对。
拿示波器一看,晕!没有发射信号时,C12上居然有连续不断的波形!频率还正好是设计的谐振频率。
首先怀疑是此批TL852有问题,因为用的是新购买的;立刻用原来剩余的一片TL852又焊了一个,结果一样,汗!
当时有个不详的预感:坏了,PCB排版不当,电路自激振荡了!
马上想到的是R7、R8电阻,因为{dy}版设计是0603器件,后为了便于DIY者修改参数,改为RT13,这样离超声波接收器就很近了(看PCB图),怀疑是R8的反馈信号耦合到超声波接收器端子上,导致振荡。可割断电路改变位置后,依然如故。
只好依次将输入部分的各个器件脱离PCB,看是哪个导致的,直到电感移开后,问题消失了:
{zh1}找出了问题所在:是2个电感之间耦合;因为L1、L2并排紧挨着,又都是“工”字磁芯,漏磁较大;L2中是放大后的信号,L1是输入,这样就导致了自激振荡。
{dy}版PCB也是这样排的,可巧的是电感焊的方向不同,正好相位相反,所以没有暴露;而此次焊的2块均正好相位相同,形成正反馈,导致振荡。
后来我验证了,只要将L2 交换引脚插入(不用焊),就可以轻松复现。
因为电感没有极性标志,所以读者如DIY此传感器,要注意,先不要焊接L2,其它都焊好后,通电,插入L2,用示波器测量C12的信号,如振荡则交换2个引脚,确定正常后再焊上。
考虑到多数学生没有示波器,我将在软件中设计一个检测功能,详见“软件篇”。
从这个插曲中可以看出,模拟电路排版还是挺讲究的,需要考虑因素远比数字电路多。
不过目前变换方向焊接后是否变成了负反馈?对测量的影响是什么?还望读者发表高见!六、实验效果
为了便于测试,还是采用了PC辅助调试的方式,控制命令上设计了内存读写命令,以方便调试。
关于软件的设计,在后续“软件篇”中再作详细讨论。
由于使用的是USB转串口模式,USB的5V可作为超声波传感器的电源,调试起来十分方便,串口既作为下载程序的工具,又作为调试的手段:
PC机软件的调试界面如下:
现设计是以mm 为单位,测试后发现稳定度还不错,波动不超过5mm,测量距离可在 25 cm —— 5m。
近距离受限是由于在软件中设置了防护,前面已有描述。远距离似乎是灵敏度不够了,现在我用的{dy}级放大增益电阻都是4.7k(R7、R8),读者可以改变两者的比值以增大增益,看看是否能提高测量的距离。
由于是软件控制实现测量,所以十分灵活,作为示例,设计了3种工作模式:
1)单次测量,即发出一次命令,传感器按要求测量后返回一组数据,可指定采集的次数、采集后数据的处理方式等;
2)自动测量并返回数据,传感器按照指定的周期不断测量,并且将数据及时返回;
3)自动测量但不返回数据,传感器按照指定的周期不断测量,保存最近8次数据,需要时通过串口读出,可任意设定读出前几次。
这些只是一个示范而已,应用于具体场合时可自己编程以达到{zj0}的工作模式。如用于检测是否有物体进入限定的区域,就可以将限定值“告知”传感器,传感器自动测量、判断,只有当有物体进入时才返回数据,通知系统,这样系统的软件开销可大大减低。这就是用单片机作为传感器核心的优势。
七、结语
通过这个制作,证实了我对超声波测距原理的期望是正确的,而且也树立了自信。{dy}次失败后对涉及模拟电路的项目有些发怵,不知道该如何解决遇到的问题。想必有读者经历过和我一样的感受,所以费如此笔墨描述之,就是为了新参与者不再因模拟电路而“却步”。
不过从调试花絮中应该看出,模拟电路还是比数字电路考虑的问题要多一些。
同时,在测试中对于一些一知半解的概念有了深刻的理解,如“BLANKING”,“Multiple Measurement Capability”等。而且感受了超声波测量的“非指向性”,体会了GP2D12的“强指向性”,理解了为何GP2D12不可能被超声波测距所替代的道理,难怪GP2D12 在国外的机器人部件市场上一直存在!
硬件部分基本完成,留一个题目给大家:仔细分析一下TL852的2脚有什么作用?可以为电路提供什么帮助?基于它,能实现什么?
“软件篇”再见。