摘要 采用特定頻率的聲音信號作為聲源對小車進行導航,使小車能夠通過接收和處理聲信號以確定聲源方向和位置,并行進至聲源處的功能。其中,用硬件濾波電路對聲信號進行濾波處理,由FPGA計算聲信號到達的時間差,單片機計算出聲源偏離小車的角度和距離并產(chǎn)生PWM波驅(qū)動電機運轉。在行進過程中,小車可以自主追蹤移動聲源,修正移動路徑。準確到達聲源處是聲導航自行小車的重點和難點。
關鍵詞 麥克風陣列;FPGA計時;聲源定位;單片機控制電機
導航是引導飛機、船舶、車輛以及個人安全、準確地沿選定路線,準時到達目的地的一種手段。聲定位技術是通過聲傳感裝置接收聲波,用電子裝置將聲信號轉化為電信號,再利用計算機系統(tǒng)對電信號進行分析處理,以實現(xiàn)對聲源識別、探測,并對聲目標進行定位及跟蹤的一門技術。聲定位技術以其隱蔽性強、適用性高、成本低等優(yōu)點而備受重視,在軍事和民用領域有著廣泛的應用和重要意義。因此聲定位技術與導航技術結合形成有特色的聲導航自行小車。
目前的聲控移動裝置多見于采用超聲波技術躲避障礙物或通過某些語音語句控制裝置的行進路線。聲導航主要應用于聲吶、潛水器、UUV(無人水下航行器)等水下裝置,而在空氣中采用聲學方式進行導航的移動裝置還不多見。項目所研究聲導航自動小車,可以通過接收信號,判定聲源位置,確定前進方向,并通過自主追蹤移動聲源,修正移動路徑。
1 硬件設計
1.1 硬件總體概況
系統(tǒng)包括聲發(fā)射模塊、聲接收模塊、硬件濾波模塊、計時模塊、運算控制模塊和電機驅(qū)動模塊。系統(tǒng)結構框圖如圖1所示。整個系統(tǒng)可以分為聲源定位和車體移動兩大部分。系統(tǒng)各模塊工作是由單片機MC9S12XS128控制協(xié)調(diào)的,它是整個系統(tǒng)的核心。單片機MC9S12XS128擁有128 kB的Flash程序空間,8通道24位中斷定時器,8通道16位定時器,8通道PWM波輸出和8通道12位精度的A/D轉換器;同時集成CAN,SPI,SCI和UART等通信接口;使用16 MHz外部晶振,通過鎖相環(huán)最高可倍頻至96 MHz;最小系統(tǒng)包括外部晶振、復位電路及BDM調(diào)試接口電路等,且該單片機性價比較高。該芯片通過FPGA計算出的時間差計算出小車與聲源的相對r和α,其中r是小車與聲源間的距離,α是聲源相對于小車的方位角,并產(chǎn)生合適的PWM,是小車到達聲源處。
1.2 單元模塊設計
1.2.1 聲發(fā)射模塊
模塊采用SRF05超聲波傳感器作為系統(tǒng)的通信模塊。作為發(fā)射端模塊,沒有使用Echo接收端的功能。該模塊采用3節(jié)干電池供電,打開焊接的開關后,指示燈亮,模塊自動發(fā)射8個周期的40 kHz方波超聲信號。空氣中幾乎沒有超聲信號,選擇40 kHz的超聲信號可以忽略空間的其他聲源的干擾。
1.2.2 聲接收及硬件濾波模塊
該模塊也采用SRF05超聲波傳感器作為系統(tǒng)的通信模塊,作為接收端,沒有使用發(fā)射功能。接收端接收信號后,通過硬件濾波,判斷是否為有效信號。圖2為接收模塊的電路圖。若接收到40 kHz的信號電路導通,I/O口Echo輸出高電平、OUT端輸出1;若接收到的信號中沒有40 kHz的信號電路不導通,I/O口Echo為低電平、OUT端為0。該系統(tǒng)使用了3個接收端,其位置關系如圖3所示。
1.2.3 FPGA計算時間差模塊
模塊采用Altera FPGA CyclonelI EP2C5T144計算時間差。信號接收端1接收到有效信號后觸發(fā)FPGA的計數(shù)器,接收端2接收到有效信號后停止計數(shù)且觸發(fā)另一個計數(shù)器,接收端3接收到有效信號后停止計數(shù)。計數(shù)數(shù)值乘以FPGA的頻率可以得到兩個時間差。
1.2.4 單片機模塊
采用飛恩卡爾智能車芯片MC9S12XS128。該芯片接收到FPGA傳來的兩個時間差,再利用麥克問距、聲速算出聲源距離小車的距離r和角度α,并產(chǎn)生合適的PWM驅(qū)動電機使小車準確到達聲源處。
2 軟件設計
圖3為系統(tǒng)程序流程圖。
2.1 聲源定位算法設計
如圖4所示,在小車上安裝3個等間距的端口,間距為d,且3個端口在同一直線上。要測量的是點聲源M與中心陣元曰的距離r與方位角α。
t12為聲源到達端口1和2的時間差;t23為聲源達到端口2、3的時間差;陣元間距為d;聲速為c。在遠場平面波近似條件下,由幾何關系得
利用角度估計的遠場條件,但仍不放棄柱面波和球面波的假設,由余弦定理和泰勒展開得到目標距離
2.2 FPGA算法設計
FPGA根據(jù)聲接收模塊的信號,進行時間差計算。當有一路信號有效時啟動計數(shù)器開始計時,另外兩路信號同時有效時停止計數(shù),且計數(shù)結果可以借助計數(shù)器的存儲功能得以存儲。所用FPGA主頻為50 MHz,時間差=計數(shù)值×0.02μs。根據(jù)兩次的時間差值,利用定位算法可以實現(xiàn)定位功能。此外還設置了各路鎖存信號,可以判別出聲源的左右位置。圖5為利用Quartus II所設計的FPGA簡單計數(shù)的電路圖。
2.3 電機驅(qū)動算法設計
選用雙直流電機的小車模型進行試驗,兩個電機分別對小車左側的兩個車輪和右側的兩個車輪進行控制。預設PWM波的頻率值為10kHz。在單片機MC9S12XS128芯片特定的應用程序CodeWarrior IDE中進行代碼編寫。針對不同的電機系統(tǒng),需要進行實測并判斷合適的轉向、延時時間。
3 結束語
采用40 kHz的信號有利于避免外界干擾,使信號的誤判率降低。系統(tǒng)采用FPGA與單片機結合的形式進行聲導航,使小車能夠準確到達聲源處。電機運行環(huán)境和路面狀況不同時,由r和α產(chǎn)生合適的PWM比較困難,需要不斷調(diào)試,最終找到合適的PWM。該技術方案還可推廣,搭載家用小型餐桌、兒童搖籃、電腦桌和餐廳餐車等以實現(xiàn)智能行走功能,為生活提供方便。