基礎(chǔ)知識之麥克風
1. 什么是麥克風?
聲音在我們的日常生活中廣泛存在,我們可以使用聲音來制作許多互動控制,例如走廊上的聲控燈。通過聲音傳感器,在黑色檢測頭(麥克風)前拍手或大聲說話,您就可以通過聲音控制燈光。聲音傳感器相當于一個麥克風。它可以感應(yīng)聲音并將感應(yīng)到的聲音轉(zhuǎn)換成相應(yīng)的模擬信號輸出出來。
本文引用地址:http://www.ex-cimer.com/article/202403/456864.htm2. 麥克風是如何工作的?
麥克風是換能器的一個例子,換能器是一種將信息從一種形式轉(zhuǎn)換為另一種形式的設(shè)備。聲音信息以氣壓的形式存在,麥克風將這些信息轉(zhuǎn)換成電流模式。大多數(shù)麥克風采用光調(diào)制、壓電產(chǎn)生、電容變化和電磁感應(yīng)等技術(shù),從機械振動中產(chǎn)生電壓信號。不同類型的麥克風使用不同的方法來轉(zhuǎn)換能量。然而,所有的類型都包括一個隔膜,這是一個薄的材料,當它被聲波擊中時振動。振膜的振動引起麥克風周圍部件的振動,這些振動的轉(zhuǎn)換以聲音信號的形式傳遞。在日常生活中,最常用的麥克風是動圈式麥克風和電容式麥克風。
1)動圈式麥克風(Dynamic Microphone)
動圈式麥克風的工作原理是電磁感應(yīng),基本的構(gòu)造包含線圈、振膜、永久磁鐵三部分。它是多功能的,用途非常廣泛。當聲波進入麥克風時,聲波觸發(fā)薄金屬隔膜和連接在其上的線圈的運動。麥克風內(nèi)的磁鐵反過來在線圈周圍產(chǎn)生磁場,根據(jù)法拉第定律以及楞次定律,線圈在磁場中的運動使電流流動。其原理與公共服務(wù)企業(yè)的發(fā)電原理相同,只是實現(xiàn)的規(guī)模是口袋大小。重要的是要記住,電流是由隔膜的運動產(chǎn)生的,而電流的大小是由運動的速度決定的。
動圈式麥克風主要處理的是沒有失真的高亮聲音,并不適合遠距離或者音量小的聲音源。動圈式麥克風因為含有線圈和磁鐵,不能做的像電容式麥克風那樣輕便,并且靈敏度較低,在高低頻響應(yīng)表現(xiàn)較差,因此不適合用于弦樂。優(yōu)點是聲音較為柔潤,適合用來收錄人聲。
2)電容式麥克風(Condenser Microphone)
電容式麥克風的工作原理是靜電場。它并沒有線圈及磁鐵,靠的是電容兩片隔板間距離的改變來產(chǎn)生電壓變化。一個典型的電容式麥克風將包括一個有兩個極板的電容器,在它們之間施加電壓。兩個極板中的一個往往很輕,充當隔膜。當隔膜被聲波擊中時,它就開始振動。結(jié)果,兩個極板之間的距離改變,從而改變了電容。根據(jù)電容的特性C ∝ A/d (A是隔板面積,d為極板距離)。當兩塊極板距離發(fā)生變化時,電容值C會產(chǎn)生改變,在經(jīng)由Q = C?V(Q為電量,在電容式麥克風中電容極板電壓會維持一個定值)可知,當C改變時,就會造成電量Q的改變。當極板靠近時電容值C增加,就會產(chǎn)生電流。當極板進一步分開時,電容值C減小并形成放電電流。因為在電容式麥克風中需要維持固定的極板電壓V,所以此類型麥克風需要額外的電源才能運作,一般用電池或幻象電源(Phantom Power)供電。
電容式麥克風振膜輕薄,靈敏度高,對高頻響應(yīng)表現(xiàn)好,因此適合收錄弦樂以及遠距離或者音量小的聲音源,常用于高品質(zhì)錄音;電容式麥克風因為不含線圈和磁鐵,所以可以做到小體積。但由于極頭的電容C很小,輸出阻抗很高,所以一般需要前置放大器電路,形成阻抗轉(zhuǎn)換器,將高阻抗轉(zhuǎn)變?yōu)榈妥杩馆敵觥k娙菔禁溈孙L工藝復(fù)雜,牢靠性差,需要較好的防震防摔,且需要較高的直流偏置電壓,所以也存在待機功耗。
3)駐極體麥克風(Electret microphone)
駐極體麥克風這種設(shè)計是電容式麥克風的一種常見變體,它是一種基于靜電電容的麥克風,它通過使用永久帶電的材料消除了對極化電源的需要。駐極體是一種穩(wěn)定的介電材料,具有永久嵌入的靜電偶極矩(由于材料的高電阻和化學(xué)穩(wěn)定性,它在數(shù)百年內(nèi)不會衰減)。這個名字來自于靜電和磁鐵;通過在一塊鐵中排列磁域來類比磁鐵的形成。駐極體通常是先熔化合適的介電材料,如含有極性分子的塑料或蠟,然后讓它在強大的靜電場中重新凝固。電介質(zhì)的極性分子與靜電場的方向?qū)R,產(chǎn)生永久的靜電“偏壓”。目前常用駐極體材料有聚丙烯(PP)、聚全氟乙丙烯(FEP)等。聚丙烯(PP)有較高的電荷密度,但耐潮性差。聚全氟乙丙烯(FEP)具有較高電荷密度,且穩(wěn)定性好,耐高溫,所以被廣泛應(yīng)用于電聲器件中。
與電容式麥克風類似,聲波振動會引起駐極體薄膜振動,進而產(chǎn)生位移,位移的變化其實是改變了電容兩個極板之間的距離,引起了電容的容量發(fā)生變化。而駐極體上的電荷數(shù)量始終保持恒定,根據(jù)公式Q = C?V,我們可以知道,電容器兩端的電壓U會隨電容容量實時變化,從而實現(xiàn)了聲-電的變換。 并且,它的電容器的容量也很小,輸出阻抗很高,因此為提高帶負載能力也許要連接一個阻抗變換器,通常會內(nèi)置一個場效應(yīng)管電路進行阻抗變換。因此仍需以低電壓供電(常規(guī)電壓是1.0V-10V),下圖是一個經(jīng)典的駐極體麥克風前置放大電路。
雙端駐極體膠囊包含一個場效應(yīng)管,必須由外部電源電壓V+供電。電阻器設(shè)置增益和輸出阻抗。音頻信號出現(xiàn)在輸出端,經(jīng)過直流阻塞電容。此種麥克風目前廣泛使用在消費電子產(chǎn)品之中。
4)微機電麥克風(MEMS Microphone)
微機電麥克風指使用微機電(MEMS,MicroElectrical-Mechanical System)技術(shù)做成的麥克風,也稱麥克風芯片(microphone chip)或硅麥克風(silicon microphone)。MEMS麥克風在同一半導(dǎo)體晶圓上包含電子元件和機械元件。它有一個傳感器和一個專用集成電路(ASIC)集成到一個由機械罩保護的單一組件。在外殼或基礎(chǔ)PCB上的一個小孔允許聲音進入麥克風。它是頂部端口或底部端口,取決于孔是否在頂蓋或PCB上。微機電麥克風的壓力感應(yīng)膜是以微機電技術(shù)直接蝕刻在硅芯片上,此集成電路芯片通常也集成入一些相關(guān)電路,如前置放大器。大多數(shù)微機電麥克風的設(shè)計,在基本原理上是屬于電容式麥克風的一種變型,因此工作原理也為電容值的變化。
微機電麥克風又可以分為數(shù)字和模擬兩種類型,下圖為兩種類型的內(nèi)部比較。
首先說一下數(shù)字麥克風,內(nèi)部框圖如下圖所示。
如上圖所示,微機電麥克風常內(nèi)置模擬數(shù)碼轉(zhuǎn)換器,ADC的數(shù)字輸出可以有兩種可能的格式:脈沖密度調(diào)制(PDM)或I2S。PDM麥克風只需要一個時鐘和數(shù)據(jù)線,而I2S麥克風包含PDM麥克風中的所有數(shù)字電路,還包含抽取濾波器和串口。數(shù)字麥克風與PDM是最常見的接口。原始數(shù)字音頻信號直接輸出到主控芯片,設(shè)計信號鏈的復(fù)雜性將大大降低,從而使產(chǎn)品在尺寸、成本、功耗和抗干擾方面保持優(yōu)勢。
再來說一下模擬麥克風,如下圖所示,該電路本質(zhì)上是一個放大器,具有用于模擬麥克風的特定輸出阻抗。
微機電麥克風主要應(yīng)用于部分的手機、PDA等小型移動產(chǎn)品,此類小型麥克風以往使用的幾乎均是駐極體電容麥克風。微機電麥克風吸取了半導(dǎo)體技術(shù)的優(yōu)點,結(jié)合了制作重復(fù)性高、聲音性能優(yōu)異、擴展性強等特點。因此,可以充滿信心地說,在不久的將來,傳統(tǒng)的ECM(駐極體電容傳聲器)將被低成本、高性能的MEMS所取代。
5)小結(jié)
除了上述介紹的麥克風之外,還有像如鋁帶式麥克風(Ribbon Microphone)、碳式麥克風(Carbon Microphone)等各種各樣的麥克風,它們的工作原理可能各有不同,但是根本目的就是將聲音信號轉(zhuǎn)換為電流信號。
3. 如何應(yīng)用麥克風?
動圈式,電容式,鋁帶式麥克風主要應(yīng)用于日常生活中的聲音錄制。
動圈式最為常見,比較適合于錄制鼓和電吉他,如上圖所示。
電容式麥克風主要負責在錄音室等安靜環(huán)境下錄制人聲,如上圖所示。
鋁帶式麥克風可以同時感知正反兩個方向的聲壓,所以可以僅用一個麥克風就可以清晰的同時錄制吉他和人聲(兩個方向)的聲音,如上圖所示。
動圈式,碳式和電容式麥克風不是板級麥克風傳感器,而MEMS,駐極體和壓電麥克風由于其微型結(jié)構(gòu)而用于pcb,因此后者更適用于消費電子產(chǎn)品的板級麥克風傳感器,因此,下面來著重探討用于消費電子產(chǎn)品的板級麥克風傳感器。
下圖為MEMS和駐極體麥克風對比。
MEMS和其他板級麥克風傳感器在各種消費,商業(yè)和工業(yè)產(chǎn)品中都有應(yīng)用。
選擇合適的元件是設(shè)計電子電路的必要步驟。然而,不適當?shù)牟考x擇可能導(dǎo)致性能問題,甚至在極端情況下燒壞。板級麥克風也是如此。因此,產(chǎn)品設(shè)計師在選擇板級麥克風進行電子電路設(shè)計時必須考慮幾個因素。
以MEMS麥克風為例的一些基本特征和因素如下:
信噪比(SNR)
信噪比是指麥克風的靈敏度與其本底噪聲之間的比率,是選擇麥克風時最重要的考慮因素之一。典型MEMS麥克風的信噪比范圍在55dB到66dB之間。
靈敏度(Sensitivity)
靈敏度,定義為模擬輸出電壓或數(shù)字輸出值與輸入壓力之比,是任何麥克風的基本特征。MEMS麥克風能檢測到的最低聲壓級是它的靈敏度。對MEMS傳聲器在1kHz頻率和1Pa聲壓下的靈敏度進行了測試。模擬MEMS麥克風的靈敏度以mVRMS/Pa或dBV/Pa表示,表達式如下圖所示。
其中OutputAREF為1000mv /Pa (1v /Pa)參考輸出比。
而數(shù)字MEMS麥克風的靈敏度以dBFS表示(相對于滿量程輸出)。如下圖所示。
其中OutputpREF是滿量程數(shù)字輸出電平。需要注意的是,數(shù)字麥克風的靈敏度——以dBFS(相對于數(shù)字滿量程的分貝)為單位,并沒有那么簡單。單位的不同指向一個微妙的對比數(shù)字麥克風和模擬麥克風的靈敏度定義。對于具有電壓輸出的模擬麥克風,對輸出信號大小的唯一限制是系統(tǒng)電壓電源的實際限制。雖然它可能不適合大多數(shù)設(shè)計,但是沒有物理原因解釋為什么模擬麥克風不能有20dBV的靈敏度,10V輸出信號作為參考電平輸入信號。只要放大器、轉(zhuǎn)換器和其他電路能夠支持所需的信號電平,這種靈敏度就可以實現(xiàn)。數(shù)字麥克風的靈敏度不太靈活;它取決于一個單一的設(shè)計參數(shù),最大聲學(xué)輸入。只要全量程數(shù)字映射到麥克風的最大聲學(xué)輸入(合理的映射),靈敏度必須簡潔表示為是這個最大聲學(xué)信號和94dBSPL參考之間的差。因此,如果一個數(shù)字麥克風的最大聲壓級是120dB,那么它的靈敏度將是26dBFS (94dB-120dB)。對于給定的聲學(xué)輸入,沒有辦法調(diào)整設(shè)計以使數(shù)字輸出信號更高,除非最大聲學(xué)輸入降低相同的量。 高靈敏度麥克風并不總是優(yōu)于低靈敏度麥克風。靈敏度表示麥克風的特性,但不一定表示其質(zhì)量。 本文了解麥克風的靈敏度解釋了在麥克風選擇過程中,了解麥克風靈敏度對于任何工程都是至關(guān)重要的。
功耗(Power consumption)
功耗是最關(guān)鍵的設(shè)計考慮因素之一,特別是對于便攜式和手持電子設(shè)備。因此,選擇高能效的MEMS麥克風至關(guān)重要。與傳統(tǒng)麥克風相比,MEMS麥克風功耗更低,因為所有電路都被封裝在一個IC封裝中。此外,模擬MEMS傳感器具有更少的層級,所以模擬MEMS傳感器比數(shù)字傳感器消耗更少的能量。
噪聲基線(Noise floor)
噪聲、EMI和嗡嗡聲是高頻電子電路中最大的挑戰(zhàn)。輸出信號的失真會導(dǎo)致錯誤的結(jié)果和較差的質(zhì)量。在安靜的環(huán)境中,輸出信號中的噪聲量被稱為麥克風的噪聲底。噪聲水平直接影響麥克風的信噪比。模擬麥克風比數(shù)字麥克風更容易受到噪聲的影響。MEMS麥克風具有片上信號調(diào)理電路,以盡量減少噪音和干擾。
失真(Distortion)
總諧波失真(THD)是指信號與其實際波形的偏差。音頻系統(tǒng)中的信號失真會導(dǎo)致聲音質(zhì)量差和用戶體驗差。信號失真最常見的原因是各種各樣的噪聲和干擾。
頻率響應(yīng)(Frequency response)
頻率響應(yīng)是麥克風在不同頻率下靈敏度的變化。如果一個麥克風要用于講話,一個語音麥克風,它必須有很大的低音增益,因為人類的聲音是在低頻。如果麥克風要用來錄制音樂,它必須從低音到高音有很大的增益,因為音樂通常有從低到高的所有音調(diào)。這就是為什么麥克風頻率響應(yīng)運行。下面是在兩個耳機上執(zhí)行的麥克風頻率響應(yīng)示例圖。
基于這些數(shù)據(jù),我們現(xiàn)在可以看到麥克風在從20Hz到20KHz的所有頻率下產(chǎn)生的增益。我們看到,NC-250(藍線)在帶寬范圍內(nèi)的所有頻率(20Hz至30Hz和1.5KHz至約4KHz)都具有優(yōu)于通用耳機(紅線)的增益。所以除了那些非常低的頻率和中頻,NC-250比普通耳機有更好的增益。
如上圖所示,通常情況下,麥克風頻率響應(yīng)所期望的是平坦響應(yīng)。在這種響應(yīng)中,麥克風對低頻和高頻產(chǎn)生大致相同的增益。為什么要這樣做呢?因為當我們處理音頻時,比如音樂,它包含低音和高音,我們不希望在我們通過揚聲器聽音樂時,其中一個播放的聲音比另一個大,或者在我們錄制音樂時,錄制的聲音比另一個大。如果麥克風放大低音比高音更大,它將以更大的音量錄制低音。這會產(chǎn)生不平衡的錄音。MEMS傳感器工作滿意的典型頻率范圍在100Hz和10khz之間。因此,高性能MEMS麥克風在整個可聽范圍內(nèi)(即20 Hz至20 kHz)提供平坦的頻率響應(yīng)。
電源抑制(Power supply rejection)
PSR是選擇MEMS麥克風的另一個關(guān)鍵因素。麥克風抑制電源噪聲的能力被稱為PSR。在質(zhì)量較差的麥克風中,電源噪聲經(jīng)常出現(xiàn)在輸出信號中,從而導(dǎo)致失真和音質(zhì)問題。
方向性(Directionality)
板級麥克風可以是全方位的,也可以是單向的。單向麥克風只能從一個特定的方向收集聲音,而全向麥克風可以從任何方向接收聲音。因此,麥克風的方向性是選擇特定應(yīng)用的關(guān)鍵因素。
4. 主要的麥克風供應(yīng)商
樓氏電子(Knowles Electronics):Knowles Electronics
TDK InvenSense:TDK
英飛凌科技(Infineon Technologies):Infineon Technologies
意法半導(dǎo)體(STMicroelectronics):STMicroelectronics
亞德諾半導(dǎo)體(Analog Devices):Analog Devices
5. 參考案例
原理框圖:
采用RP2040設(shè)計了一個檢測聲音的裝置,通過電位計調(diào)節(jié)蜂鳴器來模擬聲音,如果聲音超過閾值那么開發(fā)板周圍12個ws2812 RGB燈亮紅色,并將聲音顯示在oled屏幕上。
連接圖:
程序:
from machine import ADC, Pin, PWM,Timer
from board import pin_cfg
import framebuf
from time import sleep, sleep_us
from oled import oled
import random
import array
from fft import fft, f_peaks, f_peaks_amp, out_real_amp
import ws2812b
from ws2812b import PixelDisplay
import _thread
flag = 0
value_average = 0
class Sound_Oled():
def __init__(self,oled):
self.oled = oled
self.adc1 = ADC(Pin(pin_cfg.adc1))
self.buf = array.array("H", [0 for _ in range(180)])
self.fb = framebuf.FrameBuffer(bytearray(128 * 64), 128, 64, framebuf.MONO_HLSB)
def thumb_filter(self, d):
if(d < 0):
d = 0
if(d > 65535):
d = 65535
return int(d / 65535 * 63)
def shift_buffer(self):
buf = self.buf
for i in range(180 - 6):
buf[i] = buf[i + 6]
def capture_tick(self):
buf = self.buf
adc1 = self.adc1
global flag
self.shift_buffer()
for i in range(174, 180):
buf[i] = self.thumb_filter(adc1.read_u16())
if buf[i]>32 or buf[i]<30:
flag = 1
sleep_us(6)
print(flag)
def draw(self):
buf = self.buf
fb = self.fb
fb.fill(0)
for i in range(128):
if(i >= 1):
fb.line(i - 1, buf[i - 1 + 30], i, buf[i + 30], 1)
self.oled.blit(fb, 0, 20, 0)
def fft(self):
global peak
v = memoryview(self.buf)
fft(v[30:158], 128, 100)
peak = int(f_peaks_amp[1])
if peak < 30:
peak = 0
temp = 0
adc2 = ADC(Pin(pin_cfg.adc2))
pwm0 = PWM(Pin(pin_cfg.buzzer))
pwm0.duty_u16(0)
pwm0.freq(1000)
sound_oled = Sound_Oled(oled)
tick = 0
f_peaks_2 = 0
f_peaks_amp_2 = 0
oled.fill(0)
pd = PixelDisplay()
tick = 0
while True:
oled.fill(0)
sound_oled.capture_tick()
if tick % 8 == 0:
if (flag == 1) :
for i in range(12):
pd.set_color(i + 1,(255,0,0) )
pd.render()
flag = 0
else :
for i in range(12):
pd.set_color(i + 1, (0,0,0))
pd.render()
sound_oled.draw()
oled.show()
tick = (tick + 1) % 65536
sleep(0.04)
評論