王永彬
(臨沂科技職業(yè)學院,山東 臨沂 276000)
在實際生產和生活中,經常需要對距離(位置)進行測量,以進行距離的直接提示,或者以距離為參量進行其他物理量的計算和控制,比如計算物體的速度。測量距離的方法有很多種,總體上看有直接測量法(如利用尺子測量)和間接測量法(如激光測距、紅外線測距、超聲波測距等)2 種。由于超聲波波束定向指向性強,在介質中傳播時能量損耗比較小[1],特別是在空氣、水中傳播能達到較遠的距離,因而適合利用超聲波的這一特性進行距離的測量。利用超聲波測距的特點是測量過程迅速和方便,并且計算簡單,測量精度高,因此被大量應用于工業(yè)場合,比如汽車的倒車雷達、移動機器人的位置確認等,都是超聲波測距方式的典型應用。
超聲波測距原理是利用超聲波換能器的發(fā)射裝置發(fā)出一定頻率的超聲波,超聲波遇到障礙物時就會有反射波反射回來并被接收器接收,利用從發(fā)射到接收的往返時間差就可以進行距離測量,這與無線電雷達的測距原理很相似。具體實現過程是:超聲波模塊的發(fā)射器向要進行測距的特定方向發(fā)射超聲波,在發(fā)射開始的瞬間同步開始計時,如果沒有障礙物,超聲波在空氣中會向前自由傳播,當途中碰到障礙物阻擋時則會立即被反射回來,當反射波到達接收器時就立即停止計時操作。根據經驗值知道超聲波在空氣中的自由傳播速度約為340 m/s,假設計時器記錄的超聲波發(fā)射和接收時間差為t(單位:s),這樣就能計算出發(fā)射點與障礙物之間的距離S(單位:m),計算公式為S=340×t/2。此外,當測量精度要求較高時,還需要充分考慮到溫度對超聲波速度的影響,當溫度為0 ℃時超聲波速度是332 m/s,20 ℃時是344 m/s,30 ℃時是350 m/s,這樣就可以根據環(huán)境溫度進行超聲波測距的溫度修正。
本系統(tǒng)采用市面上已成熟量產的HC-SR04 型集成超聲波傳感模塊作為核心測距傳感器。
模塊總體功能介紹:該模塊可提供2~450 cm 距離范圍的非接觸式測量功能,測度距離精確,精度高達3 mm,性能穩(wěn)定,能與國外的SRF05、SRF02 等超聲波測距模塊相媲美。模塊包括超聲波發(fā)射器、接收器與控制電路,可廣泛應用于距離測量、機器人避障、防盜報警裝置等。
工作原理:①給超聲波模塊通電源。②給脈沖觸發(fā)引腳(Trig)輸入一個維持時間不短于20 μs 的高電平信號。③輸入高電平觸發(fā)信號后,模塊會自動發(fā)射8個連續(xù)的40 kHz 頻率的超聲波信號,與此同時回波信號(Echo)端的電平同步發(fā)生正跳變,即由0 變?yōu)?,此時立即同步啟動定時器開始計時。④當反射超聲波被模塊接收到時,回波信號端的電平會發(fā)生負跳變,即由1 變?yōu)?,此時接著立即停止定時器計數,定時器中保存的這個時間差即為超聲波由發(fā)射到返回的總時長,它在數值上等于2 倍的被測距離與聲速的比值。⑤由于聲音在空氣中的傳播速度典型值為340 m/s,則可間接計算出所測的距離。測試距離=(高電平時間×聲速)/2。其中,聲速為340 m/s。
典型工作參數如下。
工作電壓:DC 5 V。
靜態(tài)電流:小于2 mA。
工作電流:15 mA。
工作頻率:40 kHz。
高電平輸出:5 V。
低電平輸出:0 V。
感應角度:不大于15°。
探測距離:2~450 cm。
高精度:可達0.3 cm。
該模塊是雙面貼片封裝,對外提供4 個引腳,分別是GND、Echo、Trig、+5 V。GND 為電源地,Echo為接收模塊的回波信號輸出引腳,Trig 為超聲波發(fā)射模塊的外部觸發(fā)啟動信號輸入引腳,+5 V 是工作電源正極。
模塊集成了一片單片機,當SR04 模塊上的單片機的觸發(fā)信號輸入引腳收到大于10 μs 的啟動脈沖后,會發(fā)出8 個頻率為40 kHz 的脈沖信號,這個電脈沖信號由超聲波模塊換能器調制轉換成超聲波音頻信號發(fā)出后,回波信號輸出引腳同時會輸出一個高電平。超聲波遇到障礙物返回后,回響信號狀態(tài)發(fā)生變化[2],從高電平變?yōu)榈碗娖?。因此可以根據這個回響信號的高電平維持時間寬度來計算距離,如圖1 所示。
圖1 超聲波測距時序圖
根據圖1 中回響信號的脈沖寬度,可以獲得距離參數。計算公式為:距離=回響信號高電平時間×聲速(精度不高直接采用340 m/s)/2。
本系統(tǒng)采用AT89C4051 單片機作為主控芯片。它采用dip20 引腳的雙列直插式封裝,具有4K 的程序存儲空間,128 字節(jié)內部RAM,2 個外中斷源,2 個16位定時/計數器,1 個UART 串行口,16 個I/O 引腳,能完全滿足控制要求,價格低,性價比高。
單片機P3.7 引腳接到超聲波模塊的觸發(fā)信號輸入引腳,P3.6 引腳接到回聲信號輸出引腳,將P1 口作為LCD1602 液晶模塊的數據接口,P3.0 引腳作為R/W 讀寫控制,P3.1 引腳作為R/S 指令/數據選擇控制[3]。由于某些使用場合對測距精度要求較高,需要進行測距的實時溫度修正,因此可以使用一片Dalas 公司的DS18B20 單總線數字溫度傳感器進行環(huán)境溫度的實時測量,這里用P3.3 作為單片機與DS18B20 的單總線接口,最后3 個芯片都需要連接上+5 V 電源和GND。
首先是單片機和超聲波模塊的初始化,進行本次測距的準備工作。接著由單片機輸出一個20 μs 的啟動脈沖啟動超聲波模塊的發(fā)射,此時模塊的Echo 引腳同步輸出高電平信號,同時單片機啟動定時器開始計時和啟動DS18B20 進行實時溫度檢測,然后程序不斷檢測查詢超聲回波信號引腳狀態(tài),當接收到回波信號時Echo 引腳變?yōu)榈碗娖?,單片機立即關閉定時,最后的定時時間t就是超聲波經過2 倍被測距離所用的時間,因此實際距離S=(t×340/2)m。
當測量精度要求較高時,還需要充分考慮到溫度的不同對于超聲波速度的影響[4]。當溫度為0 ℃時超聲波速度是332 m/s,20 ℃時是344 m/s,30 ℃時是350 m/s,即實際聲速v與環(huán)境溫度Temp大致成線性比例關系。以溫度0 ℃時的聲速為基準,則實際聲速v=(332+Temp×0.6)m/s,故經過溫度修正后的實際距離為S=(t×(332+Temp×0.6)/2)m。而用于測距溫度修正的溫度檢測可以利用DS18B20 溫度傳感芯片實現。
DS18B20 是美信公司的一款溫度傳感器,單片機可以通過1-Wire 協議與DS18B20 進行通信,最終將溫度讀出。1-Wire 總線的硬件接口很簡單,只需要把DS18B20 的數據引腳和單片機的一個I/O 口接上就可以了。
DS18B20 通過編程,可以實現最高12 位的溫度存儲值。溫度數據是2 個字節(jié),讀取數據的時候,先讀取到的是低字節(jié)的低位。它所表示的溫度值中,有小數和整數兩部分。把小數和整數部分分離,在合適的位置點上小數點即可。本設計的程序中,保留一位小數位。
經過溫度修正后最后得到的測量距離結果,可以通過單片機P1 數據口和P3.0/P3.1 控制端口,將其在液晶模塊上實時顯示出來,第一行顯示環(huán)境溫度,第二行顯示測量的實際距離。
在軟件實現代碼中,檢測回響信號脈沖寬度時可以用軟件查詢的方式,即用代碼檢測與Echo 引腳連接的單片機P3.6 引腳的電平變化來啟動和關閉定時器,從而實現對時間的測量。在要求不高的測量時,這樣做完全可以得到讓人滿意的結果。但如果系統(tǒng)功能擴展得比較復雜(比如進行實時溫度補償、進行蜂鳴聲音提示、與上位機數據通信),則系統(tǒng)中還需要開啟其他多個中斷,而某些中斷函數還可能執(zhí)行較長的時間時,就可能發(fā)生這樣一種情況:當實際的回響信號變化時,系統(tǒng)正在執(zhí)行某個耗時較長的中斷函數,那么主程序中的檢測就只能等待此中斷函數執(zhí)行完后才能繼續(xù),于是就可能造成程序檢測到回響信號變化的時刻比實際發(fā)生的時刻要晚一些,從而會使定時器測得的脈沖寬度值發(fā)生較大偏差,進而使計算出的距離發(fā)生較大的偏差[5]。
針對此問題,可以通過靈活運用定時器T0 或T1的門控功能來解決。這里利用T0 的門控功能實現高精度的超聲波測距。具體實現方法:啟用T0 門控功能(TMOD 中相應的GATE 位置1),這時外部中斷引腳INT0(P3.2)將起到實際控制T0 啟停的作用,即INT0 為1 時T0 啟動計數,INT0 為0 時T0 停止計數,這樣就不需要編寫代碼來檢測超聲波回聲信號,而是可以將回聲信號連接到INT0 即P3.2 引腳上,讓它自動控制T0 啟停,從而避免了軟件檢測時可能產生的偏差,測量精度將大大提高。
將超聲波模塊通過排線與單片機主控板連接,將液晶模塊焊接到與主控板的液晶接口,確認無誤后上電,此時液晶模塊會顯示Test 字樣。將超聲波模塊對準一個不小于0.5 m2的障礙物,按開始測距按鈕,超聲波發(fā)射模塊被啟動。當發(fā)射的超聲波被反射回來由接收器接收到時,單片機將測得的距離數據進行計算處理并顯示在液晶模塊上。例如第一次測量后顯示距離為0.205 m,經實際用尺子測量得到的數據為0.200 m,誤差為0.5 cm;第二次測量后顯示距離為0.396 m,實際用測量距離為0.400 m,誤差為0.4 cm;第三次測量后顯示距離為0.603 m,實際測量距離為0.600 m,誤差為0.3 cm,誤差范圍在0.3~0.5 cm,測試較為準確,特別是被測試物體表面平整,并且模塊入射角度越垂直于被測物體表面時效果更好。
本設計基于單片機和超聲波集成傳感模塊實現對距離的非接觸式自動測量,利用量產的成品化的高精度超聲波傳感器,使系統(tǒng)設計簡單高效,大大方便與單片機接口。利用單片機靈活強大的實時控制和數據運算功能,實現測量點與障礙物之間距離的實時測量和修正功能,并在液晶模塊上直觀顯示出來測距結果,還可以根據測量的不同距離范圍進行不同頻率的聲音報警。同時探討了如何利用溫度測量模塊進行測距結果的實時溫度修正,以及利用單片機定時器的門控定時功能提高測量精度的方法,最大限度地提高測量的準確度。
本系統(tǒng)設計簡易,雖然不能測量過遠的距離(5 m之外),但規(guī)模小,外圍電路簡單,調試方便,成本低,器件更換維護容易,靈活性高,與被測量物體不需要直接接觸,可以廣泛應用于多種場合,如汽車倒車防撞提醒、智慧物流運動控制、建筑工地作業(yè)安全提示、公共安防中的接近檢測、停車場安全檢測、工農業(yè)現場中的液位測量、工件運動位置測量等,它的推廣應用將大大便利人們的生活和提高工農業(yè)生產自動化效率,產生良好的經濟社會效益。