Датчик вибрации
Датчик вибрации Arduino используется для определения внешних вибрационных воздействий. Они могут быть применены при создании различных сигнализаций. Основа датчика вибрации – гибкая металлическая пружинка, внутри пластиковой трубки, которая колеблется от любых воздействий на нее. Далее сигнал подается для усиления на операционный усилитель LM386, а затем на аналоговый выход. Рассмотрим 2 датчика вибрации – Logo sensors v1.5 и 140С001.
Каждый из этих датчиков имеет выводы 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е
- макетная плата
- соединительные провода
Соберем схему. Светодиодная шкала представляет собой сборку из 10 независимых светодиодов с катодами со стороны надписи на корпусе. Для подключения шкалы к Arduino будем использовать 10 цифровых выводов D3 – D12. Каждый из светодиодов шкалы выводом анода соединен с цифровым выводом Arduino, а катодом на землю через последовательно соединенный ограничивающий резистор 220 Ом.
// контакт подключения аналогового выхода датчика
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 секунд.