萬振武,沈宇超,尚闖
(1.湖北工業(yè)大學 計算機學院;2.武漢理工大學華夏學院 信息工程系,湖北 武漢 430000)
距離是智能控制中經(jīng)常需要檢測的一個重要參數(shù),常用測距方式有激光、微波、紅外線以及超聲波測距等。超聲波具有較獨特的優(yōu)勢,其方向性好、穿透力強、傳播距離較遠、傳播中會在待檢物不同的分界面上產(chǎn)生反射波,因此其在測量距離、厚度、液位、井深、管道長度,物體識別,倒車防撞雷達,機械手控制等領(lǐng)域有著廣泛而深入的應用[1-2]。另外,超聲波測距是一種非接觸式的測量方式,使用中對無光、多煙塵、有毒氣、電磁波等測量環(huán)境有著較強的適用性[1-4]。基于這些特點,超聲波測距有著廣闊的前景,研究如何提高測距的精度和開辟其新的應用領(lǐng)域具有較強的理論與現(xiàn)實意義。
超聲波是指振動頻率大于20 kHz以上,頻率甚高,超出了人耳聽覺上限(20 kHz)而聽不見的一種聲波[5]。在常見的超聲波測距系統(tǒng)中,用一定頻率的電脈沖激勵超聲探頭上的壓電晶片,由于逆壓電效應,晶片會產(chǎn)生對應頻率的機械振動,該振動傳遞到與其接觸的媒介中,形成超聲波。超聲波傳感器發(fā)出超聲波,在空氣中傳播,遇到障礙物后發(fā)生反射,傳回超聲波傳感器,由于壓電效應,傳感器晶片把聲波振動轉(zhuǎn)換為電信號,測距系統(tǒng)根據(jù)從發(fā)射到接收到超聲波所經(jīng)歷的時間t,以及超聲波在空氣中的傳播速度c計算出傳感器到被測物的距離D,其計算公式如下[6]:

由式(1)可知,測距的誤差主要是由超聲波在介質(zhì)中的傳播速度誤差以及測定傳播時間的誤差引起的。


其中ΔD—測距總誤差;ΔDt—由測距時間誤差引起的測距誤差;ΔDc—由聲速誤差引起的測距誤差;Δt—測距時間誤差;Δc—聲速誤差。
設(shè)計中,采用電子計數(shù)法測時間,即在超聲波傳感器的回波閘門時間內(nèi),單片機的定時器計數(shù)器進行計數(shù),根據(jù)計數(shù)值結(jié)合單片機的機器周期就可以計算出待檢測的距離。由于回波的閘門開啟時刻與單片機計數(shù)脈沖之間的時間關(guān)系是不相關(guān)的,這樣,即使在相同的閘門時間內(nèi),計數(shù)所得到的值卻不一定相同,其最大絕對誤差為:ΔN=±1,即量化誤差[7]。設(shè)計中單片機晶振頻率為11.059 2 MHz,即定時計數(shù)器計一次數(shù)時間為1.085 μs,故由量化誤差引起的測量時間誤差為:Δt=±1.085 μs,根據(jù)式(2)可得由量化誤差引起的測距誤差為:

假如取聲速為c0=340 m/s則:

設(shè)計中距離的實際值測量工具最小分辨力為1 mm,由量化誤差引起的測距誤差要高出其一個數(shù)量級,故可以忽略不計。

在空氣中,聲速受溫度的影響為[8]:

根據(jù)式(4)可得空氣中溫度—聲速關(guān)系如表1所示。

表1 空氣中溫度—聲速關(guān)系表
假如測距系統(tǒng)選取聲速c0=340 m/s(即T=14.5℃時的聲速)作為計算距離時的聲速,取待測物離傳感器的距離D=1 m,則根據(jù)表1所示聲速和溫度的關(guān)系,與之對應的聲速增量Δc、測距時間t和聲速誤差引起的測距誤差ΔDc如表2所示。

表2 D=1 m、c0=340 m/s時,溫度—聲速誤差引起的測距誤差關(guān)系表
同理可以分別得到D=2 m、3 m、4 m時T和ΔDc之間的關(guān)系,如圖1所示。
從表2和圖1可知,系統(tǒng)測距計算時選擇的聲速為c0=340 m/s時,隨著測量距離D的增加以及不同溫度下c0相對于實際聲速c的增量Δc的增加,誤差也隨之增加。

設(shè)計中距離的實際值測量工具最小分辨力為1 mm,由聲速引起的測距誤差不能忽略,為提高測量準確度,根據(jù)環(huán)境溫度對超聲波測距進行溫度補償很重要。進行溫度補償通常有兩種方法,即溫度校正法和標桿測量法。溫度校正法就是在測距系統(tǒng)中加入環(huán)境溫度檢測部分對測距環(huán)境的溫度指標進行測量,經(jīng)過系統(tǒng)校正后達到提高超聲波測距精度的目的[9]。其不足在于,如果不能準確測得實際溫度,那么由溫度測量產(chǎn)生的誤差就會進一步影響到測距結(jié)果。標桿測量法不直接對溫度進行測量,而是采用雙通道的測量方式:其中一個通道對已知距離進行測量,得到環(huán)境聲速;另一通道根據(jù)測得的聲速,按常規(guī)方式測距,進而達到提高測距精度的目的,間接做到溫度補償[10]。本系統(tǒng)采用標桿測量法測距。
系統(tǒng)由單片機控制模塊,標桿通道,實測通道,LCD顯示模塊組成,系統(tǒng)框圖如圖2所示。

