破损玻璃检测器 (GBD)的系统设计
本文引用地址:http://www.amcfsurvey.com/article/194466.htm
软件设计规范
扩音器的模拟信号由剪切频率为 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 的信号表示图
评论