(廣西科技大學電氣與信息與工程學院 廣西 柳州 545006)
超聲波測距是一種利用超聲波的可定向發射,方向性好,在介質中傳播距離較遠等特性,結合電子計數等微電子技術來實現的非接觸式檢測方式[1]。在各類測距傳感器中,超聲波傳感器更適合在光照、霧霾、粉塵等惡劣環境下工作。更重要的是其具有成本低、易集成、結構簡單、使用方便等優點,廣泛應用于海洋探測、車輛定位與導航、無人機避障、倒車雷達等領域。但影響超聲波測距精度的因素有很多,主要受信號回波起伏、溫度等影響,導致在提高超聲波測距精度上造成很大困擾。由于超聲波測距系統應用越來越廣泛,因而對其測距精度要求也越來越苛刻。國內外學者對此做了大量研究與實驗,針對影響超聲波測距精度的因素提出了各種可行性的方法和建議,并且取得了突破性的成就。

圖1 系統原理框圖
超聲波測距系統硬件主要由以下幾個部分組成:以AT89C51為核心的控制電路、超聲波發射電路、超聲波接收電路、溫度檢測電路、按鍵電路[6]、LCD1602顯示電路等組成,系統原理框圖如1所示。
單片機是整個系統的控制核心,協調各部分電路的工作。單片機控制超聲波傳感器發出[7]超聲波信號,同時開始同步計時,超聲波在空氣傳播過程中遇到障礙物會發生反射,超聲波接收器接受到反射回來的信號時立即停止計時。根據超聲波發出時間及回波接受時間間隔,采用取渡越時間法可計算出距離[8]。
(1)
式(1),D表示傳感器與障礙物之間的距離,c代表超聲波在空氣中傳播的速度,t代表脈沖波由發射到接受的時間差[9]。測距采用的超聲波頻率通常為40kHz,在該頻率下系統測距精度相對較高[10]。
超聲波在常溫下(15℃)傳播速度為340m/s,但其傳播速度容易受到環境溫度、濕度、壓強等影響,其中受溫度影響最明顯。一般情況下,溫度每升高1℃,波速增加約0.6m[11],經過查閱文獻資料得出超聲波聲速在不同溫度下的值如下表1所示。

表1 不同溫度下對應的波速
由表可得出溫度對超聲波測距系統的影響是不可忽視的,如果忽略溫度的影響,按照一般情況下的波速進行計算,那造成的誤差是巨大的。所以,對波速進行溫度補償是非常有必要的,能夠在很大程度上提高超聲波測距的精度。通過查找相關資料得出波速與溫度的關系如下:
V=C0+0.607T
(2)
式中,T代表實時環境溫度,C0代表在零時刻的波速值,V代表實時波速。從式中可看出,要想獲得較準確的波速值,則必須首先獲取實時環境溫度T的大小[12]。本系統采用DS18B20實時檢測環境溫度,用以實現實際波速的校準。
DS18B20是常用的溫度傳感器,具有體積小、精度高、硬件開銷低、抗干擾能力強等特點,其測溫范圍為-55~+125℃,在-10~85℃范圍內測量分辨率為±0.5℃[13]。在使用中不需要任何外圍元件,并且多個測溫傳感器可以并聯在唯一的單總線上,實現多點測溫。供電方式靈活[14],可以通過內部寄生電路對其進行供電,從而使系統結構更加簡單,可靠性更高。本系統采用該器件作為測溫元件,它將采集的溫度數據內部處理后通過串口進行發出,每幀6個字節,具體的數據協議如表2所示。
目前,“功能性食品”課程的主要教學單元包括:功能性食品基礎篇;氨基酸、活性肽、活性蛋白質及其加工技術篇;功能性碳水化合物及其加工技術篇;活性油脂及其加工技術篇;其他功能性物質及其加工技術篇和強化食品及其加工技術篇6個方面,目前課程的授課方式是先進行理論講解,然后進行相關的實驗實訓。在理論講解的授課過程中,與實際生活不夠貼切,學生提不起學習興趣,有些知識點達不到良好的教學效果。

