Fórum témák
» Több friss téma |
Cikkek » MSGEQ7 equalizer IC használata Arduino-val MSGEQ7 equalizer IC használata Arduino-val
Szerző: Fizikus, idő: Szept 23, 2013, Olvasva: 17402, Oldal olvasási idő: kb. 2 perc
Az MSGEQ7 equalizer ICAz IC adatlapjában lévő referencia kapcsolásról látható, hogy az MSGEQ7 néhány alkatrész felhasználásával már működésre bírható. Nagyon egyszerűen ráköthető az Arduino-ra, csak két digitális és egy analóg lábat kell hozzá használni.
A fenti kapcsolást egy próbanyákra építettem össze:
Az audio jelet egy műveleti erősítős DFrobot mikrofonpanel szolgáltatja, amely leírása és kapcsolási rajza az alábbi linkeken található (LINK1, LINK2): A mikrofon az MSGEQ7 panelról kapja a +5V-ot és a földet (GND). A mikrofon kimenő jelét az MSGEQ7 panel audio bemeneti lábára kötöttem. Az MSGEQ7 panel STROBE lábát az Arduino 4-es (Pin4), a RESET lábát pedig az Arduino 5-ös (Pin5) digitális lábára kötöttem, míg az MSGEQ7 panel analóg kimenetét az Arduino 5-ös analóg bemenetére (A5) csatlakoztattam. Nézzük meg kicsit részletesebben az MSGEQ7 működését. Az IC az audio jel erősségét 7 frekvenciasávon belül vizsgálja. Amint az alábbi, az adatlapból származó ábráról is látható, a frekvenciasávok kicsit átfedik egymást. A frekvenciasávok érzékenységének maximuma az alábbi frekvenciáknál van: 63 Hz; 160 Hz; 400 Hz; 1 kHz; 2,5 kHz; 6,25 kHz es 16 kHz.
Az IC az adott frekvenciasávhoz tartozó jel erősségével arányos feszültséget jelenít meg a kimenetén, amit az Arduino analóg bemenetére kötve beolvashatunk és megjeleníthetünk. Mivel az IC-nek csak 8 lába van, ezért nem tartozik mind a 7 frekvenciasávhoz külön kimeneti láb. Az IC az egyes frekvenciasávhoz tartozó kimeneti feszültségértékeket csak egyetlen lábon (a 3-as lábon) egymás utáni sorrendben, a strobe lábon kapott jelre léptetve jeleníti meg. Először a 63 Hz-hez tartozó értéket, majd a 160 Hz-hez tartozót, majd a 400 Hz-es értéket, és így tovább egészen a 16 kHz-es értékig. Ezután újra kezdi elölről a 63 Hz-hez tartozó értékkel. Ahhoz hogy ezt a folyamatos kiolvasást elvégezzük, először resetelni kell az IC-t a RESET lábra adott impulzussal (először magas szintre húzzuk, majd nullára). Ezzel tudatjuk az IC-vel hogy az első frekvenciasávval kezdje a kijelzést. Ezután a STROBE lábra alacsony jelet adunk és beolvassuk az Arduino-val az IC 3-as lábán lévő feszültséget (amit egy tömbben eltárolunk), majd a STROBE lábat magasra húzzuk. A STROBE lábra adott alacsony jel hatására az IC a következő frekvenciasávhoz tartozó feszültségértéket jeleníti meg a 3-as lábon. Ezt ismételten beolvassuk és eltároljuk az Arduino-val. A fenti strobe jel – mérés – strobe jel folyamatot még egymás után hatszor megismételve beolvassuk mind a 7 frekvenciasávhoz tartozó jelet, majd az IC-t resetelve elölről kezdjük a folyamatot.
A fentieknek megfelelően az Arduino példakód is elég egyszerű. Létrehozok egy MSGEQ7meres() nevű függvényt, ami az IC resetelése után egymás után 7-szer a STROBE lábra adott jellel lépteti az IC-t. Minden egyes strobe jel után az IC a következő frekvenciatartományhoz tartozó feszültségjelet jeleníti meg a kimeneti lábán, amit az Arduino-val egy tömbbe olvasok be és a soros porton keresztül kiiratom a számítógépre.
A különböző frekvenciasávokhoz tartozó mérési eredmények: Az MSGEQ7 IC működésének megértése után már csak valamilyen módon vizuálisan is meg kellene jeleníteni a mért adatokat. Erre egy 8x8-as LED mátrix kijelzőt fogok használni.
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |