- Nepieciešamie materiāli:
- Ķēdes shēma:
- Izmantojot regresijas metodi, lai aprēķinātu dB no ADC vērtības:
- Arduino programma skaņas līmeņa mērīšanai dB:
- Arduino skaņas līmeņa mērītāja darbība:
- Pastiprinātājs ar filtru shēmu:
Trokšņa piesārņojums patiešām ir kļuvis nozīmīgs lielā iedzīvotāju blīvuma dēļ. Normāla cilvēka auss varēja dzirdēt skaņas līmeni no 0dB līdz 140dB, kurā skaņas līmeni no 120dB līdz 140dB uzskata par troksni. Skaļumu vai skaņas līmeni parasti mēra decibelos (dB), mums ir daži instrumenti, kas skaņas signālus varētu izmērīt dB, bet šie skaitītāji ir nedaudz dārgi, un diemžēl mums nav sensora moduļa, kas mērītu skaņas līmeni decibelos. Un nav ekonomiski iegādāties dārgus mikrofonus nelielam Arduino projektam, kam vajadzētu izmērīt skaņas līmeni mazā klasē vai viesistabā.
Tāpēc šajā projektā mēs izmantosim parasto Electret Condenser mikrofonu ar Arduino un mēģināsim skaņas vai trokšņa līmeņa mērījumus dB izteikt pēc iespējas tuvāk faktiskajai vērtībai. Skaņas signālu pastiprināšanai un padevei Arduino mēs izmantosim parasto pastiprinātāja shēmu, kurā skaņas signālu aprēķināšanai dB izmantosim regresijas metodi. Lai pārbaudītu, vai iegūtās vērtības ir pareizas, mēs varam izmantot Android programmu “Skaņas mērītājs”. Ja jums ir labāks skaitītājs, varat to izmantot kalibrēšanai. Ņemiet vērā, ka šī projekta mērķis nav precīzi izmērīt dB, un tas tikai sniedz vērtības pēc iespējas tuvāk faktiskajai vērtībai.
Nepieciešamie materiāli:
- Arduino UNO
- Mikrofons
- LM386
- 10K mainīgais POT
- Rezistori un kondensatori
Ķēdes shēma:
Šī Arduino skaņas līmeņa mērītāja shēma ir ļoti vienkārša, kurā mēs esam izmantojuši LM386 audio pastiprinātāja shēmu, lai pastiprinātu signālus no kondensatora mikrofona un piegādātu to Arduino analogajam portam. Mēs jau izmantojām šo LM386 IC, lai izveidotu zema sprieguma audio pastiprinātāja ķēdi, un ķēde vairāk vai mazāk paliek nemainīga.
Šī konkrētā op-amp pastiprinājumu var iestatīt no 20 līdz 200, izmantojot rezistoru vai kondensatoru pāri 1. un 8. tapām. Ja tie paliek brīvi, pēc noklusējuma pastiprinājums tiks iestatīts uz 20. Mūsu projektā mēs maksimāli iegūstam šo ķēdi, tāpēc mēs izmantojam kondensatoru 10uF vērtībā starp 1. un 8. tapām. Ņemiet vērā, ka šī tapa ir jutīga pret polaritāti un kondensatora negatīvā tapa ir jāpieslēdz 8. kontaktam. Pilnīgs pastiprinātājs ķēdi darbina 5V tapa no Arduino.
Kondensatoru C2 izmanto, lai filtrētu līdzstrāvas troksni no mikrofona. Būtībā, kad mikrofons uztver skaņu, skaņas viļņi tiks pārveidoti par maiņstrāvas signāliem. Šim maiņstrāvas signālam var būt pievienots līdzstrāvas troksnis, kuru filtrēs šis kondensators. Līdzīgi pat pēc pastiprināšanas kondensatoru C3 izmanto, lai filtrētu visus līdzstrāvas trokšņus, kas varētu būt pievienoti pastiprināšanas laikā.
Izmantojot regresijas metodi, lai aprēķinātu dB no ADC vērtības:
Kad esam gatavi darbam ar ķēdi, mēs varam savienot Arduino ar datoru un augšupielādēt Arduino programmu “Analog Read Serial”, lai pārbaudītu, vai no sava mikrofona mēs saņemam derīgas ADC vērtības. Tagad mums šīs ADC vērtības jāpārvērš par dB.
Atšķirībā no citām vērtībām, piemēram, temperatūras vai mitruma mērīšana, dB mērīšana nav vienkāršs uzdevums. Tā kā dB vērtība nav lineāra ar ADC vērtību. Ir daži veidi, kā jūs varat nonākt, bet katrs iespējamais solis, kuru es mēģināju, nedeva man labus rezultātus. Jūs varat izlasīt šo Arduino forumu šeit, ja vēlaties to izmēģināt.
Manai lietošanai man nebija vajadzīga liela precizitāte, mērot dB vērtības, un tāpēc nolēmu izmantot vienkāršāku veidu, kā tieši kalibrēt ADC vērtības ar dB vērtībām. Lai izmantotu šo metodi, mums būs nepieciešams SPL skaitītājs (SPL skaitītājs ir instruments, kas varētu nolasīt dB vērtības un to parādīt), bet diemžēl man tāda nebija un pārliecināts, ka lielākajai daļai no mums nebūs. Tātad mēs varam izmantot android lietojumprogrammu ar nosaukumu “Skaņas mērītājs”, kuru bez maksas varēja lejupielādēt no spēļu veikala. Šādu lietojumprogrammu veidu ir daudz, un jūs varat lejupielādēt jebko pēc savas izvēles. Šīs lietojumprogrammas izmanto tālruņa iebūvēto mikrofonu, lai noteiktu trokšņa līmeni un parādītu to mūsu mobilajā tālrunī. Tie nav ļoti precīzi, taču noteikti noderētu mūsu uzdevumam. Tātad sāksim ar Android lietojumprogrammas instalēšanu, mana, kad tā tika atvērta, izskatījās kaut kas līdzīgs šim
Kā jau teicu iepriekš, attiecība starp dB un analogo vērtību nebūs lineāra, tāpēc mums ir jāsalīdzina šīs divas vērtības dažādos intervālos. Vienkārši pierakstiet ADC vērtību, kas tiek parādīta ekrānā dažādiem dB, kas tiek parādīti jūsu mobilajā tālrunī. Es paņēmu apmēram 10 lasījumus, un tie izskatījās šādi zemāk, jūs varat nedaudz atšķirties
Atveriet Excel lapu un ierakstiet šīs vērtības, tagad mēs izmantosim programmu Excel, lai atrastu iepriekš minētā skaitļa regresijas vērtības. Pirms tam uzzīmēsim diagrammu un pārbaudīsim, kā viņi abi ir saistīti, manējie izskatījās šādi.
Kā redzam, dB vērtība nav lineāri saistīta ar ADC, tas nozīmē, ka jums nevar būt kopīgs visu ADC vērtību reizinātājs, lai iegūtu tā ekvivalentās dB vērtības. Šādā gadījumā mēs varam izmantot “lineārās regresijas” metodi. Būtībā tas pārveidos šo neregulāro zilo līniju par tuvāko iespējamo taisno līniju (melnā līnija) un sniegs mums šīs taisnes vienādojumu. Šo vienādojumu var izmantot, lai atrastu dB ekvivalentu vērtību katrai ADC vērtībai, ko mēra Arduino.
Programmā Excel mums ir spraudnis datu analīzei, kas automātiski aprēķinās jūsu vērtību kopas regresiju un publicēs tās datus. Es nepārdomāšu, kā to izdarīt, izmantojot Excel, jo tas ir ārpus šī projekta darbības jomas, kā arī jums ir viegli to googlēt un iemācīties. Kad esat aprēķinājis vērtības regresiju, Excel sniegs dažas vērtības, kā parādīts zemāk. Mūs interesē tikai skaitļi, kas ir izcelti zemāk.
Kad iegūsit šos skaitļus, varēsiet izveidot šādu vienādojumu, piemēram, ADC = (11,003 * dB) - 83,2073
No kā jūs varat atvasināt dB
dB = (ADC + 83,2073) / 11,003
Jums var nākties vadīt savu vienādojumu, jo kalibrēšana var atšķirties. Tomēr saglabājiet šo vērtību drošībā, jo mums tā būs nepieciešama, ieprogrammējot Arduino.
Arduino programma skaņas līmeņa mērīšanai dB:
Pilna dB mērīšanas programma ir dota zemāk, dažas svarīgas rindas ir paskaidrotas tālāk
Šajās iepriekšējās divās rindiņās mēs nolasām tapas A0 ADC vērtību un pārvēršam to dB, izmantojot tikko iegūto vienādojumu. Iespējams, ka šī dB vērtība nav precīza patiesajai dB vērtībai, taču tā joprojām ir gandrīz tuvu mobilajā lietojumprogrammā parādītajām vērtībām.
adc = analogRead (MIC); // Izlasiet ADC vērtību no amplifikatora dB = (adc + 83.2073) / 11.003; // Konvertējiet ADC vērtību uz dB, izmantojot regresijas vērtības
Lai pārbaudītu, vai programma darbojas pareizi, mēs esam arī pievienojuši LED digitālajam tapam 3, kas tiek veikts 1 sekundes laikā, kad Arduino mēra skaļu troksni virs 60dB.
ja (dB> 60) {digitalWrite (3, HIGH); // ieslēdziet gaismas diode (HIGH ir sprieguma līmenis) kavēšanās (1000); // gaidiet otro digitalWrite (3, LOW); }
Arduino skaņas līmeņa mērītāja darbība:
Kad esat gatavs izmantot kodu un aparatūru, vienkārši augšupielādējiet kodu un atveriet sērijas monitoru, lai apskatītu dB vērtības, ko mēra jūsu Arduino. Es testēju šo kodu savā istabā, kur nebija daudz trokšņu, izņemot satiksmi ārpusē, un es savā seriālajā monitorā saņēmu zemāk norādītās vērtības, un android lietojumprogramma arī parādīja kaut ko tuvu šim
Pilnīga projekta darbība ir atrodama video, kas sniegts šīs lapas beigās. Varat izmantot, lai projicētu skaņas noteikšanu telpā un pārbaudītu, vai katrā klasē ir kāda aktivitāte, vai cik daudz trokšņa rodas, vai tamlīdzīgi. Es tikko izveidoju gaismas diode, kas 2 sekundes iet uz augšu, ja skaņa ir ierakstīta virs 60dB.
Darbs ir dīvaini apmierinošs, taču to var droši izmantot projektiem un citiem pamata prototipiem. Ar nedaudz vairāk rakšanas es atklāju, ka problēma faktiski bija aparatūrā, kas man joprojām šad un tad radīja troksni. Tāpēc es izmēģināju citas shēmas, kas tiek izmantotas dzirkstošo jautro mikrofonu dēļos, kuriem ir zemfrekvences un augstfrekvences filtrs. Es jums paskaidroju ķēdi zemāk, lai jūs varētu izmēģināt.
Pastiprinātājs ar filtru shēmu:
Šeit mēs izmantojām zemfrekvences un augstfrekvences filtrus ar pastiprinātāju, lai samazinātu troksni šajā skaņas līmeņa mērīšanas ķēdē, lai varētu palielināt precizitāti.
Šajā iepriekš minētajā shēmā mēs izmantojām populāro LM358 pastiprinātāju, lai pastiprinātu signālus no mikrofona. Kopā ar pastiprinātāju mēs esam izmantojuši arī divus filtrus, augstfrekvences filtru veido R5, C2, bet zemfrekvences filtru - C1 un R2. Šie filtri ir paredzēti, lai atļautu frekvenci tikai no 8Hz līdz 10KHz, jo zemas caurlaidības filtrs filtrēs visu zem 8Hz, bet High Pass filtrs filtrēs virs 15KHz. Šis frekvenču diapazons ir izvēlēts tāpēc, ka mans kondensatora mikrofons darbojas tikai no 10Hz līdz 15KHZ, kā parādīts zemāk esošajā datu lapā.
Ja jūsu frekvences pieprasījums mainās, varat izmantot tālāk norādītās formulas, lai aprēķinātu rezistora un kondensatora vērtību jūsu vajadzīgajai frekvencei.
Frekvence (F) = 1 / (2πRC)
Ņemiet vērā arī to, ka šeit izmantotā rezistora vērtība ietekmēs arī pastiprinātāja pieaugumu. Šajā ķēdē izmantotā rezistora un kondensatora vērtības aprēķins ir parādīts zemāk. Šeit varat lejupielādēt Excel lapu, lai modificētu frekvences vērtības un aprēķinātu regresijas vērtības.
Bijusī trase darbojās apmierinoši manām cerībām, tāpēc es nekad to nemēģināju. Ja jums gadās izmēģināt šo shēmu, dariet man zināmu, vai komentāros tā darbojas labāk nekā iepriekšējā.