基于單片機(jī)的超聲波測距系統(tǒng)設(shè)計及實現(xiàn)
1 超聲波測距原理
超聲波傳感器分機(jī)械方式和電氣方式兩類,它實際上是一種換能器,在發(fā)射端它把電能或機(jī)械能轉(zhuǎn)換成聲能,接收端則反之。本次設(shè)計超聲波傳感器采用電氣方式中的壓電式超聲波換能器,它是利用壓電晶體的諧振來工作的。它有兩個壓電晶片和一個共振板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機(jī)械能轉(zhuǎn)換為電信號,就成為超聲波接收器。在超聲波電路中,發(fā)射端輸出一系列脈沖方波,脈沖寬度越大,輸出的個數(shù)越多,能量越大,所能測的距離也越遠(yuǎn)。超聲波發(fā)射換能器與接收換能器其結(jié)構(gòu)上稍有不同,使用時應(yīng)分清器件上的標(biāo)志。
Pellarn和Galt于1946年提出了脈沖回波法,其工作原理是:用超聲脈沖激勵超聲探頭向外輻射超聲波,同時接收從被測物體反射回來的超聲波(簡稱回波),通過檢測或估計從發(fā)射超聲波至接收回波所經(jīng)歷的射程時間ToF(Time of Flight),按下式計算超聲波探頭與被測物體之間的距離d,即:
其中c為聲波在空氣介質(zhì)中的傳播速度。
2 系統(tǒng)構(gòu)成
本系統(tǒng)硬件電路由單片機(jī)、超聲波發(fā)射電路、超聲波接收電路、測溫電路、顯示電路、報警電路等構(gòu)成,如圖1所示。
3 系統(tǒng)程序設(shè)計
3.1 主程序
主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置定時器TO工作模式為16位定時/計數(shù)器模式,總中斷允許位置1并給顯示端口清0;然后調(diào)用超聲波發(fā)生子程序送出若干個超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起直射渡觸發(fā),從發(fā)射開始一直到"虛假反射波"結(jié)束這段時間內(nèi),不開放外部中斷(INTO)申請,便可有效躲避干擾,但同時也會造成測試"盲區(qū)".假設(shè)延時約0.1 ms后,才打開外部中斷接收返回的超聲波信號,當(dāng)溫度為20℃,測量盲區(qū)為d=1×10-2×344=1.72 cm.
3.2 超聲波發(fā)生子程序和接收子程序
超聲波發(fā)生子程序的作用是通過P1.0端口發(fā)送超聲波換能器所需的40kHz的方波信號(脈沖寬度為12μs左右),同時把計數(shù)器TO打開進(jìn)行計時。超聲波發(fā)生子程序較簡單,但要求程序運行準(zhǔn)確,所以采用匯編語言編程。
超聲波接收子程序利用外部中斷O檢測返回超聲波,一旦接收到返回超聲波信號(即INT0引腳出現(xiàn)低電平),立即進(jìn)入中斷服務(wù)子程序,關(guān)閉定時器TO停止計時,并將測距成功標(biāo)志位賦值1.如果當(dāng)計時器溢出時還未檢測到超聲波返回信號,則說明障礙物過遠(yuǎn),超出量程,將關(guān)閉外部中斷,并標(biāo)志此次測距不成功。
最大測試距離將取決于:兩次脈沖群發(fā)送之間的最小時間間隔和脈沖的能量。一般來說,發(fā)射端脈沖個數(shù)越多,能量越大,所能測量的距離也越遠(yuǎn)。但也不是無限制的,本方案是讀取定時器TO的計數(shù)值,最大能測試的距離是TO尚未溢出時檢測到超聲波回波信號,故在溫度20℃下,最大測試距離為。在一些周期性發(fā)射超聲波設(shè)備中,如果要測試的最大距離是10 m,則兩次脈沖群之間的最小時間為。
評論