邢東洋
(中國(guó)民航大學(xué),天津 300300)
隨著當(dāng)今社會(huì)的科技一直進(jìn)步,探測(cè)類(lèi)型設(shè)備的使用范圍逐漸擴(kuò)大,人們對(duì)探測(cè)類(lèi)型電子設(shè)備的要求也越來(lái)越高。但對(duì)于當(dāng)前世界所掌握的探測(cè)技術(shù)水平現(xiàn)狀來(lái)看,人們真正能夠具體運(yùn)用到的探測(cè)技術(shù)還是存在一定的局限性,同時(shí)超聲波探測(cè)領(lǐng)域還是一個(gè)正在快速發(fā)展的探測(cè)技術(shù)領(lǐng)域以及具有良好經(jīng)濟(jì)效益的產(chǎn)業(yè)。
本系統(tǒng)以STM32 單片機(jī)處理器為控制核心,通過(guò)在舵機(jī)上放置超聲波傳感器模擬雷達(dá)系統(tǒng),通過(guò)PWM信號(hào)控制舵機(jī)的運(yùn)動(dòng),通過(guò)超聲波傳感器發(fā)送超聲波檢測(cè)障礙物信息, STM32 處理器將采集到的信號(hào)處理成距離信息,通過(guò)UART接口傳送到上位機(jī)界面,同時(shí)上位機(jī)界面還可以同步顯示舵機(jī)的的實(shí)時(shí)轉(zhuǎn)動(dòng)角度。當(dāng)測(cè)到的物體距離小于安全范圍的時(shí)候,上位機(jī)界面顯示紅色,并通過(guò)蜂鳴器和LED燈閃爍進(jìn)行報(bào)警。超聲波雷達(dá)預(yù)警系統(tǒng)的總體結(jié)構(gòu)如圖1 所示。
圖1 超聲波雷達(dá)預(yù)警系統(tǒng)結(jié)構(gòu)框圖
2.1 STM32 處理器及最小系統(tǒng)介紹。本系統(tǒng)采用的是STM32F103C8T6 處理器。STM32F103C8T6 是一款基于A(yíng)RM 32 位的Cortext M3 內(nèi)核的單片機(jī),供電范圍是2.0V~3.6 V,CPU工作頻率最大可達(dá)72 MHz,具有單周期的乘法指令和硬件除法,以及優(yōu)先級(jí)可編程的中斷系統(tǒng)。同時(shí)它還具有64 KB 的Flash 存儲(chǔ)器與20 KB 的SRAM存儲(chǔ)器,另外還集成了非常豐富的片內(nèi)外設(shè),如看門(mén)狗、定時(shí)器、GPIO 口、DMA 控制器、ADC、UART、SPI 接口、IIC 接口等,具有成本低、速度快、性?xún)r(jià)比高等優(yōu)點(diǎn)[1]。
本系統(tǒng)所使用的STM32 最小系統(tǒng)電路如圖2 所示。它主要包括核心芯片CPU電路、外部時(shí)鐘電路、電源電路、JTAG下載電路、系統(tǒng)復(fù)位電路、按鍵開(kāi)關(guān)電路等組成。最小系統(tǒng)電路是整個(gè)控制電路的核心。
圖2 STM32 最小系統(tǒng)電路圖
2.2 超聲波測(cè)距模塊。超聲波測(cè)距原理是在超聲波發(fā)射裝置發(fā)出超聲波,它的根據(jù)是接收器接到超聲波時(shí)的時(shí)間差,與雷達(dá)測(cè)距原理相似。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。
本系統(tǒng)的超聲波測(cè)距模塊采用HC-SR04 模塊,該模塊系統(tǒng)能夠同時(shí)實(shí)現(xiàn)具有2cm~400cm的非接觸式遠(yuǎn)距離高度傳感器和自動(dòng)遙控遠(yuǎn)距離高度檢測(cè)器功能。其主要特點(diǎn)之一是系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,由于SR04 傳感器的探頭發(fā)出信號(hào)和接收信號(hào)都比較微弱,所以模塊自帶信號(hào)放大電路,控制電路簡(jiǎn)單容易,而且制造成本低[2]。圖3 為HC-SR04 模塊電路圖。
圖3 HC-SR04 模塊電路圖
HC-SR04 傳感器總共有4 個(gè)引腳:回波引腳(ECHO)、脈沖觸發(fā)引腳(TRIG)、VCC和GND。超聲波模塊會(huì)通過(guò)IO口TRIG來(lái)觸發(fā)程序?qū)⒁粋€(gè)高電壓輸出信號(hào)傳輸?shù)矫}沖觸發(fā)引腳。超聲波模塊里的信號(hào)發(fā)送頭便會(huì)往外發(fā)送一段超聲波信號(hào),同時(shí)回波引腳的電平將由低變高等待高電平輸出,一有輸出定時(shí)器便開(kāi)始工作進(jìn)行時(shí)間記錄。當(dāng)超聲波接收器獲取到反射回來(lái)的超聲波信號(hào)后,回波引腳的電壓信號(hào)就會(huì)由高電壓降到低電壓。此時(shí)定時(shí)器停止記錄時(shí)間工作,定時(shí)器所記錄到的時(shí)間值即為整個(gè)測(cè)測(cè)過(guò)程所用到的時(shí)間。測(cè)量距離與聲速之間滿(mǎn)足下列關(guān)系:測(cè)試距離=(高電平時(shí)間*聲速(340m/s))/2 就可以算出本設(shè)備到障礙物的距離。多次重復(fù)周期的測(cè)量,就可讓本系統(tǒng)達(dá)到實(shí)時(shí)更新。
2.3 舵機(jī)模塊的控制。舵機(jī)是一種位置(角度)伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。目前在高檔遙控玩具,如航模,包括飛機(jī)模型,潛艇模型,遙控機(jī)器人中已經(jīng)使用得比較普遍。舵機(jī)是一種俗稱(chēng),其實(shí)是一種伺服馬達(dá)[3]。本系統(tǒng)所使用的舵機(jī)如圖4 所示。
圖4 舵機(jī)實(shí)物
本系統(tǒng)使用的是一個(gè)可轉(zhuǎn)180 度角度的舵機(jī)。舵機(jī)的控制一般需要一個(gè)20ms 左右的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms 范圍內(nèi)的角度控制脈沖部分。以180 度角度伺服為例,那么對(duì)應(yīng)的控制關(guān)系如表1 所示。
表1 脈沖時(shí)間與舵機(jī)角度對(duì)應(yīng)關(guān)系
小型舵機(jī)的工作電壓一般為4.8V或6V,轉(zhuǎn)速也不是很快,常見(jiàn)舵機(jī)的速度一般在0.11/60°-0.21/60°之間,更改角度控制脈沖的寬度太快時(shí),舵機(jī)可能反應(yīng)不過(guò)來(lái)。如果需要更快速的反應(yīng),就需要更高的轉(zhuǎn)速了。舵機(jī)上有三根線(xiàn),分別為VCC、GND、信號(hào)線(xiàn)。而不需要另外接驅(qū)動(dòng)模塊,直接用單片機(jī)的管腳控制就行了??刂菩盘?hào)一般要求周期為20ms 的PWM信號(hào)。如果要更為精確的控制舵機(jī)(轉(zhuǎn)動(dòng)角度差<=1 度),則需要控制輸出PWM信號(hào)的占空比,例如:可以把0-180 分為1024 份(可以任取,決定與定時(shí)器的時(shí)鐘頻率),范圍為0.5ms-2.5ms,則可以得到0.09 度/us,因此可以由PWM=0.5+N*0.09(N 是角度)控制舵機(jī)轉(zhuǎn)動(dòng)0-180 度間的任意角度。
2.4 UART上位機(jī)通信協(xié)議。本系統(tǒng)使用STM32 開(kāi)發(fā)板上的UART串口與上位機(jī)進(jìn)行通信。通信的特點(diǎn)是:異步、串行、全雙工。部分無(wú)線(xiàn)通信模塊具有UART通信接口,比如藍(lán)牙模塊、NBIOT 模塊、WIFI 模塊、GSM模塊、GPS 模塊等。UART 是一種容易實(shí)現(xiàn)的MCU 和電腦間的通信方式,可用于輔助調(diào)試代碼(MCU 傳送變量、寄存器的值給電腦),也可用于電腦控制MCU(電腦傳送指令數(shù)據(jù)給MCU),通過(guò)上位機(jī)控制下位機(jī)。本系統(tǒng)主要通過(guò)UART串口來(lái)傳送舵機(jī)轉(zhuǎn)動(dòng)角度和物體距離等信息給上位機(jī)顯示。
2.5 報(bào)警模塊。報(bào)警模塊分為兩大部分,一部分是LED部分,報(bào)警時(shí),LED 燈會(huì)規(guī)律較快的閃爍;另一部分是蜂鳴器部分,報(bào)警時(shí),蜂鳴器會(huì)發(fā)出聲響以達(dá)到提示的效果。系統(tǒng)將算出所得的測(cè)量距離數(shù)值跟已經(jīng)提前設(shè)置好的預(yù)警距離數(shù)值進(jìn)行比較,若算出所得的測(cè)量距離小于設(shè)置好的報(bào)警距離數(shù)值,則報(bào)警模塊進(jìn)入工作。本系統(tǒng)所使用的為普通紅色LED燈及無(wú)源蜂鳴器。
3.1 上位機(jī)界面的開(kāi)發(fā)。上位機(jī)顯示軟件的設(shè)計(jì)使用Processing 語(yǔ)言來(lái)編寫(xiě),Processing 是一個(gè)為開(kāi)發(fā)面向圖形的應(yīng)用而生的簡(jiǎn)單易用的編程語(yǔ)言和編程環(huán)境。Processing是一種革命性的語(yǔ)言,將枯燥無(wú)味的編程使用圖像展現(xiàn)出來(lái),具有可視化的特點(diǎn)。整個(gè)上位機(jī)軟件主要包括:函數(shù)定義、建圖部分、數(shù)據(jù)獲取部分、繪圖部分這四大部分。
函數(shù)定義即:開(kāi)頭初始定義上位機(jī)軟件需要用到的角度函數(shù)名、雷達(dá)線(xiàn)函數(shù)名、長(zhǎng)度跟寬度函數(shù)名、顏色函數(shù)名、背景圖函數(shù)名、掃描線(xiàn)起始位置函數(shù)名等。
建圖部分即:主要目的建立一個(gè)顯示界面,界面左上角有波特率顯示窗口、串口選擇窗口、限制距離設(shè)置窗口、連接串口功能選項(xiàng)、清屏功能選項(xiàng)、報(bào)警功能選項(xiàng)。
數(shù)據(jù)獲取部分:接收串口發(fā)送過(guò)來(lái)的數(shù)據(jù);將數(shù)據(jù)分為兩個(gè)部分,一個(gè)部分表示當(dāng)前角度,另一個(gè)部分表示測(cè)量距離;將實(shí)際測(cè)量的數(shù)據(jù)按比例映射到軟件圖形顯示界面上;舵機(jī)轉(zhuǎn)動(dòng)角度的判斷,掃描范圍一共180 度,若掃描角度超過(guò)180 度,則舵機(jī)進(jìn)行反轉(zhuǎn)。反之,若掃描角度低于0 度舵機(jī)也進(jìn)行反轉(zhuǎn)。
繪圖部分:清屏函數(shù)(因?yàn)閿?shù)據(jù)會(huì)殘留在顯示界面,故需要一段時(shí)間進(jìn)行顯示界面數(shù)據(jù)清除);繪制顯示界面的分區(qū)線(xiàn);極坐標(biāo)的轉(zhuǎn)換;根據(jù)角度信息和和距離信息在顯示界面繪制障礙物,用紅點(diǎn)表示障礙物;把角度、距離打印到功能窗口模塊,顯示出來(lái)。
3.2 系統(tǒng)軟件編程設(shè)計(jì)。整個(gè)系統(tǒng)的單片機(jī)程序是在KEIL 編程環(huán)境下進(jìn)行開(kāi)發(fā),選用C 語(yǔ)言進(jìn)行編程。整個(gè)單片機(jī)硬件設(shè)備以STM32 單片機(jī)為核心設(shè)備,通過(guò)STM32主控制器控制其他模塊部分。整個(gè)超聲波單片機(jī)程序內(nèi)容主要包括元件引腳的定義、初始化串口模塊、初始化引腳的模式、舵機(jī)的轉(zhuǎn)動(dòng)角度判斷及其延時(shí)函數(shù)、超聲波數(shù)據(jù)函數(shù)、脈寬獲取函數(shù)、預(yù)警距離判斷函數(shù)、發(fā)送數(shù)據(jù)函數(shù)。系統(tǒng)的軟件流程圖如圖7 所示。
圖5 上位機(jī)軟件流程圖
圖6 上位機(jī)軟件界面圖
圖7 系統(tǒng)軟件流程圖
根據(jù)硬件部分和軟件部分綜合整理整個(gè)超聲波雷達(dá)預(yù)警系統(tǒng)的工作原理就是:硬件設(shè)備開(kāi)始上電;主程序?qū)φ麄€(gè)超聲波測(cè)量系統(tǒng)開(kāi)始進(jìn)行初始化設(shè)置,讓各個(gè)模塊進(jìn)入初始化狀態(tài)避免出現(xiàn)意外;當(dāng)超聲波模塊接收到單片機(jī)發(fā)來(lái)的發(fā)送命令便立刻發(fā)送信號(hào)系統(tǒng)打開(kāi)計(jì)時(shí)器一邊進(jìn)行數(shù)據(jù)記錄一邊等待;檢查是否獲取到折射回來(lái)的超聲波信號(hào),若獲取不到,則繼續(xù)發(fā)送超聲波信號(hào)。若獲取到,則將定時(shí)器所記錄到的時(shí)間進(jìn)行算法運(yùn)算。根據(jù)算法公式得出一個(gè)數(shù)值,此數(shù)值即為系統(tǒng)計(jì)算為本系統(tǒng)距離障礙物的測(cè)量距離;系統(tǒng)則將算出所得的測(cè)量距離數(shù)值跟已經(jīng)提前設(shè)置好的預(yù)警距離數(shù)值進(jìn)行比較;若算出所得的測(cè)量距離小于設(shè)置好的預(yù)警距離數(shù)值,則預(yù)警模塊進(jìn)入工作;預(yù)警模塊分為兩大部分,一部分是LED部分,報(bào)警時(shí),LED 燈會(huì)規(guī)律較快的閃爍;另一部分是蜂鳴器部分,報(bào)警時(shí),蜂鳴器會(huì)發(fā)出聲響以達(dá)到提示的效果;若算出所得的測(cè)量距離大于設(shè)置好的預(yù)警距離數(shù)值,則預(yù)警模塊不會(huì)工作,直到算出所得的測(cè)量距離小于設(shè)置好的預(yù)警距離數(shù)值時(shí),才會(huì)工作;在主程序計(jì)算出測(cè)量距離數(shù)值的同時(shí),會(huì)經(jīng)過(guò)UART串口將舵機(jī)旋轉(zhuǎn)角度跟算出的距離數(shù)值傳輸?shù)缴衔粰C(jī)軟件里來(lái);上位機(jī)軟件部分則會(huì)繪畫(huà)出一個(gè)半圓圖形,上面會(huì)有一條掃描線(xiàn)在180 度以?xún)?nèi)左右來(lái)回掃描,上位機(jī)軟件則會(huì)根據(jù)串口發(fā)送來(lái)的數(shù)據(jù)繪制到半圓圖形界面上,界面上左上角功能窗口會(huì)顯示障礙物的角度方向位置跟測(cè)量距離數(shù)據(jù)并會(huì)一直實(shí)時(shí)更新,但需要不定時(shí)進(jìn)行清屏數(shù)據(jù)處理。探測(cè)到的障礙物則會(huì)以紅點(diǎn)的形式顯示在畫(huà)面上且停留幾秒。功能窗口還有一個(gè)距離設(shè)置大小的功能模塊,可以設(shè)置預(yù)警距離大小。
圖8 為系統(tǒng)的測(cè)試圖,該系統(tǒng)測(cè)試結(jié)果穩(wěn)定,精度較高,測(cè)距范圍為0.2cm-200cm ,在0.2cm-100cm 范圍內(nèi),誤差少于0.5cm,在100cm-200cm 范圍內(nèi),誤差少于2cm??梢詰?yīng)用在汽車(chē)障礙物測(cè)試,工業(yè)探測(cè)等領(lǐng)域。
圖8 系統(tǒng)測(cè)試圖
科學(xué)技術(shù)創(chuàng)新2022年10期