圖1 不同距離不同溫度下由于聲速誤差造成的測距誤差圖

圖2 系統(tǒng)框圖
2.1.1 單片機控制模塊
單片機控制模塊如圖3所示,主要由單片機、復位電路、時鐘電路、ISP下載口等部分組成。實現(xiàn)單片機最小系統(tǒng)功能,能夠ISP在線編程。選用AT89S52單片機為主控芯片。AT89S52是一種高性能、低功耗的8位單片機,內(nèi)含8 kB系統(tǒng)可編程Flash存儲器,兼容性好。

圖3 單片機控制模塊
2.1.2 超聲波測量通道
系統(tǒng)中,超聲波測量通道有兩個,即標桿通道和實測通道,標桿通道的作用是對標準距離測量計時進而計算當前環(huán)境的聲速,實測通道則根據(jù)標桿通道的聲速測量并計算出待測物體的距離,以消除環(huán)境溫度因素對測量造成的誤差。設(shè)計中,兩個通道都選用收發(fā)一體的HC-SR04超聲波傳感器作為超聲波信號的收發(fā)裝置,其中標桿通道超聲波傳感器的TRIG和EHCO口分別和單片機的P1.2、P1.3連接,實測通道則和單片機P1.4、P1.5連接,它們在軟件控制上稍有不同,詳見2.2.2節(jié)。HC-SR04超聲波傳感器檢測時序圖如圖4所示。

圖4 HC-SR04超聲波傳感器檢測時序圖
以上時序表明只需提供一個10 μs以上的脈沖觸發(fā)信號,HC-SR04內(nèi)部會發(fā)出8個40 kHz的脈沖,探頭晶片受到激發(fā),發(fā)出40 kHz的超聲波,與此同時,模塊內(nèi)部檢測反射波,一旦探頭檢測到反射波則輸出回響信號,回響信號的脈沖寬度與待測的距離成正比關(guān)系。故此可以通過測定從發(fā)出聲波信號到收到回波信號的時間差計算出待測距離。本設(shè)計中,在觸發(fā)脈沖作用下,超聲波發(fā)射器發(fā)射超聲波,然后單片機定時計時器開始計數(shù),超聲波接收器收到反射波后定時計時器立即停止計數(shù),從而測出時間差t,然后結(jié)合聲速c就可以求出待測距離D。本設(shè)計中單片機控制系統(tǒng)晶振頻率為11.059 2 MHz,即定時計數(shù)器計一次數(shù)時間為1.085 μs。如果一次測量過程定時計數(shù)器計數(shù)值為x,則回波電平持續(xù)時間t為:

根據(jù)式(1)可得距離D為:

2.1.3 LCD顯示模塊
顯示模塊選用LCD1602顯示屏,其功耗省、體積小、輕巧超薄,在各類儀表和低功耗系統(tǒng)中應用廣泛。LCD1602可以分為單行16字,2行16字,2行20字等類型,本次設(shè)計選用的是2行16字的LCD1602。其采用標準的16腳接口,其中:第4腳為寄存器選擇,當其為低電平時選擇指令寄存器,而高電平時選擇數(shù)據(jù)寄存器。設(shè)計中和單片機P0.0口連接;第6腳為使能端,脈沖下降沿有效;第7~14腳:D0~D7為8位雙向數(shù)據(jù)線[11]。
軟件設(shè)計中主要完成標桿通道、實測通道超聲波測距控制以及測量距離的LCD顯示。
2.2.1 主程序流程圖
系統(tǒng)啟動后初始化,單片機控制標桿通道超聲波傳感器發(fā)送超聲波,并檢測回波計算聲速,之后控制實測通道超聲波傳感器發(fā)送超聲波,并檢測回波結(jié)合聲速計算距離,將數(shù)據(jù)轉(zhuǎn)換后送LCD顯示,如此循環(huán)。程序流程如圖5所示。

圖5 主程序流程圖
2.2.2 超聲波子程序流程圖
超聲波子程序程序包括標桿通道的超聲波子程序和實測通道的超聲波子程序,兩者的區(qū)別僅在于前者計算聲速,后者計算距離。
按照2.1.2節(jié)中HC-SR04超聲波傳感器的響應特點,單片機給傳感器發(fā)送一個觸發(fā)脈沖,然后根據(jù)傳感器EHCO端口確認超聲波是否發(fā)送完畢,如果發(fā)送完畢則開定時計數(shù)器,等待回波反饋信號,然后關(guān)閉定時計數(shù)器,根據(jù)定時計數(shù)器的計數(shù)值來分別計算聲速(標桿通道)和待測物距離(實測通道),流程圖如圖6、圖7所示。需要說明的是,如果長時間沒有回波,即超聲波傳感器的測量范圍內(nèi)沒有物體時,為避免死循環(huán)等待,通過判斷定時計數(shù)器是否溢出來跳出循環(huán)。
設(shè)計中,標桿通道參照物離傳感器的距離D=1 m,假設(shè)定時計數(shù)器的計數(shù)值為x,根據(jù)式(6)可以計算出聲速:

