在敏感度、訊噪比(SNR)和回流焊接等方面,駐極體電容式麥克風(ECM)性能不斷提高,這種體積小、頻率寬、高保真和成本低的產品迅速的在消費電子領域得到普及。

最近我在DIYhacking上看到有位叫Robin Mitchell的作者,利用麥克風和PIC18,自己做了一個檢測昆蟲的demo,通過檢測嗡嗡聲來發現各類昆蟲。

20170829NT02P1 昆蟲檢測demo。

這個Demo看起來很簡單,所需的材料如下: •1K電阻(R3,R4) •5.6K電阻(R5) •10K電阻(R1) •56K電阻(R2) •10nF電容器(C1,C2,C3,C5) •10μF電容(C4) •1N5817二極體(D1) •LED(D2) •駐極體電容式麥克風(MK1) •7805線性穩壓器(U3) •LM358(U1) •PIC18F1220(U2)

20170829NP02P2 昆蟲檢測器原理電路圖。

工作原理?

檢測飛蟲有很多種方法。這個DIY的原理是:當檢測到特定頻率時,該電路將利用PIC的處理能力來打開LED燈。幸運的是,蒼蠅,蜜蜂和黃蜂,通常會產生一個頻率在150~250Hz之間的嗡嗡聲,很容易被PIC檢測到。

為了使該電路工作,它有兩個主要元件:麥克風放大器和主要的PIC控制器。因此,第一步是放大檢測到的音訊,以便PIC處理。

用駐極體電容式麥克風放大聲音

駐極體麥克風生成的輸出包含音訊訊號,但同時帶有大的直流偏移。這個可以使用電容器C1去除,但是這樣做會在U1A的輸入端形成一個負電壓。為了去除形成的這些負電壓,把D1連接在了電容和地之間(當電容為負時,D1將正向偏置,從而釋放負電壓)。

這很重要,因為如果任何一個輸入變得比連接到0V的負電源更低,LM358就可能出現意外。

音訊訊號現在只包含正峰值,由U1A放大。U1A由R2和R4配置而成,作為增益大約為50的非反相放大器(實數值接近57,但不是重要)。然後,放大的訓號由U1B緩衝,然後將其饋送到AN0(PIC上的模擬接腳)。

用PIC來檢測頻率

但是,當PIC運行檢測碼時,魔法誕生了。 PIC的工作是檢測昆蟲發出的典型蜂鳴聲的頻率(150~250Hz),如果檢測到該頻率,則打開一個LED。

第一部分程式碼(SECTION 1)是用來啟用TIMER0,ADC,TMR0中斷和配置各種IO接腳的。第二部分啟動主程序迴圈,在大多數(如果不是全部)PIC專案中可以找到此迴圈。

現在,為了確定輸入音訊訊號的頻率可能看起來很複雜,但可能是最簡單的方法。

如果需要測量圖形上正弦波的頻率,則很可能測量波形上的一個點與下一個振盪的相同點之間的距離。儘管有圖的話這做起來很簡單,但是如果所有的都是瞬時值(並且沒有足夠的RAM來儲存所有這些點),那測起來就很難。但如果知道輸入波形將以類似的方式重複,可以查找「過零zero-crossing」。

換句話說,如果您知道傳入的音訊訊號會以一個值的形式發生振盪,那麼可以查看輸入資料何時跨越這一點。如果這樣做,可以用過碼錶,等待輸入訊號再次穿過該點。當它再次穿越時,可以停止碼錶,然後就能確定波的頻率了。

20170829NP02P3

然而,這不太實用,並且將非常容易受雜訊影響,因此使用遲滯現象(考慮下施密特觸發器 )來確定來自麥克風的輸入類比訊號是否已經越過「中間」。

滯後有兩個狀態——低和高。如果處於低電平狀態,則當輸入訊號低於低閾值時,滯後狀態將切換到高電平狀態。當這種情況發生時,訊號現在需要跨越上限閾值以使滯後狀態切換回低電平狀態。

20170829NP02P4

因此,主回路首先啟動ADC讀數,並等待輸入訊號是否超過閾值電平(由滯後狀態決定)。當它超過時,TMR0被清零並開始測量,然後進入第二個磁滯回線。

當訊號越過另一個閾值電平時,計時器被關閉。此時,我們要做的就是檢查計時器是否在一個特定的範圍內(這對應於想要的頻率),如果是,就意味著已經檢測到了這個嗡嗡聲!

根據環境和設置,可能需要調整低閾值、高閾值和範圍值(timerValue > 50)且(timerValue < 150)的值,因為所有電路都不一樣。

要測試電路,最好在內建揚聲器的電腦上載入音訊產生器,並透過不同的頻率直到電路反應。 從那裡,可以進行小調整,直到它能對嗡嗡聲產生可靠地響應。

對於實際使用,可能需要增加或添加放大倍數,因為現實生活中的嗡嗡聲很小。

(本文原出於EDN China:)