鐘家弘,陶英婷
(重慶科技學(xué)院 電氣工程學(xué)院,重慶 401331)
隨著現(xiàn)代社會科技的飛速發(fā)展,電子技術(shù)不斷得到創(chuàng)新,非接觸式光學(xué)檢測技術(shù)被廣泛推廣,如紅外光譜測距新技術(shù)、雷達紅外測距新技術(shù)、激光紅外測距新技術(shù)、超聲波激光測距新技術(shù)等均是我國目前應(yīng)用較為普遍的非接觸式光學(xué)紅外測距技術(shù)[1]。相對其他測距方法來說,超聲波激光測距的主要優(yōu)點是比較安全、耐受臟污,可以在條件較差的室內(nèi)環(huán)境中使用,甚至可以在一般人員無法輕易進入的極端惡劣的環(huán)境中精準(zhǔn)快速地進行測距。例如,在粉塵煙霧和有毒化學(xué)物質(zhì)污染較重,或者電磁噪聲等其他環(huán)境因素干擾嚴(yán)重的環(huán)境下,如果通過人工進行測距則會非常困難[2],此時若通過超聲波進行精確測距則非常方便。因此,超聲波精準(zhǔn)測距技術(shù)被廣泛地應(yīng)用到各個領(lǐng)域,例如倒車?yán)走_、掃地機器人、傳送菜機器人、無人機等,甚至在我國的國防軍事領(lǐng)域也被大量應(yīng)用[3]。超聲波測距技術(shù)與目前其他非接觸式測距技術(shù)方式相比,它信號的連續(xù)傳播時間長、能量消耗較慢、指向性較強,更適用于直接測量近距離目標(biāo)[4]。與紅外線和激光測距技術(shù)相比,超聲波的測距效果比較穩(wěn)定、價格低廉、下限高、耐高強度使用、易操作[5]。因此,本文以STM32L052K8 芯片為主要控制器設(shè)計了一個超聲波測距儀,并對其性能進行了驗證。
聲音是由外界某種物體振動而產(chǎn)生的,物體每秒振動的次數(shù)即為聲頻,單位為Hz。物體的連續(xù)振動是指處在運動狀態(tài)的物體在靠近振動平衡位置進行的一種連續(xù)規(guī)律的往復(fù)運動。例如,用手輕敲鼓面幾下后,鼓面立即開始一陣上下起伏的振動,這種上下起伏的振動狀態(tài)又能夠通過其他媒質(zhì)迅速地向周圍傳播。一般情況下,人能夠清楚聽到的聲波頻率為16 Hz ~20 kHz;聲頻低于16 Hz 時,則為次聲波或超低聲;聲頻高于20 kHz時,人耳無法準(zhǔn)確聽到,則為超聲波[6]。
如圖1 所示,超聲波測距是通過超聲波發(fā)射端向某一方向發(fā)射超聲波,在發(fā)射的同時開始計時,超聲波在空氣中傳播時碰到障礙物就立即返回來,超聲波接收端收到反射波就立即停止計時。超聲波在空氣中的傳播速度為v,常溫下為344 m/s,根據(jù)計時器記錄的超聲波發(fā)射端和接收端的時間差Δt,能夠得出距離S[7]。
圖1 超聲波原理
超聲波模塊頂?shù)撞恳晥D分別如圖2、圖3 所示。本模塊采用的是HC-SR04 型號超聲波測距傳感器,共有4 個引腳:VCC(3.3 ~5 V)、TriG(控制端,發(fā)出信號)、Echo(模塊接收端,接收信號)、GND(地)。超聲波模塊從ctrl 端口發(fā)射出一共電信號,超聲波模塊接收端等待電信號,一旦超聲波模塊的接收終端檢測到電信號,就可以逆時針輸出高低電平信號,這時可以通過計算得到一個信號反饋的時間值,由此則可以處理輸出信號。
圖2 超聲波模塊頂部視圖
圖3 超聲波模塊底部視圖
超聲波時序如圖4 所示。根據(jù)圖4,只需要提供至少一個10 μs 及以上頻率的脈沖觸發(fā)時鐘信號,該脈沖時鐘模塊在系統(tǒng)內(nèi)部只會連續(xù)發(fā)出大約8 個40 kHz 以上的周期電平脈沖信號并可同時檢測回波。一旦檢測到有回波信號時系統(tǒng)將立即輸出一個回響信號。回響信號的高電平脈沖寬度一般與實際檢測的傳輸距離大小成正比。由此可通過確定實際發(fā)射信號到接收信號之間的時間間隔就可以計算信號傳輸距離,公式為:傳輸距離=高電平時間×聲速/2。建議測量距離的時間周期為60 ms 以上,盡量避免發(fā)射時信號衰減或?qū)邮盏幕仨懶盘柈a(chǎn)生影響。
圖4 超聲波時序
超聲波模塊主要有電路輸入和輸出兩部分。發(fā)射放大電路工作原理是將主控芯片所發(fā)出的低能脈沖信號通過發(fā)射放大控制電路升高,降低電阻的值,提高功率,從而延長探測距離;輸入電路則通過運算放大器來放大電信號[8]。超聲波模塊PCB 如圖5 所示。
圖5 超聲波模塊PCB
74HC595 是指一個由8 位串行輸入、平行式輸出組成的位移緩存器。平行式輸出為三態(tài)輸出,分別為具有極高電平、低電平和相對較高的阻抗值三種最基本的輸出寄存器工作狀態(tài)。輸出寄存器也可以被直接清除,在SCK 的上升沿具有100 MHz 及以上的數(shù)據(jù)移位頻率,單行輸出的數(shù)據(jù)會直接由外部SDL 的輸存人輸出到外部的8 位位移緩存器,并最終由外部SQH 輸出;而平行輸出的數(shù)據(jù)則是在外部LCK的上升沿由外部的8 位位移緩存器和內(nèi)部的數(shù)據(jù)輸存人分別輸出到內(nèi)部的8 位平行輸出緩存器[9]。當(dāng)串行數(shù)據(jù)輸入端OE 的控制電平信號轉(zhuǎn)換為一個極低電位使能信號時,平行輸出端的實際輸出阻抗值將恰好等于平行輸出端的數(shù)據(jù)緩存器的實際存儲阻抗值。即使此時接收端OE 的電平信號為相對較高的電位,也就是平行輸出端被關(guān)閉時,平行輸出端也可能依然處在一個較高阻抗值的狀態(tài)。當(dāng)輸入MR 電壓為高電平,數(shù)據(jù)在SHCP 電壓的上升沿輸入移位寄存器,并繼續(xù)在STCP 電壓的上升沿輸出到并行端口。當(dāng)使能端OE 的電壓下降為較低電平時,低電平有效;為較高電平時則輸出關(guān)閉使能,并不影響連接到其他輸入端。移位寄存器74HC595芯片管腳如圖6 所示。
圖6 移位寄存器74HC595 芯片管腳
74HC138 是一款高速的CMOS 圖像解碼器選件,其引腳可兼容低功耗的肖特基TTL(LSTTL)系列。基本參數(shù)74HC138 譯碼器可同時接收具有3 個位長的二進制加權(quán)地址的有效輸入端信號(A0、A1、A2),并且當(dāng)使能時能提供8個互斥的且很低的有效輸出信號(Y0 至Y7)。74HC138 特有的是3 個使能有效輸入端,即兩個較低有效端信號(E1和E2)和一個很高的有效端信號(E3)。除非把E1 和E2 都置低且只將E3 置為較高,否則74HC138 將會始終保持把所有的輸出置為高。74HC138 譯碼器芯片管腳如圖7 所示。
圖7 74HC138 譯碼器芯片管腳
數(shù)碼管顯示屏芯片(LED Segment Displays)是一種新型發(fā)光晶體控制顯示器件,其基本單元是數(shù)字半導(dǎo)體發(fā)光晶體二極管,如圖8 所示?;緟?shù)數(shù)碼管是由7 個發(fā)光二極管組成的"8"字形器件,加上最后一個小數(shù)點后就是8 位。"8"字形的各段分別用a、b、c、d、e、f、g 表示,小數(shù)點用dp 表示。二極管上所有的引線連接工作均在二極管器件的內(nèi)部各個連接處完成,只需引出一個連接到外部的引線段或任何一個公共電極,即可實現(xiàn)硬件連接。數(shù)碼管與LED 二極管的電路連接方法不同,一般分為共陰極管和共陰陽極管兩類,其與內(nèi)部照明電路所用的半導(dǎo)體發(fā)光元件原理幾乎相同,只是它們連接的外部電源極性不同。
圖8 數(shù)碼管展示
點亮數(shù)碼管需要前面介紹的74HC595 鎖存移位寄存器芯片和74HC138 譯碼器芯片。給74HC595 譯碼器增加了一個有額外功能的串行電路控制器,輸入寄存器的SCLK 時鐘端口接在主控板的PA0 時鐘端口,輸出寄存器的時鐘端口LOAD 接在主控板的PA1 時鐘端口,數(shù)據(jù)的串行輸入時鐘端口SDI 接在主控板PA2 口,從輸入時鐘端口SDI 每輸入一位寄存器數(shù)據(jù),串行在輸入寄存器的時鐘SCLK 上升下沿有效一次,持續(xù)到最后八位輸入寄存器數(shù)據(jù)被輸入完畢,輸出寄存器時鐘LOAD 上升沿有效一次,此時輸入端的寄存器數(shù)據(jù)也幾乎全部送到了輸出端。為了控制數(shù)碼管的位碼端,將74HC138 譯碼器的A0 數(shù)據(jù)口接入主控板的PA3 口,A1 數(shù)據(jù)口接入主控板的PA4 口,A2 數(shù)據(jù)口接主控板的PA5 口,OE數(shù)據(jù)口接入主控板的PA6 口,A0、A1、A2 端口依次循環(huán)發(fā)送數(shù)據(jù)“1”,即循環(huán)使Y0 至Y7 的某一位拉高,使能該數(shù)碼管LED 燈的公共端。數(shù)碼管與主控板連接情況如圖9 所示。
圖9 數(shù)碼管與主控板連接
開發(fā)上位機時,先在PyCharm 軟件里安裝PyQt5 庫、PyQt5-tools 庫、serial 庫,后續(xù)也會依賴這些庫。
在PyCharm 的安裝目錄里搜索designer.exe,就可以打開QT Designer 這個軟件;然后選擇Main Window 并點擊創(chuàng)建,拖動旁邊的功能選項就可以搭建想要的界面;再將Designer 生成的UI 文件保存在PyCharm 程序目錄下,并將UI 文件在Terminal(終端)下轉(zhuǎn)換成py 文件;最后打開所生成的py 文件。串口助手界面如圖10 所示。
圖10 串口助手界面
系統(tǒng)整體設(shè)計如圖11 所示。在用戶對電源系統(tǒng)的各種性能參數(shù)進行實際測量的整個過程中常常會遇到LCD 屏顯示的一些數(shù)據(jù)出現(xiàn)閃爍的現(xiàn)象,產(chǎn)生該現(xiàn)象的一個最主要原因是電源系統(tǒng)本身的電源電路模塊在制作工藝或者設(shè)計上存在缺陷,使得電源系統(tǒng)從電源7805 的引腳處輸出的電壓信號源不會一直保持在3.3 V 以內(nèi)的穩(wěn)定直流電壓,存在輸出電壓信號異常波動等現(xiàn)象。一方面可能是由于焊接電路元件中的焊接工藝不良;另一方面可能是由于在整個系統(tǒng)測試中實際要測量的距離與超聲波實際傳輸距離之間存在較大誤差,而產(chǎn)生此誤差的原因在于超聲波電源電路系統(tǒng)內(nèi)信號輸出端電壓信號經(jīng)常存在較大幅度的波動,外界環(huán)境對整個超聲波電路也存在干擾,如電磁環(huán)境、信道環(huán)境的干擾,導(dǎo)致超聲波電信號在實際傳播過程中產(chǎn)生衰減[10]。另外,由于整個設(shè)計之初在軟件及相關(guān)硬件上都盡量作了簡化,因而忽略了溫度變化對超聲波信號傳播產(chǎn)生的影響。
圖11 整體系統(tǒng)圖
系統(tǒng)硬件包括數(shù)碼管顯示模塊、STM32L052K8 主控板、HC-SR04 超聲波模塊以及USB 轉(zhuǎn)TTL 模塊。具體設(shè)計如圖12 所示。
圖12 硬件連接方式
系統(tǒng)軟件程序流程如圖13 所示。先在STM32CubeMx配置引腳,通過串口1 使能,生成程序。編寫74HC5959 數(shù)碼管段選程序和74HC138 數(shù)碼管位選程序,然后編寫顯示兩位數(shù)碼管的程序。用滴答定時器實現(xiàn)精確時延,編寫TIM21回調(diào)函數(shù),收到回答,啟動定時器開始計數(shù),計算出結(jié)果,通過串口通信上傳給上位機。最后在主函數(shù)里啟動超聲波測距轉(zhuǎn)換脈沖。
圖13 軟件程序流程
為驗證超聲波測距系統(tǒng)的性能,開展了實驗測試。從實驗結(jié)果來看,系統(tǒng)基本上可以滿足在5 ~32 cm 范圍內(nèi)進行精確測距,誤差為1.6%;當(dāng)超聲波探頭水平安裝時,其誤差縮小為0.98%;當(dāng)探頭垂直安裝時,其誤差較大,最大達到了2.6%。在被探測物體的表面不是規(guī)則的矩形時誤差巨大;當(dāng)聲波探測到規(guī)則矩形時,其探測效果最好,準(zhǔn)確率高達98%。當(dāng)聲波探測到圓形時,由于圓形表面有無數(shù)個近似120°的曲面,大量的超聲波會被散射到其他位置,無法返回到超聲波接收探頭,所以探測準(zhǔn)確率大幅下降,只能達到原有性能的80%;當(dāng)聲波探頭探測到正三角體時,由于正三角體表面全是接近60°的小角度,將會導(dǎo)致絕大多數(shù)聲波被散射到其他地方,沒有聲波能有效地返回聲波接收探頭,導(dǎo)致測距精度無限接近于0。由此可以得出結(jié)論,超聲波探測的最佳環(huán)境是在規(guī)則矩形的情況下,系統(tǒng)可以發(fā)揮最大98%的性能;最差環(huán)境是在被測距物形狀為三角體時,幾乎不能發(fā)揮原有性能,而且會得到非?;靵y的數(shù)據(jù),無法整理,所以現(xiàn)代對雷達隱形飛機的外觀設(shè)計,多數(shù)為不規(guī)則三角形。
與其他測距方法相比,超聲波測距方法具有安全、耐受臟污、能夠在較差環(huán)境中使用、連續(xù)傳播時間長、能量消耗較慢、指向性較強、測距效果穩(wěn)定等優(yōu)點。因此,本文以STM32L052K8 芯片為主要控制器設(shè)計了一款超聲波測距儀。系統(tǒng)基本上可以滿足在5 ~32 cm 范圍內(nèi)進行精確測距。