上篇:如何DIY一個屬于你的超聲波測距傳感器一:硬件設(shè)計
因為考慮做好后的傳感器要具備一定的使用價值,所以體積略有控制,,使用了一些SMD器件,給焊接帶來了難度,,但對于學(xué)習(xí)者而言,,也提供了一個鍛煉機(jī)會,因為SMD器件越來越多,,很多MCU已無DIP封裝,。
焊接包含SMD器件的PCB也并非不可為之。
首先要有合適的工具,,至少有尖頭烙鐵,,30W即可;尖頭鑷子,,用于抓取小器件,。此外最好使用細(xì)焊錫絲,我使用的是0.3mm的,。
其次要注意焊接順序:先焊小的器件,,本設(shè)計中為0603電阻、0805電容,,之后焊接SOP的IC,,最后再按器件的高度從矮到高依次焊接直插器件,體積較大的器件最后焊接,,如本設(shè)計中的超聲波傳感器,、變壓器等。
焊接0603電阻,、0805電容時,,可嘗試以下方法:
先將器件的一個焊盤上錫(注意:如有一個是接大面積地線的,先給這個上錫,,因為大面積地線的散熱作用明顯,,會給后續(xù)焊接帶來麻煩?。?br>
然后用尖鑷子拿住器件,先放在沒有焊錫的焊盤上,,再用鑷子夾?。ㄟ@樣可保證器件貼著PCB)器件,同時用烙鐵熔化上好錫的焊盤,,平推器件到焊錫中,,注意:為了方便另一個焊盤的焊接,可適當(dāng)偏向已上錫的焊盤,,為另一側(cè)焊盤留下較大的空間,。
焊好一端后,可參照我介紹過的焊接工藝:
然后用免清洗的助焊劑略涂一些(如沒有,,可嘗試用無水酒精,,我沒用過,不知效果),,用細(xì)焊錫絲逐腳焊接,,方法和焊接直插器件類似,先放上烙鐵頭,,略延時后將焊絲送上,,只是時間稍短,錫不要給的太多,,以免連焊,!
全部焊好后,可以用烙鐵尖點IC引腳的端頭,,再次讓焊點熔化一次,,使焊錫更好的將引腳和PCB連接。
直插器件的焊接在此就不再贅述,,圓夢小車的安裝說明中已有詳細(xì)交待,。
因為空間問題,所以有幾個器件是放置在超聲波收發(fā)器之下的,,焊接時注意,,將收發(fā)器焊的和變壓器一樣高即可,不要太低,!
兩個調(diào)整增益的電阻R7,、R8、一個控制余波的限流電阻R5如覺得需要自己改變,,以觀察效果,,可焊接在反面。
用于減弱余波的R6和初級的余波抑制電路兩部分選擇一個,,建議選用初級的回波抑制電路,,效果好一些,,缺點是需要程序配合,且調(diào)試時如不慎會短路導(dǎo)致三極管損壞,。
如采用初級的余波抑制電路,,建議在調(diào)試程序時將跳線器斷開,調(diào)好程序后再接上,。等一切就緒后如考慮傳感器的可靠性,,可將跳線器焊死。
在線路上設(shè)計了2組匹配電容,,C7,、C8組是為了調(diào)整發(fā)射回路已達(dá)到諧振狀態(tài)的,C9,、C10組是為了接收回路諧振的,,需要通過測量使用的超聲波收發(fā)器電容值以及相應(yīng)的電感、變壓器次級電感確定,,因為超聲波收發(fā)器的電容量差別較大,,電感量也有些差異。
一般情況下將C7,、C9 短路即可,C8,、C10不用處理(配套器材時會給出實際的值供參考,,如有需要會附上匹配電容)。
焊接完成如下圖:(注意圖中二極管的方向)
雖然設(shè)計是用UART作為輸入,、輸出的接口,,但由于MCU的SPI沒有使用,所以在PCB上引出了(由于空間限制,,比較勉強(qiáng)),,如有特殊需要或想學(xué)習(xí)SPI的使用,也可將SPI口作為與傳感器交換數(shù)據(jù)的通道:
5.2 調(diào)試
調(diào)試分兩步進(jìn)行,。首先是超聲波發(fā)射部分,。
先斷開跳線器,檢測單片機(jī)輸出的波形是否正確,,測量R3接MCU端的信號,,保證波形的頻率、占空比及脈沖的個數(shù)正確(符合你程序控制的要求,,目前的程序是發(fā)送 10個脈沖):
然后測試余波減弱控制信號(如果你選擇了初級余波減弱電路,,并且在軟件上設(shè)計了),檢測R4接MCU的端子(設(shè)計欠考慮,,沒有留測點),,注意不要短路了,!最好有雙通道的示波器,因為需要和發(fā)送脈沖匹配,,此信號應(yīng)該略延時于發(fā)送脈沖結(jié)束,,我設(shè)計是約 28us(想想為什么圖中是接近 44us):
上述兩個MCU控制調(diào)試好后,可以將跳線器接上,,看一下驅(qū)動的波形和變壓器次級的輸出,。驅(qū)動波形測量D882 的C端,也就是跳線器上,。次級波形可直接檢測超聲波發(fā)射器兩端,。
注意右側(cè)的波形,峰值電壓超過50V,,所以你能夠聽到發(fā)射器發(fā)出的“啪啪”聲,。
如果有興趣,可以檢測一下有無余波消除的差別,,因為要和余波控制信號同時觀察,,所以用驅(qū)動信號代替輸出,由于變壓器的偶合作用,,信號是一樣的,,只是幅值不同。
注意,,上圖中左側(cè)余波實際上遠(yuǎn)不止388us,,由于變壓器的升壓作用,很小的驅(qū)動信號都可以產(chǎn)生接收器能感受的超聲波,,因為收,、發(fā)之間太近了!這樣將使得近距離的回波淹沒在余波中,,導(dǎo)致測量范圍縮小,。
讀者可以改變R5的數(shù)值觀察一下右側(cè)的效果的變化。
一個技巧:要想確定是否達(dá)到諧振狀態(tài),,可檢測沒有余波抑制時的余波信號,,此時的頻率即為諧振頻率(圖中用余波抑制控制信號來指明后面的波不是由MCU產(chǎn)生的)。
從上圖可以看出諧振頻率是 40kHz,。
至此,,超聲波發(fā)送部分基本完成。
超聲波接收部分硬件比較簡單,,關(guān)鍵是軟件上能控制好增益的變化,,以及內(nèi)部計時。
調(diào)試時首先檢測一下C12上的信號,此處為TL852 的第一級放大輸出,,在信號較強(qiáng)時可以看到波形,,以確定超聲波接收器及回路是否正常,至少能看到一組波,,即發(fā)射時的信號,,如果有比較近的物體,應(yīng)該可以看到接著有一組波形,,此信號即回波,。
接著看看4路增益控制有無變換,檢測MCU輸出給TL852的增益控制信號(其中三個連接有過孔,,測量方便),,而是否正確主要靠軟件邏輯的檢查,用波形來判斷有些困難,。
上圖為增益控制最低位GCA的波形,,注意圖中光標(biāo)所示的時間,對照TL851資料,,看看能否解釋清楚 : P
確定增益控制有效后,,檢測SOUT端(或者C14),可以看到輸出,。
注意:為了消除自己發(fā)射時收到的信號干擾測量,,在發(fā)射時用MCU控制了SOUT端,使之處于對地短路狀態(tài)(參見前述TL851的原理和說明),,發(fā)射結(jié)束后釋放,。之后在收到回波后,我設(shè)計的程序會根據(jù)設(shè)定的時間決定是否再次短路SOUT輸出,,以避免由于附近兩側(cè)的物體反射干擾。
超聲波的發(fā)射,、接收角度雖然號稱是60度,,但那是指強(qiáng)度大于一定數(shù)值的信號,實際上放寬信號強(qiáng)度會更寬,,所以很近的物體雖然在測量角度以外,,也許會測到。這個功能在讀者設(shè)計程序時自己確定是否需要,!此處只是作為參考,。
SOUT的輸出經(jīng)過比較器后變?yōu)樨?fù)跳脈沖,觸發(fā)MCU中斷,,從而使MCU內(nèi)部實現(xiàn)對回波的計時,,即可計算出距離了,這部分在軟件篇中討論。
因為前述處理方式,,中斷的波形可能會比較窄,,不容易測到,需要使用示波器的信號觸發(fā)掃描功能,。
讀者可對照圖6 理解上述波形,。
至此,硬件部分應(yīng)該算是調(diào)試結(jié)束了,,而測量功能的實現(xiàn)主要取決于軟件的設(shè)計,。
5.3 調(diào)試“花絮”
現(xiàn)在DVD影碟都時髦附上拍攝花絮,將攝制過程中的一些“差錯”匯總,,以搏大家一笑,。我也在此效仿一下,將調(diào)試中遇到的值得關(guān)注的問題整理與此,,但不是為了搏大家一笑,,而是希望讀者能從中悟出些東西,從而避免“重蹈覆轍”,。
上面詳細(xì)描述的已是第二版,,第一版電路設(shè)計和PCB排版均有不少問題,調(diào)試后做了較多修改,。
新PCB拿到后,,我十分自信,邊拍照邊焊接,,很快硬件就大功告成,。
下載程序后,得意的啟動測量,,親切的“啪啪”聲即刻響起,;隨即接上示波器準(zhǔn)備記錄調(diào)試部分的波形。
可一看測量結(jié)果,,給我當(dāng)頭一棒,,測量數(shù)據(jù)根本不對。
拿示波器一看,,暈,!沒有發(fā)射信號時,C12上居然有連續(xù)不斷的波形,!頻率還正好是設(shè)計的諧振頻率,。
首先懷疑是此批TL852有問題,因為用的是新購買的,;立刻用原來剩余的一片TL852又焊了一個,,結(jié)果一樣,汗!
當(dāng)時有個不詳?shù)念A(yù)感:壞了,,PCB排版不當(dāng),,電路自激振蕩了!
馬上想到的是R7,、R8電阻,,因為第一版設(shè)計是0603器件,后為了便于DIY者修改參數(shù),,改為RT13,,這樣離超聲波接收器就很近了(看PCB圖),懷疑是R8的反饋信號耦合到超聲波接收器端子上,,導(dǎo)致振蕩,。可割斷電路改變位置后,,依然如故,。
只好依次將輸入部分的各個器件脫離PCB,看是哪個導(dǎo)致的,,直到電感移開后,,問題消失了:
最后找出了問題所在:是2個電感之間耦合;因為L1,、L2并排緊挨著,,又都是“工”字磁芯,漏磁較大,;L2中是放大后的信號,,L1是輸入,這樣就導(dǎo)致了自激振蕩,。
第一版PCB也是這樣排的,,可巧的是電感焊的方向不同,正好相位相反,,所以沒有暴露,;而此次焊的2塊均正好相位相同,形成正反饋,,導(dǎo)致振蕩。
后來我驗證了,,只要將L2 交換引腳插入(不用焊),,就可以輕松復(fù)現(xiàn)。
因為電感沒有極性標(biāo)志,,所以讀者如DIY此傳感器,,要注意,先不要焊接L2,其它都焊好后,,通電,,插入L2,用示波器測量C12的信號,,如振蕩則交換2個引腳,,確定正常后再焊上。
考慮到多數(shù)學(xué)生沒有示波器,,我將在軟件中設(shè)計一個檢測功能,,詳見“軟件篇”。
從這個插曲中可以看出,,模擬電路排版還是挺講究的,,需要考慮因素遠(yuǎn)比數(shù)字電路多。
不過目前變換方向焊接后是否變成了負(fù)反饋,?對測量的影響是什么,?還望讀者發(fā)表高見!
六,、實驗效果
為了便于測試,,還是采用了PC輔助調(diào)試的方式,控制命令上設(shè)計了內(nèi)存讀寫命令,,以方便調(diào)試,。
關(guān)于軟件的設(shè)計,在后續(xù)“軟件篇”中再作詳細(xì)討論,。
由于使用的是USB轉(zhuǎn)串口模式,,USB的5V可作為超聲波傳感器的電源,調(diào)試起來十分方便,,串口既作為下載程序的工具,,又作為調(diào)試的手段:
PC機(jī)軟件的調(diào)試界面如下:
現(xiàn)設(shè)計是以mm 為單位,測試后發(fā)現(xiàn)穩(wěn)定度還不錯,,波動不超過5mm,,測量距離可在 25 cm —— 5m。
近距離受限是由于在軟件中設(shè)置了防護(hù),,前面已有描述,。遠(yuǎn)距離似乎是靈敏度不夠了,現(xiàn)在我用的第一級放大增益電阻都是4.7k(R7,、R8),,讀者可以改變兩者的比值以增大增益,看看是否能提高測量的距離,。
由于是軟件控制實現(xiàn)測量,,所以十分靈活,,作為示例,設(shè)計了3種工作模式:
1)單次測量,,即發(fā)出一次命令,,傳感器按要求測量后返回一組數(shù)據(jù),可指定采集的次數(shù),、采集后數(shù)據(jù)的處理方式等,;
2)自動測量并返回數(shù)據(jù),傳感器按照指定的周期不斷測量,,并且將數(shù)據(jù)及時返回,;
3)自動測量但不返回數(shù)據(jù),傳感器按照指定的周期不斷測量,,保存最近8次數(shù)據(jù),,需要時通過串口讀出,可任意設(shè)定讀出前幾次,。
這些只是一個示范而已,,應(yīng)用于具體場合時可自己編程以達(dá)到最佳的工作模式。如用于檢測是否有物體進(jìn)入限定的區(qū)域,,就可以將限定值“告知”傳感器,,傳感器自動測量、判斷,,只有當(dāng)有物體進(jìn)入時才返回數(shù)據(jù),,通知系統(tǒng),這樣系統(tǒng)的軟件開銷可大大減低,。這就是用單片機(jī)作為傳感器核心的優(yōu)勢,。
七、結(jié)語
通過這個制作,,證實了我對超聲波測距原理的期望是正確的,,而且也樹立了自信。第一次失敗后對涉及模擬電路的項目有些發(fā)怵,,不知道該如何解決遇到的問題,。想必有讀者經(jīng)歷過和我一樣的感受,所以費(fèi)如此筆墨描述之,,就是為了新參與者不再因模擬電路而“卻步”,。
不過從調(diào)試花絮中應(yīng)該看出,模擬電路還是比數(shù)字電路考慮的問題要多一些,。
同時,,在測試中對于一些一知半解的概念有了深刻的理解,如“BLANKING”,,“Multiple Measurement Capability”等,。而且感受了超聲波測量的“非指向性”,體會了GP2D12的“強(qiáng)指向性”,,理解了為何GP2D12不可能被超聲波測距所替代的道理,,難怪GP2D12 在國外的機(jī)器人部件市場上一直存在!
硬件部分基本完成,,留一個題目給大家:仔細(xì)分析一下TL852的2腳有什么作用,?可以為電路提供什么幫助?基于它,,能實現(xiàn)什么,?
“軟件篇”再見。