破損玻璃檢測(cè)器 (GBD)系統(tǒng)的軟硬件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
破損玻璃檢測(cè)器 (GBD) 主要用來(lái)檢測(cè)家庭住宅或商業(yè)樓宇門窗玻璃的破損情況。GBD 也可歸類為一種監(jiān)控設(shè)備,用以提高家庭或商業(yè)環(huán)境的安全性,避免非法進(jìn)入。GBD 既可獨(dú)立工作,也可與其它防盜設(shè)備協(xié)同工作,形成一套完整的安全系統(tǒng)。GBD 的基本工作原理就是捕獲各種聲音,并對(duì)其進(jìn)行分析,然后報(bào)告玻璃是否破碎?;谶@種工作模式,GBD的性能很大程度上取決于聲源音質(zhì),這對(duì)設(shè)計(jì)人員提出了諸多挑戰(zhàn)。此外,GBD 必須排除各種非真正玻璃破碎發(fā)出的聲音,這種可能觸發(fā)虛假玻璃破碎警報(bào)的聲音事件就是誤報(bào)警。本文將介紹一種采用低成本微處理器 (MCU) 的高效、穩(wěn)健可靠的 GBD 設(shè)計(jì)方案。MCU 屬于低端處理器,廣泛用于簡(jiǎn)單的數(shù)字實(shí)時(shí)時(shí)鐘或復(fù)雜的智能計(jì)量裝置等各種應(yīng)用。MCU 之所以能夠廣泛應(yīng)用,主要是因?yàn)槠湎鄬?duì)于大多數(shù)其他類型的數(shù)字處理器而言具有低成本、低功耗、簡(jiǎn)便易用等優(yōu)異特性。在簡(jiǎn)單應(yīng)用中,由于要求不多,因此低成本和低功耗很容易實(shí)現(xiàn)。然而,隨著 MCU 不斷應(yīng)用于復(fù)雜的應(yīng)用,要想保持低成本和低功耗就要面臨更大的挑戰(zhàn)。因此,工程師目前的任務(wù)就是以盡可能低的成本實(shí)現(xiàn)最佳性能。為了實(shí)現(xiàn)這一目標(biāo),我們必須解決諸如片上內(nèi)存較低、外設(shè)集有限、運(yùn)行速度較低、引腳數(shù)量較少等 MCU架構(gòu)限制問(wèn)題。同時(shí),工程師必須優(yōu)化利用 MCU 的一切可用資源,才能使其在像破損玻璃檢測(cè)器 (GBD) 這種相當(dāng)復(fù)雜的應(yīng)用中充分發(fā)揮作用。
設(shè)計(jì)考慮
穩(wěn)健的 GBD 算法應(yīng)該能夠很容易地將真正的玻璃破碎聲與其它聲音區(qū)別開(kāi)來(lái)。所有 GBD 算法都會(huì)捕獲聲音,并對(duì)其時(shí)間和頻率構(gòu)成進(jìn)行分析,然后做出決策。玻璃破損聲會(huì)因玻璃類型、厚度、聲學(xué)環(huán)境、距離,以及撞擊玻璃所用器具的不同而有所變化。雖然所有 GBD 算法的本質(zhì)很類似,但在具體情況下會(huì)略有差別。不過(guò),很難讓一種算法適用于所有情況。而對(duì)算法的微調(diào)通常要在家庭或企業(yè)的最后安裝階段中進(jìn)行。有效的玻璃破損信號(hào)可在時(shí)域或頻域內(nèi)加以分析。圖 1 和圖 2 分別顯示了時(shí)域和頻域內(nèi)典型的玻璃破損信號(hào)。玻璃破損聲的音頻頻譜正好介于 20Hz 至 20 kHz 之間。時(shí)域波形與實(shí)際聽(tīng)到的聲音相關(guān),而頻域波形則給出了完整的信號(hào)頻譜。上述兩種圖形為設(shè)計(jì)高效的玻璃破損檢測(cè)算法提供了重要信息。時(shí)域圖顯示波形密集,且在短時(shí)間間隔內(nèi)存在大量活動(dòng),這不僅說(shuō)明信號(hào)包含了大量高頻分量,同時(shí)也意味著波形的跨零和峰值數(shù)較多。盡管這些信息很有用,但這些特點(diǎn)看起來(lái)卻酷似白噪聲。設(shè)計(jì)人員接下來(lái)所面臨的挑戰(zhàn)就是如何對(duì)其加以區(qū)分。
圖 1:時(shí)域內(nèi)的玻璃破損信號(hào)
圖 2:頻域內(nèi)的玻璃破損信號(hào)在頻域方面,我們也面臨著類似的挑戰(zhàn)。玻璃破損信號(hào)分量好像是以相對(duì)平均的能量分布于整個(gè)頻譜,這與典型的白噪聲類似。不過(guò),我們也發(fā)現(xiàn),在 200 ~ 300 Hz 的低頻區(qū)域有一個(gè)不小的峰值,這給我們做出區(qū)分判斷提供很有用的信息。這一峰值是玻璃破損過(guò)程中擊打物撞擊玻璃所最初產(chǎn)生的聲音頻率分量。撞擊表現(xiàn)為后續(xù)高頻玻璃破損聲中的低頻信號(hào)。這種“撞擊”或者“重?fù)?rdquo;也可以理解為器具碰撞玻璃時(shí)所發(fā)出的聲音。這種信號(hào)在時(shí)域波形中很難分辨出來(lái),但我們確實(shí)清楚這種聲音是在玻璃破損過(guò)程中先于其他聲音而發(fā)生的。據(jù)此,我們可以確定地列出玻璃破損信號(hào)的部分有關(guān)因素:包括大量高頻分量,即包含大量跨零和峰值。
包含擊打物碰撞玻璃所產(chǎn)生的 200 ~ 300 Hz 低頻分量,出現(xiàn)在玻璃破損聲音的起始階段。
圖 3:破損玻璃檢測(cè)器的系統(tǒng)方框圖上面列出了執(zhí)行具體行動(dòng)的關(guān)鍵塊。GBD 必須始終保持開(kāi)啟狀態(tài),而且應(yīng)該能夠?qū)崟r(shí)處理任何聲音活動(dòng)。不過(guò),GBD 的某些塊可在非工作狀態(tài)下關(guān)閉或進(jìn)入低功耗模式。我們將在后續(xù)部分對(duì)此加以分別說(shuō)明。擴(kuò)音器負(fù)責(zé)捕獲聲音,而增益放大器與抗混淆濾波器 (AAF) 則負(fù)責(zé)信號(hào)放大及高頻分量過(guò)濾。AAF 旨在屏蔽超過(guò) 20 kHz 可聽(tīng)范圍以外的音頻,并避免在模擬信號(hào)數(shù)字化過(guò)程中違反奈奎斯特準(zhǔn)則 (Nyquist criterion)。虛線內(nèi)的塊可理解為處理器的一部分。處理器可以是 ASIC、MCU 或數(shù)字信號(hào)處理器 (DSP)。模數(shù)轉(zhuǎn)換器 (ADC) 將模擬信號(hào)轉(zhuǎn)變?yōu)閿?shù)字信號(hào),以便在數(shù)字域中進(jìn)行處理。采樣頻率 ( ) 可根據(jù)信號(hào)的頻率分量來(lái)選擇。由于采用了 20 kHz 的 AAF,因此采樣率必須大于或等于 40 kHz,這樣才能保存原始內(nèi)容,確保信號(hào)的完整性。信號(hào)分析塊包含檢測(cè)/區(qū)分玻璃破損聲所需的整個(gè)信號(hào)處理機(jī)制。完成之后,決策塊將激活 LED 或蜂鳴器等指示器,報(bào)告玻璃破損情況。在以下各節(jié)中,我們將全面討論各塊的具體規(guī)范。
硬件設(shè)計(jì)規(guī)范
在本節(jié)中我們將討論高穩(wěn)健性 GBD 解決方案的硬件設(shè)計(jì)規(guī)范。在深入討論相關(guān)要求之前,需要說(shuō)明的重要一點(diǎn)是,大多數(shù) GBD 都采用電池供電,因此為了確保足夠長(zhǎng)的電池使用壽命,設(shè)計(jì)方案必須注重低功耗。板上所有硬件組件的選擇都要圍繞實(shí)現(xiàn)低功耗這一設(shè)計(jì)目標(biāo)而展開(kāi)。如圖 3 所示,整條模擬信號(hào)鏈從擴(kuò)音器開(kāi)始,到 ADC 結(jié)束。擴(kuò)音器的選擇至關(guān)重要,其性能將關(guān)系到所有 GBD 算法的成敗。擴(kuò)音器還應(yīng)能夠捕獲并保存撞擊等關(guān)鍵音頻分量以及其它高頻分量,這些頻率分量將在 GBD 算法中頻繁使用。擴(kuò)音器大多數(shù)時(shí)間需處于開(kāi)啟狀態(tài)以捕獲各種聲音活動(dòng),因此必須確保低功耗,以降低整體系統(tǒng)的電流消耗。增益放大器通常是以高于單位增益的反相模式或非反相模式配置的運(yùn)算放大器 (OA)。OA 旨在為擴(kuò)音器捕獲的聲音(大小通常為數(shù)十毫伏)提供足夠增益。OA 和擴(kuò)音器一樣,也要始終保持開(kāi)啟狀態(tài),而且必須具有較小的開(kāi)啟電流。AAF 也是 OA,在模擬域進(jìn)行過(guò)濾,通常也是一個(gè)簡(jiǎn)單的一階或二階單位增益低通濾波器 (LPF)。整個(gè)設(shè)計(jì)中最重大的決策是如何選擇信號(hào)處理器。如前所述,ASIC、MCU 或 DSP 可用于本應(yīng)用。不過(guò),每種選項(xiàng)都有其優(yōu)勢(shì)和不足,我們應(yīng)根據(jù)最有益于本應(yīng)用的相關(guān)因素進(jìn)行選擇。大多數(shù)破損玻璃檢測(cè)器與煙霧檢測(cè)器類似,都安裝在家庭或辦公環(huán)境中可確保安全的位置。不過(guò),基于以下兩種原因,它們都要采用電池供電:可安裝在任何地方,而不必考慮電源插座問(wèn)題,而且
在電源斷電情況下仍能確保實(shí)現(xiàn)全部功能。
選擇的處理器必須具備低功耗、可編程、簡(jiǎn)便易用、價(jià)格低廉等優(yōu)異特性,而且在實(shí)時(shí)運(yùn)行時(shí)可提供出色的處理能力。MCU 是所有可選方案中的最佳選擇,可滿足上述所有要求。此外,部分 MCU 還集成了模擬外設(shè),這將進(jìn)一步降低整體系統(tǒng)成本。[!--empirenews.page--]
軟件設(shè)計(jì)規(guī)范
擴(kuò)音器的模擬信號(hào)由剪切頻率為 20 kHz 的 AAF 過(guò)濾。為了對(duì)該信號(hào)進(jìn)行數(shù)字化,采樣率必須大于 40 kHz,也即 ADC 必須能夠支持它。在實(shí)時(shí)運(yùn)行狀態(tài)下,所需的處理工作需在連續(xù)采樣間隙完成。例如,如果最高 CPU 頻率為 12 MHz,那么連續(xù)采樣之間的 CPU 周期數(shù)僅為 300 次,這對(duì)信號(hào)處理而言是極為不足的。為了增加 CPU 周期,我們可選用支持更高 CPU 時(shí)鐘的處理器;但是,這樣做的代價(jià)是提高了功耗,進(jìn)而縮短了電池使用壽命。因此,必須平衡算法復(fù)雜性和電池使用壽命。本節(jié)將探討用于檢測(cè)玻璃破損的實(shí)際算法。從圖 1 和圖 2 中可以看出,玻璃破損聲音包含大量高頻分量、跨零和峰值,以及低頻撞擊信號(hào)。重?fù)艋蜃矒舭l(fā)生在玻璃破損聲音的起始階段。必須注意的是,重?fù)?撞擊信號(hào)可能源于多種聲音,比如木門或柜櫥的關(guān)閉、物品掉落地上、快速擊掌、鎖門等。不過(guò),這些聲音都不存在一般玻璃破損信號(hào)中包含的高頻分量。同樣,咖啡磨豆機(jī)、音樂(lè)、電視上的摩托車比賽、酒杯落地破損等發(fā)出的聲音盡管存在高頻分量,但卻沒(méi)有重?fù)?撞擊分量。下述 GBD 算法將探究這兩種分量及時(shí)獨(dú)立出現(xiàn)在頻譜兩側(cè)的事實(shí)。
算法
圖 4 顯示的是算法的高級(jí)軟件流程圖。該軟件分為三大塊,按時(shí)間發(fā)生順序分別為活動(dòng)檢測(cè)、撞擊檢測(cè)和玻璃破損。擴(kuò)音器和 OA1 每隔 2.5 毫秒開(kāi)啟一次,檢查有無(wú)聲音活動(dòng)。如果沒(méi)有顯著的活動(dòng),它們就關(guān)閉,MCU 隨即進(jìn)入低功耗狀態(tài)。如果出現(xiàn)顯著活動(dòng),則軟件啟動(dòng)撞擊檢測(cè),其中 ADC 打開(kāi),并隨后進(jìn)行信號(hào)處理,檢查撞擊分量。只有在確實(shí)出現(xiàn)撞擊事件,算法才啟動(dòng)實(shí)際的玻璃破損檢測(cè),否則算法將返回活動(dòng)檢測(cè)狀態(tài)。如果成功檢測(cè)到玻璃破損,則將激活板上 LED/蜂鳴器發(fā)出事件警報(bào)。GBD 隨后將返回到活動(dòng)檢測(cè)狀態(tài)。
圖 4:高級(jí)軟件流程活動(dòng)檢測(cè)僅通過(guò)比較 ADC 輸入值與零點(diǎn)兩側(cè)的預(yù)設(shè)閾值來(lái)從噪聲中區(qū)別出真正的破損信號(hào)。如前所述,撞擊是接近 300 Hz 的低頻分量。既然撞擊分量?jī)H出現(xiàn)在玻璃撞破損的初始階段,那么只需過(guò)濾最初傳送進(jìn)來(lái)的少數(shù)幾個(gè)信號(hào)樣本即可。該過(guò)濾工作由剪切頻率為 350 Hz 的數(shù)字低通濾波器 (LPF) 來(lái)完成。先將過(guò)濾后的樣本累加、取平均值,然后再與預(yù)設(shè)的能量閾值進(jìn)行比較。如果能量超過(guò)預(yù)設(shè)閾值,則啟動(dòng)撞擊分量和玻璃破損檢測(cè)算法。為了在不影響其工作效率的前提下縮小數(shù)字 LPF 的尺寸,針對(duì)初始樣本的采樣頻率非常低,僅保持在 4 kHz。不過(guò),該部分算法采用剪切頻率為 2 kHz 的AAF(而非剪切頻率為 20 kHz的常規(guī) AAF)。 玻璃破損檢測(cè)算法比撞擊檢測(cè)更復(fù)雜,分為兩部分:信號(hào)分析 1 (SA1) 和信號(hào)分析 2 (SA2)。SA1 是處理的第一階段,一旦檢測(cè)到撞擊就會(huì)對(duì)每個(gè)樣本進(jìn)行分析。在 SA1 階段選用的是 20 kHz 的AAF,ADC 采樣頻率驟然提升至 40 kHz。SA1 階段將執(zhí)行信號(hào)平均、跨零檢測(cè)和峰值檢測(cè),耗時(shí) 60 毫秒,完成了約 2,400 個(gè)樣本分析。SA1 完成后,即啟動(dòng) SA2 完成整個(gè)信號(hào)分析過(guò)程。圖 5 顯示的是 SA1 期間的信號(hào)表示圖,而圖 6 顯示的是實(shí)際的軟件流程。
圖 5:信號(hào)分析 1 的信號(hào)表示圖[!--empirenews.page--]
圖 6:信號(hào)分析 1 的軟件流程傳送進(jìn)來(lái)的信號(hào)樣本 p(n) 在首先通過(guò)簡(jiǎn)單的移動(dòng)平均濾波器降低噪聲后得到 s(n)。p(n) 的信號(hào)整合只使用正樣本進(jìn)行,以便計(jì)算出 SA2 階段將使用的信號(hào)能量 integ_total。s(n) 包括峰值和跨零數(shù)量??梢允褂眉羟蓄l率為 的高通濾波器 (HPF) 提取傳送進(jìn)來(lái)的信號(hào)的高頻分量,每個(gè) p(n) 樣本都要經(jīng)過(guò)此類過(guò)濾。同時(shí),只有過(guò)濾輸出的正樣本才能累加到結(jié)果 integ_HPF_total 中,該結(jié)果將用于 SA2 階段。每個(gè)樣本都要經(jīng)過(guò)完整的 SA1 階段,而且為了確保實(shí)時(shí)運(yùn)行,必須在下一個(gè)樣本 p(n+1) 到達(dá)前完成,即全部可用的 CPU 周期數(shù)僅為 CPU 頻率/40 kHz。過(guò)濾通常是一個(gè)耗時(shí)的過(guò)程。為提高效率,我們?cè)谧矒魴z測(cè)中使用的 LPF 以及 SA1 階段使用的 HPF 中均要采用點(diǎn)陣波數(shù)字濾波器 (LWDF) [1] ,并使用霍納 (Horner) 算法 [2]。待 SA1 階段的數(shù)據(jù)處理完(耗時(shí) 60 毫秒)后,算法即進(jìn)入處理的第二個(gè)階段 SA2。SA2 無(wú)需實(shí)時(shí)運(yùn)行,圖 7 給出了該階段的運(yùn)行流程。此外,SA2 完成時(shí)將確定是否真的發(fā)生了玻璃破碎事件。
圖 7:信號(hào)分析 2 的軟件流程計(jì)算總信號(hào)能量與高通過(guò)濾信號(hào)能量之比,并將其與閾值加以比較。結(jié)果顯示眾多玻璃破損聲音的比值都介于 1.75 ~ 14 之間。同樣,還要檢查峰值數(shù)量是否介于 160 ~ 320 之間,跨零數(shù)量是否介于 95 ~ 300 之間。只有滿足以上三個(gè)條件,才能確定發(fā)生了玻璃破損事件。上述三個(gè)條件中只要有一項(xiàng)不符合要求,玻璃破損檢測(cè)器就會(huì)重啟并返回活動(dòng)檢測(cè)狀態(tài)。這些閾值與范圍將需要根據(jù)房間聲音質(zhì)量、GBD 位置以及環(huán)境噪聲等加以微調(diào)。