- Vereiste materialen:
- Schakelschema:
- Regressiemethode gebruiken om dB te berekenen op basis van ADC-waarde:
- Arduino-programma om geluidsniveau in dB te meten:
- Werking van de Arduino-geluidsniveaumeter:
- Versterker met filtercircuit:
Door de hoge bevolkingsdichtheid is geluidshinder echt aan belang gaan winnen. Een normaal menselijk oor kan geluidsniveaus horen van 0dB tot 140dB, waarbij geluidsniveaus van 120dB tot 140dB als ruis worden beschouwd. Loudness of geluidsniveaus worden gewoonlijk gemeten in decibel (dB), we hebben enkele instrumenten die de geluidssignalen in dB kunnen meten, maar deze meters zijn enigszins duur en helaas hebben we geen kant-en-klare sensormodule om geluidsniveaus in decibel te meten. En het is niet economisch om dure microfoons aan te schaffen voor een klein Arduino-project dat het geluidsniveau in een klein klaslokaal of woonkamer moet meten.
Dus in dit project zullen we een normale Electret condensator microfoon gebruiken met Arduino en proberen het geluids- of geluidsoverlastniveau in dB zo dicht mogelijk bij de werkelijke waarde te meten. We zullen een normaal versterkercircuit gebruiken om de geluidssignalen te versterken en naar Arduino te sturen, waarin we de regressiemethode zullen gebruiken om de geluidssignalen in dB te berekenen. Om te controleren of de verkregen waarden correct zijn, kunnen we de "Sound Meter" android applicatie gebruiken, als je een betere meter hebt kun je die gebruiken voor kalibratie. Houd er rekening mee dat dit project niet tot doel heeft dB nauwkeurig te meten en alleen waarden geeft die zo dicht mogelijk bij de werkelijke waarde liggen.
Vereiste materialen:
- Arduino UNO
- Microfoon
- LM386
- 10K variabele POT
- Weerstanden en condensatoren
Schakelschema:
Circuit voor deze Arduino-geluidsniveaumeter is een heel eenvoudig waarin we het LM386-audioversterkercircuit hebben gebruikt om de signalen van een condensatormicrofoon te versterken en deze naar de analoge poort van Arduino te sturen. We hebben deze LM386 IC al gebruikt om een laagspannings-audioversterkercircuit te bouwen en het circuit blijft min of meer hetzelfde.
De versterking van deze specifieke op-amp kan worden ingesteld van 20 tot 200 met behulp van een weerstand of condensator op pin 1 en 8. Als ze vrij worden gelaten, wordt de versterking standaard ingesteld op 20. Voor ons project hebben we de maximale versterking mogelijk gemaakt door dit circuit, dus we gebruiken een condensator met een waarde van 10uF tussen de pinnen 1 en 8, merk op dat deze pin polariteitsgevoelig is en dat de negatieve pin van de condensator moet worden aangesloten op pin 8. De complete versterker circuit wordt gevoed door de 5V-pin van de Arduino.
De condensator C2 wordt gebruikt om de DC-ruis van de microfoon te filteren. Als de microfoon geluid detecteert, worden de geluidsgolven in principe omgezet in AC-signalen. Dit AC-signaal kan wat DC-ruis bevatten die door deze condensator wordt gefilterd. Evenzo wordt zelfs na versterking een condensator C3 gebruikt om eventuele DC-ruis te filteren die tijdens de versterking zou kunnen zijn toegevoegd.
Regressiemethode gebruiken om dB te berekenen op basis van ADC-waarde:
Zodra we klaar zijn met ons circuit, kunnen we de Arduino aansluiten op de computer en het voorbeeldprogramma "Analog Read Serial" van Arduino uploaden om te controleren of we geldige ADC-waarden van onze microfoon krijgen. Nu moeten we deze ADC-waarden omzetten naar dB.
In tegenstelling tot andere waarden, zoals het meten van temperatuur of vochtigheid, is het meten van dB geen eenvoudige taak. Omdat de waarde van dB niet lineair is met de waarde van ADC's. Er zijn een paar manieren waarop je kunt komen, maar elke mogelijke stap die ik probeerde, leverde me geen goede resultaten op. Je kunt dit Arduino-forum hier lezen als je het eens wilt proberen.
Voor mijn toepassing had ik niet veel nauwkeurigheid nodig bij het meten van de dB-waarden en daarom besloot ik een gemakkelijkere manier te gebruiken om de ADC-waarden direct met dB-waarden te kalibreren. Voor deze methode hebben we een SPL-meter nodig (een SPL-meter is een instrument dat dB-waarden kan lezen en weergeven), maar helaas had ik er geen en de meesten van ons zullen dat zeker niet doen. We kunnen dus de Android-applicatie "Sound meter" gebruiken die gratis kan worden gedownload van de Play Store. Er zijn veel van dergelijke soorten applicaties en u kunt alles van uw keuze downloaden. Deze applicaties gebruiken de ingebouwde microfoon van de telefoon om het geluidsniveau te detecteren en op onze mobiel weer te geven. Ze zijn niet erg nauwkeurig, maar zouden zeker voor onze taak werken. Dus laten we beginnen met het installeren van de Android-applicatie, de mijne zag er bij opening er ongeveer zo uit als hieronder
Zoals ik al eerder zei, zal de relatie tussen dB- en analoge waarden niet lineair zijn, daarom moeten we deze twee waarden met verschillende intervallen vergelijken. Noteer gewoon de waarde van ADC die op het scherm wordt weergegeven voor verschillende dB die op uw mobiele telefoon wordt weergegeven. Ik heb ongeveer 10 metingen gedaan en ze zagen er hieronder als volgt uit, je kunt een beetje variëren
Open een Excel-pagina en typ deze waarden in, voorlopig zullen we Excel gebruiken om de regressiewaarden voor het bovenstaande nummer te vinden. Laten we eerst een grafiek uitzetten en kijken hoe ze beide verband houden, de mijne zag er hieronder als volgt uit.
Zoals we kunnen zien, is de waarde van dB niet lineair gerelateerd aan ADC, wat betekent dat u geen gemeenschappelijke vermenigvuldiger voor alle ADC-waarden kunt hebben om de equivalente dB-waarden te verkrijgen. In dat geval kunnen we de "lineaire regressiemethode" gebruiken. In feite zal het deze onregelmatige blauwe lijn omzetten in de dichtst mogelijke rechte lijn (zwarte lijn) en ons de vergelijking van die rechte lijn geven. Deze vergelijking kan worden gebruikt om de equivalente waarde van dB te vinden voor elke waarde van ADC die de Arduino meet.
In Excel hebben we een plug-in voor data-analyse die automatisch de regressie voor uw set waarden berekent en de data publiceert. Ik ga niet ingaan op hoe je het met Excel moet doen, aangezien het buiten het bereik van dit project valt, het is ook gemakkelijk voor jou om Google te gebruiken en het te leren. Zodra u de regressie voor de waarde heeft berekend, geeft Excel enkele waarden zoals hieronder weergegeven. We zijn alleen geïnteresseerd in de cijfers die hieronder worden gemarkeerd.
Zodra u deze cijfers heeft ontvangen, kunt u de onderstaande vergelijking maken zoals
ADC = (11,003 * dB) - 83,2073
Waaruit je de dB kunt afleiden om te zijn
dB = (ADC + 83.2073) / 11.003
Mogelijk moet u uw eigen vergelijking maken, aangezien de kalibratie kan verschillen. Bewaar deze waarde echter veilig, want we hebben deze nodig tijdens het programmeren van de Arduino.
Arduino-programma om geluidsniveau in dB te meten:
Het complete programma om dB te meten wordt hieronder gegeven, enkele belangrijke regels worden hieronder uitgelegd
In deze bovenstaande twee regels lezen we de ADC-waarde van pin A0 en converteren deze naar dB met behulp van de vergelijking die we zojuist hebben afgeleid. Deze dB-waarde is misschien niet nauwkeurig tot de werkelijke dB-waarde, maar blijft vrijwel in de buurt van de waarden die worden weergegeven op de mobiele applicatie.
adc = analogRead (MIC); // Lees de ADC-waarde van versterker dB = (adc + 83.2073) / 11.003; // Converteer ADC-waarde naar dB met behulp van regressiewaarden
Om te controleren of het programma goed werkt, hebben we ook een LED toegevoegd aan digitale pin 3 die gemaakt is om 1 seconde hoog te gaan wanneer de Arduino een hard geluid meet van meer dan 60dB.
if (dB> 60) {digitalWrite (3, HIGH); // zet de LED aan (HIGH is het spanningsniveau) vertraging (1000); // wacht op een tweede digitalWrite (3, LOW); }
Werking van de Arduino-geluidsniveaumeter:
Zodra u klaar bent met de code en hardware, uploadt u gewoon de code en opent u uw seriële monitor om de dB-waarden te bekijken die door uw Arduino zijn gemeten. Ik was deze code aan het testen in mijn kamer waar er niet veel lawaai was behalve het verkeer buiten en ik kreeg de onderstaande waarden op mijn seriële monitor en de Android-applicatie vertoonde ook iets dat hier in de buurt kwam
De volledige werking van het project is te vinden in de video aan het einde van deze pagina. U kunt projecteren gebruiken om geluid in de ruimte te detecteren en te controleren of er activiteit is of hoeveel lawaai er in elk klaslokaal wordt gegenereerd of iets dergelijks. Ik heb zojuist een LED gemaakt die 2 seconden lang hoog gaat als er geluid wordt opgenomen boven de 60dB.
De werking is vreemd genoeg bevredigend, maar kan zeker worden gebruikt voor projecten en andere basisprototypes. Met nog een paar graafwerkzaamheden ontdekte ik dat het probleem eigenlijk bij de hardware zat, die me af en toe nog steeds lawaai gaf. Dus ik heb andere circuits uitgeprobeerd die worden gebruikt in de Spark Fun-microfoonborden met een laagdoorlaat- en een hoogdoorlaatfilter. Ik heb het onderstaande circuit uitgelegd zodat je het kunt proberen.
Versterker met filtercircuit:
Hier hebben we laagdoorlaat- en hoogdoorlaatfilters met versterker gebruikt om de ruis in dit meetcircuit voor geluidsniveaus te verminderen, zodat de nauwkeurigheid kan worden verhoogd.
In dit bovenstaande circuit hebben we de populaire LM358-versterker gebruikt om de signalen van de microfoon te versterken. Naast versterker hebben we ook twee filters gebruikt, het hoogdoorlaatfilter wordt gevormd door R5, C2 en het laagdoorlaatfilter wordt gebruikt door de C1 en R2. Deze filters zijn ontworpen om alleen een frequentie van 8Hz tot 10KHz toe te staan, aangezien het laagdoorlaatfilter alles onder 8Hz filtert en het hoogdoorlaatfilter alles boven 15KHz. Dit frequentiebereik is geselecteerd omdat mijn condensatormicrofoon alleen werkt van 10Hz tot 15KHZ, zoals weergegeven in de onderstaande datasheet.
Als uw frequentievraag verandert, kunt u de onderstaande formules gebruiken om de waarde van weerstand en condensator voor uw vereiste frequentie te berekenen.
Frequentie (F) = 1 / (2πRC)
Merk ook op dat de waarde van de hier gebruikte weerstand ook de versterking van de versterker zal beïnvloeden. Berekening voor de waarde van de weerstand en condensator die in dit circuit worden gebruikt, wordt hieronder weergegeven. U kunt hier het Excel-blad downloaden om de waarden van Frequentie te wijzigen en de regressiewaarden te berekenen.
Het vorige circuit werkte bevredigend voor mijn verwachtingen, dus ik heb dit nooit geprobeerd. Als je dit circuit toevallig probeert, laat me dan via de opmerkingen weten of het beter werkt dan het vorige.