- Szükséges anyagok:
- Kördiagramm:
- Regressziós módszer alkalmazásával a dB kiszámítása az ADC értékből:
- Arduino program a zajszint mérésére dB-ben:
- Az Arduino zajszintmérő működése:
- Erősítő szűrőkkel:
A zajszennyezés a nagy népsűrűség miatt valóban egyre fontosabbá vált. Egy normális emberi fül 0dB és 140dB közötti hangot hallhat, amelyben a 120dB és 140dB közötti zajszintet tekintik zajnak. A hangosságot vagy a hangszintet általában decibelben (dB) mérik, vannak olyan készülékeink, amelyek mérni tudnák a hangjeleket dB-ben, de ezek a mérők kissé drágák, és sajnos nincs egy dobozon kívüli érzékelő modulunk a hangszint decibelben történő mérésére. És nem gazdaságos drága mikrofonokat vásárolni egy kis Arduino projekthez, amelynek mérnie kellene a hangszintet egy kis tanteremben vagy nappaliban.
Tehát ebben a projektben egy normál Electret Condenser mikrofont fogunk használni az Arduinóval, és megpróbáljuk dB-ben mérni a hang- vagy zajszennyezés szintjét a lehető legközelebb a tényleges értékhez. Normál erősítő áramkört fogunk használni a hangjelek felerősítésére és az Arduino felé történő táplálására, amelyben regressziós módszerrel kiszámítjuk a hangjeleket dB-ben. Annak ellenőrzésére, hogy a kapott értékek helyesek-e, használhatjuk a „Sound Meter” android alkalmazást, ha jobb mérője van, akkor ezt kalibrálhatja. Ne feledje, hogy ennek a projektnek nem célja a dB pontos mérése, és csak a tényleges értékhez a lehető legközelebb eső értékeket ad.
Szükséges anyagok:
- Arduino UNO
- Mikrofon
- LM386
- 10K változó POT
- Ellenállások és kondenzátorok
Kördiagramm:
Ennek az Arduino zajszintmérőnek az áramköre nagyon egyszerű, amelyben az LM386 Audio erősítő áramkört alkalmaztuk a kondenzátoros mikrofonból érkező jelek felerősítésére és az Arduino analóg portjához történő továbbítására. Ezt az LM386 IC-t már használtuk kisfeszültségű hangerősítő áramkör felépítéséhez, és az áramkör nagyjából ugyanaz marad.
Ennek a bizonyos op-erősítőnek az erősítése 20 és 200 között állítható egy ellenállás vagy kondenzátor használatával az 1. és 8. tűn át. Ha szabadon maradnak, az erősítést alapértelmezés szerint 20-ra állítják. Projektünk során az áramkör által elérhető legnagyobb nyereséget érjük el, ezért 10uF értékű kondenzátort használunk az 1. és 8. érintkező között, vegye figyelembe, hogy ez a tű polaritásra érzékeny, és a kondenzátor negatív tűjét a 8. érintkezőhöz kell csatlakoztatni. áramkört az Arduino 5 V-os tűje táplálja.
A C2 kondenzátort a mikrofon egyenáramának szűrésére használják. Alapvetően, amikor a mikrofon hangot érzékel, a hanghullámok átalakulnak AC jelekké. Ehhez az AC jelhez némi egyenáram társulhat, amelyet ez a kondenzátor szűr. Hasonlóképpen, még az amplifikáció után is egy C3 kondenzátort használnak az amplifikálás során esetlegesen hozzáadott DC zaj szűrésére.
Regressziós módszer alkalmazásával a dB kiszámítása az ADC értékből:
Ha készen állunk az áramkörünkre, csatlakoztathatjuk az Arduino-t a számítógéphez, és feltölthetjük az „Analog Read Serial” példa programot az Arduino-tól annak ellenőrzésére, hogy érvényes ADC értékeket kapunk-e a mikrofonunkról. Most ezeket az ADC értékeket kell dB-re konvertálnunk.
Eltérően más értékektől, például a hőmérséklet vagy a páratartalom mérésétől, a dB mérése nem egyszerű feladat. Mivel a dB értéke nem lineáris az ADC-k értékével. Kevés módon érhet el, de minden lehetséges lépés, amelyet megpróbáltam, nem hozott jó eredményeket. Itt olvashatja el ezt az Arduino fórumot, ha ki akarja próbálni.
Alkalmazásomhoz nem volt szükségem nagy pontosságra a dB-értékek mérése közben, és ezért úgy döntöttem, hogy az ADC-értékek dB-es értékekkel történő közvetlen kalibrálásának egyszerűbb módját választottam. Ehhez a módszerhez szükségünk lesz egy SPL mérőre (az SPL mérő olyan eszköz, amely képes leolvasni a dB értékeket és megjeleníteni), de sajnos nekem nem volt ilyenem, és biztos, hogy a legtöbben nem. Tehát használhatjuk a „Sound meter” nevű androidos alkalmazást, amelyet ingyen letölthettek a játékboltból. Sok ilyen típusú alkalmazás létezik, és bármit letölthet, amelyet választott. Ezek az alkalmazások a telefon beépített mikrofonjával érzékelik a zajszintet, és azt mobilunkon jelenítik meg. Nem túl pontosak, de biztosan megfelelnek a feladatunknak. Tehát kezdjük azzal, hogy telepítjük az Android alkalmazást, az enyém, amikor kinyitotta, valami ilyesmit nézett ki az alábbiakban
Mint korábban mondtam, a dB és az analóg érték közötti kapcsolat nem lesz lineáris, ezért ezt a két értéket különböző időközönként kell összehasonlítanunk. Csak jegyezze fel a képernyőn megjelenő ADC értékét a mobiltelefonján megjelenő különböző dB-ekhez. Körülbelül 10 olvasmányt vettem, és az alábbiakban így néztek ki, lehet, hogy kicsit eltér
Nyisson meg egy excel oldalt, és írja be ezeket az értékeket, mostantól az Excel segítségével fogjuk megtalálni a fenti szám regressziós értékeit. Előtte ábrázoljunk egy grafikont, és ellenőrizzük, hogyan viszonyulnak mindkettőhöz. Az enyém alább nézett ki így.
Mint láthatjuk, a dB értéke nem lineárisan függ össze az ADC-vel, vagyis nem lehet közös szorzó az összes ADC-értékre az egyenértékű dB-értékek megszerzéséhez. Ebben az esetben alkalmazhatjuk a „lineáris regresszió” módszert. Alapvetően ezt a szabálytalan kék vonalat alakítja át a lehető legközelebbi egyenesre (fekete vonal), és megadja nekünk az egyenes egyenletét. Ezzel az egyenlettel meg lehet találni a dB egyenértékű értékét az ADC minden olyan értékéhez, amelyet az Arduino mér.
Az excelben van egy plug-inünk az adatelemzéshez, amely automatikusan kiszámítja az értékkészlet regresszióját és közzéteszi annak adatait. Nem foglalkozom azzal, hogy miként kell ezt az excellel megvalósítani, mivel kívül esik a projekt keretein, emellett könnyű neked is a Google és a tanulás. Miután kiszámolta az érték regresszióját, az excel megad néhány olyan értéket, amely az alábbiakban látható. Csak az alábbiakban kiemelt számok érdekelnek.
Miután megkapta ezeket a számokat, képes lesz az alábbi egyenlet kialakítására
ADC = (11,003 * dB) - 83,2073
Amiből levezethető a dB
dB = (ADC + 83,2073) / 11,003
Lehet, hogy saját egyenletét kell vezetnie, mivel a kalibrálás eltérhet. Tartsa azonban biztonságban ezt az értéket, mert szükségünk lesz rá az Arduino programozása során.
Arduino program a zajszint mérésére dB-ben:
A dB mérésére szolgáló teljes program az alábbiakban található, néhány fontos sort az alábbiakban ismertetünk
Ebben a fenti két sorban leolvassuk az A0 érintkező ADC értékét, és dB-re konvertáljuk az imént levezetett egyenlet segítségével. Lehet, hogy ez a dB-érték nem felel meg a valódi dB-értéknek, de jóval közel marad a mobilalkalmazásban megjelenített értékekhez.
adc = analóg olvasás (MIC); // Olvassa le az ADC értéket a dB = (adc + 83.2073) / 11.003 erősítőből; // Konvertálja az ADC értéket dB-be regressziós értékek segítségével
Annak ellenőrzésére, hogy a program megfelelően működik-e, hozzáadtunk egy LED-et a digitális 3-as csaphoz, amely 1 másodpercig magasra megy, amikor az Arduino 60dB feletti hangos zajt méri.
if (dB> 60) {digitalWrite (3, HIGH); // kapcsolja be a LED-et (HIGH a feszültségszint) késleltetés (1000); // várjon egy második digitalWrite-t (3, LOW); }
Az Arduino zajszintmérő működése:
Miután elkészült a kóddal és a hardverrel, töltse fel a kódot, és nyissa meg a soros monitort, hogy megnézze az Arduino által mért dB értékeket. Ezt a kódot a szobámban teszteltem, ahol nem volt nagy zaj, kivéve a kinti forgalmat, és az alábbi értékeket kaptam a soros monitoromon, és az android alkalmazás is valami ehhez közeli képet mutatott
A projekt teljes kidolgozása az oldal végén található videóban található. A vetítéssel felismerheti a hangot a helyiségben, és ellenőrizheti, hogy van-e valamilyen tevékenység, vagy mennyi zaj keletkezik az egyes tantermekben, vagy valami hasonló. Most készítettem egy LED-et, amely 2 másodpercig magasra emelkedett, ha 60dB fölött van hangfelvétel.
A munka furcsa módon kielégítő, de biztosan felhasználható projektekhez és más alapvető prototípusokhoz. Néhány újabb ásással azt tapasztaltam, hogy a probléma valójában a hardverrel volt, ami még mindig zajt adott nekem időnként. Kipróbáltam más áramköröket, amelyeket a szikra szórakoztató mikrofon lapokban használnak, amelyeknek van alul- és felüláteresztő szűrője. Az alábbiakban ismertetem az áramkört, hogy kipróbálja.
Erősítő szűrőkkel:
Itt alul- és felüláteresztő szűrőket használtunk erősítővel a zaj csökkentésére ebben a zajszintmérő áramkörben, így növelhető a pontosság.
Ebben a fenti áramkörben a népszerű LM358 erősítőt alkalmaztuk a mikrofonból érkező jelek felerősítésére. Az erősítővel együtt két szűrőt is használtunk, a felüláteresztő szűrőt R5, C2, az aluláteresztő szűrőt a C1 és R2 alkotja. Ezeket a szűrőket úgy tervezték, hogy csak 8Hz és 10KHz közötti frekvenciát engedélyezzenek, mivel az aluláteresztő szűrő bármi 8Hz alatt, a High Pass szűrő pedig 15KHz felett bármit. Ez a frekvenciatartomány azért van kiválasztva, mert a kondenzátoros mikrofonom csak 10Hz és 15KHZ között működik, amint az az alábbi adatlapon látható.
Ha változik a frekvenciaigénye, akkor az alábbi képletek segítségével kiszámíthatja az ellenállás és a kondenzátor értékét a kívánt frekvenciához.
Frekvencia (F) = 1 / (2πRC)
Vegye figyelembe azt is, hogy az itt használt ellenállás értéke szintén befolyásolja az erősítő erősítését. Az ebben az áramkörben használt ellenállás és kondenzátor értékének kiszámítását az alábbiakban mutatjuk be. Innen letöltheti az excel lapot a Frekvencia értékeinek módosításához és a regressziós értékek kiszámításához.
Az előbbi pálya kielégítően működött az elvárásaimnak megfelelően, ezért ezt soha nem próbáltam ki. Ha véletlenül megpróbálja ezt az áramkört, akkor a megjegyzések segítségével tudassa velem, hogy jobban működik-e, mint az előző.