Как работает PIR датчик HC-SR501, и его взаимодействие с Arduino

Добавлено 14 октября 2019 в 18:55

Лаборатория каждого сумасшедшего ученого, или секретная комната подростка, нуждается в улучшенной защите от вторжения мошенников или братьев и сестер. Если вы один из них, вам, вероятно, стоит подумать о приобретении пассивного пироэлектрического инфракрасного (PIR) датчика. PIR датчики позволяют вам определять, когда кто-то находится в комнате, когда не должен быть там.

Рисунок 1 Как работает PIR датчик HC-SR501, и его взаимодействие с Arduino
Рисунок 1 – Как работает PIR датчик HC-SR501, и его взаимодействие с Arduino

Хотя это может показаться чем-то из шпионского фильма, но вы, вероятно, используете PIR датчики каждый день. Этот датчик вы можете найти в большинстве современных систем безопасности, автоматических выключателях света, механизмах открывания гаражных ворот и аналогичных применениях, где работа какого-либо электрического устройства необходима только в присутствии людей.

Как работает PIR датчик движения?

Если вы не знали, все объекты с температурой выше абсолютного нуля (0 Кельвинов / -273,15°C), включая человеческие тела, испускают тепловую энергию в виде инфракрасного излучения. Чем горячее объект, тем большее излучение он излучает.

PIR датчик разработан специально для обнаружения таких уровней инфракрасного излучения. В основном он состоит из двух основных составляющих: пироэлектрического датчика и специальной линзы, называемой линзой Френеля, которая фокусирует инфракрасные сигналы на пироэлектрический датчик.

Рисунок 2 PIR датчик, пироэлектрический датчик, два слота обнаружения
Рисунок 2 – PIR датчик, пироэлектрический датчик, два слота обнаружения

Пироэлектрический датчик на самом деле имеет две прямоугольные прорези, выполненные из материала, который пропускает инфракрасное излучение. За ними находятся два отдельных инфракрасных сенсорных электрода: один из которых отвечает за создание положительного выходного сигнала, а другой – отрицательного. Причина такого решения заключается в том, что мы ищем изменение инфракрасных уровней, а не сами окружающие инфракрасные уровни. Два электрода подключены так, чтобы они подавляли друг друга. Если одна половина видит больше или меньше инфракрасного излучения, чем другая, выходной сигнал будет высоким или низким.

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

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

Рисунок 3 Принцип действия PIR датчика
Рисунок 3 – Принцип действия PIR датчика

PIR детектор движения HC-SR501

Для большинства наших проектов на Arduino, которые должны определять, когда человек покинул или вошел в зону, или приблизился, PIR датчики HC-SR501 являются отличным выбором. Они имеют низкое энергопотребление и низкую стоимость, довольно прочные, имеют широкий диапазон линз, с ними легко взаимодействовать, и они безумно популярны среди любителей.

PIR датчик HC-SR501 имеет три вывода: питание VCC, выход и земля (показано на рисунке ниже). Он имеет встроенный стабилизатор напряжения, поэтому он может питаться от любого постоянного напряжения от 4,5 до 12 вольт, обычно используется 5В. Кроме этого, у него есть несколько настроек. Давайте проверим их.

Рисунок 4 Распиновка PIR датчика. Расположение компонентов на плате.
Рисунок 4 – Распиновка PIR датчика. Расположение компонентов на плате.

На плате есть два потенциометра для настройки пары параметров:

  • Чувствительность – устанавливает максимальное расстояние, на котором может быть обнаружено движение. Оно варьируется от 3 до 7 метров. На реальное расстояние, которое вы получите, может влиять планировка вашего помещения.
  • Время – устанавливает время, в течение которого выходной сигнал останется на высоком логическом уровне после обнаружения. Минимум – 3 секунды, максимум – 300 секунд или 5 минут.

Наконец, на плате есть перемычка (на некоторых моделях перемычка не впаяна). У нее есть два варианта настройки:

  • H – это удержание / повтор / повторный запуск. В этом положении HC-SR501 будет продолжать выдавать высокий логический уровень, пока он продолжает обнаруживать движение.
    Рисунок 5 Работа PIR датчика HC-SR501 в режиме повторного запуска
    Рисунок 5 – Работа PIR датчика HC-SR501 в режиме повторного запуска
  • L – это прерывающийся или неповторяющийся / без повторного запуска. В этом положении выходной сигнал останется на высоком логическом уровне в течение времени, установленного регулировкой потенциометра TIME.
    Рисунок 6 Работа PIR датчика HC-SR501 в режиме без повторного запуска
    Рисунок 6 – Работа PIR датчика HC-SR501 в режиме без повторного запуска

Повышение универсальности PIR датчика HC-SR501

Печатная плата HC-SR501 имеет площадки для двух дополнительных компонентов. Они обычно обозначаются как "RT" и "RL". Обратите внимание, что на некоторых платах обозначения могут быть закрыты «купольной» линзой на стороне, противоположной компонентам.

Рисунок 7 PIR датчик. Площадки для фоторезистора и термистора
Рисунок 7 – PIR датчик. Площадки для фоторезистора и термистора
  • RT – предназначен для термистора или термочувствительного резистора. Его добавление позволяет использовать HC-SR501 при экстремальных температурах, а также в некоторой степени повышает точность детектора.
  • RL – это место для подключения светочувствительного резистора (LDR) или фоторезистора. При добавлении этого компонента HC-SR501 будет работать только в темноте, это обычное применение для систем освещения, чувствительных к движению.

