Датчик вибрации

Содержание:


Обзор датчика вибрации Arduino

Датчик вибрации Arduino используется для определения внешних вибрационных воздействий. Они могут быть применены при создании различных сигнализаций. Основа датчика вибрации – гибкая металлическая пружинка, внутри пластиковой трубки, которая колеблется от любых воздействий на нее. Далее сигнал подается для усиления на операционный усилитель LM386, а затем на аналоговый выход. Рассмотрим 2 датчика вибрации –  Logo sensors v1.5 (рис. 1) и 140С001 (рис. 2).

Датчик вибрации Arduino Logo sensors v1.5 Датчик вибрации 801S

Каждый из этих датчиков имеет выводы GND, Vcc (питания) и вывод аналогового сигнала A0. Настройка чувствительности датчика осуществляется находящимся на плате потенциометром. Каждый из датчиков имеет светодиод, сигнализирующий о наличие поступающего на датчик питания. Датчик 140С001 имеет дополнительный цифровой вывод D0, на котором при достижении порогового значения величины вибрации выдается логический ноль. Порог срабатывания регулируется потенциометром. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать датчик  140С001 автономно, без подключения к контроллеру. Датчики имеют монтажное отверстие для крепления к поверхности.


Технические характеристики

Технические характеристики датчиков Logo sensors v1.5 и 140С001 представлены в таблице

Logo sensors v1.5140С001
Напряжение питания, В3 – 5В3 – 5В
Ток потребления, мА5 мА4 мА
Выход цифровойнетесть
Выход аналоговыйестьесть
Регулировка чувствительностиестьесть
Размер10×45×15 мм16×38×8  мм

Пример использования

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

Для проекта нам понадобятся следующие детали:

  • плата Arduino Uno;
  • датчик вибрации 801S или Logo sensors v1.5;
  • светодиодная шкала ;
  • динамик 8 Ом;
  • резистор 500 Ом;
  • транзистор КТ503е;
  • макетная плата;
  • соединительные провода.

Соберем схему, показанную на рис. 1. Светодиодная шкала представляет собой сборку из 10 независимых светодиодов с катодами со стороны надписи на корпусе. Для подключения шкалы к Arduino будем использовать 10 цифровых выводов D3 – D12. Схема соединений показана на рис. Э4.3. Каждый из светодиодов шкалы выводом анода соединен  с цифровым выводом Arduino, а катодом на землю через последовательно соединенный ограничивающий резистор 220 Ом.

vibrationsensor_bb

Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки:

//  датчик вибрации 801s
//  http://makerplus.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

  • Не горит светодиод питания

Проверьте наличие и полярность подаваемого на датчик питания;

  • При вибрациях не изменяется значение выходного аналогового сигнала

Проверьте соединение датчика с входом микроконтроллера.

Отрегулируйте величину выходного сигнала с помощью потенциометра.