破损玻璃检测器 (GBD)系统的软硬件设计
扫描二维码
随时随地手机看文章
引言
破损玻璃检测器 (GBD) 主要用来检测家庭住宅或商业楼宇门窗玻璃的破损情况。GBD 也可归类为一种监控设备,用以提高家庭或商业环境的安全性,避免非法进入。GBD 既可独立工作,也可与其它防盗设备协同工作,形成一套完整的安全系统。GBD 的基本工作原理就是捕获各种声音,并对其进行分析,然后报告玻璃是否破碎。基于这种工作模式,GBD的性能很大程度上取决于声源音质,这对设计人员提出了诸多挑战。此外,GBD 必须排除各种非真正玻璃破碎发出的声音,这种可能触发虚假玻璃破碎警报的声音事件就是误报警。本文将介绍一种采用低成本微处理器 (MCU) 的高效、稳健可靠的 GBD 设计方案。MCU 属于低端处理器,广泛用于简单的数字实时时钟或复杂的智能计量装置等各种应用。MCU 之所以能够广泛应用,主要是因为其相对于大多数其他类型的数字处理器而言具有低成本、低功耗、简便易用等优异特性。在简单应用中,由于要求不多,因此低成本和低功耗很容易实现。然而,随着 MCU 不断应用于复杂的应用,要想保持低成本和低功耗就要面临更大的挑战。因此,工程师目前的任务就是以尽可能低的成本实现最佳性能。为了实现这一目标,我们必须解决诸如片上内存较低、外设集有限、运行速度较低、引脚数量较少等 MCU架构限制问题。同时,工程师必须优化利用 MCU 的一切可用资源,才能使其在像破损玻璃检测器 (GBD) 这种相当复杂的应用中充分发挥作用。
设计考虑
稳健的 GBD 算法应该能够很容易地将真正的玻璃破碎声与其它声音区别开来。所有 GBD 算法都会捕获声音,并对其时间和频率构成进行分析,然后做出决策。玻璃破损声会因玻璃类型、厚度、声学环境、距离,以及撞击玻璃所用器具的不同而有所变化。虽然所有 GBD 算法的本质很类似,但在具体情况下会略有差别。不过,很难让一种算法适用于所有情况。而对算法的微调通常要在家庭或企业的最后安装阶段中进行。有效的玻璃破损信号可在时域或频域内加以分析。图 1 和图 2 分别显示了时域和频域内典型的玻璃破损信号。玻璃破损声的音频频谱正好介于 20Hz 至 20 kHz 之间。时域波形与实际听到的声音相关,而频域波形则给出了完整的信号频谱。上述两种图形为设计高效的玻璃破损检测算法提供了重要信息。时域图显示波形密集,且在短时间间隔内存在大量活动,这不仅说明信号包含了大量高频分量,同时也意味着波形的跨零和峰值数较多。尽管这些信息很有用,但这些特点看起来却酷似白噪声。设计人员接下来所面临的挑战就是如何对其加以区分。
图 1:时域内的玻璃破损信号
图 2:频域内的玻璃破损信号在频域方面,我们也面临着类似的挑战。玻璃破损信号分量好像是以相对平均的能量分布于整个频谱,这与典型的白噪声类似。不过,我们也发现,在 200 ~ 300 Hz 的低频区域有一个不小的峰值,这给我们做出区分判断提供很有用的信息。这一峰值是玻璃破损过程中击打物撞击玻璃所最初产生的声音频率分量。撞击表现为后续高频玻璃破损声中的低频信号。这种“撞击”或者“重击”也可以理解为器具碰撞玻璃时所发出的声音。这种信号在时域波形中很难分辨出来,但我们确实清楚这种声音是在玻璃破损过程中先于其他声音而发生的。据此,我们可以确定地列出玻璃破损信号的部分有关因素:包括大量高频分量,即包含大量跨零和峰值。
包含击打物碰撞玻璃所产生的 200 ~ 300 Hz 低频分量,出现在玻璃破损声音的起始阶段。
图 3:破损玻璃检测器的系统方框图上面列出了执行具体行动的关键块。GBD 必须始终保持开启状态,而且应该能够实时处理任何声音活动。不过,GBD 的某些块可在非工作状态下关闭或进入低功耗模式。我们将在后续部分对此加以分别说明。扩音器负责捕获声音,而增益放大器与抗混淆滤波器 (AAF) 则负责信号放大及高频分量过滤。AAF 旨在屏蔽超过 20 kHz 可听范围以外的音频,并避免在模拟信号数字化过程中违反奈奎斯特准则 (Nyquist criterion)。虚线内的块可理解为处理器的一部分。处理器可以是 ASIC、MCU 或数字信号处理器 (DSP)。模数转换器 (ADC) 将模拟信号转变为数字信号,以便在数字域中进行处理。采样频率 ( ) 可根据信号的频率分量来选择。由于采用了 20 kHz 的 AAF,因此采样率必须大于或等于 40 kHz,这样才能保存原始内容,确保信号的完整性。信号分析块包含检测/区分玻璃破损声所需的整个信号处理机制。完成之后,决策块将激活 LED 或蜂鸣器等指示器,报告玻璃破损情况。在以下各节中,我们将全面讨论各块的具体规范。
硬件设计规范
在本节中我们将讨论高稳健性 GBD 解决方案的硬件设计规范。在深入讨论相关要求之前,需要说明的重要一点是,大多数 GBD 都采用电池供电,因此为了确保足够长的电池使用寿命,设计方案必须注重低功耗。板上所有硬件组件的选择都要围绕实现低功耗这一设计目标而展开。如图 3 所示,整条模拟信号链从扩音器开始,到 ADC 结束。扩音器的选择至关重要,其性能将关系到所有 GBD 算法的成败。扩音器还应能够捕获并保存撞击等关键音频分量以及其它高频分量,这些频率分量将在 GBD 算法中频繁使用。扩音器大多数时间需处于开启状态以捕获各种声音活动,因此必须确保低功耗,以降低整体系统的电流消耗。增益放大器通常是以高于单位增益的反相模式或非反相模式配置的运算放大器 (OA)。OA 旨在为扩音器捕获的声音(大小通常为数十毫伏)提供足够增益。OA 和扩音器一样,也要始终保持开启状态,而且必须具有较小的开启电流。AAF 也是 OA,在模拟域进行过滤,通常也是一个简单的一阶或二阶单位增益低通滤波器 (LPF)。整个设计中最重大的决策是如何选择信号处理器。如前所述,ASIC、MCU 或 DSP 可用于本应用。不过,每种选项都有其优势和不足,我们应根据最有益于本应用的相关因素进行选择。大多数破损玻璃检测器与烟雾检测器类似,都安装在家庭或办公环境中可确保安全的位置。不过,基于以下两种原因,它们都要采用电池供电:可安装在任何地方,而不必考虑电源插座问题,而且
在电源断电情况下仍能确保实现全部功能。
选择的处理器必须具备低功耗、可编程、简便易用、价格低廉等优异特性,而且在实时运行时可提供出色的处理能力。MCU 是所有可选方案中的最佳选择,可满足上述所有要求。此外,部分 MCU 还集成了模拟外设,这将进一步降低整体系统成本。[!--empirenews.page--]
软件设计规范
扩音器的模拟信号由剪切频率为 20 kHz 的 AAF 过滤。为了对该信号进行数字化,采样率必须大于 40 kHz,也即 ADC 必须能够支持它。在实时运行状态下,所需的处理工作需在连续采样间隙完成。例如,如果最高 CPU 频率为 12 MHz,那么连续采样之间的 CPU 周期数仅为 300 次,这对信号处理而言是极为不足的。为了增加 CPU 周期,我们可选用支持更高 CPU 时钟的处理器;但是,这样做的代价是提高了功耗,进而缩短了电池使用寿命。因此,必须平衡算法复杂性和电池使用寿命。本节将探讨用于检测玻璃破损的实际算法。从图 1 和图 2 中可以看出,玻璃破损声音包含大量高频分量、跨零和峰值,以及低频撞击信号。重击或撞击发生在玻璃破损声音的起始阶段。必须注意的是,重击/撞击信号可能源于多种声音,比如木门或柜橱的关闭、物品掉落地上、快速击掌、锁门等。不过,这些声音都不存在一般玻璃破损信号中包含的高频分量。同样,咖啡磨豆机、音乐、电视上的摩托车比赛、酒杯落地破损等发出的声音尽管存在高频分量,但却没有重击/撞击分量。下述 GBD 算法将探究这两种分量及时独立出现在频谱两侧的事实。
算法
图 4 显示的是算法的高级软件流程图。该软件分为三大块,按时间发生顺序分别为活动检测、撞击检测和玻璃破损。扩音器和 OA1 每隔 2.5 毫秒开启一次,检查有无声音活动。如果没有显著的活动,它们就关闭,MCU 随即进入低功耗状态。如果出现显著活动,则软件启动撞击检测,其中 ADC 打开,并随后进行信号处理,检查撞击分量。只有在确实出现撞击事件,算法才启动实际的玻璃破损检测,否则算法将返回活动检测状态。如果成功检测到玻璃破损,则将激活板上 LED/蜂鸣器发出事件警报。GBD 随后将返回到活动检测状态。
图 4:高级软件流程活动检测仅通过比较 ADC 输入值与零点两侧的预设阈值来从噪声中区别出真正的破损信号。如前所述,撞击是接近 300 Hz 的低频分量。既然撞击分量仅出现在玻璃撞破损的初始阶段,那么只需过滤最初传送进来的少数几个信号样本即可。该过滤工作由剪切频率为 350 Hz 的数字低通滤波器 (LPF) 来完成。先将过滤后的样本累加、取平均值,然后再与预设的能量阈值进行比较。如果能量超过预设阈值,则启动撞击分量和玻璃破损检测算法。为了在不影响其工作效率的前提下缩小数字 LPF 的尺寸,针对初始样本的采样频率非常低,仅保持在 4 kHz。不过,该部分算法采用剪切频率为 2 kHz 的AAF(而非剪切频率为 20 kHz的常规 AAF)。 玻璃破损检测算法比撞击检测更复杂,分为两部分:信号分析 1 (SA1) 和信号分析 2 (SA2)。SA1 是处理的第一阶段,一旦检测到撞击就会对每个样本进行分析。在 SA1 阶段选用的是 20 kHz 的AAF,ADC 采样频率骤然提升至 40 kHz。SA1 阶段将执行信号平均、跨零检测和峰值检测,耗时 60 毫秒,完成了约 2,400 个样本分析。SA1 完成后,即启动 SA2 完成整个信号分析过程。图 5 显示的是 SA1 期间的信号表示图,而图 6 显示的是实际的软件流程。
图 5:信号分析 1 的信号表示图[!--empirenews.page--]
图 6:信号分析 1 的软件流程传送进来的信号样本 p(n) 在首先通过简单的移动平均滤波器降低噪声后得到 s(n)。p(n) 的信号整合只使用正样本进行,以便计算出 SA2 阶段将使用的信号能量 integ_total。s(n) 包括峰值和跨零数量。可以使用剪切频率为 的高通滤波器 (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 完成时将确定是否真的发生了玻璃破碎事件。
图 7:信号分析 2 的软件流程计算总信号能量与高通过滤信号能量之比,并将其与阈值加以比较。结果显示众多玻璃破损声音的比值都介于 1.75 ~ 14 之间。同样,还要检查峰值数量是否介于 160 ~ 320 之间,跨零数量是否介于 95 ~ 300 之间。只有满足以上三个条件,才能确定发生了玻璃破损事件。上述三个条件中只要有一项不符合要求,玻璃破损检测器就会重启并返回活动检测状态。这些阈值与范围将需要根据房间声音质量、GBD 位置以及环境噪声等加以微调。