Звуковой датчик к роботу схема. Устройство датчика звука для включения света


С помощью описываемой конструкции можно определить работает или нет механизм, расположенный в другом помещении или здании. Информацией о работе является вибрация самого механизма. Конструкция достаточно проста и содержит минимум деталей.

В системах автоматизации часто приходится определять состояние какого либо устройства или механизма просто на уровне «включено - выключено», или «работает - не работает». Достаточно реальный и наглядный пример - это насос в миникотельной.

Сам котел с устройством управления (контроллером) может быть расположен в одном помещении, а насос, создающий давление в системе отопления, в другом. И даже не просто в разных комнатах, а вообще в соседних зданиях.

Как же сообщить контроллеру о том, что насос включен и работает? Конечно, в более простых системах может использоваться не контроллер, а простой и дешевый сигнализатор для привлечения внимания оператора.

Способов тут можно найти несколько. Например, используя дополнительный контакт пускателя, включающего насос: контакт замкнут, следовательно, насос работает. Хотя, по каким-то причинам, может и не работать. К тому же на пускателе не всегда есть незадействованный контакт. Это является еще одним недостатком такой схемы.

Кроме этого способа можно получить сигнал о работе насоса, применив токовый датчик. Такой сигнал будет более объективно отражать работу устройства в целом, нежели вышеупомянутый контакт. Недостатком данного способа является вмешательство в схему электропривода.

Как же проконтролировать работу установки не вмешиваясь в ее схему? Оказывается достаточно просто, если вспомнить о том, что упомянутый насос при работе создает шум и вибрацию. Такими же свойствами обладают и многие другие устройства: электромагниты, мощные трансформаторы, просто механические части электропривода. На этих «вредных» свойствах и основана работа описываемого ниже датчика работы механизмов. Подобными датчиками также можно контролировать состояние устройства оснащенного двигателем внутреннего сгорания или дизелем.

В работе датчика в большей степени, нежели шум, используется вибрация, поэтому при его установке следует найти место механизма, где вибрация достаточна для срабатывания датчика. При этом в месте установки датчика не желательна повышенная температура. Принципиальная схема датчика показана на рисунке 1.

Рисунок 1. Схема датчика работы механизма (чтобы увеличить схему кликните по рисунку).

Схема достаточно проста и содержит всего 3 транзистора. Принцип ее работы очень напоминает работу схемы автостопа в магнитофонах: пока идут импульсы с датчика движения магнитной ленты, сигнал остановки механизма не вырабатывается. Лента замялась или кончилась - механизм остановился.

В нашем случае датчиком вибраций является электретный микрофон М1, сигнал с которого через конденсатор С2 подается на усилитель, выполненный на транзисторе VT1. Через конденсатор С3 переменная составляющая усиленного сигнала подается на выпрямитель, выполненный по схеме удвоителя напряжения. Выпрямленное напряжение заряжает конденсатор С4, поэтому транзистор VT2 будет открыт (на коллекторе низкий уровень напряжения). Этот низкий уровень удерживает в закрытом состоянии транзистор VT3, поэтому реле Р1 отключено и сигнал тревоги на контроллер или сигнализатор не поступает. В эмиттере транзистора VT3 установлен диод VD4. Это так называемый фиксатор уровня, который обеспечивает более надежное закрытие транзистора.

В случае остановки механизма вибрации прекращаются, и микрофону улавливать становится просто нечего. Поэтому импульсы на коллекторе транзистора VT1 прекращаются, и конденсатор С4 разряжается. Поэтому транзистор VT2 закрывается, а VT3 открывается и включает реле Р1, контакты, которого сообщают контроллеру об аварийной ситуации.

Налаживание устройства

Налаживание устройства несложно. Прежде всего, с помощью резистора R2 на коллекторе транзистора VT1 следует установить напряжение примерно около половины напряжения питания. В этом случае транзистор VT1 будет работать в линейном режиме, т.е. как усилитель сигнала.

Второй этап настройки это установка уровня чувствительности всего датчика в целом при помощи переменного резистора R4. Для этого следует перевести его движок в нижнее по схеме положение. Это минимальная чувствительность датчика, реле в это случае будет включено. Затем, поместив микрофон в том месте, где он будет установлен, вращением подстроечного резистора R4 добиться выключения реле. При выключении механизма реле должно включиться вновь.

Детали и конструкция

Если предполагается изготовление нескольких экземпляров датчика, то лучше всего схему собрать на печатной плате. Наиболее просто ее изготовить по лазерно - утюжной технологии. Если требуется всего один экземпляр, то его вполне приемлемо собрать навесным монтажом. Собранную плату следует поместить в пластмассовый корпус с элементами крепления.

