高精度超聲波測距系統(tǒng)設(shè)計
引言
利用超聲波測量距離的原理可簡單描述為:超聲波定期發(fā)送超聲波,遭遇障礙物時發(fā)生反射,發(fā)射波經(jīng)由接收器接收并轉(zhuǎn)化為電信號,這樣測距技術(shù)只要測出發(fā)送和接收的時間差,然后按照下式計算,即可求出距離:
由于超聲波指向性強,能量消耗緩慢,在介質(zhì)中傳播的距離較遠,因而超聲波經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。利用超聲波檢測往往比較迅速、方便、計算簡單、易于做到實時控制,并且在測量精度方面能達到工業(yè)實用的要求,因此,廣泛應(yīng)用于倒車提醒、建筑工地、工業(yè)現(xiàn)場等的距離測量。目前的測距量程上能達到百米數(shù)量級,測量的精度往往能達到厘米數(shù)量級。本文在分析現(xiàn)有超聲波測距技術(shù)基礎(chǔ)之上,給出了一種改進方案,測量精度可達毫米級。
2 系統(tǒng)方案分析與論證
2.1 影響精度的因素分析
根據(jù)超聲波測距式(1)可知測距的誤差主要是由超聲波的傳播速度誤差和測量距離傳播的時間誤差引起的。
對于時間誤差主要由發(fā)送計時點和接收計時點準(zhǔn)確性確定,為了能夠提高計時點選擇的準(zhǔn)確性,本文提出了對發(fā)射信號和加收信號通過校正的方式來實現(xiàn)準(zhǔn)確計時。此外,當(dāng)要求測距誤差小于1 mm時,假定超聲波速度C=344 m/s(20℃室溫),忽略聲速的傳播誤差。則測距誤差s△t<0.000 002 907 s,即2.907 ms。根據(jù)以上過計算可知,在超聲波的傳播速度是準(zhǔn)確的前提下,測量距離的傳播時間差值精度只要在達到微秒級,就能保證測距誤差小于1 mm的誤差。使用的12 MHz晶體作時鐘基準(zhǔn)的89C51單片機定時器能方便的計數(shù)到1μs的精度,因此系統(tǒng)采用AT89S51的定一時器能保證時間誤差在1 mm的測量范圍內(nèi)。
超聲波的傳播速度主要受空氣密度所的影響,空氣的密度越高則超聲波的傳播速度就越快,而空氣的密度又與溫度有著密切的關(guān)系。溫度與超聲波的速度之間的近似公式為:
式中:C0為零度時的聲波速度332 m/s;T為實際溫度(℃)。由此可見,測量精度與溫度有著直接的關(guān)系,本文采用DS18B20溫度傳感器,對外界溫度進行測量,并在軟件中實現(xiàn)溫度補償。
2.2 整體方案設(shè)計
本文主要采用單片機控制技術(shù),實現(xiàn)精確的超聲波測距方案,整個系統(tǒng)由超聲波收發(fā)單元、波形校準(zhǔn)單元、溫度測量單元、顯示單元和控制單元5個單元組成。其中,超聲波收發(fā)單元主要實現(xiàn)超聲波的接發(fā)送和接收;信號處理單元主要實現(xiàn)去除干擾、波形整形、鎖相環(huán)等功能,便于實現(xiàn)準(zhǔn)確計時;溫度測量單元主要測量外界溫度,實現(xiàn)溫度補償;顯示單元實現(xiàn)測量數(shù)據(jù)的顯示;單片機為控制單元,完成指令發(fā)送,接收數(shù)據(jù),進行計算等任務(wù)。
3 系統(tǒng)硬件設(shè)計
3.1 超聲波發(fā)射部分
本文中脈沖發(fā)射采用軟件方式,利用AT89S51的P1.0口發(fā)射40 kHz的方波信號,經(jīng)過74HC04放大后輸出到超聲波換能器,產(chǎn)生超聲波。74HC04是一個高速CMOS六反相器,具有放大作用,具有對稱的傳輸延遲和轉(zhuǎn)換時間,而相對于LSTTL邏輯IC,它的功耗減少很多。對于HC類型,其工作電壓為2~6 V,它具有高抗擾度,可以兼容直接輸入LSTTL邏輯信號和CMOS邏輯輸入等特點。
本系統(tǒng)將40 kHz方波信號分成兩路,分別由74HC04經(jīng)兩次和一次反向放大,從而構(gòu)成推拉式反向放大。電路圖如圖2所示。
3.2 超聲波接收部分
超聲波接收部分采用集成芯片CX20106A,這是一款紅外線檢波接收的專用芯片。內(nèi)部電路由前置放大器、自動偏置電平控制電路、限幅放大器、帶通濾波器、峰值檢波器和整形輸出電路組成??梢岳盟鳛槌暡z測電路。
接收的回波信號先經(jīng)過前置放大器和限幅放大器,將信號調(diào)整到合適的幅值;再經(jīng)過帶通濾波器濾波得到有用信號,濾除干擾信號;最后由峰值檢波器和整形電路輸出到鎖相環(huán)路,實現(xiàn)準(zhǔn)確的計時。CX20106A的外部接線圖如圖3所示。
圖3中1腳是接收信號輸入端,2腳是調(diào)節(jié)接收信號靈敏度,電阻越小,靈敏度越高。電容越大,靈敏度越高。電容一般取1μF,電阻50~300 Ω的,在干擾較大的場合增加電阻阻值可將靈敏度調(diào)低,干擾小的場合減小阻值將靈敏度調(diào)高。5腳主要用來調(diào)節(jié)中心頻率,這里取200 kΩ,7腳接上拉電阻,這里取1 kΩ左右。
3.3 顯示部分
顯示部分采用共陰極數(shù)碼管,由單片機實現(xiàn)控制,單片機的P0口輸出段碼,P2口用作位碼,用PNP型三極管驅(qū)動(本設(shè)計采用9018),由于單片機I/O口的驅(qū)動能力非常小,P0口需外接上拉電阻來增加驅(qū)動能力,應(yīng)用時要注意,在低電平時,可能由于電流直接經(jīng)電阻流進I/O的灌流太大而燒毀單片機,所以提升電阻一般取600~1 000 Ω。實驗證明,數(shù)碼管亮度合適。其原理圖如圖4所示。
3.4 溫度測量部分
DS18B20數(shù)字溫度計是DALLAS公司生產(chǎn)的1Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,將其數(shù)據(jù)線與單片機的P1.3相連,就可以實現(xiàn)溫度測量。測量的溫度精度可以達到0.1℃,測量的溫度的范圍在-20~+100℃。電路如圖5所示。
4 系統(tǒng)軟件設(shè)計
測距系統(tǒng)軟件采用匯編語言,由發(fā)射脈沖子程序、用中斷實現(xiàn)回波接收子程序、計算距離子程序、數(shù)碼管顯示子程序和計時單元延時子程序幾部分組成,采用模塊化編程。其軟件流程圖如圖6所示。
程序首先初始化需要用到的寄存器,內(nèi)存單元,設(shè)置中斷觸發(fā)方式,并初始化DS18B20,然后控制P1.0口輸出12μs的高電平,再輸出13μs的低電平,循環(huán)10次便可發(fā)射10個頻率為40 kHz的脈沖信號。經(jīng)過一段延時后,CPU開放中斷,開始計數(shù),將計數(shù)器初值設(shè)為延時所經(jīng)過的距離,計數(shù)器每過一個計時單元加一。中斷產(chǎn)生,停止計數(shù),最后將計數(shù)器中的值數(shù)據(jù)處理后顯示到數(shù)碼管上。如果計數(shù)器中的值小于預(yù)定值就由軟件產(chǎn)生一定頻率的信號到蜂鳴器報警,并啟動報警燈。當(dāng)需要所存數(shù)據(jù)時,由外部中斷判斷鍵盤是否按下,通過不斷顯示上次測量數(shù)據(jù)來鎖定數(shù)據(jù)。當(dāng)檢測到鍵盤再一次按下時,按取消鎖存,并繼續(xù)測量距離。
5 結(jié)語
應(yīng)用本系統(tǒng)3 mm~20 m內(nèi)的目標(biāo)做了多次測量,測量結(jié)果為,其最大誤差為1.5 mm,且重復(fù)性好??梢娀趩纹瑱C設(shè)計的超聲波測距系統(tǒng)具有硬件結(jié)構(gòu)簡單、工作可靠、測量誤差小等特點。因此,它可用于許多對測量要求精度高,測量范圍適當(dāng)?shù)脑O(shè)備和各種檢測系統(tǒng)中。