破損玻璃檢測器 (GBD)系統(tǒng)的軟硬件設(shè)計(jì)
軟件設(shè)計(jì)規(guī)范
擴(kuò)音器的模擬信號由剪切頻率為 20 kHz 的 AAF 過濾。為了對該信號進(jìn)行數(shù)字化,采樣率必須大于 40 kHz,也即 ADC 必須能夠支持它。在實(shí)時運(yùn)行狀態(tài)下,所需的處理工作需在連續(xù)采樣間隙完成。例如,如果最高 CPU 頻率為 12 MHz,那么連續(xù)采樣之間的 CPU 周期數(shù)僅為 300 次,這對信號處理而言是極為不足的。為了增加 CPU 周期,我們可選用支持更高 CPU 時鐘的處理器;但是,這樣做的代價是提高了功耗,進(jìn)而縮短了電池使用壽命。因此,必須平衡算法復(fù)雜性和電池使用壽命。本節(jié)將探討用于檢測玻璃破損的實(shí)際算法。從圖 1 和圖 2 中可以看出,玻璃破損聲音包含大量高頻分量、跨零和峰值,以及低頻撞擊信號。重?fù)艋蜃矒舭l(fā)生在玻璃破損聲音的起始階段。必須注意的是,重?fù)?撞擊信號可能源于多種聲音,比如木門或柜櫥的關(guān)閉、物品掉落地上、快速擊掌、鎖門等。不過,這些聲音都不存在一般玻璃破損信號中包含的高頻分量。同樣,咖啡磨豆機(jī)、音樂、電視上的摩托車比賽、酒杯落地破損等發(fā)出的聲音盡管存在高頻分量,但卻沒有重?fù)?撞擊分量。下述 GBD 算法將探究這兩種分量及時獨(dú)立出現(xiàn)在頻譜兩側(cè)的事實(shí)。
算法
圖 4 顯示的是算法的高級軟件流程圖。該軟件分為三大塊,按時間發(fā)生順序分別為活動檢測、撞擊檢測和玻璃破損。擴(kuò)音器和 OA1 每隔 2.5 毫秒開啟一次,檢查有無聲音活動。如果沒有顯著的活動,它們就關(guān)閉,MCU 隨即進(jìn)入低功耗狀態(tài)。如果出現(xiàn)顯著活動,則軟件啟動撞擊檢測,其中 ADC 打開,并隨后進(jìn)行信號處理,檢查撞擊分量。只有在確實(shí)出現(xiàn)撞擊事件,算法才啟動實(shí)際的玻璃破損檢測,否則算法將返回活動檢測狀態(tài)。如果成功檢測到玻璃破損,則將激活板上 LED/蜂鳴器發(fā)出事件警報。GBD 隨后將返回到活動檢測狀態(tài)。
圖 4:高級軟件流程活動檢測僅通過比較 ADC 輸入值與零點(diǎn)兩側(cè)的預(yù)設(shè)閾值來從噪聲中區(qū)別出真正的破損信號。如前所述,撞擊是接近 300 Hz 的低頻分量。既然撞擊分量僅出現(xiàn)在玻璃撞破損的初始階段,那么只需過濾最初傳送進(jìn)來的少數(shù)幾個信號樣本即可。該過濾工作由剪切頻率為 350 Hz 的數(shù)字低通濾波器 (LPF) 來完成。先將過濾后的樣本累加、取平均值,然后再與預(yù)設(shè)的能量閾值進(jìn)行比較。如果能量超過預(yù)設(shè)閾值,則啟動撞擊分量和玻璃破損檢測算法。為了在不影響其工作效率的前提下縮小數(shù)字 LPF 的尺寸,針對初始樣本的采樣頻率非常低,僅保持在 4 kHz。不過,該部分算法采用剪切頻率為 2 kHz 的AAF(而非剪切頻率為 20 kHz的常規(guī) AAF)。 玻璃破損檢測算法比撞擊檢測更復(fù)雜,分為兩部分:信號分析 1 (SA1) 和信號分析 2 (SA2)。SA1 是處理的第一階段,一旦檢測到撞擊就會對每個樣本進(jìn)行分析。在 SA1 階段選用的是 20 kHz 的AAF,ADC 采樣頻率驟然提升至 40 kHz。SA1 階段將執(zhí)行信號平均、跨零檢測和峰值檢測,耗時 60 毫秒,完成了約 2,400 個樣本分析。SA1 完成后,即啟動 SA2 完成整個信號分析過程。圖 5 顯示的是 SA1 期間的信號表示圖,而圖 6 顯示的是實(shí)際的軟件流程。
圖 5:信號分析 1 的信號表示圖
評論