- Необходими материали:
- Електрическа схема:
- Използване на метод на регресия за изчисляване на dB от стойността на ADC:
- Програма Arduino за измерване на нивото на звука в dB:
- Работа на измервател на нивото на звука Arduino:
- Усилвател с филтърна верига:
Шумовото замърсяване наистина започна да придобива значение поради високата гъстота на населението. Нормалното човешко ухо може да чуе нива на звука от 0dB до 140dB, при които нивата на звука от 120dB до 140dB се считат за шум. Силата на звука или нивата на звука обикновено се измерват в децибели (dB), имаме някои инструменти, които могат да измерват звуковите сигнали в dB, но тези измервателни уреди са малко скъпи и за съжаление нямаме модул сензор за измерване на нивата на звука в децибели. И не е икономично да купувате скъпи микрофони за малък проект на Arduino, който трябва да измерва нивото на звука в малка класна стая или хол.
Така че в този проект ще използваме нормален Electret Condenser микрофон с Arduino и ще се опитаме да измерим нивото на звука или шумовото замърсяване в dB възможно най-близо до действителната стойност. Ще използваме нормална усилвателна схема, за да усилим звуковите сигнали и да я подадем към Arduino, в която ще използваме регресионен метод за изчисляване на звуковите сигнали в dB. За да проверим дали получените стойности са верни, можем да използваме андроид приложението „Sound Meter“, ако имате по-добър измервателен уред, можете да го използвате за калибриране. Имайте предвид, че този проект няма за цел да измери точно dB и просто ще даде стойности, максимално близки до действителната стойност.
Необходими материали:
- Arduino UNO
- Микрофон
- LM386
- 10K променлива POT
- Резистори и кондензатори
Електрическа схема:
Веригата за този измервател на нивото на звука на Arduino е много проста, в която използваме LM386 аудио усилвателна схема за усилване на сигналите от кондензаторния микрофон и подаването му към аналоговия порт на Arduino. Вече използвахме този LM386 IC за изграждане на нисковолтова аудио усилвателна схема и веригата горе-долу остава същата.
Коефициентът на усилване на този конкретен усилвател може да бъде настроен от 20 до 200, като се използва резистор или кондензатор през щифтове 1 и 8. Ако те останат свободни, усилването ще бъде зададено като 20 по подразбиране. За нашия проект ние използваме максималната печалба, възможна от тази схема, затова използваме кондензатор на стойност 10uF между щифтовете 1 и 8, имайте предвид, че този щифт е чувствителен към полярност и отрицателният щифт на кондензатора трябва да бъде свързан към щифт 8. Пълният усилвател веригата се захранва от 5V щифт от Arduino.
Кондензаторът C2 се използва за филтриране на DC шума от микрофона. По принцип, когато микрофонът усети звук, звуковите вълни ще бъдат преобразувани в променливотокови сигнали. Този AC сигнал може да има някакъв DC шум, свързан с него, който ще бъде филтриран от този кондензатор. По същия начин, дори след усилване кондензатор C3 се използва за филтриране на всеки DC шум, който може да е бил добавен по време на усилването.
Използване на метод на регресия за изчисляване на dB от стойността на ADC:
След като сме готови с нашата схема, можем да свържем Arduino към компютър и да качим примерната програма „Analog Read Serial“ от Arduino, за да проверим дали получаваме валидни ADC стойности от нашия микрофон. Сега трябва да преобразуваме тези ADC стойности в dB.
За разлика от други стойности като измерване на температура или влажност, измерването на dB не е пряка задача. Тъй като стойността на dB не е линейна със стойността на ADC. Има няколко начина, по които можете да стигнете, но всяка възможна стъпка, която опитах, не ми даде добри резултати. Можете да прочетете този форум на Arduino тук, ако искате да опитате.
За моето приложение нямах нужда от много точност, докато измервах стойностите на dB и затова реших да използвам по-лесен начин за директно калибриране на стойностите на ADC със стойности на dB. За този метод ще ни е необходим SPL метър (SPL метърът е инструмент, който може да чете dB стойности и да го показва), но за съжаление нямах такъв и със сигурност повечето от нас няма. Така че можем да използваме приложението за Android, наречено „Измервател на звука“, което може да бъде изтеглено безплатно от магазина за игра. Има много такива видове приложения и можете да изтеглите всичко по ваш избор. Тези приложения използват вградения в телефона микрофон, за да открият нивото на шума и да го покажат на нашия мобилен телефон. Те не са много точни, но със сигурност биха работили за нашата задача. Така че нека да започнем с инсталирането на приложението за Android, моето при отваряне изглеждаше по-долу по следния начин
Както казах по-рано, връзката между dB и аналоговите стойности няма да бъде линейна, поради което трябва да сравняваме тези две стойности на различни интервали. Просто отбележете стойността на ADC, която се показва на екрана за различни dB, показани на вашия мобилен телефон. Направих около 10 показания и те изглеждаха така по-долу, може да се различавате малко
Отворете страница на Excel и въведете тези стойности, за сега ще използваме Excel, за да намерим стойностите на регресията за горното число. Преди това нека да начертаем графика и да проверим как се отнасят и двете, моята изглеждаше по-долу
Както виждаме, стойността на dB не е свързана линейно с ADC, което означава, че не можете да имате общ множител за всички стойности на ADC, за да получите неговите еквивалентни dB стойности. В такъв случай можем да използваме метода „линейна регресия“. По принцип тя ще преобразува тази неправилна синя линия до възможно най-близката права линия (черна линия) и ще ни даде уравнението на тази права линия. Това уравнение може да се използва за намиране на еквивалентната стойност на dB за всяка стойност на ADC, която Arduino измерва.
В Excel имаме приставка за анализ на данни, която автоматично ще изчисли регресията за вашия набор от стойности и ще публикува данните му. Няма да разглеждам как да го направя с excel, тъй като е извън обхвата на този проект, а също така е лесно за вас да потърсите в Google и да го научите. След като изчислите регресията за стойността, Excel ще даде някои стойности, както е показано по-долу. Интересуват ни само цифрите, които са подчертани по-долу.
След като получите тези числа, ще можете да формирате следното уравнение като
ADC = (11,003 * dB) - 83.2073
От което можете да извлечете dB
dB = (ADC + 83.2073) / 11.003
Може да се наложи да управлявате собствено уравнение, тъй като калибрирането може да се различава. Пазете обаче тази стойност в безопасност, тъй като ще ни е необходима, докато програмираме Arduino.
Програма Arduino за измерване на нивото на звука в dB:
Пълната програма за измерване на dB е дадена по-долу, няколко важни реда са обяснени по-долу
В тези два реда по-горе четем ADC стойността на щифт A0 и го преобразуваме в dB, използвайки уравнението, което току-що изведохме. Тази dB стойност може да не е точна до истинската dB стойност, но остава почти близка до стойностите, показани в мобилното приложение.
adc = analogRead (MIC); // Прочетете ADC стойността от усилвател dB = (adc + 83.2073) / 11.003; // Конвертиране на стойността на ADC в dB, като се използват регресионни стойности
За да проверим дали програмата работи правилно, ние също добавихме светодиод към цифров щифт 3, който е направен така, че да достигне височина за 1 секунда, когато Arduino измерва силен шум над 60dB.
if (dB> 60) {digitalWrite (3, HIGH); // включване на светодиода (HIGH е нивото на напрежението) забавяне (1000); // изчакваме втори digitalWrite (3, LOW); }
Работа на измервател на нивото на звука Arduino:
След като сте готови с кода и хардуера, просто качете кода и отворете серийния си монитор, за да видите стойностите на dB, измерени от вашия Arduino. Тествах този код в стаята си, където нямаше много шум, с изключение на трафика отвън и получих стойностите по-долу на моя сериен монитор и приложението за Android също показа нещо близо до това
Цялостната работа на проекта може да бъде намерена във видеото, дадено в края на тази страница. Можете да използвате за проектиране, за да откриете звук в стаята и да проверите дали има някаква активност или колко шум се генерира във всяка класна стая или нещо подобно. Току-що направих светодиод, който да свети високо за 2 секунди, ако има звук, записан над 60 dB.
Работата е странно удовлетворителна, но със сигурност може да се използва за проекти и други основни прототипи. С още няколко копаения установих, че проблемът всъщност е в хардуера, който все още ми създаваше шум от време на време. Затова изпробвах други схеми, които се използват в платките на микрофона за забавление с искри и нискочестотен филтър. Обясних схемата по-долу, за да опитате.
Усилвател с филтърна верига:
Тук използвахме нискочестотни и високочестотни филтри с усилвател, за да намалим шума в тази схема за измерване на нивото на звука, така че точността да може да се увеличи.
В тази схема по-горе използвахме популярния усилвател LM358 за усилване на сигналите от микрофона. Заедно с усилвателя сме използвали и два филтъра, високочестотният филтър се формира от R5, C2, а нискочестотният филтър се използва от C1 и R2. Тези филтри са проектирани да позволяват честота само от 8Hz до 10KHz, тъй като нискочестотният филтър ще филтрира всичко под 8Hz и High Pass филтърът ще филтрира всичко над 15KHz. Този честотен диапазон е избран, защото кондензаторният ми микрофон работи само от 10Hz до 15KHZ, както е показано в таблицата с данни по-долу.
Ако вашето търсене на честота се промени, можете да използвате формулите по-долу, за да изчислите стойността на резистора и кондензатора за вашата необходима честота.
Честота (F) = 1 / (2πRC)
Също така имайте предвид, че използваната тук стойност на резистора също ще повлияе на усилването на усилвателя. Изчислението за стойността на резистора и кондензатора, използвани в тази схема, е показано по-долу. Можете да изтеглите листа от Excel от тук за промяна на стойностите на честотата и изчисляване на стойностите на регресията.
Бившата схема работи задоволително според очакванията ми, така че никога не съм опитвал тази. Ако случайно опитате тази схема, уведомете ме, ако тя работи по-добре от предишната чрез коментарите.