Подключение датчика вибрации к Ардуино

СОДЕРЖАНИЕ ►
Датчик вибрации Arduino (ky-002) используется для определения наличия внешних вибрационных воздействий на модуль и применяется при создании домашней сигнализации. Рассмотрим несколько примеров использования датчика, представим на этом занятии несколько схем подключения сенсора вибрации к плате Ардуино и продемонстрируем простой скетч с использованием цикла while() в языке C++.
Принцип работы датчика вибрации
Данный сенсор может выпускаться в виде модуля, например, SW-420, logo sensors v1.5 или сенсора вибрации 140с001 для Ардуино. Основа датчика SW-420 – металлическая пружина внутри пластиковой трубки, которая начинает колебаться при вибрации. На модуле имеется усилитель сигнала, подстроечный резистор, для регулировки чувствительности датчика и три вывода для подключения к микроконтроллеру.

Внутри сенсора 801S находится металлический шарик на пружинке, который реагирует на малейшие колебания. Принцип работы данных датчиков можно сравнить с тактовой кнопкой — если контакты на кнопке замыкаются, когда мы на нее нажимаем, то контакты в рассматриваемом нами датчике замыкаются при возникновении вибрации. Рассмотрим далее, как подключить датчик вибрации к плате Arduino UNO.
Logo sensors v1.5 имеет три выхода — GND и VCC для питания и вывод аналогового сигнала A0, который подключается к любому аналоговому входу. Модуль вибрации 140C001 801S имеет дополнительно цифровой порт, при достижении определенной величины вибрации (устанавливается подстроечным резистором) на порт выдается логический ноль — поэтому его можно использовать автономно, без контроллера.
Как подключить датчик вибрации к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- датчик вибрации (ky-002);
- 1 светодиод и 2 резистора на 220 Ом;
- 1 тактовая кнопка;
- провода «папа-папа», «папа-мама».

Чтобы использовать модуль KY-004 или датчик HDX в качестве сенсора колебаний следует использовать различные схемы подключения. Модуль SW-420 или датчик вибрации 140с001 801s следует подключать напрямую к Arduino, согласно распиновке (см. схему выше). Датчик HDX в виде одного элемента необходимо подключать через резистор к цифровому или аналоговому входу на микроконтроллере, как на схеме.
Счетч для датчика вибрации Arduino (KY-002)
#define SENSOR A0 // Присваиваем имя аналоговому порту A0 #define LED 13 // Присваиваем имя 13 порту со светодиодом int sens = 0; // Освобождаем память для значений с порта A0 void setup() { pinMode(LED, OUTPUT); // Пин 13 будет выходом (англ. «output») pinMode(SENSOR, INPUT); // Пин A0 будет входом (англ. «input») Serial.begin(9600); // подключаем монитор порта } void loop() { sens = analogRead(SENSOR); // Считываем значение с датчика вибрации Serial.println(sens); // Выводим значение с датчика на монитор порта // Если значение sens больше 500, включаем светодиод if (sens>500) digitalWrite(LED, HIGH); // У вас значения могут быть другие // Если значение sens меньше 500, выключаем светодиод if (sens<500) digitalWrite(LED, LOW); // У вас значения могут быть другие }
Пояснения к коду:
- в первой строчке программы, для удобства, мы присвоили имя
SENSOR
для аналогового входа A0 с помощью функции#define
; - в вашем случае значения
sens
могут быть абсолютно другие — все зависит от настройки чувствительности датчика; - условный оператор
if
позволяет определить действие при истинном условии.
В предложенном скетче светодиод будет включаться только при наличии вибрации и выключаться при ее отсутствии, что не совсем подходит для устройства сигнализации. Для правильной работы следует доработать скетч и подключить тактовую кнопку. Светодиод не должен выключаться при окончании вибрации (иначе мы не заметим, что датчик сработал), а возвращаться в режим ожидания только при нажатии на кнопку.
Счетч для датчика вибрации KY-002 и кнопки
#define SENSOR A0 // Присваиваем имя аналоговому порту A0 #define LED 13 // Присваиваем имя 13 порту со светодиодом #define KNOPKA 2 // Присваиваем имя 2 порту с кнопкой int sens = 0; // Освобождаем память для значений с порта A0 byte w = 0; // Освобождаем память для переменной "w" void setup() { pinMode(LED, OUTPUT); // Пин 13 будет выходом (англ. «output») pinMode(SENSOR, INPUT); // Пин A0 будет входом (англ. «input») pinMode(KNOPKA, INPUT); // Пин 2 будет входом (англ. «input») Serial.begin(9600); // подключаем монитор порта } void loop() { sens = analogRead(SENSOR); // Считываем значение с датчика вибрации Serial.println(sens); // Выводим значение с датчика на монитор порта // Если sens больше 500, включаем светодиод и задаем w значение равное "1" if (sens>500) { digitalWrite(LED, HIGH); w = 1; } // Если значение sens меньше 500, выключаем светодиод if (sens<500) digitalWrite(LED, LOW); // Запускаем цикл while при срабатывании датчика while (w = 1) { digitalWrite(LED, HIGH); // Включаем светодиод Serial.println("DANGER"); // Выводим надпись "DANGER" на монитор порта // При нажатии на кнопку - выходим из цикла с помощью команды break; if (digitalRead(2)==HIGH) { w = 0; break; } } }
Пояснения к коду:
- глобальная переменная Ардуино w, равная «0» — строчка в программе
byte w = 0;
нужна, чтобы при запуске программы не выполнялся цикл while(); - при срабатывании сенсора мы меняем значение переменной
w = 1;
— это нужно для того, чтобы начал выполняться цикл while() в программе; - цикл while в программе будет выполняться бесконечно, до тех пор, пока не станет ложным условие
while (w = 1)
. Условие становится ложным при нажатии на кнопку — мы меняем значение переменной на «0» и выходим из цикла.
Подборка на тему: Подключение датчика вибрации к Ардуино
Один комментарий для “Подключение датчика вибрации к Ардуино”
Добавить комментарий
Записи похожие на: Arduino. Подключение датчика вибрации (KY-002)
- Навигатор дополнительного образования
- Подключение датчика звука к Ардуино
- Ардуино Due: распиновка, характеристики
- DF Player mini подключение к Ардуино
Проекты похожие на: Arduino. Подключение датчика вибрации (KY-002)
Спасибо за подробное описание принципа работы датчика