ИК-датчик движения HC-SR501: различия между версиями

Материал из MIK32 микроконтроллер
Строка 103: Строка 103:
         digitalWrite(relPin, LOW);
         digitalWrite(relPin, LOW);
}
}
</syntaxhighlight>
</syntaxhighlight>Загружаем программу на Ардуино, аккуратно подключаем схему к бытовой сети и проверяем работу датчика.

Версия от 16:04, 17 июня 2021

Внешний вид HC-SR501

HC-SR501 - пироэлектрический инфракрасный датчик движения, позволяет обнаруживать движение в контролируемой зоне. Представляет из себя модуль состоящий из ИК сенсора 500BP, линзы Френеля, и управляющей модулем микросхемы BISS0001. Режим работы модуля задается перемычкой (режим H или режим L).

В режиме H при срабатывании датчика несколько раз подряд на его выходе (на OUT) остается высокий логический уровень. В режиме L на выходе при каждом срабатывании датчика на выход подается отдельный импульс.

Не рекомендуется использовать датчик в местах с резкими перепадами температур - резкий всплеск инфракрасного излучения от нагрева он будет воспринимать как появление перемещающегося объекта, что может вызвать ложное срабатывание.

HC-SR501 часто применяется в охранных сигнализациях, а так же в умных домах для контроля освещения при появлении в помещении человека.

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

  • Напряжение питания: 4.8В до 20В
  • Статический ток: 50 мА
  • Уровня выходного сигнала: 3.3 В / низкий 0 В
  • Время задержки: 0.5 — 200с (регулируемая)
  • Время блокировки: 2.5 с
  • Угол работы: < 100
  • Рабочая температура: -15С до + 70C
  • Определение объектов: 23 мм
  • Габариты: 33мм x 25мм x 24мм

На модуль установлена линза Френеля, которая фокусирует инфракрасные сигналы на пироэлектрический датчик под названием 500BP. Датчик называется PIR (Passive Infra-Red). Пассивный он потому, что для обнаружения движения не используется какая-либо дополнительная энергия, кроме той, что испускается самими объектами.

500BP состоит из двух чувствительных элементов. Управляющая микросхема модуля регистрирует изменения сигналов от обоих элементов и по характеру их изменения обнаруживает движение объектов, испускающих инфракрасные сигналы (живых организмов).

Контакты датчика

Назначение выводов:

Модуль HC-SR501 имеет 3 вывода:

  • VCC — положительное напряжение постоянного тока от 4,5 до 20 В постоянного тока.
  • OUTPUT — логический выход на 3,3 вольта. LOW не указывает на обнаружение, HIGH означает, что кто-то был обнаружен.
  • GND — заземление.

Назначение перемычек:

  • H — это настройка Hold или Repeat. В этом положении HC-SR501 будет продолжать выдавать сигнал HIGH, пока он продолжает обнаруживать движение.
  • L — Это параметр прерывания или без повтора. В этом положении выход будет оставаться HIGH в течение периода, установленного настройкой потенциометра TIME.
14.jpg

На плате HC-SR501 имеются дополнительные отверстия для двух компонентов, рядом расположена маркировка, посмотреть на нее можно сняв линзу Френеля.

Назначение дополнительных отверстий:

  • RT — это предназначено для термистора или чувствительного к температуре резистора. Добавление этого позволяет использовать HC-SR501 в экстремальных температурах, а также в некоторой степени повышает точность работы детектора.
  • RL — это соединение для светозависимого резистора или фоторезистора. Добавляя компонент, HC-SR501 будет работать только в темноте, что является общим приложением для чувствительных к движению систем освещения.

Подключение HC-SR501 к Ардуино Уно

Схема подключения

Для соединения с микроконтроллером или напрямую с реле у HC-SR501 имеется три вывода. Подключаем их к Ардуино по следующей схеме:

HC-SR501 GND VCC OUT
Ардуино Уно GND +5V 2

Программа для датчика

Внешний вид макета

Как уже было сказано, цифровой выход датчика HC-SR501 генерирует высокий уровень сигнала при срабатывании. Напишем простую программу, которая будет отправлять в последовательный порт «1» если датчик увидел движение, и «0» в противном случае.

const int movPin = 2

void setup() 
{
    Serial.begin(9600);
    pinMode(movPin, INPUT);
}

void loop()
{
    int val = digitalRead(movPin);
    Serial.println(val);
    delay(100);
}

Загружаем программу на Ардуино и проверяем работу датчика. Можно покрутить настройки датчика и посмотреть как это отразится на его работе.

Программа для управления светом при помощи датчика движения

Схема подключения
Внешний вид макета с лампочкой

Теперь напишем программу, которая будет при срабатывании датчика включать реле, а следовательно и освещение в комнате.

const int movPin = 2;
const int relPin = 3;

void setup() {
    Serial.begin(9600);
    pinMode(movPin, INPUT);
    pinMode(relPin, OUTPUT);
}

void loop(){
    int val = digitalRead(movPin);
    if (val)
        digitalWrite(relPin, HIGH);
    else
        digitalWrite(relPin, LOW);
}

Загружаем программу на Ардуино, аккуратно подключаем схему к бытовой сети и проверяем работу датчика.