Транзисторы VT1, VT2 можно заменить на КТ3102 с любым буквенным индексом, КТ503 на КТ815 или КТ972. Все диоды можно заменить любыми высокочастотными маломощными, например КД521, КД503.

Все резисторы типа МЛТ-0,25 или импортные. Электролитические конденсаторы также проще купить импортные на рабочее напряжение не менее 25В.

В качестве реле Р1 допустимо применение любого малогабаритного реле, возможно также импортного, с напряжением срабатывания 12В. Питание устройства возможно от маломощного источника, например от китайского сетевого адаптера.

При самостоятельном изготовлении блока питания потребуется трансформатор мощностью не более 5 Вт, с напряжением вторичной обмотки около 15 В. Проще всего такой источник собрать на базе интегрального стабилизатора 7812. Подобную схему найти достаточно легко, поэтому ее описание здесь не приводится.

Сегодня разберемся, как работать с модулем датчика звука, он же датчик хлопков KY-037 . Такие датчики часто используются в охранных системах для обнаружения превышения установленного порога шума (обнаружение щелчков замков, шагов, звука двигателя и т.д.). Модуль датчика звука KY-037 так же часто используют для автоматического управления освещением, реагирующим например, на хлопки в ладоши.

На плате мы видим сам датчик в виде микрофона и микросхему компаратора, которая определяет момент превышения порога громкости. А чувствительность этого самого момента (порога громкости), выставляется с помощью переменного резистора (потенциометра) установленного рядом с компаратором. Если порог звука будет превышен, на выходе D0 появится сигнал высокого уровня.

Давайте для начала подключим датчик звука KY-037 к плате Arduino. Возьмём, например отладочную плату Arduino Nano.

Пин G модуля датчика звука KY-037 подключаем к выводу GND платы Ардуино. Пин + датчика звука соединяем с выводом 5V платы Ардуино. Вывод D0 датчика, подключаем к цифровому выводу D5 платы Ардуино.

Настройка датчика звука KY-037.

Подключаем плату Arduino Nano к компьютеру. На модуле датчика хлопков KY-037 , должен сразу загореться индикатор питания L1 . Необходимо сначала взять отвертку и подкрутить подстроечный резистор, настроив тем самым чувствительность датчика. А в настройке чувствительности нам поможет индикатор срабатывания датчика L2 . Если индикатор L2 при включении модуля тоже загорается, крутим подстроечный резистор против часовой стрелки до тех пор, пока не дойдем до момента затухания индикатора. Если же индикатор L2 находится в выключенном состоянии при включении модуля, значит наоборот, крутим подстроечный резистор по часовой стрелке, пока не дойдем до момента, когда индикатор начнет загораться. В итоге в этом месте, где чуть повернув подстроечный резистор в одну или другую сторону, индикатор стремиться потухнуть или загореться, нам нужно повернуть совсем немного против часовой стрелки, чтобы индикатор L2 потух, но при хлопках в ладоши пытался загораться.

Открываем программу Arduino IDE, создаем новый файл и вставляем в него код, который нам покажет каким образом приходит цифровой сигнал с вывода D0 в случаях превышения порога шума установленного с помощью подстроечного резистора.

const int sensorD0 = 5; // Пин Arduino к которому подключен пин D0 датчика void setup () // Настройки { Serial.begin (9600); // Инициализация SerialPort } void loop () // Основной цикл программы { int sensorValue = digitalRead(sensorD0); // получаем сигнал от датчика if (sensorValue == true) // Если пришел сигнал высокого уровня Serial.println(sensorValue); // Выводим цифровое значение на терминал }

Заливаем данный скетч и переходим в меню "Инструменты" - "Монитор порта" . Окно мониторинга порта будет пустым, но как только мы будем хлопать в ладоши, в окне появятся единицы, говорящие о наличии сигнала высокого уровня на выводе D0 модуля датчика звука.

Всё хорошо. Мы настроили датчик и убедились, что наша Ардуинка прекрасно принимает сигнал от него.

Включаем свет по хлопку и выключаем автоматически по таймеру.

Разобрались, как подстроить датчик звука KY-037 и как он реагирует, если превышен установленный порог громкости. Теперь добавим в нашу схему обычный светодиод и напишем простой код, который будет при обнаружении шума зажигать светодиод и тушить его по истечении какого-то времени.

