前一陣子,在 Youtube 看到這小東西
簡單的幾個元件,成果看起來蠻炫的,剛好也可以趁這個實作來了解如何使用麥克風和運算放大器。所以就決定馬上做一個來玩玩,不過,這個馬上似乎有點久,一晃眼,就一個月了…….XD
這個星期六日,腦海中突想想起這個小玩具,二話不說,馬上動手.....(亡羊補牢猶未晚矣...XD
麥克風大致上分成:
動圈式:參考
主要的構造是線圈(3),振膜(2),永久磁鐵(4),當聲波(1)進入麥克風時,振膜受到聲波的壓力而產生振動,與振膜連接在一起的線圈則開始在磁場中移動,因法拉第定律以及楞次定律,線圈會產生感應電流(5),進而得到聲音的變化。
電容式:
主要是靠著電容兩片隔板間距離的改變來產生電壓變化。當聲波進入麥克風,振膜(2)產生振動,而基板(3)是固定的,使得振膜和基板間的距離會隨著振動而改變,進而使得電容值改變,因此可以得到聲音的變化。
鋁帶式: 參考
一種運用電磁感應原理的動態式麥克風,在磁鐵二極間放入鋁質的帶狀金屬薄膜,此薄膜受聲音振動時,因電磁感應產生訊號。
由於麥克風所產生的訊號很微小,所以,在使用上還需要運算放大器,將麥克風的訊號放大到一定的程度,才能用一般的類比訊號偵測的方式取得輸入麥克風的聲音大小。
一顆裡面有二組放大單元,這裡只用到 pin 1,2,3 這一組。
參考 Datasheet 裡的電路設計,這個應該是比較適合我的需求
這裡可以調整 R1, R2 二顆電阻,來調整放大的倍率,算法如下
Vo = (1 +
R2/R1)*Vin
底下就是我畫的電路
然後就是準備材料囉
元件
|
數量
|
電阻- 1 K
|
1
|
電阻- 2.2 K
|
3
|
電阻- 100 K
|
1
|
電阻- 300
|
1
|
可變電阻 (740K)
|
1
|
RGB共陰LED
|
1
|
電容- 330n
|
1
|
麥克風
|
1
|
LM358
|
1
|
在努力的把元件塞啊塞後,就成了底下這個樣子了..
正面
背面
因為以相同的電壓和閃爍時間,
LED-R 較為不明顯,所以這裡用比較小的電阻值來搭配,使得 LED-R 會稍微亮一點。
完成了硬體的部份,接下來就寫程式來測試囉..
#define led_r 5
#define led_g 6
#define led_b 7
#define LED_NUM 3
int sensorPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
int ledArray[LED_NUM] = {led_r, led_g, led_b};
void setup() {
// declare the ledPin as an OUTPUT:
for(int index = 0; index < LED_NUM; index++)
{
pinMode(ledArray[index], OUTPUT);
}
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
if(sensorValue > 500)
{
int lednum = 0;
lednum = random(0,LED_NUM);
digitalWrite(ledArray[lednum], HIGH);
delay(10);
digitalWrite(ledArray[lednum], LOW);
}
}
程式不難,只是單純偵測類比訊號,判斷是否大於 500 ,然後再取得一個亂數值,依這個值決定要亮那個顏色的 LED。
不多說,來 Demo...
不多說,來 Demo...
沒有留言:
張貼留言