假如實測通道測量后定時計數(shù)器的值為x1,則根據(jù)式(6)、(7)可計算出待測距離:

在實際程序編寫中,為避免由1/1.085等無理數(shù)的運算造成誤差,標桿通道里只是對定時計數(shù)器的計數(shù)值通過公式TH0*256+TL0將定時計數(shù)器高低兩個字節(jié)的二進制數(shù)轉(zhuǎn)換為一個16位的整形數(shù)據(jù),然后利用式(8)計算。
2.2.3 LCD顯示子程序
顯示子程序功能是將有關(guān)測試數(shù)據(jù)顯示出來。首先,LCD初始化,如果檢測到物體,顯示“Distance:”字樣,然后將超聲波測距程序里計算所得的數(shù)據(jù)轉(zhuǎn)換為字符型,送LCD顯示出來,延時后返回主程序。如果沒有檢測到物體,即定時計數(shù)器溢出(通過溢出標志確定),則顯示“Nothing”字樣。流程如圖8所示。

圖6 標桿通道超聲波子程序流程圖

圖7 實測通道超聲波子程序流程圖

圖8 LCD顯示子程序流程圖
系統(tǒng)設(shè)計完成后,針對使用標桿通道和不使用標桿通道兩種情況進行了對比測量,截取其中1.1 m~2 m區(qū)間的測量數(shù)據(jù)分別如表3、表4所示。
實測環(huán)境的溫度是25℃,根據(jù)式(4),可得此時聲速c=346.2 m/s,則此時的聲速增量Δc=c0-c=(340-346.2)m/s=-6.2 m/s,另據(jù)式(1)可得t=2D/c,結(jié)合選擇的不同測量距離D可以算出對應的時間t,再通過式(3)可得由環(huán)境溫度引起誤差的理論值,如表5所示。

表3 無標桿通道校正時的測量數(shù)據(jù)(環(huán)境溫度:25℃ 實際值測距工具:卷尺)

表4 有標桿通道時的測量數(shù)據(jù)(環(huán)境溫度:25℃ 實際值測距工具:卷尺)

表5 無標桿通道校正時由環(huán)境溫度引起誤差的理論值
從相關(guān)數(shù)據(jù)來看,有標桿通道校正后,測量的準確度有明顯的提高,相對誤差整體上提高了一到兩個百分點。對比三組數(shù)據(jù),相對誤差γ2≈γ1-γ3,這說明標桿通道很好地起到了校正作用。另外數(shù)據(jù)整體上測量值比實際值偏小,說明還存在系統(tǒng)誤差。這些是由于測環(huán)境溫度時的測溫誤差、式(4)中的無理數(shù)運算造成的理論誤差、傳感器固有誤差等因素造成的。
針對超聲波測距可能出現(xiàn)的最主要誤差因素,基于標桿測量法的超聲波測距系統(tǒng),采用雙通道超聲波測量,其中標桿通道測速、實測通道測距,很好地校正了由于溫度因素造成的測量誤差,實現(xiàn)了較精確的距離測量,并通過LCD屏顯示,具有較強的實用價值。
[1]李世軍.基于單片機的超聲波測距儀的研究與設(shè)計[J].湖南工程學院學報,2011,21(2):13-15.
[2]張健,李剛.超聲波測距系統(tǒng)的研究與設(shè)計[J].合肥工業(yè)大學學報(自然科學版),2004,27(6):640-643.
[3]彭建盛,梁光艷,郭留濤.基于無線單片機CC2510的多點超聲波測距系統(tǒng)[J].河池學院學報,2009(2):67-71.
[4]卜英勇,王紀嬋,趙海鳴,等.基于單片機的高精度超聲波測距系統(tǒng)[J].儀表技術(shù)與傳感器,2007(3):66-68.
[5]蘇煒,龔壁建,潘笑.超聲波測距誤差分析[J].傳感器技術(shù),2004,23(6):8 -11.
[6]韓麗茹.提高超聲波測距精度方法綜述[J].電訊技術(shù),2010,50(9):132-136.
[7]張永瑞.電子測量技術(shù)基礎(chǔ)(第二版)[M].西安:西安電子科技大學出版社,2009:46-48.
[8]賈麗娜.超聲波物位檢測系統(tǒng)中的誤差來源及補償方法[J].儀器儀表用戶,2004,10:21-26.
[9]鄒軼.近距離高精度超聲波測距系統(tǒng)的設(shè)計[D].大連:大連理工大學,2009:11-12.
[10]張海鷹.超聲波測距技術(shù)研究[J].儀表技術(shù),2011(9):58-60.
[11]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2012:148-150.