Датчики звука KY-037 и прочие
Часть 1
.
.
Датчик звука как и многие недорогие модули света, ИК, магнитного поля и т.д , зачастую выполнены на компараторе напряжений LM393. С помощью этих датчиков измеряют интенсивность параметра. Все эти модули имеют аналоговый выход, напряжение на котором изменяется от 0 до 5(3,3) V в зависимости от громкости, яркости и т.д. Однако Звуковой датчик, в отличии от остальных имеет некоторые особенности. Если на выходе светового датчика есть прямая зависимость от яркости (чем ярче, тем выше напряжение), то например у KY-037 на аналоговом выходе мы получаем "шум", амплитуда которого зависит от громкости.
.
.
Работать с таким сигналом не всегда удобно. Конечно если требуется просто включить свет по хлопку, ничего особо выдумывать не надо. А вот хоть как то измерить уровень звука и включить что то по достижении определенного уровня, для новичка, как оказалось, не так то просто. Есть у модуля и цифровой (дискретный) выход, воспользоваться которым можно так же, разве что для хлопка или другого громкого звука.
Разберемся как же правильно настроить датчик.
На модуле присутствует подстроечный резистор, которым выставляется уровень покоя. Лучше всего выставить на нем напряжение близкое к половине напряжения питания. Можно конечно и с помощью тестера, но мы поступим мудрее.
Подключаем модуль к аналоговому пину контроллера и выводим данные с этого входа на монитор порта или в плоттер. Разрешение АЦП у Arduino UNO, NANO 10 бит от 0 до 1023. Значит крутим подстроечник пока не настроим примерно 511 при тишине. Теперь при усилении звука шум амплитуда шума тоже увеличится, а максимальные и минимальные значения будут отличаться от 511 примерно на одинаковую величину, в плюс и в минус. Осталось только их измерить.
.
.
Для измерения уровней воспользуемся блоком Экстремумы, а для визуализации возьмем блок Plotter. Загрузим вот такой проект и откроем плоттер. Не забываем про кнопку сброса.
.
.
Сымитируем фон тишины (обычный разговор, шум улицы), короче то, на что датчик не должен реагировать. После чего хлопнем в ладоши, крикнем, стукнем и тем самым выясним какой порог срабатывания необходимо установить.
Как видно из графика, плоттер показывает не все изменения. Суть в том, что настроен он на вывод каждые 100 мс и пропускает некоторые моменты. Однако на блоке Экстремумы, данные сохраняются и уровни видно четко.
.
.
То же самое можно сделать в цифровом виде на мониторе порта.
Циферки они хоть и не так наглядны, за то более точны.
.
.
Теперь на основании этих данных можно легко, без экспериментов и танцев с бубнами сделать хлопковый выключатель.
Для надежности срабатывания используем оба пиковых уровня - верхний и нижний.
Однако во время хлопка, может пройти несколько импульсов, да еще с обоих компараторов и произойдет несколько сработок включения выключения ТТ-триггера.
Отфильтруем лишние импульсы таймером на отключение в 1 секунду.
.
.
На этом закончу первую часть.