Датчик вибрации для Arduino: устройство и пример сигнализации

Датчик вибрации для Arduino: устройство и пример сигнализации

Как устроены модули вибрации Logo sensors v1.5 и 140С001 и как собрать на них охранную сигнализацию со светодиодной шкалой.

Принцип действия

Датчик вибрации фиксирует внешние механические воздействия и часто служит основой для разного рода сигнализаций. Чувствительный элемент — гибкая металлическая пружинка внутри пластиковой трубки, которая начинает колебаться при любом толчке. Сигнал с неё усиливается операционным усилителем LM386 и подаётся на аналоговый выход.

Два варианта модуля

Распространены два похожих модуля: Logo sensors v1.5 и 140С001.

Датчик вибрации Logo sensors v1.5
Датчик вибрации 140С001

У обоих есть выводы GND, Vcc и аналоговый выход A0, потенциометр для настройки чувствительности, светодиод наличия питания и монтажное отверстие для крепления к поверхности.

Модуль 140С001 дополнен цифровым выводом D0. Когда вибрация достигает порога, на нём появляется логический ноль; порог задаётся тем же потенциометром. Благодаря выводу D0 и отдельному светодиоду его состояния этот датчик может работать автономно, без контроллера.

Проект: охранная сигнализация

Идея проекта проста: при ударе по поверхности, на которой закреплён датчик, динамик подаёт сигнал тревоги. Для удобства настройки относительный уровень сигнала отображается на светодиодной шкале. Список деталей:

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

Шкала — это сборка из 10 независимых светодиодов, катоды которых расположены со стороны надписи на корпусе. Аноды подключаются к цифровым выводам D3–D12, а катоды идут на землю через ограничивающие резисторы 220 Ом.

Схема подключения датчика вибрации, светодиодной шкалы и динамика

Логика скетча

Аналоговый выход датчика заведён на вход A0, динамик управляется с вывода 13, частота сигнала — 587. Вход Arduino представляет собой 10-битный АЦП, поэтому считанные значения лежат в диапазоне от 0 до 1023.

В цикле значение читается через analogRead, выводится в последовательный порт и пересчитывается в число горящих светодиодов строкой countled=map(avalue,20,1000,0,9). Затем шкала обновляется, и после паузы 100 мс проверяется условие тревоги: если светодиодов больше восьми, вызывается tone(soundPin,freq,10000), то есть звук длится 10 секунд.

В покое на входе фиксируется значение от 0 (у 140С001) до 9–10 (у Logo sensors v1.5). При вибрации, например от удара по столу с закреплённым датчиком, сигнал возрастает многократно, что сразу видно по шкале. Порог срабатывания подбирают экспериментально.

Типичные проблемы

  • Не горит светодиод питания — нужно проверить наличие и полярность питания датчика.
  • Аналоговый сигнал не меняется при вибрации — стоит проверить соединение с входом контроллера и подстроить уровень потенциометром.

← Все статьи