摘要:超聲波傳感器是利用超聲波的特性研制而成的傳感器,它在非接觸性測量方面應用非常廣泛,筆者根據智能玩具機器人的距離感知系統的軟硬件設計過程,介紹了位差超聲波傳感器在智能玩具機器人中的應用,給出了位差超聲波傳感器與單片機系統的硬件電路接口和距離檢測軟件的編程思路,并通過實驗,得出了其測量精度與測量距離以及與被測物體反射角之間的關系。
關鍵詞:超聲波;機器人;傳感器;距離檢測
目前國內生產的電子玩具技術含量較低,由于不具備智能化,利潤空間小,受歡迎程度低。近年來,伴隨計算機技術的高速發(fā)展,智能控制器的發(fā)展迅速,一些典型的智能玩具如輪式移動機器人在部分院校教學中得到推廣,因為智能玩具機器人是一個典型的機電一體化系統,它融合制造技術、機械、電子、傳感器、計算機和人工智能等眾多先進技術,是進行工程訓練、教學實驗和研究的理想平臺,在電子學教學領域中有著諸多的研究價值。
傳感器是智能機器人獲取外界數據的“感知系統”,離開智能傳感器的機器人大多是些功能單一,不具備思維能力,有些甚至是底盤基座固定式的,使得這些機器人只能固定在某一位置按照事先設定動作進行機械式的重復操作,其應用范圍僅限于工業(yè)生產中的重復性工作,不便于普及和推廣,可見基于傳感器的智能控制器在實現玩具機器人的智能化的作用中不可或缺,筆者介紹了一種基于超聲波原理的位差超聲波傳感器在智能玩具教育機器人中的應用,通過較為具體的設計過程介紹了智能玩具機器人距離測試系統的軟硬件設計方法,并對位差超聲波傳感器的性能指標和一些關鍵技術作較深入地探討,提出了一些編程控制技巧及算法。
1 硬件設計
采用“MCU+傳感器+顯示設備+執(zhí)行機構”的總體設計方案,要求MCU對非接觸式傳感器獲取的外部距離信息進行計算轉換,將得出的智能玩具機器人與前方障礙物的距離值送到顯示設備顯示,并根據程序設定的距離閾值控制智能玩具機器人實現自動導航功能,系統整體框圖如圖1所示。
其中系統MCU采用目前性價比較高的AT89C51單片機,利用“位差超聲波傳感器”作為距離傳感器,以非接觸的形式測量前方物體的距離;顯示設備采用LCD1602液晶顯示模塊;執(zhí)行機構采用PARALLAX公司生產的連續(xù)旋轉伺服電機,其優(yōu)點是編程控制方便且不需額外增加驅動電路,圖1中超聲波傳感器測距的工作原理如圖2所示。
超聲波傳感器與單片機系統進行接口構成距離檢測的硬件系統,在系統軟件的控制下,單片機向位差超聲波傳感器發(fā)送的一個觸發(fā)脈沖,位差超聲波傳感器被此脈沖觸發(fā)后會產生一道短40 kHz的脈沖電信號,此40 kHz的脈沖電信號通過激勵換能器處理以后,將轉換成機械振動的能量,其振動頻率約在20 kHz以上,由此形成了超聲波,該信號經錐形“輻射口”處將超聲波信號在空氣中以每秒約1 130英尺的速度向外發(fā)射出去。當發(fā)射出去的超聲波信號遇到障礙物以后,立即被反射回來。接收器接收到反射回來的超聲波信號后,通過其內部轉換,將超聲波變成微弱的電振蕩,并將信號進行放大,就可得到所需的脈沖信號,此脈沖信號再返回給單片機,表示回波被探測,這個脈沖寬度就是對應于爆裂回聲返回到傳感器所需時間,其時序如圖3所示。
2 軟件設計
2.1 測距子程序設計
根據位差超聲波傳感器的時序原理圖,對C51單片機內部定時/計數器編程,實現對前方物體距離的測量并將測量結果在LCD模塊上顯示。測距子程序的基本設計算法,用流程圖表示如圖4所示。
程序設計思路主要分為2步:
1)根據位差超聲波傳感器的控制時序圖(圖3),啟動位差超聲波距離傳感器,即通過單片機編程,給超聲波傳感器的信號引腳提供一個持續(xù)時間為5μs的高電平,然后拉低信號引腳750μs,這樣位差超聲波傳感器就被啟動,發(fā)出超聲爆裂,與此同時,啟動單片機的定時器開始計數,當超聲波遇到物體時會立即反射回來,位差超聲波傳感器的接收器接到回波時,會自動拉低其信號引腳的電平,單片機查詢到此引腳的電平下降沿到來時停止定時器計數,此時定時器計數值就間接反應了超聲波從反射到返回所經歷的時間。
2)讀出定時器的計數值除以2,便得到超聲波在遇到被測物體返回的時間,根據:距離=速度×時間,就可以計算出前方物體的距離,因超聲波在常溫下的空氣介質中傳播的速度大約為344 m/s,即29.034μs超聲波能傳播1 cm,具體編程時在程序中用語句x=count/29.034來計算距離值,獲得被測距離值后,調用LCD顯示函數將距離值在LCD模塊上顯示出來。
2.2 超聲波導航程序設計
利用位差超聲波距離傳感器測得的“距離”信息,可以引導智能玩具機器人實現避障行走。當智能玩具機器人距離前面障礙物小于20 cm時,它會向左拐改變行進方向,避免與物體碰撞,下面簡要分析以超聲波導航程序的基本設計思路,程序設計算法用流程圖表示如圖5所示。
程序通過反復調用超聲波測距子程序,獲取智能玩具機器人前方被測物體的距離值;判斷距離是否在設定閾值以內,若大于程序設定的距離閾值,調用函數Forward(),驅動智能玩具機器人前進;若小于程序設定的距離閾值,調用Backward(),驅動智能玩具機器人后退一段距離;接著又調用Left_Turn(),驅動智能玩具機器人左拐后程序再返回重復以上過程。
3 系統調試
3.1 硬件系統的調試
硬件系統的制作與調試相對簡單,其具體過程簡述如下:首先根據硬件設計原理圖,采用Protel DXP2004軟件合理布局和布線,設計出智能玩具機器人的控制器PCB,然后用制板設備制作出PCB樣板;根據元器件清單,在PCB上安裝焊接好元器件,連接好直流伺服電機,將測試軟件下載到智能玩具控制器的單片機存儲器,接通電源開機運行,用示波器測試觀察控制器的單片機最小系統運行時關鍵點信號波形是否正常。
3.2 系統整體調試
根據上述程序設計思路,在Keil C編譯環(huán)境中用C語言編寫程序代碼,編譯程序,將生成的HEX文件燒寫到控制板上的單片機程序存儲器,開機運行,智能玩具機器人按程序設定運行模式前進,當前方有物體時,在LCD顯示屏上實時準確地顯示出小車和前方物體之間的距離值;當小車距前方物體小于程序設定的距離閾值時,小車掉轉方向繼續(xù)前進,經反復實驗表明:位差超聲波距離傳感器在下列情況下不能精確地測量距離,如圖6所示。
1)與物體距離大于3 m當被測物體距離智能玩具機器人3 m之外時,如圖6(a)所示,因位差超聲波傳感器的發(fā)射功率不夠,反射回來的信號太弱,導致LCD上顯示出的距離值不能反映實際距離值。
2)被測物體不在正前方 當被測物體不在智能玩具機器人正前方,如圖6(b)所示,而是有一定的偏角,因與物體的表面形成的反射角度太小,使傳感器接收器接收不到反射回來的信號,導致LCD上顯示出的距離值不能反映實際距離值。
3)前方被測物體橫截面太小 當前方被測物體體積太小或是橫截面太小,如圖6(c)所示,因為沒有足夠強度的信號返回到傳感器,導致LCD上顯示出的距離值不能反映實際距離值。
4 結束語
超聲波傳感器在非接觸性測量方面的應用非常廣泛,可用于檢測液體水位(特別是具有腐蝕性的液體,如硫酸、硝酸液體),汽車倒車防撞系統,金屬(或非金屬)探傷,機器人感知系統設計等,利用位差超聲波傳感器與51單片機構成智能玩具機器人的“距離感知系統”,具有電路接口簡單,成本低廉,穩(wěn)定性好等特點,但其測量精度受到位差超聲波傳感器的最大測量距離以及與被測物體反射角等的限制。