Содержание
Обзор датчика вибрации Arduino
Датчик вибрации Arduino используется для определения внешних вибрационных воздействий. Они могут быть применены при создании различных сигнализаций. Основа датчика вибрации – гибкая металлическая пружинка, внутри пластиковой трубки, которая колеблется от любых воздействий на нее. Далее сигнал подается для усиления на операционный усилитель LM386, а затем на аналоговый выход. Рассмотрим 2 датчика вибрации – Logo sensors v1.5 (рис. 1) и 140С001 (рис. 2). Каждый из этих датчиков имеет выводы GND, Vcc (питания) и вывод аналогового сигнала A0. Настройка чувствительности датчика осуществляется находящимся на плате потенциометром. Каждый из датчиков имеет светодиод, сигнализирующий о наличие поступающего на датчик питания. Датчик 140С001 имеет дополнительный цифровой вывод D0, на котором при достижении порогового значения величины вибрации выдается логический ноль. Порог срабатывания регулируется потенциометром. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать датчик 140С001 автономно, без подключения к контроллеру. Датчики имеют монтажное отверстие для крепления к поверхности.Технические характеристики
Технические характеристики датчиков Logo sensors v1.5 и 140С001 представлены в таблицеПример использования
Рассмотрим использование датчика вибраций в проекте охранной сигнализации. При ударе по поверхности, к которой закреплен датчик, срабатывает сигнал тревоги (звуковой сигнал на динамик). Дополнительно будем выводить на светодиодную шкалу относительное значение, выдаваемое датчиком вибраций (для настройки сигнализации). Для проекта нам понадобятся следующие детали:- плата Arduino Uno
- датчик вибрации 801S или Logo sensors v1.5
- светодиодная шкала
- динамик 8 Ом
- резистор 500 Ом
- транзистор КТ503е
- макетная плата
- соединительные провода
// датчик вибрации 801s // https://3d-diy.ru // контакт подключения аналогового выхода датчика int aPin=A0; // контакты подключения светодиодной шкалы int ledPins[10]={3,4,5,6,7,8,9,10,11,12}; // переменная для сохранения значения датчика int avalue=0; // переменная количества светящихся светодиодов шкалы int countled=10; // значение для включения тревоги int anxietyvalue=1000; // контакт подключения вывода реле int soundPin=13; // частота звукового сигнала int freq=587; void setup() { // инициализация последовательного порта Serial.begin(9600); // настройка выводов индикации светодиодов // в режим OUTPUT for(int i=0;i<10;i++) { pinMode(ledPins[i],OUTPUT); } } void loop() { // получение значения с аналогового вывода датчика avalue=analogRead(aPin); // вывод значения в монитор последовательного порта Arduino Serial.print("avalue=");Serial.println(avalue); // масштабируем значение на 10 светодиодах countled=map(avalue,20,1000,0,9); // вывод значения в монитор последовательного порта Arduino Serial.print("countled=");Serial.println(countled); // индикация уровня влажности for(int i=1;i<=10;i++) { if(i<=countled) digitalWrite(ledPins[i-1],HIGH); //зажигаем светодиод else digitalWrite(ledPins[i-1],LOW); // гасим светодиод } // пауза перед следующим получением значения 1000 мс delay(100); // сигнал тревоги if(countled>8) { tone(soundPin,freq,10000); } }
Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. В состоянии покоя датчик на аналоговом входе Arduino мы будем фиксировать значение от 0 (датчик 140С001) до 9-10 (датчик Logo sensors v1.5). В случае вибраций (например, удар по столу, к которому прикреплен датчик) значение аналогового сигнала увеличивается многократно, что видно по показаниям светодиодного индикатора. При пороговом значении (подбирается экспериментально) на динамик подаем сигнал тревоги на 10 секунд. Часто задаваемые вопросы FAQ
1. Не горит светодиод питания
- Проверьте наличие и полярность подаваемого на датчик питания.
- Проверьте соединение датчика с входом микроконтроллера.
- Отрегулируйте величину выходного сигнала с помощью потенциометра.