Дополнительные компоненты могут быть припаяны непосредственно к плате или выведены в удаленные места с помощью проводов и разъемов.

Распиновка PIR датчика HC-SR501

HC-SR501 имеет 3-контактный разъем, который соединяет его с внешним миром. На него выведены следующие контакты:

Рисунок 8 Распиновка PIR датчика HC-SR501
Рисунок 8 – Распиновка PIR датчика HC-SR501

VCC – вывод питания для PIR датчика HC-SR501, к которому мы подключаем вывод 5V на Arduino.

Выходной контакт – логический выход с TTL уровнем 3,3 В. Низкий логический уровень означает, что движение не обнаружено, высокий логический уровень означает, что было обнаружено какое-то движение.

GND должен быть подключен к земле Arduino.

Использование PIR датчика в качестве автономного устройства

Одна из причин, по которой PIR датчик HC-SR501 является чрезвычайно популярным, заключается в том, что он является очень универсальным датчиком, который самодостаточен. А подключив его к каким-либо микроконтроллерам, таким как Arduino, вы сможете еще больше расширить его универсальность. Для нашего первого эксперимента мы будем использовать HC-SR501 отдельно, чтобы показать, насколько он полезен сам по себе.

Схема соединений для этого эксперимента очень проста. Батареи подключены к выводам датчика VCC и GND, а маленький красный светодиод подключен к выходному контакту через ограничивающий ток резистор 220 Ом. И всё!

Теперь, когда PIR обнаруживает движение, на выходном контакте появляется высокий логический уровень, и светодиод загорается!

Рисунок 9 Тестовая схема подключения PIR датчика без использования Arduino. Она показывает, как можно использовать PIR датчик в автономных приложениях.
Рисунок 9 – Тестовая схема подключения PIR датчика без использования Arduino. Она показывает, как можно использовать PIR датчик в автономных приложениях.

Помните, что при включении питания необходимо подождать 30-60 секунд, пока PIR датчик не адаптируется к инфракрасной энергии в помещении. В течение этого времени светодиод может немного мигать. Подождите, пока светодиод не погаснет, а затем подвигайтесь перед ним, махая рукой, чтобы увидеть, что светодиод загорается.

Подключение PIR датчика к Arduino UNO

Теперь, когда у нас есть полное понимание того, как работает PIR датчик, мы можем подключить его к нашей плате Arduino!

Подключить PIR датчики к микроконтроллеру очень просто. PIR действует как цифровой выход, поэтому всё, что вам нужно делать, это отслеживать, когда на его выходном выводе установится высокий логический уровень (обнаружено движение) или низкий логический уровень (не обнаружено). Подайте на PIR датчик напряжение 5 В и подключите землю. Затем подключите выход к цифровому выводу 2.

Вам нужно установить перемычку на HC-SR501 в положение H (повторный запуск), чтобы он работал правильно. Вам также нужно будет установить время на минимум (3 секунды), повернув потенциометр "время" против часовой стрелки до упора. Установите чувствительность в любое положение, которое вам нужно, либо, если не уверены, установите ее в среднее положение.

Теперь вы готовы загрузить код и начать работу PIR датчиком.

Рисунок 10 Подключение PIR датчика к Arduino UNO
Рисунок 10 – Подключение PIR датчика к Arduino UNO

Код Arduino

Код очень прост и в основном отслеживает, является ли входной сигнал на выводе 2 высоким или низким.

int ledPin = 13;      // выбор вывода для светодиода
int inputPin = 8;     // выбор входного вывода (для PIR датчика)
int pirState = LOW;   // начинаем работу, предполагая, что движение не обнаружено
int val = 0;          // переменная для чтения состояния вывода
 
void setup() 
{
  pinMode(ledPin, OUTPUT);      // настраиваем вывод светодиода, как выход
  pinMode(inputPin, INPUT);     // настраиваем вывод датчика, как вход
 
  Serial.begin(9600);
}
 
void loop()
{
  val = digitalRead(inputPin);  // прочитать входное значение
  
  if (val == HIGH)              // проверить, есть ли на входе высокий логический уровень
  {
    digitalWrite(ledPin, HIGH); // включить светодиод

    if (pirState == LOW) 
    {
      Serial.println("Motion detected!"); // напечатать об изменении выхода
      pirState = HIGH;
    }
  } 
  else 
  {
    digitalWrite(ledPin, LOW); // выключить светодиод

    if (pirState == HIGH)
    {
      Serial.println("Motion ended!");   // напечатать об изменении выхода
      pirState = LOW;
    }
  }
}

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

Рисунок 11 Вывод приложения PIR датчика в мониторе последовательного порта
Рисунок 11 – Вывод приложения PIR датчика в мониторе последовательного порта

Что нужно учесть перед проектированием приложений на базе PIR датчиков

Как и для большинства PIR датчиков, HC-SR501 требуется некоторое время для адаптации к инфракрасной энергии в помещении. Это занимает от 30 до 60 секунд при первом включении датчика.

Кроме того, датчик имеет период «сброса» около 5 или 6 секунд после считывания. В течение этого времени он не обнаружит никакого движения.

При проектировании системы на базе HC-SR501 вам необходимо будет учитывать эти длительности задержек.

Теги

ArduinoMCUPIRPIR датчикДатчикДатчик движенияИнфракрасное излучениеЛинза ФренеляМикроконтроллерПироэлектрический датчик

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.