- Materiale necesare:
- Diagrama circuitului:
- Utilizarea metodei de regresie pentru a calcula dB din valoarea ADC:
- Program Arduino pentru măsurarea nivelului de sunet în dB:
- Funcționarea sonometrului Arduino:
- Amplificator cu circuit de filtre:
Poluarea fonică a început să capete importanță din cauza densității mari a populației. O ureche umană normală poate auzi niveluri sonore de la 0dB la 140dB, în care nivelurile sonore de la 120dB la 140dB sunt considerate a fi zgomot. Nivelurile de sunet sau de sunet sunt în mod obișnuit măsurate în decibeli (dB), avem unele instrumente care ar putea măsura semnalele sonore în dB, dar aceste contoare sunt ușor scumpe și, din păcate, nu avem un modul senzor pentru a măsura nivelurile de sunet în decibeli. Și nu este economic să achiziționați microfoane scumpe pentru un proiect mic Arduino care ar trebui să măsoare nivelul de sunet într-o sală de clasă mică sau o cameră de zi.
Deci, în acest proiect vom folosi un microfon normal cu condensator Electret cu Arduino și vom încerca să măsurăm nivelul de poluare acustică sau sonoră în dB cât mai aproape de valoarea reală. Vom folosi un circuit amplificator normal pentru a amplifica semnalele sonore și pentru a le alimenta către Arduino în care vom folosi metoda de regresie pentru a calcula semnalele sonore în dB. Pentru a verifica dacă valorile obținute sunt corecte putem folosi aplicația Android „Sound Meter”, dacă aveți un contor mai bun, îl puteți folosi pentru calibrare. Rețineți că acest proiect nu are ca scop măsurarea dB cu precizie și va oferi doar valori cât mai apropiate de valoarea reală.
Materiale necesare:
- Arduino UNO
- Microfon
- LM386
- POT variabil 10K
- Rezistoare și condensatoare
Diagrama circuitului:
Circuitul pentru acest sonometru Arduino este un instrument foarte simplu în care am folosit circuitul amplificator audio LM386 pentru a amplifica semnalele de la un microfon cu condensator și pentru a-l furniza la portul analogic al Arduino. Am folosit deja acest IC LM386 pentru a construi un circuit amplificator audio de joasă tensiune și circuitul mai mult sau mai puțin rămâne același.
Câștigul acestui amplificator special poate fi setat de la 20 la 200 folosind un rezistor sau un condensator pe pinii 1 și 8. Dacă sunt lăsați liberi, câștigul va fi setat ca 20 în mod implicit. Pentru proiectul nostru obținem câștigul maxim posibil de acest circuit, așa că folosim un condensator de valoare 10uF între pinii 1 și 8, rețineți că acest pin este sensibil la polaritate și pinul negativ al condensatorului ar trebui să fie conectat la pinul 8. Amplificatorul complet circuitul este alimentat de pinul de 5V de la Arduino.
Condensatorul C2 este utilizat pentru a filtra zgomotul continuu de la microfon. Practic, când microfonul simte sunetul, undele sonore vor fi convertite în semnale de curent alternativ. Acest semnal de curent alternativ ar putea avea un zgomot continuu cuplat cu acesta, care va fi filtrat de acest condensator. În mod similar, chiar și după amplificare se folosește un condensator C3 pentru a filtra orice zgomot de curent continuu care s-ar fi putut adăuga în timpul amplificării.
Utilizarea metodei de regresie pentru a calcula dB din valoarea ADC:
Odată ce suntem pregătiți cu circuitul nostru, putem conecta Arduino la computer și încărca programul de exemplu „Analog Read Serial” de la Arduino pentru a verifica dacă primim valori ADC valide de la microfonul nostru. Acum trebuie să convertim aceste valori ADC în dB.
Spre deosebire de alte valori precum măsurarea temperaturii sau umidității, măsurarea dB nu este o sarcină simplă. Deoarece valoarea dB nu este liniară cu valoarea ADC. Există câteva modalități prin care puteți ajunge, dar fiecare pas posibil pe care l-am încercat nu mi-a obținut rezultate bune. Puteți citi aici acest forum Arduino dacă doriți să încercați.
Pentru aplicația mea, nu am avut nevoie de multă precizie în timp ce măsoară valorile dB și, prin urmare, am decis să folosesc o modalitate mai ușoară de calibrare directă a valorilor ADC cu valori dB. Pentru această metodă, vom avea nevoie de un contor SPL (un contor SPL este un instrument care poate citi valorile dB și le poate afișa), dar, din păcate, nu am avut unul și sigur că majoritatea dintre noi nu. Așadar, putem folosi aplicația Android numită „Sound meter”, care ar putea fi descărcată gratuit din Play Store. Există multe astfel de tipuri de aplicații și puteți descărca orice doriți. Aceste aplicații utilizează microfonul încorporat al telefonului pentru a detecta nivelul de zgomot și a-l afișa pe mobilul nostru. Nu sunt foarte exacte, dar cu siguranță ar funcționa pentru sarcina noastră. Deci, să începem prin instalarea aplicației Android, a mea când a fost deschisă arăta cam așa mai jos
După cum am spus mai devreme, relația dintre valorile dB și analogice nu va fi liniară, prin urmare, trebuie să comparăm aceste două valori la intervale diferite. Rețineți doar valoarea ADC afișată pe ecran pentru diferiți dB afișați pe telefonul dvs. mobil. Am luat vreo 10 lecturi și au arătat așa mai jos, s-ar putea să variați puțin
Deschideți o pagină Excel și introduceți aceste valori, pentru moment vom folosi Excel pentru a găsi valorile de regresie pentru numărul de mai sus. Înainte de asta, să trasăm un grafic și să verificăm cum se raportează amândoi, al meu arăta așa mai jos.
După cum putem vedea, valoarea dB nu este legată liniar cu ADC, ceea ce înseamnă că nu puteți avea un multiplicator comun pentru toate valorile ADC pentru a obține valorile dB echivalente. În acest caz, putem utiliza metoda „regresiei liniare”. Practic, va converti această linie albastră neregulată la cea mai apropiată linie dreaptă posibilă (linia neagră) și ne va da ecuația acelei linii drepte. Această ecuație poate fi utilizată pentru a găsi valoarea echivalentă a dB pentru fiecare valoare de ADC pe care o măsoară Arduino.
În Excel avem un plug-in pentru analiza datelor, care va calcula automat regresia pentru setul de valori și va publica datele sale. Nu voi acoperi cum să o fac cu Excel, deoarece este în afara domeniului de aplicare al acestui proiect, de asemenea, este ușor pentru dvs. să îl învățați și să îl învățați pe Google. Odată ce ați calculat regresia pentru valoare, excel va da câteva valori, cum ar fi mai jos. Ne interesează doar numerele care sunt evidențiate mai jos.
Odată ce obțineți aceste numere, veți putea forma ecuația de mai jos, cum ar fi
ADC = (11.003 * dB) - 83.2073
Din care puteți obține dB pentru a fi
dB = (ADC + 83.2073) / 11.003
S-ar putea să trebuiască să conduceți propria ecuație, deoarece calibrarea poate diferi. Cu toate acestea, păstrați această valoare în siguranță pentru că vom avea nevoie de ea în timp ce programăm Arduino.
Program Arduino pentru măsurarea nivelului de sunet în dB:
Programul complet de măsurare a dB este dat mai jos, câteva linii importante sunt explicate mai jos
În aceste două linii de mai sus, citim valoarea ADC a pinului A0 și o convertim în dB folosind ecuația pe care tocmai am derivat-o. Este posibil ca această valoare dB să nu fie corectă la adevărata valoare dB, dar rămâne aproape aproape de valorile afișate în aplicația mobilă.
adc = analogRead (MIC); // Citiți valoarea ADC din amplifer dB = (adc + 83.2073) / 11.003; // Convertiți valoarea ADC în dB folosind valori de regresie
Pentru a verifica dacă programul funcționează corect, am adăugat, de asemenea, un LED la pinul digital 3, care este făcut să crească timp de 1 secunde când Arduino măsoară un zgomot puternic de peste 60dB.
if (dB> 60) {digitalWrite (3, HIGH); // aprindeți LED-ul (HIGH este nivelul de tensiune) întârziere (1000); // așteptați un al doilea digitalWrite (3, LOW); }
Funcționarea sonometrului Arduino:
Odată ce sunteți gata cu codul și hardware-ul, pur și simplu încărcați codul și deschideți monitorul serial pentru a vedea valorile dB măsurate de Arduino. Testam acest cod în camera mea, unde nu era prea mult zgomot, cu excepția traficului din exterior și am obținut valorile de mai jos pe monitorul meu serial, iar aplicația Android a afișat și ceva apropiat
Funcționarea completă a proiectului poate fi găsită la videoclipul prezentat la sfârșitul acestei pagini. Puteți utiliza pentru a proiecta pentru a detecta sunetul în cameră și pentru a verifica dacă există vreo activitate sau cât de mult zgomot este generat în fiecare clasă sau ceva de genul acesta. Tocmai am făcut un LED pentru a ajunge la maxim 2 secunde dacă sunetul este înregistrat peste 60dB.
Lucrul este ciudat de satisfăcător, dar poate fi utilizat cu siguranță pentru proiecte și alte prototipuri de bază. Cu câteva alte săpături, am constatat că problema se referea de fapt la hardware, care încă îmi dădea zgomot din când în când. Așa că am încercat alte circuite care sunt utilizate în plăcile de microfon spark spark care au un filtru low-pass și high-pass. Am explicat circuitul de mai jos pentru a încerca.
Amplificator cu circuit de filtre:
Aici am folosit filtre low-pass și high pass cu amplificator pentru a reduce zgomotul din acest circuit de măsurare a nivelului de sunet, astfel încât precizia să poată fi mărită.
În acest circuit de mai sus, am folosit popularul amplificator LM358 pentru a amplifica semnalele de la microfon. Împreună cu amplificatorul am folosit și două filtre, filtrul trece sus este format din R5, C2, iar filtrul trece jos este utilizat de C1 și R2. Aceste filtre sunt proiectate pentru a permite frecvența numai de la 8Hz la 10KHz, deoarece filtrul de trecere joasă va filtra orice sub 8Hz, iar filtrul de trecere înaltă va filtra orice de peste 15KHz. Acest interval de frecvență este selectat, deoarece microfonul meu cu condensator funcționează numai de la 10Hz la 15KHZ, așa cum se arată în foaia tehnică de mai jos.
Dacă cererea dvs. de frecvență se schimbă, puteți utiliza formulele de mai jos pentru a calcula valoarea rezistorului și a condensatorului pentru frecvența dorită.
Frecvența (F) = 1 / (2πRC)
De asemenea, rețineți că valoarea rezistorului utilizat aici va afecta, de asemenea, Câștigul amplificatorului. Calculul valorii rezistorului și condensatorului utilizat în acest circuit este prezentat mai jos. Puteți descărca foaia Excel de aici pentru modificarea valorilor frecvenței și calcularea valorilor de regresie.
Fostul circuit a funcționat satisfăcător pentru așteptările mele, așa că nu l-am încercat niciodată. Dacă se întâmplă să încercați acest circuit, spuneți-mi dacă funcționează mai bine decât precedentul prin comentarii.