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