- Potrebné materiály:
- Schéma zapojenia:
- Použitie regresnej metódy na výpočet dB z hodnoty ADC:
- Program Arduino na meranie hladiny zvuku v dB:
- Práca s meračom úrovne zvuku Arduino:
- Zosilňovač s obvodom filtrov:
Hlukové znečistenie začalo skutočne získavať na dôležitosti vďaka vysokej hustote obyvateľstva. Normálne ľudské ucho mohlo počuť hladiny zvuku od 0 dB do 140 dB, v ktorých sa hladiny hluku od 120 dB do 140 dB považujú za šum. Hlasitosť alebo hladiny zvuku sa bežne merajú v decibeloch (dB), máme nejaké prístroje, ktoré by dokázali merať zvukové signály v dB, ale tieto merače sú mierne drahé a bohužiaľ nemáme k dispozícii senzorový modul na meranie hladín zvuku v decibeloch. A nie je ekonomické kupovať drahé mikrofóny pre malý projekt Arduino, ktorý by mal merať hladinu zvuku v malej triede alebo obývacej izbe.
Takže v tomto projekte použijeme normálny mikrofón Electret Condenser s Arduinom a pokúsime sa merať hladinu zvukového alebo hlukového znečistenia v dB čo najbližšie k skutočnej hodnote. Na zosilnenie zvukových signálov použijeme normálny obvod zosilňovača a napájame ho do Arduina, v ktorom pomocou regresnej metódy vypočítame zvukové signály v dB. Aby sme skontrolovali, či sú získané hodnoty správne, môžeme použiť aplikáciu „Sound Meter“ pre Android. Ak máte lepší meter, môžete ho použiť na kalibráciu. Upozorňujeme, že cieľom tohto projektu nie je presné meranie dB a poskytne iba hodnoty čo najbližšie k skutočnej hodnote.
Potrebné materiály:
- Arduino UNO
- Mikrofón
- LM386
- 10K variabilný POT
- Rezistory a kondenzátory
Schéma zapojenia:
Obvod pre tento merač úrovne zvuku Arduino je veľmi jednoduchý, v ktorom sme použili obvod zosilňovača zvuku LM386 na zosilnenie signálov z kondenzátorového mikrofónu a jeho dodanie do analógového portu Arduino. Tento LM386 IC sme už použili na zostavenie nízkonapäťového zvukového zosilňovača Circuit a obvod viac-menej zostáva rovnaký.
Zisk tohto konkrétneho operačného zosilňovača je možné nastaviť od 20 do 200 pomocou odporu alebo kondenzátora na pinoch 1 a 8. Ak zostanú voľné, zisk sa predvolene nastaví na 20. Pre náš projekt máme maximálny možný zisk tohto obvodu, preto používame medzi pinmi 1 a 8 kondenzátor s hodnotou 10uF, všimnite si, že tento pin je citlivý na polaritu a záporný pin kondenzátora by mal byť pripojený na pin 8. Celý zosilňovač obvod je napájaný z 5V pinu od Arduina.
Kondenzátor C2 sa používa na filtrovanie jednosmerného šumu z mikrofónu. Keď mikrofón sníma zvuk, zvukové vlny sa v podstate prevedú na AC signály. S týmto AC signálom môže byť spojený istý jednosmerný šum, ktorý bude filtrovaný týmto kondenzátorom. Podobne aj po zosilnení sa kondenzátor C3 používa na filtrovanie akéhokoľvek jednosmerného šumu, ktorý sa mohol pridať počas zosilňovania.
Použitie regresnej metódy na výpočet dB z hodnoty ADC:
Keď sme pripravení na náš okruh, môžeme pripojiť Arduino k počítaču a nahrať z Arduina ukážkový program „Analog Read Serial“, aby sme skontrolovali, či z mikrofónu dostávame platné hodnoty ADC. Teraz musíme previesť tieto hodnoty ADC na dB.
Na rozdiel od iných hodnôt, ako je meranie teploty alebo vlhkosti, nie je meranie dB priamočiarou úlohou. Pretože hodnota dB nie je lineárna s hodnotou ADC. Existuje niekoľko spôsobov, ako sa dá dospieť, ale každý možný krok, ktorý som vyskúšal, mi nepriniesol dobré výsledky. Toto fórum Arduino si môžete prečítať tu, ak to chcete vyskúšať.
Pre svoju aplikáciu som pri meraní hodnôt dB nepotreboval väčšiu presnosť, a preto som sa rozhodol použiť ľahší spôsob priamej kalibrácie hodnôt ADC s hodnotami dB. Pre túto metódu budeme potrebovať merač SPL (merač SPL je prístroj, ktorý dokáže čítať hodnoty dB a zobrazovať ich), ale bohužiaľ som ho nemal a som si istý, že väčšina z nás nebude. Môžeme teda použiť aplikáciu pre Android s názvom „Sound meter“, ktorú je možné bezplatne stiahnuť z obchodu Play. Existuje veľa takýchto typov aplikácií a môžete si stiahnuť čokoľvek podľa vášho výberu. Tieto aplikácie používajú vstavaný mikrofón telefónu na detekciu úrovne šumu a jej zobrazenie v našom mobilnom telefóne. Nie sú príliš presné, ale určite by fungovali pre našu úlohu. Takže začnime inštaláciou aplikácie pre Android, moja po otvorení vyzerala nižšie asi takto
Ako som už povedal, vzťah medzi dB a analógovými hodnotami nebude lineárny, a preto musíme tieto dve hodnoty porovnávať v rôznych intervaloch. Stačí si poznamenať hodnotu ADC zobrazeného na obrazovke pre rôzne dB zobrazené na vašom mobilnom telefóne. Urobil som asi 10 čítaní a vyzerali takto nižšie, môžete sa trochu líšiť
Otvorte stránku programu Excel a zadajte tieto hodnoty, zatiaľ budeme pomocou programu Excel hľadať regresné hodnoty pre vyššie uvedené číslo. Predtým si nakreslime graf a skontrolujme, ako spolu súvisia, môj potom vyzeral takto.
Ako vidíme, hodnota dB nesúvisí lineárne s ADC, čo znamená, že na získanie jej ekvivalentných hodnôt dB nemôžete mať spoločný multiplikátor pre všetky hodnoty ADC. V takom prípade môžeme použiť metódu „lineárnej regresie“. V zásade prevedie túto nepravidelnú modrú čiaru na najbližšiu možnú priamku (čierna čiara) a dá nám rovnicu tejto priamky. Táto rovnica sa dá použiť na nájdenie ekvivalentnej hodnoty dB pre každú hodnotu ADC, ktorú Arduino meria.
V programe Excel máme doplnok na analýzu údajov, ktorý automaticky vypočíta regresiu pre vašu množinu hodnôt a zverejní jej údaje. Nebudem sa zaoberať tým, ako to urobiť s programom Excel, pretože je to mimo rámec tohto projektu a tiež je ľahké pre vás vyhľadať Google a naučiť sa to. Po výpočte regresie pre danú hodnotu program Excel poskytne niektoré hodnoty, ako je uvedené nižšie. Zaujímajú nás iba čísla, ktoré sú zvýraznené nižšie.
Hneď ako získate tieto čísla, budete môcť vytvoriť nasledujúcu rovnicu ako
ADC = (11,003 * dB) - 83,2073
Od čoho sa dá odvodiť dB
dB = (ADC + 83,2073) / 11,003
Možno budete musieť riadiť svoju vlastnú rovnicu, pretože kalibrácia sa môže líšiť. Udržujte však túto hodnotu v bezpečí, pretože ju budeme pri programovaní Arduina potrebovať.
Program Arduino na meranie hladiny zvuku v dB:
Kompletný program merania dB je uvedený nižšie, nižšie je vysvetlených niekoľko dôležitých riadkov
V týchto dvoch vyššie uvedených riadkoch načítame hodnotu ADC kolíka A0 a prevedieme ju na dB pomocou rovnice, ktorú sme práve odvodili. Táto hodnota dB nemusí byť presná na skutočnú hodnotu dB, ale zostáva veľmi blízko hodnotám zobrazeným v mobilnej aplikácii.
adc = analogRead (MIC); // Odčítajte hodnotu ADC zo zosilňovača dB = (adc + 83,2073) / 11,003; // Prepočítajte hodnotu ADC na dB pomocou regresných hodnôt
Aby sme skontrolovali, či program funguje správne, pridali sme tiež LED do digitálneho kolíka 3, ktorý je nastavený tak, aby išiel vysoko na 1 sekundu, keď Arduino nameria hlasný zvuk nad 60 dB.
if (dB> 60) {digitalWrite (3, HIGH); // rozsvieti LED (HIGH je úroveň napätia) delay (1000); // čakať na druhú digitalWrite (3, LOW); }
Práca s meračom úrovne zvuku Arduino:
Keď ste pripravení na kód a hardvér, jednoducho nahrajte kód a otvorte sériový monitor, aby ste sa pozreli na hodnoty dB namerané vaším Arduino. Testoval som tento kód vo svojej miestnosti, kde nebolo veľa hluku, okrem vonkajšej premávky a na sériovom monitore som dostal nižšie uvedené hodnoty a aplikácia pre Android tiež zobrazovala niečo podobné
Kompletné fungovanie projektu nájdete na videu na konci tejto stránky. Môžete použiť projekciu na detekciu zvuku v miestnosti a na kontrolu, či existuje nejaká činnosť alebo koľko hluku sa generuje v každej triede alebo niečo podobné. Práve som vytvoril LED, aby na 2 sekundy zhasol, ak je zvuk zaznamenaný nad 60 dB.
Táto práca je mimoriadne uspokojivá, ale dá sa určite použiť pri projektoch a iných základných prototypoch. Po niekoľkých ďalších kopaniach som zistil, že problém bol v skutočnosti s hardvérom, ktorý mi stále občas spôsoboval hluk. Vyskúšal som teda ďalšie obvody, ktoré sa používajú na doskových mikrofónových doskách s nízkopriepustným a hornopriepustným filtrom. Nižšie som vysvetlil okruh, ktorý môžete vyskúšať.
Zosilňovač s obvodom filtrov:
Tu sme použili nízkopriepustný a hornopriepustný filter so zosilňovačom na zníženie šumu v tomto obvode merania hladiny zvuku, aby bolo možné zvýšiť presnosť.
V tomto obvode vyššie sme použili obľúbený zosilňovač LM358 na zosilnenie signálov z mikrofónu. Spolu so zosilňovačom sme použili aj dva filtre, hornopriepustný filter tvoria R5, C2 a dolnopriepustný filter používajú C1 a R2. Tieto filtre sú navrhnuté tak, aby umožňovali frekvenciu iba od 8 Hz do 10 KHz, pretože dolnopriepustný filter filtruje čokoľvek pod 8 Hz a horný priechod filtruje čokoľvek nad 15 KHz. Tento frekvenčný rozsah je vybraný preto, lebo môj kondenzátorový mikrofón pracuje iba od 10 Hz do 15 kHz, ako je uvedené v údajovom liste nižšie.
Ak sa vaša frekvenčná požiadavka zmení, môžete pomocou nasledujúcich vzorcov vypočítať hodnotu rezistora a kondenzátora pre požadovanú frekvenciu.
Frekvencia (F) = 1 / (2πRC)
Tiež si uvedomte, že hodnota tu použitého odporu tiež ovplyvní zisk zosilňovača. Ďalej je uvedený výpočet hodnoty odporu a kondenzátora použitého v tomto obvode. Tu si môžete stiahnuť hárok programu Excel na úpravu hodnôt Frekvencie a výpočet regresných hodnôt.
Bývalý okruh fungoval na moje očakávania uspokojivo, takže som tento nikdy neskúšal. Ak tento obvod náhodou vyskúšate, dajte mi prostredníctvom komentárov vedieť, či funguje lepšie ako predchádzajúci.