Hangérzékelés és kijelzés

Ebben a cikkben bemutatjuk hogyan lehet csatlakoztatni az Arduino mikrofon panelt, és hogyan használhatjuk fel pl hangerő érzékelésére.
Az Arduino mikrofon panel tartalmaz egy MAX4466 műveleti erősítőből össze építet előerősítő áramkört is. A panel tápfeszültsége rugalmasan állítható így sokféle audió alkalmazáshoz felhasználható.

A panel műszaki adatai: Tápfeszültség: 2.4-5V
Frekvencia átvitel: 20Hz-20kHz
Állítható erősítés: 25x-125x

A próbapanelos használathoz a mikrofon panelra egy három kivezetéses tüskesort kell forrasztani.

A három kivezetés: GND ----> GND
VCC ----> 3.3V
OUT ----> A0 (analóg bemenet 0.) (AUD)


A kapcsolás ennél nem is lehetne egyszerűbb:

A VCC lehet 2.4-5V-ig bármekkora, de érdemes az Arduino 3.3V tápkimenetéhez csatlakoztatni
a mikrofont mert így érhető el a legzajmentesebb bevitel.
A mikrofon modul az érzékelt hangszintet átalakítja változó feszültség értékekké, ezt feldolgozza
a mikrovezérlőnk majd továbbítja az értéket a soros monitora.


A forráskód:

Example Sound Level Sketch for the
Adafruit Microphone Amplifier
****************************************/

const int sampleWindow = 50; // minta vételező ablak szélessége 50ms ez 20Hz frekvencia állandóként tárolva
unsigned int sample;//minta változó létrehozása

void setup()
{
Serial.begin(9600);//soros monitor bitsebességének beállítása
}

void loop()
{
unsigned long startMillis= millis(); // a futási idő ms-ban
unsigned int peakToPeak = 0; // csúcstól csúcsig mintavételezési szint

unsigned int signalMax = 0;//jel max érték
unsigned int signalMin = 1024;//min érték

// adatokat gyűjt 50ms-enként
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);//analóg érték beolvasása a mikrofonról
if (sample < 1024) // ha a beolvasott érték kisebb mint 1024
{
if (sample > signalMax)// és ha nagyobb mint 0
{
signalMax = sample; // akkor mentsd el a signalMax változóba a beolvasott értéket
}
else if (sample < signalMin)// különben ha beolvasott érték kisebb mint 1024
{
signalMin = sample; // akkor a signalMin-be mentsd el a beolvasott értéket
}
}
}
peakToPeak = signalMax - signalMin; // csúcstól-csúcsig hullámérték
double volts = (peakToPeak * 3.3) / 1024; //a hullám érték átkonvertálva Volt-ba

Serial.println(volts);// kiíratás a soros monitorra
}

Kiírjuk a soros monitorra a mikrofonnal mért adatokat feszültség szintekként.
Ehez a kapcsoláshoz hozzáépíthetjük az lcd kijelzőt vagy a nyolc ledes shift regisztert így akár
egy hordozható hangerőmérőt is kaphatunk. Jó szórakozást a továbbiakban.