Светодиод подключаем к пину D2 платы Ардуино. Не забываем поставить любой резистор на землю (GND ) светодиода. И загружаем следующий скетч.

const int sensorD0 = 5; // Пин Arduino к которому подключен выход D0 датчика const int diod = 2; // Пин Arduino к которому подключен светодиод void setup () { pinMode(diod, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода } void loop () { int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика if (sensorValue == 1) //если получен сигнал от датчика в виде единицы { digitalWrite(diod, HIGH); // включаем светодиод delay(4000); // делаем паузу, чтобы светодиод горел 4 секунды } if (sensorValue == 0) // если приходит сигнал от датчика в виде нуля digitalWrite(diod, LOW); // выключаем светодиод }

Пробуем хлопнуть в ладоши. Видим, что светодиод загорелся, проработал 4 секунды и потух. Каждая строка подробно прокомментирована и где изменить время горения светодиода, думаю понятно.

Датчик звука KY-037 включает свет по хлопку и выключает свет по хлопку.

Давайте загрузим новый скетч, который по хлопку будет включать или выключать наш светодиод. Светодиод мы взяли для примера, нет ни каких проблем подсоединить вместо него модуль реле и тем самым включать или выключать любые бытовые приборы.

const int sensorD0 = 5; // Пин Arduino к которому подключен выход D0 датчика const int diod = 2; // Пин Arduino к которому подключен светодиод int diodState = LOW; // Статус светодиода "выключен" void setup () { pinMode(diod, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода } void loop () { int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика if (sensorValue == 1 && diodState == LOW) //если порог громкости достигнут и светодиод был ВЫКЛЮЧЕН { digitalWrite(diod, HIGH); // включаем светодиод diodState = HIGH; // устанавливаем статус светодиода "включен" delay(100); // небольшая задержка для фильтрации помех } else // иначе { if (sensorValue == 1 && diodState == HIGH) // если порог громкости достигнут и светодиод был ВКЛЮЧЕН { digitalWrite(diod, LOW); // выключаем светодиод diodState = LOW; // устанавливаем статус светодиода "выключен" delay(100); // небольшая задержка для фильтрации помех } } }

Хлопаем теперь один раз в ладоши, свет зажигается. Хлопаем повторно в ладоши, светодиод тухнет.

Включаем свет по двойному хлопку.

Давайте усложним задачу и напишем код для работы датчика звука KY-037 по двойному хлопку. Тем самым сократим возможные случайные срабатывания от побочных звуков, которые могут возникать в режиме на один хлопок.

const int sensorD0 = 5; // Пин Arduino к которому подключен выход D0 датчика const int diod = 2; // Пин Arduino к которому подключен светодиод int diodState = LOW; // Статус светодиода "выключен" long soundTime=0; // время первого хлопка void setup () { pinMode(diod, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода } void loop () { int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика if (sensorValue == 1 && diodState == LOW) //если порог громкости достигнут и светодиод был ВЫКЛЮЧЕН { long diodTime=millis(); // записываем текущее время //если текущее время хлопка больше времени последнего хлопка на 100 миллисекунд //и хлопок произошел не позже чем через 1000 миллисекунд после предыдущего //считаем такой хлопок вторым УСПЕШНЫМ if((millis()>soundTime) && ((diodTime-soundTime)>100) && ((diodTime-soundTime)<1000)) { digitalWrite(diod, HIGH); // включаем светодиод diodState = HIGH; // устанавливаем статус светодиода "включен" delay(100); // небольшая задержка для фильтрации помех } soundTime=millis(); //записываем время последнего хлопка } else // иначе { if (sensorValue == 1 && diodState == HIGH) // если порог громкости достигнут и светодиод был ВКЛЮЧЕН { digitalWrite(diod, LOW); // выключаем светодиод diodState = LOW; // устанавливаем статус светодиода "выключен" delay(100); // небольшая задержка для фильтрации помех } } }

Пробуем два раза хлопнуть в ладоши, светодиод зажигается. Выключаем светодиод одинарным хлопком. Все хорошо срабатывает без всяких глюков. Код максимально прокомментирован, читайте, должно быть более чем понятно. Сделать, чтобы свет выключался тоже в два хлопка, думаю трудностей не составить. Теперь можете перекидывать провода с линии D2, к примеру, на релейный модуль и управлять освещением в комнате либо другими бытовыми приборами.

