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