- Reikalingos medžiagos:
- Grandinės schema:
- Naudojant regresijos metodą apskaičiuoti dB iš ADC vertės:
- „Arduino“ programa garso lygiui dB matuoti:
- „Arduino“ garso lygio matuoklio darbas:
- Stiprintuvas su filtrų grandine:
Triukšmo tarša iš tikrųjų pradėjo didėti dėl didelio gyventojų tankio. Normali žmogaus ausis girdėjo garso lygį nuo 0dB iki 140dB, kuriame garso lygis nuo 120dB iki 140dB laikomas triukšmu. Garsumas ar garso lygis paprastai matuojamas decibelais (dB), mes turime keletą prietaisų, kurie galėtų matuoti garso signalus dB, tačiau šie matuokliai yra šiek tiek brangūs, ir, deja, neturime „out of box“ jutiklio modulio, kad matuotume garso lygį decibelais. Neekonomiška įsigyti brangius mikrofonus mažam „ Arduino“ projektui, kuris turėtų išmatuoti garso lygį mažoje klasėje ar svetainėje.
Taigi šiame projekte naudosime įprastą „ Electret Condenser“ mikrofoną su „Arduino“ ir bandysime garso ar triukšmo lygį išmatuoti dB kiek įmanoma arčiau faktinės vertės. Garso signalams sustiprinti ir tiekti „Arduino“ naudosime įprastą stiprintuvo grandinę, kurioje naudosime regresijos metodą garso signalams apskaičiuoti dB. Norėdami patikrinti, ar gautos vertės yra teisingos, galime naudoti „Sound Meter“ „Android“ programą. Jei turite geresnį skaitiklį, galite jį naudoti kalibravimui. Atkreipkite dėmesį, kad šiuo projektu nesiekiama tiksliai išmatuoti dB, o vertės bus pateikiamos kuo artimesnės faktinei vertei.
Reikalingos medžiagos:
- „Arduino UNO“
- Mikrofonas
- LM386
- 10K kintamasis POT
- Rezistoriai ir kondensatoriai
Grandinės schema:
Šio „ Arduino“ garso lygio matuoklio grandinė yra labai paprasta, kai mes panaudojome LM386 garso stiprintuvo grandinę, kad sustiprintume kondensatoriaus mikrofono signalus ir tiektume juos į „Arduino“ analoginį prievadą. Mes jau panaudojome šį LM386 IC, kad sukurtume žemos įtampos garso stiprintuvo grandinę, ir grandinė daugmaž nesikeičia.
Šio konkretaus stiprintuvo stiprinimą galima nustatyti nuo 20 iki 200, naudojant rezistorių arba kondensatorių per 1 ir 8 kaiščius. Jei jie nebus palikti, pagal numatytuosius nustatymus padidėjimas bus nustatytas kaip 20. Savo projektui mes maksimaliai padidiname šią grandinę, todėl tarp 1 ir 8 kaiščių naudojame 10uF vertės kondensatorių, atkreipkite dėmesį, kad šis kaištis yra jautrus poliškumui, o neigiamas kondensatoriaus kaištis turėtų būti prijungtas prie 8 kaiščio. grandinę maitina 5 V kaištis iš „Arduino“.
Kondensatorius C2 naudojamas nuolatinės srovės triukšmo filtravimui iš mikrofono. Iš esmės, kai mikrofonas pajunta garsą, garso bangos bus konvertuojamos į kintamosios srovės signalus. Šis kintamosios srovės signalas gali turėti tam tikrą nuolatinės srovės triukšmą, kurį filtruos šis kondensatorius. Panašiai, net po amplifikacijos kondensatorius C3 naudojamas filtruoti bet kokį nuolatinės srovės triukšmą, kuris galėjo būti pridėtas stiprinimo metu.
Naudojant regresijos metodą apskaičiuoti dB iš ADC vertės:
Kai būsime pasirengę savo grandinei, galime prijungti „Arduino“ prie kompiuterio ir įkelti „ Arduino “ programos „Analog Read Serial“ pavyzdinę programą, kad patikrintume, ar iš savo mikrofono gauname galiojančias ADC reikšmes. Dabar mes turime konvertuoti šias ADC reikšmes į dB.
Skirtingai nuo kitų verčių, tokių kaip temperatūros ar drėgmės matavimas, dB matavimas nėra paprasta užduotis. Nes dB reikšmė nėra tiesinė su ADC verte. Yra keletas būdų, kuriais galite pasiekti, tačiau kiekvienas įmanomas žingsnis man nedavė gerų rezultatų. Čia galite perskaityti šį „Arduino“ forumą, jei norite pabandyti.
Mano programai man nereikėjo didelio tikslumo matuojant dB reikšmes, todėl nusprendžiau naudoti paprastesnį būdą tiesiogiai kalibruoti ADC reikšmes dB vertėmis. Šiam metodui mums reikės SPL matuoklio (SPL matuoklis yra prietaisas, galintis nuskaityti dB reikšmes ir jį rodyti), bet, deja, aš jo neturėjau ir tikrai dauguma mūsų to neturės. Taigi galime naudoti „ Android“ programą „Garso matuoklis“, kurią galima nemokamai atsisiųsti iš žaidimų parduotuvės. Yra daugybė tokių programų tipų ir galite atsisiųsti bet ką savo pasirinkimo. Šios programos naudoja telefono įmontuotą mikrofoną triukšmo lygiui nustatyti ir rodyti mūsų mobiliajame telefone. Jie nėra labai tikslūs, tačiau tikrai būtų tinkami mūsų užduočiai. Taigi pradėkime nuo „Android“ programos įdiegimo, mano atidarytas atrodė maždaug taip žemiau
Kaip jau sakiau anksčiau, santykis tarp dB ir analoginių verčių nebus tiesinis, todėl turime palyginti šias dvi reikšmes skirtingais intervalais. Tiesiog atkreipkite dėmesį į ADC, rodomo ekrane, skirtingus skirtingus dB, rodomus jūsų mobiliajame telefone, vertę. Aš paėmiau apie 10 skaitinių ir jie atrodė taip žemiau, galite šiek tiek skirtis
Atidarykite „Excel“ puslapį ir įveskite šias reikšmes, kol kas naudosime „Excel“, kad surastume aukščiau nurodyto skaičiaus regresijos vertes. Prieš tai nubrėžkime grafiką ir patikrinkime, kaip jie abu yra susiję, mano žemiau atrodė taip.
Kaip matome, dB vertė nėra tiesiogiai susieta su ADC, o tai reiškia, kad negalite turėti bendro visų ADC reikšmių daugiklio, kad gautumėte ekvivalentiškas dB vertes. Tokiu atveju galime naudoti „tiesinės regresijos“ metodą. Iš esmės tai pavers šią netaisyklingą mėlyną liniją į kuo artimesnę tiesią liniją (juodą liniją) ir suteiks mums tos tiesės lygtį. Ši lygtis gali būti naudojama norint rasti ekvivalentinę dB vertę kiekvienai ADC vertei, kurią matuoja „Arduino“.
„Excel“ programoje turime duomenų analizės papildinį, kuris automatiškai apskaičiuos jūsų verčių regresiją ir paskelbs jos duomenis. Nenagrinėsiu, kaip tai padaryti su „Excel“, nes tai nepatenka į šio projekto taikymo sritį, taip pat jums lengva „Google“ ir išmokti. Kai apskaičiuosite vertės regresiją, „Excel“ pateiks kai kurias reikšmes, kaip parodyta žemiau. Mus domina tik toliau paryškinti skaičiai.
Gavę šiuos skaičius, galėsite sudaryti žemiau pateiktą lygtį
ADC = (11,003 * dB) - 83,2073
Iš kurio galite išvesti dB
dB = (ADC + 83,2073) / 11,003
Gali tekti vairuoti savo lygtį, nes kalibravimas gali skirtis. Tačiau saugokite šią vertę, nes mums jos prireiks programuojant „Arduino“.
„Arduino“ programa garso lygiui dB matuoti:
Visa dB matavimo programa pateikiama žemiau, kelios svarbios eilutės yra paaiškintos žemiau
Šiose pirmosiose dviejose eilutėse mes perskaitėme kaiščio A0 ADC vertę ir konvertuojame ją į dB, naudodami ką tik gautą lygtį. Ši dB vertė gali būti netiksli tikrajai dB vertei, tačiau ji išlieka beveik artima mobiliajame telefone rodomoms vertėms.
adc = analoginis skaitymas (MIC); // Perskaitykite ADC vertę iš stiprintuvo dB = (adc + 83.2073) / 11.003; // Konvertuokite ADC vertę į dB, naudodami regresijos reikšmes
Norėdami patikrinti, ar programa veikia tinkamai, mes taip pat pridėjome šviesos diodą prie 3 skaitmeninio kaiščio, kuris yra aukštas 1 sekundę, kai „Arduino“ matuoja garsų triukšmą, viršijantį 60 dB.
if (dB> 60) {digitalWrite (3, HIGH); // įjungti šviesos diodą (HIGH yra įtampos lygis) vėlavimas (1000); // palaukite antro digitalWrite (3, LOW); }
„Arduino“ garso lygio matuoklio darbas:
Kai būsite pasirengę naudoti kodą ir aparatinę įrangą, tiesiog įkelkite kodą ir atidarykite nuoseklųjį monitorių, kad pamatytumėte „Arduino“ matuojamas dB vertes. Aš bandžiau šį kodą savo kambaryje, kur nebuvo daug triukšmo, išskyrus eismą lauke, ir aš savo serijiniame monitoriuje gavau toliau nurodytas vertes, o „Android“ programa taip pat rodė tai, kas arti
Išsamų projekto darbą galite rasti vaizdo įraše, pateiktame šio puslapio pabaigoje. Galite naudoti projektuodami, kad aptiktumėte garsą kambaryje ir patikrintumėte, ar vyksta kokia nors veikla, ar kiek triukšmo generuojama kiekvienoje klasėje ar panašiai. Ką tik sukūriau šviesos diodą, kuris pakils aukštai 2 sekundėms, jei garsas įrašytas virš 60dB.
Darbas yra keista, tačiau tikrai gali būti naudojamas projektams ir kitiems pagrindiniams prototipams. Dar kelis kartus kasdamas radau, kad problema iš tikrųjų buvo aparatinėje įrangoje, kuri man vis tiek dabar kelia triukšmą. Taigi aš išbandžiau kitas grandines, kurios naudojamos „spark fun“ mikrofono plokštėse, turinčiose žemo ir aukšto dažnio filtrus. Aš paaiškinau toliau pateiktą grandinę, kad galėtumėte išbandyti.
Stiprintuvas su filtrų grandine:
Čia mes naudojome žemų dažnių ir aukštų dažnių filtrus su stiprintuvu, kad sumažintume triukšmą šioje garso lygio matavimo grandinėje, kad būtų galima padidinti tikslumą.
Šioje pirmiau pateiktoje grandinėje mes panaudojome populiarųjį LM358 stiprintuvą, kad sustiprintume signalus iš mikrofono. Kartu su stiprintuvu mes taip pat naudojome du filtrus, aukšto dažnio filtrą sudaro R5, C2, o žemo dažnio filtrą - C1 ir R2. Šie filtrai yra skirti leisti dažnį tik nuo 8Hz iki 10KHz, nes žemo dažnio filtras filtruos bet ką žemesnį nei 8Hz, o aukšto dažnio filtras - virš 15KHz. Šis dažnių diapazonas yra pasirinktas, nes mano kondensatoriaus mikrofonas veikia tik nuo 10Hz iki 15KHZ, kaip parodyta toliau pateiktame duomenų lape.
Jei jūsų dažnio poreikis pasikeis, galite naudoti toliau pateiktas formules, kad apskaičiuotumėte reikiamo dažnio rezistoriaus ir kondensatoriaus vertę.
Dažnis (F) = 1 / (2πRC)
Taip pat atkreipkite dėmesį, kad čia naudojamo rezistoriaus vertė taip pat paveiks stiprintuvo stiprinimą. Žemiau parodytas šioje grandinėje naudojamo rezistoriaus ir kondensatoriaus vertės apskaičiavimas. Iš čia galite atsisiųsti „Excel“ lapą, jei norite modifikuoti dažnio reikšmes ir apskaičiuoti regresijos reikšmes.
Buvusi trasa veikė patenkinamai pagal mano lūkesčius, todėl niekada nebandžiau šio. Jei atsitiktų išbandyti šią grandinę, per komentarus praneškite man, ar ji veikia geriau nei ankstesnė.