李修權(quán),劉杰,黑創(chuàng),黃力,尹志豪
長江大學電子信息學院( 電工電子國家級實驗教學示范中心( 長江大學) ,湖北荊州434023)
超聲波測距因為其非接觸性、防塵防霧等特點被廣泛應(yīng)用[1]。測距的精度決定了設(shè)計系統(tǒng)的優(yōu)劣,但是傳統(tǒng)超聲波測量方法存在1cm的誤差。筆者介紹了一種基于STM32單片機的超聲波測距系統(tǒng),能實時顯示和保存測量數(shù)據(jù),也可以設(shè)置報警閾值,在3~75cm內(nèi)其精度達到了±1mm。
圖1 超聲波測距原理圖示
超聲波是一種機械波,頻率高于20kHz。超聲波波長較短,在空氣中傳播過程中以縱波形式傳輸,具有較好的方向性。常用的超聲波檢測距離的方法有:時間渡越法[2]、相位檢測法和聲波幅值檢測法。時間渡越法常用于測量距離較長,測量精度較高的場合。
聲波在介質(zhì)中傳播需要一定的時間,時間渡越法通過測量超聲波在介質(zhì)中的傳播時間來計算距離,該系統(tǒng)采用時間渡越法測量距離。超聲波發(fā)射換能器發(fā)射一段超聲波,聲波傳播過程中遇到障礙物反射回來被超聲波接收換能器接收。通過記錄2換能器之間的時間差,可計算出超聲波傳播過程中的傳播距離。測距原理如圖1所示。距離與聲速之間滿足以下函數(shù)關(guān)系:
2S=vt
(1)
H=Scosθ
(2)
H2+L2=S2
(3)
式中,S為超聲波傳播的距離;v為當前環(huán)境下的聲速值;t為聲波在空氣中傳播的時間;θ為發(fā)射換能器發(fā)射聲波的入射角;H為傳感器距離被測物體的直線距離;L為換能器到傳感器中心點的距離。
聯(lián)合式(1)~(3),可得:
(4)
此外,聲波的傳輸速度v與波長λ、頻率f之間滿足波速公式:
v=λf
(5)
圖2 超聲波測距系統(tǒng)硬件設(shè)計框圖
圖3 超聲波測距系統(tǒng)實物圖
圖4 軟件設(shè)計流程圖
超聲波測距系統(tǒng)硬件部分主要包括超聲波傳感器、溫度傳感器、蜂鳴報警器、LCD和無線網(wǎng)絡(luò)通信模塊,如圖2和圖3所示。其中超聲波傳感器選用HC-SR04傳感器,該傳感器較其他同類傳感器相比性能穩(wěn)定,精度高[3]。HC-SR04傳感器共有4個引腳:脈沖觸發(fā)引腳(Trig)、回波引腳(Echo)、VCC和GND。脈沖觸發(fā)引腳收到單片機遞送的20μs高電平后發(fā)射換能器會發(fā)射一段頻率為40kHz的超聲波信號,同時回波引腳電平將由低變高。接收換能器接收到返回的超聲波信號后,回波引腳端電平將自動由高變低?;夭ㄒ_高電平時間即為超聲波在空氣中傳播的時間。該高電平時間由STM32單片機進行捕獲。該系統(tǒng)選擇STM32F4系列單片機,該系列單片機主頻可達168MHz,定時器精度可達0.005952μs,則定時器帶來的誤差為0.002mm,誤差值可忽略不計。
由于不同溫度下聲波傳播速度不同,實際工程應(yīng)用中環(huán)境溫度的變化較大,這對測量結(jié)果將產(chǎn)生較大的影響。為保證系統(tǒng)具有較高的穩(wěn)定性和較強的環(huán)境適應(yīng)能力,測量距離時應(yīng)通過溫度值對超聲波聲速進行補償。經(jīng)查閱相關(guān)文檔,聲波在空氣中傳播過程中傳播速度v與溫度T之間的關(guān)系滿足[4]:
v=331.4+0.61T
(6)
該系統(tǒng)采用DS18B20溫度傳感器,溫度值修正聲速值。經(jīng)試驗,該傳感器測量溫度時的誤差為±0.5℃,該誤差值對聲速的影響為±0.305m/s,該速度誤差值遠遠小于聲速值,可以忽略不計。無線網(wǎng)絡(luò)通信采用ESP8266芯片,使用TCP/IP協(xié)議棧透明傳輸模式,可將采集的溫度、距離數(shù)據(jù)通過無線網(wǎng)絡(luò)傳輸給上位機軟件,實現(xiàn)數(shù)據(jù)實時顯示和保存的功能。同時在硬件系統(tǒng)中應(yīng)用TFT-LCD顯示模塊,顯示當前環(huán)境中的溫度、距離和預(yù)設(shè)的報警值。報警模塊使用蜂鳴器,若檢測的距離小于預(yù)設(shè)報警值時蜂鳴器發(fā)出聲音。
該系統(tǒng)軟件設(shè)計的開發(fā)環(huán)境為Keil5,利用C語言進行編程,其程序設(shè)計流程圖如圖4所示。軟件的程序設(shè)計主要由主函數(shù)、中斷子函數(shù)、中值濾波函數(shù)、三角修正函數(shù)、超聲波測量函數(shù)等組成。硬件系統(tǒng)上電后首先對傳感器、液晶等初始化,隨后進行溫度、距離測量。然后將測量距離與報警閾值進行對比判斷是否驅(qū)動蜂鳴器報警,最后將測量數(shù)據(jù)顯示在液晶屏并通過無線網(wǎng)絡(luò)發(fā)送給上位機軟件。
由于發(fā)射換能器與接收換能器之間存在著一定距離,這導致超聲波傳感器測量出的距離并不是傳感器與被測物體之間的直線距離。超聲波傳播的距離S與傳感器距離被測物體的直線距離H、兩換能器之間的距離L滿足式(3)。測量距離S往往大于實際距離H。在實際距離為5cm時,測量結(jié)果為5.179cm。為保證測量精度,S與H的誤差不可被忽略。三角修正函數(shù)依據(jù)式(3)設(shè)計,由測量距離計算出實際距離。經(jīng)過測量,HC-SR04超聲波傳感器發(fā)射換能器和接收換能器之間的距離為2.7cm,L取1.35cm。
該系統(tǒng)采用超聲波信號頻率為40kHz,聲速為340m/s時,利用式(5)計算出波長λ=0.85cm。由此可以得出,超聲波傳感器捕獲超聲波回波信號時如果有一個脈沖波形漏掉就會產(chǎn)生近1cm的誤差。針對該問題,趙浪濤等提出一種高精度測量的復小波變換法[5],實現(xiàn)回波包絡(luò)峰值檢測。在具體實踐中需要一種更簡單的方法,筆者在實驗基礎(chǔ)上提出了中位值平均濾波算法[6],該算法是將采集的N個數(shù)據(jù)去掉一個最大值和一個最小值,然后對剩下的數(shù)據(jù)求平均值。該平均值作為測量結(jié)果。該算法可以消除偶然誤差,提高測量精度。
圖5 上位機軟件界面圖
上位機軟件使用圖形化編程語言LabVIEW進行開發(fā),其開發(fā)效率高,可直接嵌套C語言程序[7]。筆者設(shè)計的超聲波測距系統(tǒng)上位機操作界面如圖5所示,主要由2部分構(gòu)成:用戶控制區(qū)和實時數(shù)據(jù)顯示區(qū)。使用上位機軟件前需要配置網(wǎng)絡(luò)的IP地址和端口號。測量過程中可實時顯示系統(tǒng)當前通訊連接狀態(tài)和采集的數(shù)據(jù)值,數(shù)據(jù)處理嵌套C語言代碼,簡化了程序框圖。單片機內(nèi)部的報警閾值會顯示在“當前報警值”框中,可通過預(yù)設(shè)報警值編輯框和修改報警值按鈕修改報警閾值。報警閾值通過網(wǎng)絡(luò)發(fā)送到硬件設(shè)備。在退出程序前會彈出一個對話框詢問測量的數(shù)據(jù)是否需要保存。
利用如圖3所示的設(shè)計系統(tǒng),在27.1℃環(huán)境下,不使用三角修正函數(shù)和中位值平均濾波算法測量距離,測量數(shù)據(jù)如表1所示。在同樣環(huán)境下,使用三角修正函數(shù)和中位值平均濾波算法進行測量,測量相同距離并記錄數(shù)據(jù),如表2所示。為驗證系統(tǒng)的環(huán)境適應(yīng)能力,在不同溫度下進行多次試驗,測量溫度補償對提高系統(tǒng)測量精度的作用并記錄數(shù)據(jù),如表3所示。
表1 未使用三角修正函數(shù)和中位值平均濾波算法試驗結(jié)果
表2 使用三角修正函數(shù)和中位值平均濾波算法試驗結(jié)果
表3 不同溫度試驗結(jié)果記錄
由表1和表2測量數(shù)據(jù)對比可知,經(jīng)過三角修正函數(shù)和中位值平均濾波算法處理后的測量結(jié)果要明顯優(yōu)于未經(jīng)處理的測量結(jié)果。由此可以看出,三角修正函數(shù)和中位值平均濾波算法能夠有效的減小試驗誤差。同時,由表3可知,該系統(tǒng)具有較強的環(huán)境適應(yīng)能力,溫度值改變并不影響測量精度。
經(jīng)過測試,系統(tǒng)的測量范圍可達到4m,一定測量范圍內(nèi)超聲波測量精確度在±1mm以內(nèi)。系統(tǒng)測量產(chǎn)生的誤差主要于由大氣壓強、灰塵的濃度等眾多環(huán)境因素影響聲波傳播速度,導致測量結(jié)果不準確。在測量過程中應(yīng)盡量保持超聲波傳感器所在平面與被測平面保持平行,這樣做可以減小因裝置擺放問題造成的偶然誤差;若待測物體表面材質(zhì)對超聲波具有很高的吸收率,會減小超聲波的反射幅度并影響測量結(jié)果。
筆者介紹了基于STM32和超聲波HC-SR04傳感器測距系統(tǒng),該系統(tǒng)具有結(jié)構(gòu)簡單、成本低、操作方便、測量精度高等優(yōu)點,同時引入溫度修正聲速、三角修正函數(shù)和中位值平均濾波算法能夠?qū)Νh(huán)境因素帶來的測量誤差進行補償校正。該系統(tǒng)配套開發(fā)上位機軟件,可實時顯示和保存測量數(shù)據(jù),為實際工程應(yīng)用提供便利。