2013/04/07

Arduino練習:電容式麥克風與運算放大器LM358

買了一本好書,超圖解Arduino互動設計入門,照著書裡第6章的內容,練習電容式麥克風的用法,因為訊號太微弱,所以需要加上運算放大器(operational amplifier,op-amp),LM358這顆IC裡有兩組,我只用了一組。

我用的Arduino板子是Uno R3,軟體開發環境是1.0.4版。

電路圖與程式碼可到這裡下載

所需材料:
  • 電容式麥克風,1個
  • LM358,1個
  • 電阻,2.2K歐姆(紅紅紅)、1K歐姆(棕黑紅)、68K歐姆(藍灰橙)、100K歐姆(棕黑黃),各1個
  • 電容,0.1μF(104),1個
我買的電容式麥克風,有兩隻腳,與外殼相連的那隻是接地,另一隻要接正極。


電路圖如下:
將Arduino板子的5V與GND接到麵包板。

從5V串聯2.2K限流電阻後,接到麥克風的正極。

麥克風負極接地。

麥克風正極,接0.1μF電容後,然後要接到兩個地方,一條接到358的腳位3(非反向輸入);另一條接68K電阻後接地。這裡的電容與電阻形成high-pass filter,只允許23Hz以上的聲音訊號通過。

358的腳位2(反向輸入)接1K電阻後接地。

358的腳位1(輸出),要接到兩個地方,一條接到Arduino的類比輸入腳位A0,我們將從這裡讀取;另一條接100K電阻後接到358的腳位2。

358的腳位8,接5V。
358的腳位4,接地。

358的腳位5、6、7,這是另一組運算放大器,本篇不使用。


看圖接線,應該比較簡單。


照片,還滿亂的。


特寫。


以上是硬體的部份,軟體的部份,我只寫了個簡單的測試程式。

// 類比輸入腳位
int MIC_PIN = A0;

void setup()
{
  Serial.begin(115200);
  pinMode(MIC_PIN, INPUT);    
}

int count = 0; // 計算收到幾次的高音量

void loop()
{
  int mic = analogRead(MIC_PIN); // 讀取麥克風輸出
 
  if(mic >= 500){ // 這裡寫死500,您可試試別的值
    count++;
    Serial.print("mic >= 500, count=");
    Serial.println(count);
  }
}

然後執行,平時音量低時沒有輸出,若發出噪音或拍手,便會在序列埠監控視窗裡看到輸出。

我拍了一次手,程式偵測到五次。


因為會偵測到好幾次,類似於開關的彈跳(bounce)問題,若想要以拍手來控制LED明滅,就需要解決這個問題,可參考「超圖解Arduino互動設計入門」書裡的作法,我就懶得弄了,哈哈。

書裡還提及,以這個範例而言,訊號的電壓並不會超過5V,所以Arduino針腳可承受,但若想要加入過電壓保護電路,可加入齊納二極體(Zener diode),使電壓保持在一定的數值。


參考資料:

2013/04/06

超棒Arduino入門書:超圖解Arduino互動設計入門

書名:超圖解Arduino互動設計入門
作者:趙英傑
出版社:旗標
出版日期:2013/04/03

相當棒的Arduino入門書,淺顯易懂,篇幅充足,值得推薦。

從介紹Arduino與基本電子知識開始,以精美繪圖輔助說明,相當費工,不得不佩服作者;然後是基本的Arduino程式撰寫,包括LED、開關、序列埠、七段顯示器、光敏電阻、等等,在適當的時候加入C語言的介紹,有理論敘述,也有相當多的小專案,從實作中學習;慢慢地加重電子專案的難度與規模,介紹各種感測器與致動器,諸如溫濕度感測器、超音波感測器、馬達、紅外線、藍牙,甚至還結合其他技術品,譬如Wii搖桿、Flash、網站伺服器、家電控制、RFID、MIDI電子鼓,內容非常豐富。

底下是我拍的幾張照片,畫質很差,如果你想要更多圖、多了解一點,可到作者的網站看看此書圖文並茂的介紹補充資料與勘誤及目錄大綱書本封面插圖與程式字體之Hack

超圖解,圖真的非常多非常精美。


從最基本的電子學開始介紹。


精緻的手工繪圖。


一看就懂的電路圖。


按圖施工,保證成功。