表2 DS18B20模塊數據協議
由以上協議,實際溫度的計算方法可表示為:
TEMP=(TH×256+TL)×0.01
(3)
式中,TEMP代表溫度,單位是℃,TH代表溫度數據的高8位,TL代表溫度數據的低8位。
通過這個計算方法,可以計算出相應的環境溫度,計算方法如下:首先需要把測溫模塊發送的十六進制數據轉換成十進制數,然后帶入計算公式得出對應的溫度。例如,某時刻測溫模塊發送的數據為:AA 01 O8 8E 97 FF。以上六組十六進制數據分別代表對應的字段名,01代表此時溫度為正,08代表數據高8位對應的十進制數為8,8E代表數據低8位對應的十進制數為142,將數字值代入(3)式得到當前的溫度29.9℃。
由于DS18B20具有上述優點,因此被廣泛應用于各種測溫場合[15]。然而在實際測溫下,其分辨率僅為0.5℃,對許多測量精度要求較高的場合DS18B20仍顯精度不足。因此,本系統采用了一種高進度測溫算法[15],根據DS18B20內部暫存寄存器的工作原理,其算法可表示為:
當LSB=0時:
T1=T2+(M1-M2)/M1
(4)
當LSB=1時:
T1=(T2-0.5)+(M1-M2)/M1
(5)
式中,T1代表實際測量溫度值;T2代表為測量結束后DS18B20串行輸出的符號位以外的變換結果;M1代表每度計數值;M2代表計數器1的計數剩余值;LSB為溫度結果字符串的最低位。這些值都可以從DS18B20的內部暫存寄存器中獲得。該算法可以使分辨率提升到0.01℃,因此這種算法可以有效的提高溫度傳感器的分辨率。
在校正過程中,以高精度測量儀器為標準,如圖3所示,高精度測量儀器和顯示DS18B20的溫度的液晶屏放在同一環境下一定時間,這樣做的目的是使兩者測量的溫度穩定下來。從實物圖中可以看出DS18B20所測得的溫度比標準的測量儀器要高0.3℃,接下來就需要對DS18B20進行數據校正。

圖2 DS18B20校正前實物圖

圖3 DS18B20校正后實物圖
采用高精度測溫算法后,再次把兩種測量儀器放在同一環境下一定時間后,最終使得DS18B20溫度測量值和標準的測量儀器測得結果一致,達到了DS18B20溫度校正的目的。將校正后的溫度傳感器和測量儀器同時一起放置在不同環境溫度下分別記錄下兩者的測量值,并用matlab繪制出如下曲線。

圖4 溫度校正范圍圖
從圖中可以看出經過校正后的溫度傳感器的值更接近真實值,從而獲得的實際波速也是相對比較準確,最終可以使得測距的結果更加精確。
系統主要要以下幾個模塊組成:單片機最小系統、電源模塊、按鍵控制模塊、超聲波模塊以及顯示模塊組成。為了方便實現在不同溫度下測得的距離。本系統設計了五個獨立按鍵,分別是清零按鍵、平均測量按鍵、溫度設置按鍵以及溫度加減按鍵。當按下溫度設置按鍵時,此時可以對溫度進行加減操作,當每按一次溫度加按鍵,溫度上升一度,可進行操作的范圍在0℃~50℃,同理,溫度減按鍵也是如此。當再一次按下溫度設置按鍵時,重新回到自動溫控狀態,如此循環下去。顯示模塊選擇液晶顯示模塊LCD1602,它是一種可對其進行讀寫的器件,16表示每行可現實16個字符,02表示可以顯示兩行字符[16],采用5V供電源供電,使用方便、價格便宜。
原理圖和PCB采用Altium designer軟件進行繪制,繪制原理圖時應注意三點:1)元件標號一定要一一對應;2)保證每個節點必須是連通狀態;3)導入每個對應的元器件封裝。原理圖繪制完成后繪制PCB,因為PCB是實際需要焊接的電路板,所以需要考慮布局。繪制PCB時也需要注意主要三點:1)高頻電路和主控單片機拉開一定距離,防止高頻干擾,振蕩線圈、電容、晶振布線盡可能短,避免分布電容、電感的影響;2)布線盡量少拐彎,布線轉角一般大于120度,不要出現直角或銳角,輸入輸出避免相鄰平行走線防止反射干擾;3)電源和地線盡可能加粗。以下是繪制的系統原理圖,其中K 1代表數據清零按鍵、K 2代表平均測量按鍵、K 3代表溫度設置按鍵、K 4代表溫度加按鍵、K 5代表溫度減按鍵、U 1代表DS18B20溫度傳感器、U 2代表AT89C51單片、P 1代表電源、P 2代表超聲波模塊、P 3代表LCD1602模塊。

圖5 系統原理圖
系統軟件設計采用模塊化設計,模塊化主要包括:溫度測量、中斷服務、距離計算、鍵盤掃描、顯示等子程序。每一個模塊編寫一個對應的函數,這樣方便彼此之間的調用。首先,初始化計數器T0,設置其為方式1工作模式,TO低位和高位都初始化為0,允許TO中斷,開啟總中斷。接著,初始化LCD1602,設置其每行顯示16個字符并顯示2行,不顯示光標并且光標不閃爍,每讀寫一個字符后,地址指針加1,且光標加1,清除數據RAM的數據。然后,程序進入無限循環,在各個子函數中進行相關的調用,測得溫度補償后的距離。最后,可以根據需求,選擇不同的按鍵可以實現不同溫度下測量的結果的對比,計算出溫度補償前和補償后的誤差。
為了得到更加準確可靠的測量數據,系統采用求取平均值的方法來減小測量誤差,具體的操作如下:超聲波發射器連續發射10次超聲波,這樣就可以收到10次回波,即可捕獲到每次從發射到接受回波的時間,從而算出相對應的距離,把這10組測量的距離累加然后求其平均值得到最終測量結果。這樣可以達到避免出現偶然誤差以及提高測量精度目的。