В принципе основные возникающие вопросы с датчиком звука KY-037 мы разобрали. Остается только напомнить, что на плате есть так же аналоговый вывод A0 , который подсоединяется к любому аналоговому выводу платы Ардуино, например, к выводу A1 . Принимается аналоговый сигнал строкой sensorValue = analogRead(A1); . Напряжение на аналоговом выходе датчика изменяется в зависимости от изменений окружающих шумов. Такой сигнал дает нам возможность применять программную обработку этих самых шумов, анализируя характер колебаний. Это может позволить реагировать не просто на шум в данный момента времени, а создавать даже свою базу различных шумов, опираясь на какие-то ключевые моменты в характерных изменениях показаний сигнала на выходе A0 . В итоге сверки с такой базой шумов, можно реализовать различную реакцию на разные шумы. Но это для тех кто хочет больше погрузиться в программирование и тема скорей всего другой статьи.

Приветствую, друзья. Сегодня мы соберем аналоговый датчик звука, который отлично будет работать с микроконтроллерами, Ардуино и другими подобными устройствами. По своим характеристикам и компактности он совершенно не уступает своим китайским аналогам и может отлично справляться с поставленной задачей.

Итак, приступим. Для начала стоит определиться с компонентами и схемой. Принцип работы схемы прост: слабый сигнал с микрофона усиливается и отправляется на аналоговый пин Ардуино. В качестве усилителя я буду использовать операционный усилитель (компаратор). Он обеспечивает гораздо больший коэффициент усиления по сравнению с обычным транзистором. В моем случае этим компаратором будет служить микросхема LM358, ее можно найти буквально где угодно. И стоит она довольно дешево.


Если вам не удалось найти именно LM358, то на ее место можно поставить любой другой подходящий операционный усилитель. К примеру, представленный на фотографии компаратор, стоял на плате усилителя сигнала инфракрасного приемника в телевизоре.

Теперь давайте рассмотрим схему датчика.


Кроме операционного усилителя нам понадобится еще несколько легкодоступных компонентов.

Самый обычный микрофон. Если полярность микрофона не обозначена, то достаточно взглянуть на его контакты. Минусовой всегда уходит на корпус, а в схеме, соответственно, соединяется с «землей».


Далее нам потребуется резистор на 1 кОм.


Три резистора на 10 кОм.


И еще один резистор номиналом 100 кОм – 1 МОм.


В моем случае в качестве «золотой середины» применен резистор на 620 кОм.

Но в идеале нужно использовать переменный резистор соответствующего номинала. При чем, как показали опыты больший номинал лишь повышает чувствительность устройства, но при этом появляется больше «шумов».


Следующим компонентом является конденсатор на 0.1 мкФ. Он имеет маркировку «104».


И еще один конденсатор, на 4.7 мкФ.


Теперь переходим к сборке. Я собирал схему навесным монтажом.


























