- Tarvittavat materiaalit:
- Piirikaavio:
- Regressiomenetelmän avulla lasketaan dB ADC-arvosta:
- Arduino-ohjelma äänitason mittaamiseksi dB: ssä:
- Arduino-äänitasomittarin toiminta:
- Vahvistin suodatinpiirillä:
Melupäästöjen merkitys on todella alkanut kasvaa suuren väestötiheyden vuoksi. Normaali ihmisen korva pystyi kuulemaan melutasot välillä 0dB - 140dB, jossa melutasoa 120dB - 140dB pidetään meluna. Voimakkuus tai äänitasot mitataan tavallisesti desibeleinä (dB), meillä on joitain instrumentteja, jotka voisivat mitata äänisignaalit desibeleinä, mutta nämä mittarit ovat hieman kalliita, ja valitettavasti meillä ei ole laatikon ulkopuolista anturimoduulia melutasojen mittaamiseksi desibeleinä. Ja ei ole taloudellista ostaa kalliita mikrofoneja pieneen Arduino-projektiin, jonka pitäisi mitata melutaso pienessä luokkahuoneessa tai olohuoneessa.
Joten tässä projektissa käytämme normaalia Electret Condenser -mikrofonia Arduinon kanssa ja yritämme mitata ääni- tai melusaastetasoa desibeleinä mahdollisimman lähellä todellista arvoa. Käytämme normaalia vahvistinpiiriä äänisignaalien vahvistamiseen ja syöttämiseen Arduinoon, jossa käytämme regressiomenetelmää äänisignaalien laskemiseksi desibeleinä. Jos haluat tarkistaa, ovatko saadut arvot oikeita, voimme käyttää ”Sound Meter” Android-sovellusta. Jos sinulla on parempi mittari, voit käyttää sitä kalibrointiin. Huomaa, että tämän projektin tarkoituksena ei ole mitata dB tarkasti, vaan se antaa arvot mahdollisimman lähellä todellista arvoa.
Tarvittavat materiaalit:
- Arduino UNO
- Mikrofoni
- LM386
- 10K muuttuja POT
- Vastukset ja kondensaattorit
Piirikaavio:
Tämän Arduino-äänitasomittarin piiri on hyvin yksinkertainen, jossa olemme käyttäneet LM386-äänivahvistinpiiriä lauhduttimen mikrofonin signaalien vahvistamiseen ja toimittamiseen Arduinon analogiseen porttiin. Olemme jo käyttäneet tätä LM386 IC: tä pienjännitevahvistinpiirin rakentamiseen ja piiri pysyy suunnilleen ennallaan.
Tämän erityisen op-amp: n vahvistus voidaan asettaa arvosta 20-200 vastuksen tai kondensaattorin avulla napojen 1 ja 8 poikki. Jos ne jätetään vapaaksi, vahvistukseksi asetetaan oletusarvoisesti 20. Projektissamme saavutamme tämän piirin suurimman mahdollisen vahvistuksen, joten käytämme nastojen 1 ja 8 välissä kondensaattoria, jonka arvo on 10uF, huomaa, että tämä nasta on napaisuusherkkä ja kondensaattorin negatiivinen nasta tulisi liittää nastaan 8. Koko vahvistin piiri saa virtansa Arduinon 5 V: n nastasta.
Kondensaattoria C2 käytetään DC-kohinan suodattamiseen mikrofonista. Pohjimmiltaan, kun mikrofoni havaitsee äänen, aallot muunnetaan AC-signaaleiksi. Tähän vaihtosignaaliin voi olla kytketty jonkin verran DC-kohinaa, joka suodatetaan tällä kondensaattorilla. Vastaavasti jopa vahvistuksen jälkeen kondensaattoria C3 käytetään suodattamaan kaikki DC-kohinat, jotka ovat voineet olla lisätty vahvistuksen aikana.
Regressiomenetelmän avulla lasketaan dB ADC-arvosta:
Kun olemme valmiit piirillemme, voimme liittää Arduinon tietokoneeseen ja ladata Arduinon "Analoginen lukusarja" -esimerkin tarkistamaan saammeko mikrofoniltamme kelvolliset ADC-arvot. Nyt meidän on muunnettava tämä ADC-arvo dB: ksi.
Toisin kuin muut arvot, kuten lämpötilan tai kosteuden mittaus, dB: n mittaaminen ei ole yksinkertainen tehtävä. Koska dB: n arvo ei ole lineaarinen ADC: n arvon kanssa. On olemassa muutamia tapoja, joilla voit saavuttaa, mutta kaikki mahdolliset vaiheet, joita yritin, eivät tuottaneet minulle hyviä tuloksia. Voit lukea tämän Arduino-foorumin läpi täältä, jos haluat kokeilla sitä.
Sovelluksessani en tarvinnut paljon tarkkuutta mitattaessa dB-arvoja, ja päätin siksi käyttää helpompaa tapaa kalibroida ADC-arvot suoraan dB-arvoilla. Tätä menetelmää varten tarvitaan SPL-mittari (SPL-mittari on instrumentti, joka pystyy lukemaan dB-arvot ja näyttämään sen), mutta valitettavasti minulla ei ollut sellaista ja varma, että useimmat meistä eivät. Joten voimme käyttää Android-sovellusta nimeltä ”Sound meter”, jonka voit ladata pelikaupasta ilmaiseksi. Tällaisia sovellustyyppejä on monia, ja voit ladata mitä tahansa valitsemaasi. Nämä sovellukset käyttävät puhelimen sisäänrakennettua mikrofonia melutason havaitsemiseen ja esittämiseen matkapuhelimellamme. Ne eivät ole kovin tarkkoja, mutta toimisivat varmasti tehtävässämme. Joten aloitetaan asentamalla Android-sovellus, minun avatessani näytti jotain tällaista alla
Kuten sanoin aiemmin, dB: n ja analogisen arvon välinen suhde ei ole lineaarinen, joten meidän on verrataan näitä kahta arvoa eri välein. Kirjoita vain muistiin ADC: n arvo, joka näkyy ruudulla matkapuhelimellasi näytettäville eri dB: lle. Otin noin 10 lukemaa ja ne näyttivät tältä alla, saatat vaihdella hieman
Avaa Excel-sivu ja kirjoita nämä arvot, toistaiseksi käytämme Exceliä yllä olevan luvun regressioarvojen löytämiseen. Ennen sitä piirretään kaavio ja tarkistetaan, miten he molemmat liittyvät, minun näytti alla.
Kuten voimme nähdä, dB: n arvo ei liity lineaarisesti ADC: n kanssa, mikä tarkoittaa, että kaikilla ADC-arvoilla ei voi olla yhteistä kerrointa sen ekvivalenttien dB-arvojen saamiseksi. Tällöin voimme käyttää "lineaarisen regressio" -menetelmää. Pohjimmiltaan se muuntaa tämän epäsäännöllisen sinisen viivan lähimmäksi mahdolliseksi suoraksi (mustaksi viivaksi) ja antaa meille kyseisen suoran yhtälön. Tätä yhtälöä voidaan käyttää vastaavan dB-arvon löytämiseen jokaiselle ADC-arvolle, jota Arduino mittaa.
Excelissä meillä on laajennus tietojen analysointia varten, joka laskee automaattisesti regressiosi arvojesi joukolle ja julkaisee sen tiedot. En aio käsitellä, miten se tehdään Excelillä, koska se on tämän projektin ulkopuolella, ja sen on myös helppoa Googlella ja oppia. Kun olet laskenut arvon regression, Excel antaa joitain arvoja, kuten alla on esitetty. Olemme kiinnostuneita vain alla korostetuista numeroista.
Kun saat nämä numerot, voit muodostaa alla olevan yhtälön kuten
ADC = (11,003 * dB) - 83,2073
Mistä voit johtaa dB: n olevan
dB = (ADC + 83,2073) / 11,003
Saatat joutua ajamaan oman yhtälön, koska kalibrointi voi olla erilainen. Pidä tämä arvo kuitenkin turvallisena, sillä tarvitsemme sitä samalla, kun ohjelmoimme Arduinoa.
Arduino-ohjelma äänitason mittaamiseksi dB: ssä:
Koko dB-mittausohjelma on annettu alla, muutama tärkeä rivi selitetään alla
Näissä kahdessa edellä olevassa rivissä luemme nastan A0 ADC-arvon ja muunnamme sen dB: ksi käyttämällä juuri johdettua yhtälöä. Tämä dB-arvo ei ehkä tarkoita todellista dB-arvoa, mutta pysyy melkein lähellä mobiilisovelluksessa näytettyjä arvoja.
adc = analoginen luku (MIC); // Lue ADC-arvo vahvistimesta dB = (adc + 83,2073) / 11,003; // Muunna ADC-arvo dB: ksi käyttämällä regressioarvoja
Tarkistaaksesi, toimiiko ohjelma oikein, olemme myös lisänneet LEDin digitaaliseen nastaan 3, joka on tehty nousemaan korkeaksi 1 sekunniksi, kun Arduino mittaa yli 60 dB: n voimakkaan melun.
if (dB> 60) {digitalWrite (3, HIGH); // kytke LED päälle (HIGH on jännitetaso) viive (1000); // odota toista digitalWrite (3, LOW); }
Arduino-äänitasomittarin toiminta:
Kun olet valmis koodin ja laitteiston kanssa, lataa koodi ja avaa sarjamonitori katsomaan Arduinosi mittaamia dB-arvoja. Testasin tätä koodia huoneessani, jossa ei ollut paljon melua lukuun ottamatta ulkopuolista liikennettä, ja sain alla olevat arvot sarjamittarilleni ja Android-sovellus näytti myös jotain lähellä tätä
Projektin täydellinen toiminta löytyy tämän sivun lopussa olevasta videosta. Voit heijastaa huoneen äänen ja tarkistaa, onko jokaisessa toiminnassa, kuinka paljon melua syntyy jokaisessa luokkahuoneessa tai jotain muuta. Olen juuri tehnyt LED: n menemään korkealle 2 sekunniksi, jos ääntä on äänitetty yli 60dB.
Työskentely on outoa tyydyttävää, mutta sitä voidaan varmasti käyttää projekteissa ja muissa perusprototyypeissä. Muutaman kaivamisen jälkeen huomasin, että ongelma oli itse asiassa laitteistossa, joka silti antoi minulle melua silloin tällöin. Joten kokeilin muita piirejä, joita käytetään kipinä hauska mikrofonilevyissä, joissa on alipäästö- ja ylipäästösuodatin. Olen selittänyt alla olevan piirin, jotta voit kokeilla.
Vahvistin suodatinpiirillä:
Tässä olemme käyttäneet vahvistimella varustettuja alipäästö- ja ylipäästösuodattimia melutason vähentämiseksi tässä äänitason mittauspiirissä, jotta tarkkuutta voidaan lisätä.
Tässä yllä olevassa piirissä olemme käyttäneet suosittua LM358-vahvistinta vahvistamaan signaaleja mikrofonista. Vahvistimen ohella olemme käyttäneet myös kahta suodatinta, ylipäästösuodattimen muodostavat R5, C2 ja alipäästösuodatinta C1 ja R2. Nämä suodattimet on suunniteltu sallimaan taajuus vain 8 Hz: stä 10 KHz: iin, koska alipäästösuodatin suodattaa kaikki alle 8 Hz: n ja ylipäästösuodatin yli 15 KHz: n. Tämä taajuusalue on valittu, koska kondensaattorimikrofoni toimii vain välillä 10 Hz - 15 KHz, kuten alla olevassa tietolomakkeessa on esitetty.
Jos taajuusvaatimuksesi muuttuu, voit käyttää alla olevia kaavoja vastuksen ja kondensaattorin arvon laskemiseen haluamallesi taajuudelle.
Taajuus (F) = 1 / (2πRC)
Huomaa myös, että tässä käytetyn vastuksen arvo vaikuttaa myös vahvistimen vahvistukseen. Tässä piirissä käytetyn vastuksen ja kondensaattorin arvon laskeminen on esitetty alla. Täältä voit ladata Excel-taulukon taajuusarvojen muokkaamiseksi ja regressioarvojen laskemiseksi.
Entinen piiri toimi tyydyttävästi odotuksilleni, joten en koskaan kokeillut tätä. Jos satut kokeilemaan tätä virtapiiriä, ilmoita minulle, toimiiko se paremmin kuin edellinen kommenttien kautta.