圖6 系統流程圖
系統采用超聲波型號為HC-SR04中心頻率為40kHz,用卷尺測得障礙物與超聲波發射探頭之間的實際距離,通過實驗室空調與溫度設置按鍵調節溫度,分別測出溫度補償前與溫度補償后在不同溫度下測量的結果并對結果進行分析討論,測量數據如下表所示。

圖7 LCD1602實物圖
T—表示當前溫度值(℃)
V—表示當前溫度對應的波速值(m/s)
S—表示當前溫度下測得的距離(m)

表3 溫度補償前不同溫度下測量結果

表4 溫度補償后不同溫度下測量結果
表中S1代表超聲波探頭與障礙物之間的實際距離;S2代表在15℃測量的距離;S3代表在25℃測量的距離;S4代表在30℃測量的距離;Δ代表最大測量誤差。由以上測量結果分析可以得到以下結果:
(1)在15℃測量的結果無論是溫度補償前還是補償后都比較接近實際值,并且兩者的數值也比較接近。這是因為溫度補償前波速默認是在常溫下(340m/s)的波速,也就是與15℃此時的波速正好吻合,所以此時的測量結果是最接近實際值;
(2)在不同溫度下,溫度補償后的測量結果在同一距離下誤差很小,這是因為在不同時刻超聲波的波速都是實際的波速,而溫度補償前測量的距離誤差比較大,隨著溫度的升高,測量的距離也越來越小,造成此結果的原因是實際波速隨著溫度的升高而增大,縮短了從發射超聲波到接受超聲波的時間差,但測距的波速仍然使用默認的波速,實際波速比默認的波速大,所以導致最終測量結果偏小;
(3)比較兩者的最大誤差可知,溫度補償后的誤差明顯小于溫度補償前的誤差,達到了提高測距精度的效果。
本系統主要從以下兩個方面提高測距精度:1)對溫度傳感器進行數據校正;2)通過溫度補償的方法對超聲波波速予以補償并計算平均距離得到最終測距結果,通過實際測量數據和傳統超聲波測距系統分析對比,測距精度明顯得到提高,并且設計結構簡單,成本低,可用在各種場合環境下工作。
雖然測量的結果比較接近真實值,但還是有誤差存在。所以,超聲波測距系統進一步改進還要考慮到溫度之外其它因素的影響,比如壓強、濕度、硬件等。可以從這些因素進一步研究,使得測距誤差更小,測量精度更高。
[1]祝敏.超聲波測距誤差分析及修正方法[J].計量與測試技術,2009,36(2):21-22,24.
[2]李明,吳勝強.利用時間放大技術提高超聲波測距精度[J].邢臺職業技術學院學報,2005,22(3):63-65.
[3]王小陽,童峰,阮橙.反射面起伏程度對超聲波測距精度影響研究[J].南京大學學報(自然科學),2015,32(S1):107-111.
[4]張體榮,陳勝權,熊川,等.高精度超聲波測距儀的設計[J].桂林航天工業學院學報,2008,13(3):36-38.
[5]卜英勇,何永強,趙海鳴,等.一種高精度超聲波測距儀測量精度的研究[J].鄭州大學學報(工學版),2006,27(1):86-90.
[6]蔡光昭,洪遠泉,周永明.基于STM32的超聲波測速測距系統設計[J].現代電子技術,2014,v.37;No.431(24):87-89.
[7]田曉娟.基于單片機的超聲波淤泥界面檢測系統的開發[D].山東輕工業學院,2008.
[8]楊斌,鄭翔驥,佘明輝.基于單片機超聲波測距系統的電路設計與實現[J].電子世界,2015(19):167-170.
[9]沈燕,高曉蓉,孫增友,等.基于單片機的超聲波測距儀設計[J].現代電子技術,2012,35(7):126-129.
[10]潘盛輝,曹蓬,吳甜甜,等.基于STM32的障礙物定位檢測系統設計[J].廣西科技大學學報,2017,28(3):97-102.
[11]張洋.超聲波技術在固態粉料稱重中的應用[J].科技信息,2013(6):128-128.
[12]趙小強,趙連玉.超聲波測距系統中的溫度補償[J].組合機床與自動化加工技術,2008(12):62-64.
[13]陸鎮華,秦理.集成RFID的電池充放電參數采集節點設計[J].電子設計工程,2014,22(4):130-132.
[14]寧潔.基于ZigBee的通信機房溫度監測系統[D].西安電子科技大學,2012.
[15]安凱.DS18S20溫度傳感器的高精度測溫及校正算法[J].現代電子技術,2014(23):97-99.
[16]謝琳潔,林煒鵬.基于單片機的數控直流穩壓電源設計與實現[J].電子世界,2014(13):44-44.