Датчик вибрации
Датчик вибрации 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 Ом.
// Подключаем необходимые библиотеки
- include <OneWire.h>
- include <DallasTemperature.h>
// Шину данных подключаем к выводу №2 Arduino
- define ONE_WIRE_BUS 2
// Создаём экземпляр класса для нашей шины и ссылку на него OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire);
// ФУНКЦИЯ ПРЕДУСТАНОВОК void setup(void) {
Serial.begin(9600); // Инициализация серийного порта sensors.begin(); // Инициализация шины
}
// ОСНОВНОЙ ЦИКЛ void loop(void) { Serial.print("Reading Temperature..."); // Подаём команду на чтение sensors.requestTemperatures(); Serial.println("Read"); Serial.print("Sensor Temperature 1: "); // Отображаем значение температуры Serial.print(sensors.getTempCByIndex(0)); } Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. В состоянии покоя датчик на аналоговом входе Arduino мы будем фиксировать значение от 0 (датчик 140С001) до 9-10 (датчик Logo sensors v1.5). В случае вибраций (например, удар по столу, к которому прикреплен датчик) значение аналогового сигнала увеличивается многократно, что видно по показаниям светодиодного индикатора. При пороговом значении (подбирается экспериментально) на динамик подаем сигнал тревоги на 10 секунд.