東南大學(xué)成賢學(xué)院 賈藝石 王軍程 趙 越 馬華晨
定位系統(tǒng)對于各領(lǐng)域都有重要的使用價值。傳統(tǒng)的聲音定位方法有基于可控波束的定位、基于頻譜估計的定位以及基于時延的定位。本文設(shè)計出的定位系統(tǒng)采用時延估計中的到達時間差(TDOA)來進行計算。由聲傳感器陣列的排放與到達時間差(TDOA)結(jié)合而產(chǎn)生的算法能算出聲源的位置。系統(tǒng)以stm32單片機為信號處理平臺,處理核心為STM32F103ZET6。該單片機的系統(tǒng)時鐘頻率為72Mhz,足以處理時間差的計算。
聲音作為獲取信息的重要載體,無時無刻不存在于我們的生活之中。隨著科技發(fā)展的需要,聲傳感器的精度有了很大的提高,因此人類在聲傳感器的研究中投入越來越多的資源。以聲音為載體的傳感器廣泛應(yīng)用于如最基本的聲控電路、機器人等領(lǐng)域,同時作為獲得戰(zhàn)場信息位置的一個重要方式,聲音定位技術(shù)受到很多國家的重視。因此,基于傳感器陣列的目標(biāo)定位問題的研究有很重要的實際意義。
本系統(tǒng)分為兩部分,單片機及外圍電路構(gòu)成的最小開發(fā)板和聲音傳感器陣列。當(dāng)傳感器檢測到聲音數(shù)據(jù)之后,與其相連接的單片機端口產(chǎn)生外部中斷,內(nèi)部定時器計算聲音到達的時間差,以待下一步的算法處理。
傳感器陣列需要四個聲傳感器,因此需要有嵌套向量中斷控制器的單片機。因此我們選擇了市場上同類型產(chǎn)品中性價比最高的STM32增強型單片機,此單片機時鐘頻率為72MHZ,可以滿足本系統(tǒng)微秒級計算。STM32功耗大約于為0.5MA/MHZ,可以滿足低功耗的設(shè)計要求。
本文采用的聲音傳感器模塊由LM393和駐極體電容式傳感器組成。LM393的特點是所需工作電壓要求低,單電源或者雙電源都可以正常工作,并且電流消耗很小,大約為0.8mA。本文的聲音傳感器還配備了滑動變阻器來調(diào)節(jié)聲傳感器的靈敏度。
生源定位技術(shù)中,多個傳感器按照特定的方式排列成陣列用于接收信號。通過各個傳感器接收到聲音的時差來計算聲源的坐標(biāo)。傳感器陣列的設(shè)計是非常重要的一部分,陣列的設(shè)計會影響算法的設(shè)計。一般來說聲傳感器可分為線型陣列、平面陣列、和立體陣列。線型陣列不能判斷聲源的方向,因此會引發(fā)計算錯誤。立體陣列可以測得聲源的三維坐標(biāo),但所需算法要復(fù)雜的多。平面陣列可以在整個平面對聲源進行定位,且所需算法并不算困難。
本文采用平面十字形排列。假設(shè)四個傳感器中心為坐標(biāo)原點,傳感器到原點的距離都為a,則四個傳感器的坐標(biāo)為(a,0)、(-a,0)、(0,a)、(0,-a)。這種傳感器陣列可以巧妙的簡化計算公式,從而實現(xiàn)算法的簡化(見圖1)。
為了調(diào)節(jié)聲音傳感器的靈敏度,在模塊中加了一個滑動變阻器,而靈敏度設(shè)定的合理與否直接影響傳感器對聲音的采集。首先調(diào)節(jié)滑動變阻器,使其阻值最小,此時靈敏度為最高,實驗顯示靈敏度最高的時候誤差較大。將滑動變阻器調(diào)至阻值最大,靈敏度為最低,結(jié)果傳感器會出現(xiàn)接收不到信號的現(xiàn)象出現(xiàn)。
經(jīng)測試,最終將滑動變阻器調(diào)至25K,靈敏度適中,可有效的抑制部分噪聲信號,又不會造成信號丟失。
圖1 聲傳感器陣列
本文所使用的聲音傳感器可以設(shè)為數(shù)字輸出模式,當(dāng)聲音傳感器的麥克風(fēng)接收到聲源目標(biāo)所發(fā)出來的聲音信號的時候,傳感器輸出電平信號。傳感器沒接收到聲音時,輸出為平穩(wěn)信號。當(dāng)聲傳感器陣列與單片機的IO口相連接,只要IO口的電平發(fā)生了變化,就說明傳感器接受到了聲音信號。
本文使用的單片機系統(tǒng)的作用是對所接收到的聲音信號做時間差計算,并通過串口和PC進行通信,以驗證聲源坐標(biāo)的正確性。主要使用GPIO(通用輸入輸出接口)、TIM(通用定時器模塊)、USART(通用同步/異步收發(fā)器)、NVIC(嵌套向量中斷控制器)
STM32單片機的IO口一共有8種模式,每種模式都可以通過程序進行配置。本文與聲傳感器連接的IO口全部配置為輸入浮空模式,速度為50MHZ。此處正確使用宏定義可以增加程序的可讀性,有利于后續(xù)的實驗調(diào)試。
通用定時器模塊含有一個可編程的預(yù)分頻數(shù)驅(qū)動的16位自動重載計數(shù)器。使用定時器分頻數(shù)和CPU時鐘預(yù)分頻數(shù)可實現(xiàn)微秒級別的控制。計數(shù)器包括向上計數(shù)、向下計數(shù)、向上向下雙計數(shù)等模式。本文采用向上計數(shù)模式。
用來進行串口通信。本系統(tǒng)用串口通信將定位坐標(biāo)通信給PC機,驗證定位結(jié)果的準(zhǔn)確性。在PC機上使用的對應(yīng)軟件為串口調(diào)試助手,注意使用時波特率要對應(yīng),否則會出現(xiàn)亂碼。
對中斷進行控制。當(dāng)傳感器連接的IO口電平發(fā)生變化時,進入中斷,中斷函數(shù)記錄此時計數(shù)器的值,以便進行時間差的計算。需要注意的是,每次定位流程結(jié)束時,要將各種參數(shù)清零以備下次信號的檢測。
本系統(tǒng)根據(jù)聲音傳感器陣列,由聲音到達時間差計算聲源目標(biāo)坐標(biāo)信息。系統(tǒng)所使用的STM32系列單片機,具有高速的處理能力,通過外圍電路與四個聲音傳感器相連接,計算出聲源目標(biāo)信號到達不同傳感器的時間差,并由算法計算出聲源目標(biāo)的具體位置。精確的定位需要高質(zhì)量的聲傳感器來傳遞高質(zhì)量的聲音信號,其次還需要有傳感器科學(xué)的排列方式。實際試驗和模擬試驗會有很大的差距,會有很多想不到的困難,但只有發(fā)現(xiàn)問題并解決,才能有所創(chuàng)新。