東南大學成賢學院 賈藝石 王軍程 趙 越 馬華晨
定位系統對于各領域都有重要的使用價值。傳統的聲音定位方法有基于可控波束的定位、基于頻譜估計的定位以及基于時延的定位。本文設計出的定位系統采用時延估計中的到達時間差(TDOA)來進行計算。由聲傳感器陣列的排放與到達時間差(TDOA)結合而產生的算法能算出聲源的位置。系統以stm32單片機為信號處理平臺,處理核心為STM32F103ZET6。該單片機的系統時鐘頻率為72Mhz,足以處理時間差的計算。
聲音作為獲取信息的重要載體,無時無刻不存在于我們的生活之中。隨著科技發展的需要,聲傳感器的精度有了很大的提高,因此人類在聲傳感器的研究中投入越來越多的資源。以聲音為載體的傳感器廣泛應用于如最基本的聲控電路、機器人等領域,同時作為獲得戰場信息位置的一個重要方式,聲音定位技術受到很多國家的重視。因此,基于傳感器陣列的目標定位問題的研究有很重要的實際意義。
本系統分為兩部分,單片機及外圍電路構成的最小開發板和聲音傳感器陣列。當傳感器檢測到聲音數據之后,與其相連接的單片機端口產生外部中斷,內部定時器計算聲音到達的時間差,以待下一步的算法處理。
傳感器陣列需要四個聲傳感器,因此需要有嵌套向量中斷控制器的單片機。因此我們選擇了市場上同類型產品中性價比最高的STM32增強型單片機,此單片機時鐘頻率為72MHZ,可以滿足本系統微秒級計算。STM32功耗大約于為0.5MA/MHZ,可以滿足低功耗的設計要求。
本文采用的聲音傳感器模塊由LM393和駐極體電容式傳感器組成。LM393的特點是所需工作電壓要求低,單電源或者雙電源都可以正常工作,并且電流消耗很小,大約為0.8mA。本文的聲音傳感器還配備了滑動變阻器來調節聲傳感器的靈敏度。
生源定位技術中,多個傳感器按照特定的方式排列成陣列用于接收信號。通過各個傳感器接收到聲音的時差來計算聲源的坐標。傳感器陣列的設計是非常重要的一部分,陣列的設計會影響算法的設計。一般來說聲傳感器可分為線型陣列、平面陣列、和立體陣列。線型陣列不能判斷聲源的方向,因此會引發計算錯誤。立體陣列可以測得聲源的三維坐標,但所需算法要復雜的多。平面陣列可以在整個平面對聲源進行定位,且所需算法并不算困難。
本文采用平面十字形排列。假設四個傳感器中心為坐標原點,傳感器到原點的距離都為a,則四個傳感器的坐標為(a,0)、(-a,0)、(0,a)、(0,-a)。這種傳感器陣列可以巧妙的簡化計算公式,從而實現算法的簡化(見圖1)。
為了調節聲音傳感器的靈敏度,在模塊中加了一個滑動變阻器,而靈敏度設定的合理與否直接影響傳感器對聲音的采集。首先調節滑動變阻器,使其阻值最小,此時靈敏度為最高,實驗顯示靈敏度最高的時候誤差較大。將滑動變阻器調至阻值最大,靈敏度為最低,結果傳感器會出現接收不到信號的現象出現。
經測試,最終將滑動變阻器調至25K,靈敏度適中,可有效的抑制部分噪聲信號,又不會造成信號丟失。

圖1 聲傳感器陣列
本文所使用的聲音傳感器可以設為數字輸出模式,當聲音傳感器的麥克風接收到聲源目標所發出來的聲音信號的時候,傳感器輸出電平信號。傳感器沒接收到聲音時,輸出為平穩信號。當聲傳感器陣列與單片機的IO口相連接,只要IO口的電平發生了變化,就說明傳感器接受到了聲音信號。
本文使用的單片機系統的作用是對所接收到的聲音信號做時間差計算,并通過串口和PC進行通信,以驗證聲源坐標的正確性。主要使用GPIO(通用輸入輸出接口)、TIM(通用定時器模塊)、USART(通用同步/異步收發器)、NVIC(嵌套向量中斷控制器)
STM32單片機的IO口一共有8種模式,每種模式都可以通過程序進行配置。本文與聲傳感器連接的IO口全部配置為輸入浮空模式,速度為50MHZ。此處正確使用宏定義可以增加程序的可讀性,有利于后續的實驗調試。
通用定時器模塊含有一個可編程的預分頻數驅動的16位自動重載計數器。使用定時器分頻數和CPU時鐘預分頻數可實現微秒級別的控制。計數器包括向上計數、向下計數、向上向下雙計數等模式。本文采用向上計數模式。
用來進行串口通信。本系統用串口通信將定位坐標通信給PC機,驗證定位結果的準確性。在PC機上使用的對應軟件為串口調試助手,注意使用時波特率要對應,否則會出現亂碼。
對中斷進行控制。當傳感器連接的IO口電平發生變化時,進入中斷,中斷函數記錄此時計數器的值,以便進行時間差的計算。需要注意的是,每次定位流程結束時,要將各種參數清零以備下次信號的檢測。
本系統根據聲音傳感器陣列,由聲音到達時間差計算聲源目標坐標信息。系統所使用的STM32系列單片機,具有高速的處理能力,通過外圍電路與四個聲音傳感器相連接,計算出聲源目標信號到達不同傳感器的時間差,并由算法計算出聲源目標的具體位置。精確的定位需要高質量的聲傳感器來傳遞高質量的聲音信號,其次還需要有傳感器科學的排列方式。實際試驗和模擬試驗會有很大的差距,會有很多想不到的困難,但只有發現問題并解決,才能有所創新。