Сборка завершена. Схему установил в корпусе, который изготовил из небольшого обрезка пластиковой трубки.
Переходим к тестированию устройства. Я подключу его к плате Arduino UNO. Переходим в среду разработки Ардуино и открываем пример AnalogReadSerial в разделе Basics.
void setup() { Serial.begin(9600);//подключаем Serial соединение на частоте 9600 бод } void loop() { int sensorValue = analogRead(A0); /*считываем значение с нулевого аналогово пина и сохраняем в переменную sensorValue*/ Serial.println(sensorValue); //выводим значение в порт delay(1); //ждем одну миллисекунду для стабилизации }
Перед загрузкой в плату изменяем задержку на 50 миллисекунд и вгружаем. После этого делаем пробный хлопок и следим за показаниями. В момент хлопка они подскакивают, постарайтесь примерно запомнить это значение и вернитесь к скетчу.
В скетч добавляем пару строк.
if (sensorValue > X){ Serial.print ("CLAP"); delay (1000); }
Вместо «Х» вставляете то самое значение, загружаете и снова хлопаете. Так продолжайте до тех пор, пока не подберете оптимальное значение срабатывания. При завышенном значении условие будет выполняться лишь при хлопке на очень близком расстоянии. При заниженном значении условие будет выполняться при малейшем шуме или звуке шагов.

Здесь будут рассмотрены датчики звука и касания, чаще всего использующиеся в составе сигнализаций.

Модуль датчика касания KY-036

Модуль, по сути, представляет собой сенсорную кнопку. Как понимает автор, принцип действия устройства основан на том, что, прикасаясь к контакту датчика человек, становится антенной для приема наводок на частоте бытовой сети переменного тока . Эти сигналы поступают на компаратор LM393YD

Габариты модуля 42 х 15 х 13 мм, масса 2,8 г., в плате модуля имеется крепежное отверстие диаметром 3 мм. Индикация питания осуществляется светодиодом L1.

При срабатывании датчика загорается (мигает) светодиод L2. Потребляемый ток 3,9 мА в ждущем режиме и 4,9 мА при срабатывании.

Не совсем ясно, какой порог чувствительности датчика должен регулироваться переменным резистором. Данные модули с компаратором LM393YD являются стандартными и к ним припаивают различные датчики, получая, таким образом, модули различного назначения. Выводы питания «G» — общий провод, «+» – питание +5В. На цифровом входе «D0» присутствует низкий логический уровень, при срабатывании датчика на выходе появляется импульсы с частотой 50 Гц. На контакте «A0» присутствует инвертированный относительно «D0» сигнал . В целом модуль срабатывает дискретно, как кнопка, в чем можно убедиться с помощью программы LED_with_button .

Датчик касания позволяет использовать в качестве кнопки управления любую металлическую поверхность, отсутствие движущихся частей должно положительно сказаться на долговечности и надежности.

Модуль датчика звука KY-037

Модуль должен срабатывать от звуков, громкость которых превышает заданный предел. Чувствительным элементом модуля является микрофон, работающий вместе с компаратором на микросхеме LM393YD .

Габариты модуля 42 х 15 х 13 мм, масса 3,4 г., аналогично предыдущему случаю в плате модуля имеется крепежное отверстие диаметром 3 мм. Индикация питания осуществляется светодиодом L1. Выводы питания «G» — общий провод, «+»– питание +5В.

Потребляемый ток 4,1 мА в ждущем режиме и 5 мА при срабатывании.

На выводе «A0» напряжение изменяется в соответствии уровнем громкости сигналов, принимаемых микрофоном, с повышением громкости показания уменьшаются, в этом можно убедиться с помощью программы AnalogInput2.

На цифровом входе «D0» присутствует низкий логический уровень, при превышении заданного порога низкий уровень меняется на высокий. Порог срабатывания можно регулировать переменным резистором. При этом загорается светодиод L2. При резком громком звуке наблюдается задержка в 1-2 с при обратном переключении.

В целом полезный датчик для организации системы умного дома или сигнализации.

Модуль датчика звука KY-038

С первого взгляда модуль кажется аналогичным предыдущему. Чувствительным элементом модуля является микрофон, следует отметить, что по данному модулю в сети не так уж много информации .

Габариты модуля 40 х 15 х 13 мм, масса 2,8 г., аналогично предыдущему случаю в плате модуля имеется крепежное отверстие диаметром 3 мм. Индикация питания осуществляется светодиодом L1. Выводы питания «G» — общий провод, «+»– питание +5В.

При срабатывании геркона загорается светодиод L2. Потребляемый ток 4,2 мА в ждущем режиме и до 6 мА при срабатывании.

На выводе «A0» при повышении уровня громкости происходит увеличение показаний (использована программа AnalogInput2).

На контакте «D0» присутствует низкий логический уровень, при срабатывании датчика он меняется на высокий. Порог срабатывания настраивается подстроечным резистором (использована программа LED_with_button).

Этот датчик действительно практически не отличается от предыдущего, но взаимозаменяемость их возможна не всегда, т.к. при изменении уровня громкости характер изменения уровня напряжение на аналоговом выходе различается.

Выводы

На этом автор заканчивает обзор большого набора из различных датчиков для аппаратной платформы Arduino. В целом данный набор произвел на автора смешанное впечатление. В набор входят как достаточно сложные датчики, так и совсем простые конструкции. И если в случае наличия на плате модуля токоограничительных резисторов, светодиодных индикаторов и т.п. автор готов признать полезность подобных модулей, то небольшая часть модулей представляет собой одиночный радиоэлемент на плате. Зачем нужны такие модули, остается непонятным (видимо крепление на стандартных платах служит целям унификации). В целом набор является неплохим способом познакомиться с большинством широко распространенных датчиков, применяемых в Arduino проектах.

Полезные ссылки

  1. http://arduino-kit.ru/catalog/id/modul-datchika-kasaniya
  2. http://www.zi-zi.ru/module/module-ky036
  3. http://robocraft.ru/blog/arduino/57.html
  4. http://arduino-kit.ru/catalog/id/modul-datchika-zvuka
  5. http://www.zi-zi.ru/module/module-ky037
  6. http://arduino-kit.ru/catalog/id/modul-datchika-zvuka_
  7. http://smart-boards.ml/module-audiovideo-4.php