超聲波測距系統(tǒng)中單片機(jī)的應(yīng)用
引言
在自主行走機(jī)器人系統(tǒng)中,機(jī)器人要實現(xiàn)在未知和不確定環(huán)境下行走,必須實時采集環(huán)境信息,以實現(xiàn)避障和導(dǎo)航,這必須依靠能實現(xiàn)感知環(huán)境信息的傳感器系統(tǒng)來實現(xiàn)。視覺、紅外、激光、超聲波等傳感器都在行走機(jī)器人中得到廣泛應(yīng)用。由于超聲波測距方法設(shè)備簡單、價格便宜、體積小、設(shè)計簡單、易于做到實時控制,并且在測量距離、測量精度等方面能達(dá)到工業(yè)實用的要求,因此得到了廣泛的應(yīng)用。本文所介紹的機(jī)器人采用三方超聲波測距系統(tǒng),該系統(tǒng)可為機(jī)器人識別其運動的前方、左方和右方環(huán)境而提供關(guān)于運動距離的信息。
1 超聲波測距原理
超聲波發(fā)生器內(nèi)部由兩個壓電片和一個共振板組成。當(dāng)它的兩極外加脈沖信號,且其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩極間未加外電壓,當(dāng)共振板接收到超聲波時,就成為超聲波接收器。超聲波測距一般有兩種方法:①取輸出脈沖的平均電壓值,該電壓與距離成正比,測量電壓即可測量距離;②測量輸出脈沖的寬度,即發(fā)射超聲波與接收超聲波的時間間隔t,根據(jù)被測距離s=vt?2來得到測量距離,由于超聲波速度v與溫度有關(guān),所以如果溫度變化比較大,應(yīng)通過溫度補(bǔ)償?shù)姆椒右孕U?/font>
本測量系統(tǒng)采用第二種方法,由于測量精度要求不是特別高,所以可以認(rèn)為溫度基本不變。
本系統(tǒng)以PIC16F877單片機(jī)為核心,通過軟件編程實現(xiàn)其對外圍電路的實時控制,并提供給外圍電路所需的信號,包括頻率振動信號、數(shù)據(jù)處理信號等,從而簡化了外圍電路,且移植性好。系統(tǒng)硬件電路方框圖見圖1。
由于本系統(tǒng)只需要清楚機(jī)器人前方、左方、右方是否有障礙物,并不需要知道障礙物與機(jī)器人的具體距離,因此不需要顯示電路,只需要設(shè)定一距離閥值,使障礙物與機(jī)器人的距離達(dá)到某一值時,單片機(jī)控制機(jī)器人電機(jī)停轉(zhuǎn),這可通過軟件編程實現(xiàn)。
2 超聲波發(fā)射電路
超聲波的中心頻率為40kHz,該頻率可以通過以下程序產(chǎn)生(部分源程序):
2.1 超聲波發(fā)射電路
超聲波發(fā)射電路以PIC16F877為核心,當(dāng)單片機(jī)上電時,單片機(jī)從RA0口產(chǎn)生40kHz的超聲波信號,但是此時該信號無法通過與非門進(jìn)入放大電路使超聲波發(fā)射頭發(fā)射超聲波,只有閉合開關(guān)S1時,從RA1口發(fā)射出一門控信號,該信號的頻率為4kHz,同時啟動單片機(jī)內(nèi)部的定時器TMR1,開始計數(shù)。該門控信號每發(fā)射一個周期的波形,超聲波就會發(fā)射10個完整的波形,這可由它們的頻率得出。超聲波的周期為1(40kHz)=01025ms,而門控信號的周期為1(4kHz)=0125ms。最后根據(jù)s=vt2求出障礙物與移動機(jī)器人的距離。當(dāng)超聲波接收頭收到反射回來的超聲波時,計數(shù)器停止計數(shù),時間t可以根據(jù)計數(shù)器的計數(shù)與門控信號的周期求出。RA2口接RS觸發(fā)器,RS觸發(fā)器可以自動控制超聲波的發(fā)射和停止。本系統(tǒng)的電路還包括人工復(fù)位電路,由單片機(jī)的MCLR引腳接S2來控制,超聲波發(fā)射電路圖見圖2。
2.2 門控電路(RS觸發(fā)器)
為實現(xiàn)對超聲波發(fā)射和接收的自動控制,須在電路中加一門控電路,該門控信號頻率為4kHz,如把輸出脈沖作為閘門信號,讓已知頻率fc的脈沖恰好通過閘門,那么t=NTc,其中,Tc為已知脈沖的周期,N為脈沖的個數(shù)。
門控電路由RS觸發(fā)器組成,當(dāng)輸入端R=1(S=0)時復(fù)位,即輸出端Q=0;當(dāng)R=0(S=1)時置位,即Q=1。RS觸發(fā)器與單片機(jī)的RA2口相連。
2.3 超聲波放大電路
超聲波放大電路由三極管等組成,由于單片機(jī)RA口最多只有20mA~25mA上拉電流,而超聲波發(fā)射器最小需要60mA的電流,所以在與非門后加一級放大電路來放大電流,以完成超聲波的發(fā)射。超聲波放大發(fā)射電路見圖3。
3 超聲波接收電路
3.1 超聲波接收放大電路
由于超聲波接收頭接收到的超聲波信號很微弱,所以在其后需加一超聲波接收放大電路。該電路采用兩個集成運放,設(shè)計為兩級,兩級都為同相輸入,因為同相輸入的電壓放大倍數(shù)為1+RfR,所以每一級的放大倍數(shù)為10,兩級放大倍數(shù)接近100倍,這樣后續(xù)電路就可以很容易地檢測到輸入的信號。集成運放采用雙電源供電,超聲波接收放大電路見圖4。
3.2 信號濾波電路
從信號放大電路出來的聲波帶有一定的干擾,為了去除干擾信號,需要一濾波電路,信號濾波電路選用帶通濾波器電路,使其中心頻率為40kHz、帶寬為2kHz,外加一過零比較器,使輸出信號轉(zhuǎn)化為方波信號。信號濾波電路見圖5。
3.3 信號整形電路
從信號濾波電路出來的方波信號很不規(guī)則,故其后加一整形電路,整形電路由兩級非門串聯(lián),并聯(lián)一電阻組成,整形后再送單片機(jī)進(jìn)行處理,信號整形電路見圖6。
4 軟件程序設(shè)計
軟件采用模塊化設(shè)計,由主程序、發(fā)射子程序等組成,軟件程序框圖見圖7。
5 結(jié)語
本文設(shè)計的超聲波測距系統(tǒng)采用了單片機(jī)編程技術(shù),配合硬件完成了系統(tǒng)的要求,其精度能滿足大部分的工程需要。與傳統(tǒng)的測距系統(tǒng)相比,具有結(jié)構(gòu)簡單、價格便宜、移植性好等特點。