Датчик движения HC-SR501: устройство, настройка и работа с Arduino

Датчик движения HC-SR501: устройство, настройка и работа с Arduino

Как устроен пироэлектрический модуль HC-SR501, что регулируют его потенциометры и перемычка и как подключить датчик к Arduino для сигнализации.

Из чего состоит модуль

HC-SR501 — модуль обнаружения движения (или присутствия), который реагирует на объекты, испускающие инфракрасное излучение. Его чувствительный элемент — PIR-датчик 500BP. Он работает на пироэлектрическом эффекте: в кристалле при изменении температуры возникает электрическое поле, и это изменение можно зафиксировать.

PIR-датчик 500BP — чувствительный элемент модуля HC-SR501

Сверху датчик закрыт линзой Френеля. Она расширяет зону обзора и усиливает приходящий инфракрасный сигнал. Обработкой сигнала и управлением работой модуля занимается микросхема BISS0001.

Линза Френеля датчика движения

После подачи питания модулю нужно время на калибровку — примерно одна минута, и только потом он готов к работе. Размещать его рекомендуют подальше от открытых источников света.

Потенциометры и режимы L и H

На плате есть два подстроечных потенциометра и перемычка выбора режима. Первый потенциометр задаёт дальность обнаружения в пределах от 3 до 7 м. Второй определяет, сколько времени после срабатывания на выходе удерживается сигнал: от 5 до 300 секунд.

  • Режим L — одиночное срабатывание. Обнаружив движение, модуль выставляет на выходе OUT высокий уровень на время, заданное вторым потенциометром, и в течение этого времени на новые движения не реагирует. Такой вариант подходит для охранных систем, где нужно подать сигнал на сирену.
  • Режим H — срабатывание при каждом обнаруженном движении. Его удобно применять для управления освещением.
Назначение контактов, потенциометры и перемычка режима HC-SR501

Характеристики

Напряжение питания4,5–20 В
Ток потребления50 мА
Уровни на выходе OUTHIGH — 3,3 В, LOW — 0 В
Дальность обнаружения3–7 м
Задержка после срабатывания5–300 с
Угол наблюдениядо 120°
Блокировка до следующего замера2,5 с
Режимы работыL — одиночное срабатывание, H — при каждом событии
Рабочая температураот −20 до +80 °C
Габариты32×24×18 мм

Подключение к Arduino

У модуля три вывода: VCC — питание, GND — земля, OUT — цифровой выход с уровнями 0–3,3 В. В простейшем примере выход датчика заводят на контакт 2 платы Arduino, а динамик — на контакт 9. Контакт 2 выбран не случайно: на нём доступно внешнее прерывание int0, и срабатывания фиксируются именно через него.

Схема подключения HC-SR501 к плате Arduino

Логика скетча такая. В setup запускается последовательный порт на скорости 9600 и назначается обработчик прерывания по нарастающему фронту: attachInterrupt(0, intHCSR501, RISING). Обработчик только поднимает флаг срабатывания. В основном цикле программа проверяет флаг, и если он установлен, отправляет в порт сообщение «Attention!!!», включает звуковой сигнал частотой 587 Гц на 5 секунд функцией tone и сбрасывает флаг. Для этого опыта модуль переводят в режим L.

После загрузки скетча остаётся подобрать потенциометрами длительность сигнала на выходе OUT и чувствительность, то есть расстояние, на котором объект фиксируется.

Пример: SMS при срабатывании

Тот же принцип можно развить до простой охранной сигнализации, которая при движении на объекте отправляет SMS. Для неё потребуются:

  • плата Arduino Uno;
  • датчик HC-SR501;
  • GSM/GPRS-шилд;
  • npn-транзистор, например С945;
  • резистор 470 Ом;
  • динамик 8 Ом 1 Вт;
  • провода.

К предыдущему скетчу добавляется библиотека SoftwareSerial: обмен с шилдом идёт через программный последовательный порт на контактах 7 и 8 со скоростью 19200. При срабатывании датчика, помимо сообщения в порт и звука, вызывается подпрограмма отправки SMS. Она переводит модем в текстовый режим командой AT+CMGF=1, затем командой AT+CMGS передаёт номер получателя, отправляет текст «Attention!!!» и завершает передачу символом с ASCII-кодом 26 (Ctrl+Z).

Важная деталь по питанию: в момент отправки SMS шилд потребляет ток до 2 А, поэтому схему питают от внешнего источника 12 В 2 А.

Если датчик ведёт себя не так

Когда модуль не реагирует на движение, сначала проверяют правильность подключения, затем подстраивают потенциометрами дистанцию срабатывания и задержку длительности сигнала. Если же срабатываний слишком много, помогает подстройка задержки или перевод перемычки в режим одиночного срабатывания L.

← Все статьи