- Wymagane materiały:
- Schemat obwodu:
- Użycie metody regresji do obliczenia dB na podstawie wartości ADC:
- Program Arduino do pomiaru poziomu dźwięku w dB:
- Działanie miernika poziomu dźwięku Arduino:
- Wzmacniacz z obwodem filtrów:
Zanieczyszczenie hałasem naprawdę zaczęło nabierać znaczenia ze względu na dużą gęstość zaludnienia. Normalne ludzkie ucho może usłyszeć poziomy dźwięku od 0 dB do 140 dB, przy czym poziomy dźwięku od 120 dB do 140 dB są uznawane za hałas. Głośność lub poziomy dźwięku są zwykle mierzone w decybelach (dB), mamy pewne przyrządy, które mogą mierzyć sygnały dźwiękowe w dB, ale te mierniki są nieco drogie i niestety nie mamy modułu czujnika do pomiaru poziomu dźwięku w decybelach. A zakup drogich mikrofonów do małego projektu Arduino, który powinien mierzyć poziom dźwięku w małej klasie lub salonie, nie jest ekonomiczny.
Dlatego w tym projekcie użyjemy zwykłego elektretowego mikrofonu pojemnościowego z Arduino i spróbujemy zmierzyć poziom zanieczyszczenia dźwiękiem lub hałasem w dB jak najbliżej rzeczywistej wartości. Użyjemy normalnego obwodu wzmacniacza do wzmocnienia sygnałów dźwiękowych i doprowadzimy go do Arduino, w którym użyjemy metody regresji do obliczenia sygnałów dźwiękowych w dB. Aby sprawdzić, czy otrzymane wartości są prawidłowe, możemy skorzystać z aplikacji na Androida „Miernik dźwięku”, jeśli masz lepszy miernik, możesz użyć go do kalibracji. Zwróć uwagę, że ten projekt nie ma na celu dokładnego pomiaru dB i po prostu poda wartości jak najbliższe wartości rzeczywistej.
Wymagane materiały:
- Arduino UNO
- Mikrofon
- LM386
- 10K zmienny POT
- Rezystory i kondensatory
Schemat obwodu:
Obwód tego miernika poziomu dźwięku Arduino jest bardzo prosty, w którym wykorzystaliśmy obwód wzmacniacza audio LM386 do wzmocnienia sygnałów z mikrofonu pojemnościowego i dostarczenia go do portu analogowego Arduino. Użyliśmy już tego układu scalonego LM386 do budowy obwodu wzmacniacza audio niskiego napięcia, a obwód pozostaje mniej więcej taki sam.
Wzmocnienie tego konkretnego wzmacniacza operacyjnego można ustawić w zakresie od 20 do 200 za pomocą rezystora lub kondensatora na pinach 1 i 8. Jeśli pozostaną wolne, wzmocnienie zostanie domyślnie ustawione na 20. W naszym projekcie mamy maksymalne wzmocnienie możliwe dla tego obwodu, więc używamy kondensatora o wartości 10uF między pinami 1 i 8, zauważ, że ten pin jest wrażliwy na polaryzację i ujemny pin kondensatora powinien być podłączony do pinu 8. Cały wzmacniacz obwód zasilany jest z pinu 5V z Arduino.
Kondensator C2 służy do filtrowania szumów DC z mikrofonu. Zasadniczo, gdy mikrofon wykryje dźwięk, fale dźwiękowe zostaną przekształcone w sygnały AC. Ten sygnał AC może mieć pewne sprzężone z nim szumy DC, które będą filtrowane przez ten kondensator. Podobnie, nawet po wzmocnieniu kondensator C3 jest używany do filtrowania wszelkich zakłóceń DC, które mogły zostać dodane podczas wzmacniania.
Użycie metody regresji do obliczenia dB na podstawie wartości ADC:
Gdy jesteśmy gotowi z naszym obwodem, możemy podłączyć Arduino do komputera i przesłać przykładowy program „Analog Read Serial” z Arduino, aby sprawdzić, czy otrzymujemy prawidłowe wartości ADC z naszego mikrofonu. Teraz musimy przekonwertować te wartości ADC na dB.
W przeciwieństwie do innych wartości, takich jak pomiar temperatury lub wilgotności, pomiar dB nie jest prostym zadaniem. Ponieważ wartość dB nie jest liniowa z wartością przetworników ADC. Jest kilka sposobów, na które możesz dojść, ale każdy możliwy krok, który próbowałem, nie przyniósł mi dobrych rezultatów. Możesz przeczytać to forum Arduino tutaj, jeśli chcesz spróbować.
W mojej aplikacji nie potrzebowałem dużej dokładności podczas pomiaru wartości dB, dlatego zdecydowałem się na łatwiejszy sposób bezpośredniej kalibracji wartości ADC z wartościami dB. Do tej metody będziemy potrzebować miernika SPL (miernik SPL to instrument, który może odczytywać wartości dB i wyświetlać je), ale niestety go nie miałem i na pewno większość z nas nie. Możemy więc skorzystać z aplikacji na Androida o nazwie „Miernik dźwięku”, którą można bezpłatnie pobrać ze sklepu Play. Jest wiele tego typu aplikacji i możesz pobrać dowolną z nich. Aplikacje te wykorzystują wbudowany mikrofon telefonu do wykrywania poziomu hałasu i wyświetlania go na naszym telefonie komórkowym. Nie są zbyt dokładne, ale z pewnością sprawdzą się w naszym zadaniu. Zacznijmy więc od zainstalowania aplikacji na Androida, moja po otwarciu wyglądała jak poniżej
Jak powiedziałem wcześniej, relacja między dB a wartościami analogowymi nie będzie liniowa, dlatego musimy porównać te dwie wartości w różnych odstępach czasu. Po prostu zanotuj wartość ADC wyświetlanego na ekranie dla różnych dB wyświetlanych na telefonie komórkowym. Zrobiłem około 10 odczytów i wyglądały tak poniżej, możesz się nieco różnić
Otwórz stronę programu Excel i wpisz te wartości, na razie będziemy używać programu Excel, aby znaleźć wartości regresji dla powyższej liczby. Wcześniej wykreślmy wykres i sprawdźmy, do czego się odnoszą, mój wyglądał tak poniżej.
Jak widać, wartość dB nie jest liniowo powiązana z ADC, co oznacza, że nie można mieć wspólnego mnożnika dla wszystkich wartości ADC, aby uzyskać równoważne wartości dB. W takim przypadku możemy skorzystać z metody „regresji liniowej”. Zasadniczo zamieni tę nieregularną niebieską linię na najbliższą możliwą linię prostą (czarną linię) i da nam równanie tej prostej. To równanie można wykorzystać do znalezienia równoważnej wartości dB dla każdej wartości ADC mierzonej przez Arduino.
W programie Excel mamy wtyczkę do analizy danych, która automatycznie obliczy regresję dla twojego zestawu wartości i opublikuje swoje dane. Nie zamierzam opisywać, jak to zrobić w programie Excel, ponieważ wykracza to poza zakres tego projektu, a także jest łatwy do Google i nauki. Po obliczeniu regresji wartości, program Excel poda pewne wartości, jak pokazano poniżej. Interesują nas tylko liczby zaznaczone poniżej.
Po uzyskaniu tych liczb będziesz mógł utworzyć poniższe równanie, takie jak
ADC = (11,003 * dB) - 83,2073
Z którego można wyprowadzić dB, które ma być
dB = (ADC + 83,2073) / 11,003
Być może będziesz musiał przeprowadzić własne równanie, ponieważ kalibracja może się różnić. Jednak zachowaj tę wartość w bezpiecznym miejscu, ponieważ będziemy jej potrzebować podczas programowania Arduino.
Program Arduino do pomiaru poziomu dźwięku w dB:
Kompletny program do pomiaru dB jest podany poniżej, kilka ważnych linii wyjaśniono poniżej
W tych dwóch powyższych wierszach odczytujemy wartość ADC styku A0 i konwertujemy ją na dB za pomocą równania, które właśnie wyprowadziliśmy. Ta wartość dB może nie być dokładna do prawdziwej wartości dB, ale pozostaje bardzo zbliżona do wartości wyświetlanych w aplikacji mobilnej.
adc = analogRead (MIC); // Odczytaj wartość ADC z amplifera dB = (adc + 83.2073) / 11.003; // Konwertuj wartość ADC na dB przy użyciu wartości regresji
Aby sprawdzić, czy program działa poprawnie, dodaliśmy również diodę LED do cyfrowego pinu 3, która jest ustawiana w stan wysoki przez 1 sekundę, gdy Arduino mierzy głośny hałas powyżej 60 dB.
jeśli (dB> 60) {digitalWrite (3, HIGH); // włącz diodę LED (WYSOKI poziom napięcia) opóźnienie (1000); // czekaj na sekundę digitalWrite (3, LOW); }
Działanie miernika poziomu dźwięku Arduino:
Gdy będziesz gotowy z kodem i sprzętem, po prostu prześlij kod i otwórz monitor szeregowy, aby spojrzeć na wartości dB zmierzone przez Arduino. Testowałem ten kod w swoim pokoju, gdzie nie było dużo hałasu poza ruchem na zewnątrz i otrzymałem poniższe wartości na moim monitorze szeregowym, a aplikacja na Androida również wyświetlała coś zbliżonego
Pełne działanie projektu można znaleźć na wideo podanym na końcu tej strony. Możesz użyć do projekcji, aby wykryć dźwięk w pokoju i sprawdzić, czy jest jakaś aktywność lub ile hałasu jest generowane w każdej klasie lub coś w tym rodzaju. Właśnie stworzyłem diodę LED, aby świeciła na 2 sekundy, jeśli jest dźwięk nagrany powyżej 60 dB.
Praca jest dziwnie satysfakcjonująca, ale z pewnością można ją wykorzystać do projektów i innych podstawowych prototypów. Po kilku kolejnych poszukiwaniach stwierdziłem, że problem dotyczył sprzętu, który od czasu do czasu nadal wydawał mi hałas. Wypróbowałem więc inne obwody, które są używane w płytach mikrofonowych typu spark fun, które mają filtr dolnoprzepustowy i górnoprzepustowy. Poniżej wyjaśniłem obwód, abyś mógł spróbować.
Wzmacniacz z obwodem filtrów:
Tutaj zastosowaliśmy filtry dolnoprzepustowe i górnoprzepustowe ze wzmacniaczem, aby zredukować szum w tym obwodzie pomiaru poziomu dźwięku, aby zwiększyć dokładność.
W powyższym układzie użyliśmy popularnego wzmacniacza LM358 do wzmocnienia sygnałów z mikrofonu. Wraz ze wzmacniaczem zastosowaliśmy również dwa filtry, filtr górnoprzepustowy tworzą R5, C2, a dolnoprzepustowy - C1 i R2. Filtry te są zaprojektowane tak, aby dopuszczać częstotliwość tylko od 8 Hz do 10 kHz, ponieważ filtr dolnoprzepustowy będzie filtrował wszystko poniżej 8 Hz, a filtr górnoprzepustowy będzie filtrował wszystko powyżej 15 kHz. Ten zakres częstotliwości jest wybrany, ponieważ mój mikrofon pojemnościowy działa tylko od 10 Hz do 15 KHZ, jak pokazano w arkuszu danych poniżej.
Jeśli zmieni się zapotrzebowanie na częstotliwość, możesz użyć poniższych wzorów do obliczenia wartości rezystora i kondensatora dla wymaganej częstotliwości.
Częstotliwość (F) = 1 / (2πRC)
Należy również pamiętać, że wartość zastosowanego tutaj rezystora wpłynie również na wzmocnienie wzmacniacza. Obliczenia wartości rezystora i kondensatora zastosowanych w tym obwodzie pokazano poniżej. Możesz pobrać arkusz programu Excel z tego miejsca, aby zmodyfikować wartości częstotliwości i obliczyć wartości regresji.
Poprzedni obwód spełnił moje oczekiwania, więc nigdy nie próbowałem tego. Jeśli zdarzy ci się wypróbować ten obwód, daj mi znać, czy działa lepiej niż poprzedni poprzez komentarze.