在敏感度,信噪比和回流焊接等方面,驻极体电容式麦克风(ECM)性能不断提高,这种体积小,频率宽,高保真和成本低的产品迅速的在消费电子领域得到普及。

最近我在DIYhacking上看到有位叫Robin Mitchell的作者,利用麦克风和PIC18,自己做了一个检测昆虫的demo,通过检测嗡嗡声来发现各类昆虫。(疑问:麦克风灵敏度有这么高吗?)

073ednc20170825 图:昆虫检测demo。

这个Demo看起来很简单,所需的材料如下:

•1K电阻 (R3,R4) 

•5.6K电阻 (R5) 

•10K电阻 (R1) 

•56K电阻 (R2) 

•10nF电容器 (C1,C2,C3,C5) 

•10uF电容 (C4) 

•1N5817二极管 (D1) 

•LED (D2) 

•驻极体麦克风 (MK1) 

•7805线性稳压器 (U3) 

•LM358 (U1) 

•PIC18F1220 (U2) 

昆虫检测器原理图

074ednc20170825 查看大尺寸原理图请点击:wpengine

工作原理?

检测飞虫有很多种方法。这个DIY的原理是:当检测到特定频率时,该电路将利用PIC的处理能力来打开LED灯。

幸运的是,苍蝇,蜜蜂和黄蜂,通常会产生一个频率在150Hz到250Hz之间的嗡嗡声,很容易被PIC检测到。

为了使该电路工作,它有两个主要组件:麦克风放大器和主要的PIC控制器。因此,第一步是放大检测到的音频,以便PIC处理。

用驻极体麦克风放大声音

驻极体麦克风生成的输出包含音频信号,但同时带有大的直流偏移。

这个可以使用电容器C1去除,但是这样做会在U1A的输入端形成一个负电压。为了去除形成的这些负电压,把D1连接在了电容和地之间(当电容为负时,D1将正向偏置,从而释放负电压)。

这很重要,因为如果任何一个输入变得比连接到0V的负电源更低,LM358就可能出现意外。

音频信号现在只包含正峰值,由U1A放大。U1A由R2和R4配置而成,作为增益大约为50的非反相放大器(实数值接近57,但不是重要)。然后,放大的信号由U1B缓冲,然后将其馈送到AN0(PIC上的模拟引脚)。

用PIC来检测频率

但是,当PIC运行检测码时,魔法诞生了。 PIC的工作是检测昆虫发出的典型蜂鸣声的频率(150Hz至250Hz),如果检测到该频率,则打开一个LED。

第一部分代码(SECTION 1)是用来启用TIMER0,ADC,TMR0中断和配置各种IO引脚的。 第二部分启动主程序循环,在大多数(如果不是全部)PIC项目中可以找到此循环。

现在,为了确定输入音频信号的频率可能看起来很复杂,但可能是最简单的方法。

如果您需要测量图形上正弦波的频率,则很可能测量波形上的一个点与下一个振荡的相同点之间的距离。尽管有图的话这做起来很简单,但是如果您所有的都是瞬时值(并且没有足够的RAM来存储所有这些点),那测起来就很难。但如果您知道输入波形将以类似的方式重复,您可以查找“过零zero-crossing”。

换句话说,如果您知道传入的音频信号会以一个值的形式发生振荡,那么您可以查看输入数据何时跨越这一点。如果这样做,您可以用过秒表,等待输入信号再次穿过该点。当它再次穿越时,你可以停止秒表,然后就能确定波的频率了。

075ednc20170825

然而,这不太实用,并且将非常容易受噪声影响,因此使用迟滞现象(考虑下施密特触发器 )来确定来自麦克风的输入模拟信号是否已经越过“中间”。

我们的滞后有两个状态,低和高。如果我们处于低电平状态,则当输入信号低于低阈值时,滞后状态将切换到高电平状态。当这种情况发生时,信号现在需要跨越上限阈值以使滞后状态切换回低电平状态。

076ednc20170825

因此,主回路首先启动ADC读数,并等待输入信号是否超过阈值电平(由滞后状态决定)。 当它超过时,TMR0被清零并开始测量,然后进入第二个磁滞回线。

当信号越过另一个阈值电平时,定时器被关闭。此时,我们要做的就是检查定时器是否在一个特定的范围内(这对应于我们想要的频率),如果是,就意味着我们已经检测到了这个嗡嗡声!

根据您的环境和设置,您可能需要调整低阈值、高阈值和范围值(timerValue> 50)且(timerValue <150)的值,因为所有电路都不一样。

要测试电路,最好在带扬声器的计算机上加载音频发生器,并通过不同的频率直到电路反应。 从那里,您可以进行小调整,直到它能对嗡嗡声产生可靠地响应。

对于实际使用,您可能需要增加或添加放大倍数,因为现实生活中的嗡嗡声很小。

Demo中的软件代码可点击下载diyhacking

20160630000123