趙毅能,師文慶
(廣東海洋大學(xué)電子與信息工程學(xué)院,廣東湛江 524088)
從20 世紀(jì)開始,人們對(duì)于超聲波測(cè)距傳感器進(jìn)行了大量的研究并推出了商用產(chǎn)品[1]。隨著社會(huì)的發(fā)展以及人們對(duì)測(cè)距要求的提高,超聲波測(cè)距技術(shù)自身也在不斷地完善和發(fā)展,使用超聲波測(cè)距儀的場(chǎng)合也越來越多,比如用常規(guī)測(cè)量的方法很難得到大部分曲面外形尺寸,但可以利用多個(gè)超聲波探頭進(jìn)行多方位測(cè)距來實(shí)現(xiàn)對(duì)曲面尺寸的檢測(cè)[2-3],水下機(jī)器人在此基礎(chǔ)上可以繪制出水下地形圖像。超聲波測(cè)距作為一種基礎(chǔ)的檢測(cè)手段一直活躍于科學(xué)研究中?;诖?,設(shè)計(jì)出一款工作穩(wěn)定、成本低的多功能超聲波測(cè)距儀具有非?,F(xiàn)實(shí)的意義。
近些年來,國(guó)內(nèi)外研究學(xué)者對(duì)于超聲測(cè)距的研究關(guān)注點(diǎn)主要集中在如何擴(kuò)大量程和提高測(cè)距精度上,原理以及線性度的創(chuàng)新研究還比較少[4],比如在回波信號(hào)處理方法和發(fā)射脈沖信號(hào)的選取上沒有突破性的進(jìn)展。
由于超聲波測(cè)距儀功能比較單一,且因易受溫度影響,測(cè)距精度大大降低,限制了超聲波測(cè)距儀在高精度要求的測(cè)距場(chǎng)合的應(yīng)用[5]。本文所介紹的超聲波測(cè)距方案采用渡越時(shí)間探測(cè)法同時(shí)引入溫度補(bǔ)償,即在計(jì)算出不同溫度情況下的聲速后,聯(lián)立測(cè)量的超聲波往返時(shí)間獲得距離,溫濕度檢測(cè)和聲光報(bào)警作為輔助功能可以拓寬應(yīng)用場(chǎng)景。
本設(shè)計(jì)在檢測(cè)過程中,由于距離以及溫濕度的變化參數(shù)均在STC89C52 芯片可以接受的范圍內(nèi),微秒級(jí)的定時(shí)器精度帶來的微小誤差可忽略不計(jì),因此STC89C52作為主控芯片能夠很好地滿足超聲測(cè)距系統(tǒng)的要求。
渡越時(shí)間探測(cè)法指的是超聲波發(fā)生器往某個(gè)方向發(fā)射超聲波,計(jì)時(shí)開始于發(fā)射的時(shí)間點(diǎn),此后超聲波沿直線傳播,當(dāng)超聲波撞擊到物體時(shí)就被反射回來,當(dāng)超聲波接收器接收到返回來的回波時(shí)計(jì)時(shí)停止。本文利用STC89C52 單片機(jī)驅(qū)動(dòng)HC-SR04 超聲探頭發(fā)射一定頻率的超聲波,超聲波碰到基準(zhǔn)面時(shí)反射回來被超聲探頭接收,定時(shí)器T0 記錄超聲波的往返時(shí)間,因?yàn)榭紤]到溫度對(duì)聲速的直接影響,系統(tǒng)還利用DHT11 溫濕度傳感器采集環(huán)境的溫濕度,采集的數(shù)據(jù)結(jié)果返回單片機(jī),再由單片機(jī)結(jié)合不同溫度下的聲速對(duì)測(cè)量距離進(jìn)行修正補(bǔ)償,LCD1602 液晶屏顯示測(cè)距結(jié)果和溫濕度值,如果測(cè)距儀進(jìn)入危險(xiǎn)范圍則判斷危險(xiǎn)程度并驅(qū)動(dòng)相應(yīng)頻率的聲光報(bào)警。
硬件方面主要由單片機(jī)模塊、超聲波模塊、溫濕度采集模塊、液晶顯示模塊和聲光報(bào)警模塊等部分構(gòu)成。圖1 為采用5V DC電壓驅(qū)動(dòng)的硬件電路示意圖。
圖1 電路原理圖
單片機(jī)最小系統(tǒng)電路的資源可以自由配置,所有輸入信號(hào)都會(huì)傳送至最小系統(tǒng)電路,單片機(jī)分析處理后,發(fā)送控制信號(hào)到對(duì)應(yīng)的模塊中去。
C1 電容值的大小直接影響到單片機(jī)的復(fù)位時(shí)間,此外,晶振就好比人的心臟,如果不起振,系統(tǒng)將不能正常工作,晶振頻率越高,單片機(jī)運(yùn)行速度越快,但不是越高越好,太高反而容易受到干擾,本系統(tǒng)的晶振X1采用12 MHz固有頻率,一方面運(yùn)行速度快,另一方面可以得到1μs的機(jī)器周期,方便定時(shí)計(jì)算。C2 和C3 起到穩(wěn)定脈沖的作用,如果兩個(gè)電容值相差過大,則極易引起共振失衡或者無振蕩。為了使單片機(jī)重置后從片內(nèi)ROM的0000H開始執(zhí)行內(nèi)部程序指令,EA 管腳需要接高電平。
如圖2 所示,驅(qū)動(dòng)HC-SR04 超聲探頭需要單片機(jī)I/O口提供一個(gè)至少10 μs的脈沖信號(hào),此時(shí)超聲波探頭會(huì)主動(dòng)發(fā)射8 個(gè)40 kHz 的方波信號(hào),ECHO 引腳發(fā)送回響信號(hào),定時(shí)器啟動(dòng),當(dāng)超聲探頭檢測(cè)到回波信號(hào)時(shí),ECHO引腳把高電平拉低,定時(shí)器停止定時(shí),此時(shí)T0 所記錄的持續(xù)高電平時(shí)間即為超聲波的往返時(shí)間[6]。
圖2 HC-SR04 時(shí)序圖
DHT11通過DATA單總線與單片機(jī)進(jìn)行數(shù)據(jù)的雙向傳輸。首先單片機(jī)將通過I/O口給DHT11 第2 引腳發(fā)送一個(gè)啟動(dòng)信號(hào),溫濕度傳感器響應(yīng)后將溫度和濕度按照不同的分辨率轉(zhuǎn)化為數(shù)字信號(hào)并輸出給單片機(jī)共5 個(gè)字節(jié)[7]。
本設(shè)計(jì)選用的LCD1602 液晶顯示器具有性價(jià)比高,操作簡(jiǎn)單等特點(diǎn),數(shù)據(jù)引腳連接到P0 端口。
2.5.1 蜂鳴器報(bào)警模塊
本設(shè)計(jì)采用電磁式蜂鳴器,因?yàn)閱纹瑱C(jī)上的輸出端口電流較小,導(dǎo)致蜂鳴器不能正常響應(yīng),故在此模塊中利用了PNP型BJT放大電流,P2.0 端口一旦輸出低電平將會(huì)使得蜂鳴器報(bào)警。
2.5.2 LED燈報(bào)警模塊
當(dāng)P1.2 端口輸出低電平時(shí),發(fā)光二極管正向?qū)?,載流子定向運(yùn)動(dòng)并復(fù)合,輻射熒光。
C語言在嵌入式系統(tǒng)中應(yīng)用得最為廣泛,其相對(duì)于匯編語言具有明顯的優(yōu)勢(shì),能夠精確定時(shí)[8]。本文采用C語言開展軟件設(shè)計(jì),以產(chǎn)生精確的高頻率超聲波。軟件由液晶顯示子程序、超聲波模塊子程序、溫濕度檢測(cè)子程序和聲光報(bào)警子程序等部分組成。總體流程如圖3所示。首先對(duì)液晶和定時(shí)器進(jìn)行初始化,選用T0 定時(shí)器且工作方式為1,隨之進(jìn)入循環(huán):(1)采集當(dāng)前環(huán)境的溫濕度并在液晶的第一行實(shí)時(shí)顯示??紤]到溫度的影響,測(cè)量1 m距離時(shí),誤差大約為1.75 mm,根據(jù)聲速與溫度變化公式V =0.607T+331.4 可計(jì)算出對(duì)應(yīng)不同溫度下的聲速[9];(2)從HC-SR04 超聲探頭獲得時(shí)間,聯(lián)立當(dāng)前環(huán)境溫度下的聲速,計(jì)算出距離并在液晶的第二行實(shí)時(shí)顯示;(3)判斷測(cè)距結(jié)果是否在報(bào)警范圍內(nèi),是則執(zhí)行聲光報(bào)警子程序判斷危險(xiǎn)程度,同時(shí)進(jìn)行相應(yīng)頻率的聲光報(bào)警;(4)判斷是否按下“設(shè)置”按鍵,若按下,系統(tǒng)將自動(dòng)進(jìn)入報(bào)警值設(shè)置界面。由于本設(shè)計(jì)采用的按鍵數(shù)不多,為方便起見,采用獨(dú)立鍵盤的方式。此外針對(duì)按下和松開按鍵后出現(xiàn)的電平不穩(wěn)定現(xiàn)象,采用程序消除“抖動(dòng)”的方式,即延遲數(shù)毫秒,等待電平恢復(fù)穩(wěn)定,以避開“抖動(dòng)”。此時(shí)為一個(gè)完整的循環(huán)。
圖3 總體流程圖
液晶顯示流程如圖4 所示,程序主要通過LcdWriteCmd函數(shù)和LcdWriteData函數(shù)分別確定地址和操作數(shù)。
圖4 液晶顯示流程圖
超聲波模塊流程如圖5 所示。首先給超聲探頭的TRIG引腳輸出一個(gè)持續(xù)1ms的開始脈沖,直到超聲組件ECHO引腳返回高電平脈沖,系統(tǒng)啟動(dòng)定時(shí)器T0,T0在HC-SR04 收到回波信號(hào)的瞬間停止定時(shí),T0 記錄的高電平持續(xù)時(shí)間的一半乘以聲波的速度就可以計(jì)算出距離。
圖5 超聲波模塊流程框圖
如圖6 所示,溫濕度檢測(cè)必須遵從時(shí)序要求,按照主從機(jī)通信的方式進(jìn)行程序設(shè)計(jì)。在數(shù)據(jù)接收狀態(tài)時(shí),讀一個(gè)字節(jié)可得U8checkdata_temp 信號(hào),數(shù)據(jù)校驗(yàn)時(shí),溫濕度相加可得U8temp信號(hào),如果U8checkdata_temp等于U8temp,則暫存溫濕度值。
圖6 溫濕度檢測(cè)流程框圖
聲光報(bào)警功能體現(xiàn)的是報(bào)警頻率隨著距離的變化而漸變,如圖7 所示,在不同報(bào)警條件的循環(huán)里通過延遲不同的時(shí)間去啟動(dòng)聲光報(bào)警,如此不斷循環(huán)即可實(shí)現(xiàn)蜂鳴器和LED燈報(bào)警頻率的漸變。
圖7 報(bào)警流程圖
如圖8 所示,經(jīng)過測(cè)試對(duì)比電子溫濕度計(jì),本設(shè)計(jì)溫度檢測(cè)能夠精確到±2 ℃,而濕度檢測(cè)誤差比較大,大約在± 5% RH,這可以嘗試用軟件做補(bǔ)償以提高精度。
圖8 溫濕度檢測(cè)功能測(cè)試
相比光學(xué)測(cè)距,超聲波測(cè)距對(duì)電磁輻射、光照度等因素不敏感,在短距離的信息采集上有著較大的優(yōu)勢(shì)。在一些特殊的場(chǎng)合,如光線偏暗或存在電磁場(chǎng)干擾的地方,它能夠進(jìn)行有效的測(cè)量[10]。
在學(xué)校機(jī)房里電腦、音響設(shè)備和無線路由器比較集中的地方,電磁輻射較強(qiáng),使用測(cè)距儀在上述環(huán)境下進(jìn)行測(cè)距,測(cè)距誤差維持在±2 cm以內(nèi);在漆黑環(huán)境和照明環(huán)境中分別進(jìn)行測(cè)距,結(jié)果幾乎不受光照度影響;如果把一些微小顆?;蚍蹓m附著在超聲波傳感器HCSR04 上,測(cè)距功能受到的影響也比較小;由于超聲波對(duì)水滴沒有穿透性,水滴可以反射部分超聲波導(dǎo)致出現(xiàn)余波干擾或者波形信號(hào)衰減等現(xiàn)象,雨天測(cè)距的效果不太理想。
超聲波測(cè)距儀可以實(shí)現(xiàn)不同頻率的聲光報(bào)警模式,適用于汽車?yán)走_(dá)。圖9 為報(bào)警值設(shè)置為80 cm 時(shí)進(jìn)行的聲光報(bào)警測(cè)試,實(shí)測(cè)距離為60 cm,報(bào)警模式為蜂鳴器常鳴,LED燈常亮。
圖9 報(bào)警功能測(cè)試
由表1 可知基準(zhǔn)面的粗糙程度會(huì)影響測(cè)距結(jié)果,基準(zhǔn)表面越光滑平整,測(cè)距誤差越小。對(duì)于粗糙的基準(zhǔn)面,超聲波在短距離內(nèi)傳播范圍較小,接觸到基準(zhǔn)面的點(diǎn)沒有明顯的變化,當(dāng)距離越來越遠(yuǎn)時(shí),粗糙的基準(zhǔn)面容易造成超聲波信號(hào)散射,從而導(dǎo)致回波信號(hào)失真,因此誤差增大[11-12]。
表1 相關(guān)性測(cè)試結(jié)果 cm
從表2 可以看出本設(shè)計(jì)最遠(yuǎn)測(cè)量距離大約500 cm,且誤差維持在2 cm以內(nèi),同時(shí)溫度補(bǔ)償功能已經(jīng)發(fā)揮作用,即在環(huán)境溫度大幅提升的同時(shí),實(shí)測(cè)距離整體趨于穩(wěn)定,大大提高測(cè)距精度。
表2 測(cè)距及溫度補(bǔ)償功能測(cè)試結(jié)果 cm
根據(jù)實(shí)物測(cè)試結(jié)果,雖然系統(tǒng)附加溫度補(bǔ)償?shù)姆椒?,但是不同室溫下測(cè)距結(jié)果存在一定差異,原因是室內(nèi)溫度的升高,使得超聲探頭發(fā)射和接收超聲波信號(hào)的能力明顯下降,同時(shí)超聲波能量也會(huì)隨之衰減。其次是傳感器本身的精度問題,目前超聲探頭多采用壓電陶瓷材料和磁致伸縮材料制作,其存在著一定的阻抗失配現(xiàn)象,同時(shí)發(fā)射器的局部超聲波有時(shí)候會(huì)直達(dá)接收器,導(dǎo)致系統(tǒng)存在誤差或出現(xiàn)不穩(wěn)定現(xiàn)象。需要依靠超聲波探頭材料研發(fā)和性能提升來解決本系統(tǒng)缺陷,本文不涉及此方面研究。單片機(jī)控制啟動(dòng)發(fā)射超聲波和啟動(dòng)定時(shí)器有時(shí)間先后之分,因此為了系統(tǒng)各部分保持同步,最好選擇質(zhì)量更優(yōu)的晶振。在空氣中,超聲波的能量會(huì)受到一定程度的削弱,提高頻率可以使指向性能得到改善,但隨著頻率的增加,超聲波能量的衰減速度越快,因此可以通過充分放大接收信號(hào)以改善這種情況。
本文設(shè)計(jì)了一種功能完善的超聲波測(cè)距儀,試驗(yàn)驗(yàn)證了軟硬件設(shè)計(jì)方案的合理性與有效性,還針對(duì)誤差來源提出了改進(jìn)的建議。能夠滿足短距離測(cè)距要求,同時(shí)具有溫度補(bǔ)償、溫濕度檢測(cè)、聲光報(bào)警等功能。所設(shè)計(jì)的設(shè)備測(cè)量范圍為0.02~5 m,通過溫度檢測(cè)計(jì)算修正聲速,把誤差維持在0.02 m以內(nèi),即報(bào)警閾值的下限可達(dá)0.02 m,足日常短距離測(cè)距的需求,設(shè)備可用于倒車?yán)走_(dá),使用漸變的聲光報(bào)警頻率提示行車的安全距離,為汽車實(shí)現(xiàn)自動(dòng)倒車入庫、自動(dòng)緊急剎車、無人駕駛等功能提供方案。進(jìn)一步地,所提設(shè)計(jì)方案也可以作為人工智能的視覺輔助工具,配合CCD圖像傳感器可實(shí)現(xiàn)完善的視覺功能,從超聲波傳感器陣列中篩選信號(hào)以實(shí)現(xiàn)對(duì)運(yùn)動(dòng)物體的捕捉[13]。所提設(shè)計(jì)方案具有操作簡(jiǎn)單、安全可靠、工作穩(wěn)定的特點(diǎn)。