- Необходимые материалы:
- Принципиальная электрическая схема:
- Использование метода регрессии для вычисления дБ от значения АЦП:
- Программа Arduino для измерения уровня звука в дБ:
- Работа измерителя уровня звука Arduino:
- Схема усилителя с фильтрами:
Шумовое загрязнение действительно стало приобретать все большее значение из-за высокой плотности населения. Нормальное человеческое ухо может слышать уровни звука от 0 до 140 дБ, при этом уровни звука от 120 до 140 дБ считаются шумом. Громкость или уровни звука обычно измеряются в децибелах (дБ), у нас есть инструменты, которые могут измерять звуковые сигналы в дБ, но эти измерители немного дороги, и, к сожалению, у нас нет готового модуля датчика для измерения уровней звука в децибелах. И покупать дорогие микрофоны для небольшого проекта Arduino, который должен измерять уровень звука в небольшом классе или гостиной, неэкономично.
Поэтому в этом проекте мы будем использовать обычный электретный конденсаторный микрофон с Arduino и попытаемся измерить уровень звука или шумового загрязнения в дБ как можно ближе к фактическому значению. Мы будем использовать обычную схему усилителя для усиления звуковых сигналов и подачи их на Arduino, в котором мы будем использовать метод регрессии для расчета звуковых сигналов в дБ. Чтобы проверить правильность полученных значений, мы можем использовать приложение для Android «Шумомер», если у вас есть лучший измеритель, вы можете использовать его для калибровки. Обратите внимание, что этот проект не нацелен на точное измерение дБ, а просто дает значения, максимально приближенные к фактическому значению.
Необходимые материалы:
- Arduino UNO
- Микрофон
- LM386
- 10K переменный POT
- Резисторы и конденсаторы
Принципиальная электрическая схема:
Схема для этого измерителя уровня звука Arduino очень проста, в которой мы использовали схему звукового усилителя LM386 для усиления сигналов с конденсаторного микрофона и подачи их на аналоговый порт Arduino. Мы уже использовали эту микросхему LM386 для создания схемы усилителя звука низкого напряжения, и схема более или менее осталась прежней.
Коэффициент усиления этого конкретного операционного усилителя можно установить от 20 до 200 с помощью резистора или конденсатора между контактами 1 и 8. Если их оставить свободными, коэффициент усиления будет установлен на 20 по умолчанию. Для нашего проекта мы используем максимально возможное усиление этой схемы, поэтому мы используем конденсатор емкостью 10 мкФ между контактами 1 и 8, обратите внимание, что этот контакт чувствителен к полярности, и отрицательный контакт конденсатора должен быть подключен к контакту 8. Полный усилитель. Схема питается от вывода 5V от Arduino.
Конденсатор C2 используется для фильтрации шума постоянного тока от микрофона. Обычно, когда микрофон улавливает звук, звуковые волны преобразуются в сигналы переменного тока. Этот сигнал переменного тока может иметь связанный с ним шум постоянного тока, который будет фильтроваться этим конденсатором. Точно так же даже после усиления конденсатор C3 используется для фильтрации любого шума постоянного тока, который мог быть добавлен во время усиления.
Использование метода регрессии для вычисления дБ от значения АЦП:
Когда мы будем готовы с нашей схемой, мы можем подключить Arduino к компьютеру и загрузить пример программы «Analog Read Serial» из Arduino, чтобы проверить, получаем ли мы действительные значения АЦП от нашего микрофона. Теперь нам нужно преобразовать эти значения АЦП в дБ.
В отличие от других величин, таких как измерение температуры или влажности, измерение дБ не является простой задачей. Потому что значение дБ не линейно со значением АЦП. Есть несколько способов, к которым вы можете прийти, но каждый возможный шаг, который я пробовал, не дал мне хороших результатов. Вы можете прочитать этот форум Arduino здесь, если хотите попробовать.
Для моего приложения мне не требовалась большая точность при измерении значений в дБ, и поэтому я решил использовать более простой способ прямой калибровки значений АЦП с помощью значений в дБ. Для этого метода нам понадобится измеритель звукового давления (измеритель звукового давления - это инструмент, который может считывать значения в дБ и отображать их), но, к сожалению, у меня его не было, и, конечно же, у большинства из нас не будет. Таким образом, мы можем использовать приложение для Android под названием «Шумомер», которое можно бесплатно загрузить из игрового магазина. Таких типов приложений много, и вы можете скачать все, что захотите. Эти приложения используют встроенный микрофон телефона для определения уровня шума и отображения его на нашем мобильном телефоне. Они не очень точны, но наверняка подойдут для нашей задачи. Итак, давайте начнем с установки приложения для Android, мое при открытии выглядело примерно так:
Как я сказал ранее, соотношение между значениями дБ и аналоговыми значениями не будет линейным, поэтому нам необходимо сравнивать эти два значения с разными интервалами. Просто запишите значение АЦП, отображаемое на экране для различных дБ, отображаемых на вашем мобильном телефоне. Я взял около 10 показаний, и они выглядели так, как показано ниже, вы можете немного отличаться
Откройте страницу Excel и введите эти значения, пока мы будем использовать Excel, чтобы найти значения регрессии для указанного выше числа. Перед этим давайте построим график и проверим, как они оба соотносятся, мой выглядел так, как показано ниже.
Как мы видим, значение дБ не связано линейно с АЦП, то есть вы не можете иметь общий множитель для всех значений АЦП, чтобы получить его эквивалентные значения в дБ. В таком случае мы можем использовать метод «линейной регрессии». По сути, он преобразует эту неправильную синюю линию в ближайшую возможную прямую (черную линию) и даст нам уравнение этой прямой. Это уравнение можно использовать для нахождения эквивалентного значения в дБ для каждого значения АЦП, измеряемого Arduino.
В Excel у нас есть плагин для анализа данных, который автоматически вычисляет регрессию для вашего набора значений и публикует его данные. Я не собираюсь рассказывать, как это сделать с помощью excel, поскольку это выходит за рамки этого проекта, также вам легко зайти в Google и изучить его. После расчета регрессии для значения Excel выдаст некоторые значения, как показано ниже. Нас интересуют только цифры, которые выделены ниже.
Получив эти числа, вы сможете составить следующее уравнение, например
АЦП = (11,003 * дБ) - 83,2073
Из которого вы можете получить дБ, чтобы
дБ = (ADC + 83.2073) / 11.003
Возможно, вам придется использовать собственное уравнение, поскольку калибровка может отличаться. Однако сохраните это значение, оно понадобится нам при программировании Arduino.
Программа Arduino для измерения уровня звука в дБ:
Полная программа для измерения дБ приведена ниже, несколько важных строк поясняются ниже.
В этих двух строках мы считываем значение АЦП на выводе A0 и преобразуем его в дБ, используя только что выведенное уравнение. Это значение в дБ может не соответствовать истинному значению в дБ, но остается довольно близким к значениям, отображаемым в мобильном приложении.
adc = analogRead (MIC); // Считываем значение АЦП с усилителя dB = (adc + 83.2073) / 11.003; // Преобразуем значение АЦП в дБ, используя значения регрессии
Чтобы проверить, правильно ли работает программа, мы также добавили светодиод к цифровому контакту 3, который устанавливается на 1 секунду, когда Arduino измеряет громкий шум выше 60 дБ.
если (дБ> 60) {digitalWrite (3, HIGH); // включаем светодиод (HIGH - уровень напряжения) delay (1000); // ждем второго digitalWrite (3, LOW); }
Работа измерителя уровня звука Arduino:
Когда вы будете готовы с кодом и оборудованием, просто загрузите код и откройте монитор последовательного порта, чтобы посмотреть значения дБ, измеренные вашим Arduino. Я тестировал этот код в своей комнате, где не было большого шума, за исключением трафика снаружи, и я получил следующие значения на моем последовательном мониторе, а приложение для Android также отображало что-то близкое к этому
С полной версией работы проекта можно ознакомиться на видео, приведенном в конце этой страницы. Вы можете использовать для проецирования, чтобы обнаружить звук в комнате и проверить, есть ли какая-либо активность, или сколько шума создается в каждом классе или что-то в этом роде. Я только что заставил светодиод загораться на 2 секунды, если звук записывается выше 60 дБ.
Работа на удивление удовлетворительна, но ее можно использовать для проектов и других базовых прототипов. Еще немного покопавшись, я обнаружил, что проблема на самом деле была в оборудовании, которое время от времени все еще давало мне шум. Поэтому я опробовал другие схемы, которые используются в микрофонных платах Spark Fun, которые имеют фильтр низких и высоких частот. Я объяснил схему ниже, чтобы вы могли попробовать.
Схема усилителя с фильтрами:
Здесь мы использовали фильтры низких и высоких частот с усилителем, чтобы уменьшить шум в этой схеме измерения уровня звука, чтобы можно было повысить точность.
В приведенной выше схеме мы использовали популярный усилитель LM358 для усиления сигналов с микрофона. Наряду с усилителем мы также использовали два фильтра, фильтр высоких частот образован R5, C2, а фильтр низких частот используется C1 и R2. Эти фильтры предназначены для разрешения частоты только от 8 Гц до 10 кГц, поскольку фильтр нижних частот будет фильтровать все, что ниже 8 Гц, а фильтр высоких частот будет фильтровать все, что выше 15 кГц. Этот диапазон частот выбран потому, что мой конденсаторный микрофон работает только от 10 Гц до 15 кГц, как показано в таблице ниже.
Если ваша потребность в частоте меняется, вы можете использовать приведенные ниже формулы для расчета номинала резистора и конденсатора для требуемой частоты.
Частота (F) = 1 / (2πRC)
Также обратите внимание, что значение резистора, используемого здесь, также повлияет на усиление усилителя. Расчет номинала резистора и конденсатора, используемых в этой схеме, показан ниже. Вы можете скачать здесь таблицу Excel для изменения значений частоты и расчета значений регрессии.
Предыдущая схема оправдала мои ожидания, поэтому я никогда не пробовал эту. Если вам случится попробовать эту схему, дайте мне знать, работает ли она лучше, чем предыдущая, через комментарии.