- Необхідні матеріали:
- Кругова діаграма:
- Використання методу регресії для розрахунку дБ за значенням АЦП:
- Програма Arduino для вимірювання рівня звуку в дБ:
- Робота вимірювача рівня звуку Arduino:
- Підсилювач з ланцюгом фільтрів:
Шумне забруднення справді почало набувати значення через високу щільність населення. Звичайне людське вухо могло чути рівні звуку від 0 дБ до 140 дБ, при цьому рівні шуму від 120 дБ до 140 дБ вважаються шумом. Рівні гучності або рівня звуку зазвичай вимірюються в децибелах (дБ), у нас є деякі прилади, які можуть вимірювати звукові сигнали в дБ, але ці лічильники трохи дорогі, і, на жаль, у нас немає модуля датчика, який не готовий вимірювати рівень шуму в децибелах. І не економічно купувати дорогі мікрофони для невеликого проекту Arduino, який повинен вимірювати рівень звуку в невеликому класі або вітальні.
Тож у цьому проекті ми використаємо звичайний Electret Condenser мікрофон з Arduino і спробуємо виміряти рівень звукового чи шумового забруднення в дБ якомога ближче до фактичного значення. Ми будемо використовувати звичайну схему підсилювача для посилення звукових сигналів і передачі його в Arduino, в якому ми будемо використовувати метод регресії для обчислення звукових сигналів в дБ. Щоб перевірити правильність отриманих значень, ми можемо скористатися додатком android «Звукомір», якщо у вас кращий вимірювач, ви можете використовувати його для калібрування. Зверніть увагу, що цей проект не спрямований на точне вимірювання дБ, а просто дасть значення, максимально наближені до фактичного значення.
Необхідні матеріали:
- Arduino UNO
- Мікрофон
- LM386
- 10K змінний POT
- Резистори та конденсатори
Кругова діаграма:
Схема для цього вимірювача рівня звуку Arduino - дуже проста, в якій ми використали схему підсилювача звуку LM386 для посилення сигналів від конденсаторного мікрофона і подачі його на аналоговий порт Arduino. Ми вже використовували цей мікросхему LM386 для побудови ланцюга підсилювача низької напруги, і схема більш-менш залишається незмінною.
Коефіцієнт підсилення цього конкретного підсилювача може бути встановлений від 20 до 200 за допомогою резистора або конденсатора на штифтах 1 і 8. Якщо їх залишити вільними, коефіцієнт підсилення буде встановлений як 20 за замовчуванням. Для нашого проекту ми використовуємо максимально можливий коефіцієнт підсилення за допомогою цієї схеми, тому ми використовуємо конденсатор величиною 10 мкФ між виводами 1 і 8, зауважте, що цей висновок чутливий до полярності, а негативний висновок конденсатора повинен бути підключений до виводу 8. Повний підсилювач ланцюг живиться від 5-контактного виводу від Arduino.
Конденсатор С2 використовується для фільтрації шуму постійного струму від мікрофона. В основному, коли мікрофон відчуває звук, звукові хвилі перетворюються на сигнали змінного струму. Цей сигнал змінного струму може мати деякий шум постійного струму в поєднанні з ним, який буде фільтруватися цим конденсатором. Подібним чином, навіть після підсилення конденсатор С3 використовується для фільтрації будь-якого шуму постійного струму, який міг бути доданий під час підсилення.
Використання методу регресії для розрахунку дБ за значенням АЦП:
Після того, як ми готові до нашої схеми, ми можемо підключити Arduino до комп'ютера і завантажити приклад програми «Analog Read Serial» від Arduino, щоб перевірити, чи отримуємо ми дійсні значення АЦП з нашого мікрофона. Тепер ми повинні перетворити ці значення АЦП в дБ.
На відміну від інших значень, таких як вимірювання температури або вологості, вимірювання дБ не є простим завданням. Оскільки значення дБ не є лінійним зі значенням АЦП. Є кілька способів, якими ви можете досягти, але кожен можливий крок, який я спробував, не дав мені хороших результатів. Ви можете прочитати цей форум Arduino тут, якщо хочете спробувати.
Для моєї програми мені не знадобилася велика точність під час вимірювання значень дБ, і тому я вирішив використати простіший спосіб безпосереднього калібрування значень АЦП зі значеннями дБ. Для цього методу нам знадобиться SPL-лічильник (SPL-лічильник - це прилад, який може зчитувати значення дБ і відображати його), але, на жаль, у мене його не було, і впевнений, що більшість з нас не буде. Тож ми можемо скористатися додатком для Android під назвою „Звукомір”, який можна безкоштовно завантажити з магазину ігор. Існує безліч таких типів додатків, і ви можете завантажити що завгодно на ваш вибір. Ці програми використовують вбудований в телефон мікрофон для виявлення рівня шуму та відображення його на нашому мобільному телефоні. Вони не дуже точні, але, безсумнівно, працюють для нашого завдання. Отже, давайте почнемо з встановлення програми Android, моя при відкритті виглядала приблизно так нижче
Як я вже говорив раніше, співвідношення між значеннями дБ та аналоговими значеннями не буде лінійним, тому нам потрібно порівнювати ці два значення через різні інтервали. Просто запишіть значення АЦП, що відображається на екрані для різних дБ, що відображаються на вашому мобільному телефоні. Я зробив близько 10 показань, і вони виглядали таким чином нижче, ви можете дещо відрізнятися
Відкрийте сторінку Excel і введіть ці значення, наразі ми будемо використовувати Excel для пошуку значень регресії для вказаного вище числа. До цього давайте побудуємо графік і перевіримо, як вони обидва відносяться, мій виглядав так нижче.
Як ми бачимо, значення дБ не пов'язане лінійно з АЦП, тобто ви не можете мати спільного множника для всіх значень АЦП, щоб отримати його еквівалентні значення дБ. У такому випадку ми можемо застосувати метод “лінійної регресії”. По суті, він перетворить цю неправильну синю лінію на найближчу пряму лінію (чорну лінію) і дасть нам рівняння цієї прямої. Це рівняння можна використовувати для пошуку еквівалентного значення дБ для кожного значення АЦП, яке вимірює Arduino.
У Excel ми маємо плагін для аналізу даних, який автоматично обчислює регресію для вашого набору значень та публікує його дані. Я не збираюся розповідати про те, як це зробити за допомогою програми Excel, оскільки це виходить за рамки цього проекту, а також вам легко прогуглитись і навчитися цьому. Після того, як ви розрахуєте регресію для значення, Excel видасть деякі значення, як показано нижче. Нас цікавлять лише цифри, які виділено нижче.
Отримавши ці числа, ви зможете сформувати наступне рівняння, як
АЦП = (11,003 * дБ) - 83.2073
Звідки можна вивести дБ
дБ = (АЦП + 83.2073) / 11.003
Можливо, вам доведеться керувати власним рівнянням, оскільки калібрування може відрізнятися. Однак зберігайте це значення в безпеці, оскільки воно нам знадобиться під час програмування Arduino.
Програма Arduino для вимірювання рівня звуку в дБ:
Повна програма для вимірювання дБ подана нижче, кілька важливих рядків пояснюються нижче
У цих вище двох рядках ми зчитуємо значення АЦП виводу A0 і перетворюємо його в дБ за допомогою рівняння, яке ми щойно отримали. Це значення дБ може не точно визначити справжнє значення дБ, але залишається майже наближеним до значень, що відображаються в мобільному додатку.
adc = analogRead (MIC); // Зчитуємо значення АЦП з підсилювача дБ = (adc + 83.2073) / 11.003; // Перетворення значення АЦП в дБ, використовуючи значення регресії
Щоб перевірити, чи працює програма належним чином, ми також додали світлодіодний індикатор до цифрового виводу 3, який робиться високим на 1 сек, коли Arduino вимірює сильний шум вище 60 дБ.
якщо (дБ> 60) {digitalWrite (3, HIGH); // увімкнути світлодіод (HIGH - рівень напруги) затримка (1000); // чекаємо другого digitalWrite (3, LOW); }
Робота вимірювача рівня звуку Arduino:
Після того, як ви готові з кодом та обладнанням, просто завантажте код і відкрийте свій послідовний монітор, щоб переглянути значення дБ, виміряні вашим Arduino. Я тестував цей код у своїй кімнаті, де не було багато шуму, за винятком дорожнього руху, і я отримав наведені нижче значення на моєму послідовному моніторі, а додаток для Android також показав щось близьке до цього
Повну роботу над проектом можна знайти у відео, поданому в кінці цієї сторінки. Ви можете використовувати для проектування, щоб виявити звук у кімнаті та перевірити, чи немає активності чи скільки шуму створюється в кожному класі або щось подібне. Я щойно зробив світлодіод, який буде горіти протягом 2 секунд, якщо звук записаний вище 60 дБ.
Робота дивним чином задовольняє, але може бути використана для проектів та інших базових прототипів. Побачивши ще кілька копань, я виявив, що проблема насправді була в апаратному забезпеченні, яке все ще час від часу видавало мені шум. Тож я випробував інші схеми, які використовуються на мікрофонних платах іскрового розваги, що має фільтр низьких і високих частот. Я пояснив схему нижче, щоб ви спробували.
Підсилювач з ланцюгом фільтрів:
Тут ми використали фільтри низьких і високих частот з підсилювачем, щоб зменшити шум у цій схемі вимірювання рівня звуку, щоб можна було підвищити точність.
У цій вищезазначеній схемі ми використали популярний підсилювач LM358 для посилення сигналів від мікрофона. Поряд з підсилювачем ми також використовували два фільтри, фільтр високих частот формується R5, C2, а фільтр низьких частот використовується C1 і R2. Ці фільтри розроблені для забезпечення частоти лише від 8 Гц до 10 кГц, оскільки фільтр низьких частот буде фільтрувати все, що нижче 8 Гц, а фільтр високих частот фільтруватиме все, що перевищує 15 кГц. Цей діапазон частот вибраний, оскільки мій конденсаторний мікрофон працює лише від 10 Гц до 15 кГц, як показано в таблиці даних нижче.
Якщо ваша потреба в частоті змінюється, ви можете використовувати наведені нижче формули для розрахунку значення резистора та конденсатора для необхідної частоти.
Частота (F) = 1 / (2πRC)
Також зауважте, що значення резистора, що використовується тут, також вплине на коефіцієнт підсилення підсилювача. Розрахунок значення резистора та конденсатора, що використовуються в цій схемі, показаний нижче. Ви можете завантажити лист Excel звідси для зміни значень частоти та обчислення значень регресії.
Колишня схема працювала задовільно для моїх сподівань, тому я ніколи не пробував цю. Якщо ви випадково спробуєте цю схему, повідомте мені, чи функціонує вона краще, ніж попередня, через коментарі.