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