Содержание статьи
Содержание

Главная / Датчики и Arduino / Пироэлектрический инфракрасный (PIR) датчик движения и Arduino

Пироэлектрический инфракрасный (PIR) датчик движения и Arduino

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

PIR датчик движения

Пирлоэлектрический датчик движения - общая информация

ПИР датчики движения по сути состоят из пироэлектрического чувствительного элемента (цилиндрическая деталь с прямоугольным кристаллом в центре), который улавливает уровень инфракрасного излучения. Все вокруг излучает небольшой уровень радиации. Чем больше температура, тем выше уровень излучения. Датчик фактически разделен на две части. Это обусловлено тем, что нам важен не уровень излучения, а непосредственно наличие движение в пределах его зоны чувствительности. Две части датчика установлены таким образом, что если одна половина улавливает больший уровень излучения, чем другая, выходной сигнал будет генерировать значение high или low.

ПИР датчик движения

Сам модуль, на котором установлен датчик движения, состоит также из дополнительной электрической обвязки: предохранители, резисторы и конденсаторы. В большинстве недорогих пир-датчиков используются недорогие чипы BISS0001 ("Micro Power PIR Motion Detector IC"). Этот чип воспринимает внешний источник излучения и проводит минимальную обработку сигнала для его преобразования из аналогового в цифровой вид.

Одна из базовых моделей пироэлектрических датчиков подобного класса выглядит так:

Распиновка пироэлектричсекого датчика

Более новые модели PIR-датчиков имеют дополнительные выходы для дополнительной настройки и установленные коннекторы для сигнала, питания и земли:

Инфракракрасный датчик движения - пояснения

ПИР датчики отлично подходят для проектов, в которых необходимо определять наличие или отсутствие человека в пределах определенного рабочего пространства. Помимо перечисленных выше достоинство подобных датчиков, они имеют большую зону чувствительности. Однако учтите, что пироэлектрические датчики не предоставят вам информации о том, сколько человек вокруг и насколько близко они находятся к датчику. Кроме того, сработать они могут и на домашних питомцев.

Общая техническая информация

Эти технические характеристики относятся к PIR датчикам, которые продаются в магазине Adafruit. Принцип работы аналогичных датчиков похожий, хотя технические характеристики могут отличаться. Так что прежде чем работать с ПИР-датчиком, ознакомьтесь с его даташитом.

Принцип работы пироэлектрических (PIR) датчиков движения

PIR датчики не такие простые как может показаться на первый взгляд. Основная причина - большое количество переменных, которые влияют на его входной и выходной сигналы. Чтобы объяснить основы работы ПИР датчиков, мы используем рисунок, приведенный ниже.

Пироэлектрический датчик движения состоит из двух основных частей. Каждая из частей включает в себя специальный материал, чувствительный к инфракрасному излучению. В данном случае линзы особо не влияют на работу датчика, так что мы видим два участка чувствительности всего модуля. Когда датчик находится в состоянии покоя, оба сенсора определяют одинаковое количество излучения. Например, это может быть излучение помещения или окружающей среды на улице. Когда теплокровный объект (человек или животное), проходит мимо, он пересекает зону чувствительности первого сенсора, в результате чего  на модуле ПИР датчика генерируются два различных значения излучения. Когда человек покидает зону чувствительности первого сенсора, значения выравниваются. Именно изменения в показаниях двух датчиков регистрируются и генерируют импульсы HIGH или LOW на выходе.

Принцип работы ПИР сенсоров

Конструкция PIR датчика

Чувствительные элементы ПИР датчика устанавливается в металлический герметический корпус, который защищает от внешних шумов, перепадов температур и влажности. Прямоугольник в центре сделан из материала, который пропускает инфракрасное излучение (обычно это материал на основе силикона). За этой пластиной устанавливаются два чувствительных элемента.

Рисунок из даташита Murata:

Корпус чувствительного элемента ПИР датчика

Рисунок из даташита RE200B:

Размеры корпуса ПИР сенсора

На рисунке из даташита RE200B видно два чувствительных элемента:

Чувствительные элементы ПИР датчика

На рисунке выше приведена внутренняя схема подключения.

Линзы

Инфракрасные датчики движения практически одинаковые по своей структуре. Основные отличия - чувствительность, которая зависит от качестве чувствительных элементов. При этом значительную роль играет оптика.

На рисунке выше приведен пример линзы из пластика. Это значит, что диапазон чувствительности датчика представляет из себя два прямоугольника. Но, как правило, нам нужно обеспечить большие углы обзора. Для этого можно использовать линзы, подобные тем, которые используются в фотоаппаратах. При этом линза для датчика движения должна быть маленькая, тонкая и изготавливаться из пластика, хотя он и добавляет шумы в измерения. Поэтому в большинстве PIR датчиков используются линзы Френеля (рисунок из Sensors Magazine):

Линза Френеля

Линзы Френеля концентрируют излучение, значительно расширяя диапазон чувствительности пиродатчиков (рисунок с BHlens.com)

Линза Френеля - принцип действия

Рисунок из Cypress appnote 2105:

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

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

На рисунке ниже можно увидеть отдельные секции - линзы Френеля:

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

На этом макроснимке обратите внимание, что фактура отдельных линз отличается:

Разная фактура линз Френеля

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

Рисунки из даташита NL11NH:

Зона чувствительности ПИР датчика

Зона чувствительности PIR датчика - вид сбоку

Ниже еще один рисунко. Более яркий, но менее информативный. Кроме того, обратите внимание, что у большинства датчиков угол обзора составляет 110 градусов, а не 90.

Рисунок из IR-TEC:

Рабочая зона ПИР датчика

Подключение PIR датчика движения

PIR датчик

Большинство модулей с инфракрасными датчиками движения имеют три коннектора на задней части. Распиновка может отличаться, так что прежде чем подключать, проверьте ее! Обычно рядом с коннекторами сделаны соответсвующие надписи. Один коннектор идет к земле, второй выдает интересующий нас сигнал с сенсоров, третий - земля. Напряжение питания обычно составляет 3-5 вольт, постоянный ток. Однако иногда встречаются датчики с напряжением питания 12 вольт. В некоторых больших датчиках отдельного пина сигнала нет. Вместо этого используется реле с землей, питанием и двумя переключателями.

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

ПИР датчик - обратная сторона

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

Тестирование PIR датчика движения

Pir_датчик_без_ARDUINO

Pir_датчик_без_ARDUINO_Электросхема

Соберите схему в соответсвии с рисунком выше. В результате, когда PIR датчик обнаружит движение, на выходе сгенерируется сигнал HIGH, который соответсвует 3.3 В и светодиод загорится.

При этом учтите, что пироэлектрический датчик должен 'стабилизироваться'. Установите батарейки и подождите 30-60 секунд. На протяжении этого времени светодиод может мигать. Подождите, пока мигание закончится и можно начинать махать руками и ходить вокруг датчика, наблюдая за тем, как светодиод зажигается!

Настройка перезапуска датчика

У пироэлектрического датчика движения есть несколько настоек. Первой мы рассмотрим 'перезапуск'.

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

Перезапуск ПИР датчика

Коннекторы для перезапуска датчика движения

Обратите внимание, что при таком варианте подключения, светодиод не горит постоянно, а включается-выключается, когда вы двигаетесь возле него. Это опция 'без перезапуска' (non-retriggering).

Схема перезапуска ПИР датчика

Теперь установите коннектор в позицию H. После тестирования окажется, что светодиод горит постоянно, если кто-то движется в пределах зоны чувствительности датчика. Это режим 'перезапуск'.

Рисунок ниже из даташита датчика BISS0001:

Схема перезагрузки датчика 2

Для большинства случаев режим 'перезапуск' (коннектор в позиции H кк это показано на рисунке ниже) лучше.

L - коннектор на PIR датчике

Настраиваем чувствительность

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

Изменение времени импульса и времени между импульсами

Когда мы рассматривает PIR датчики, важны два промежутка времени 'задержки'. Первый отрезок времени - Tx: как долго горит светодиод после обнаружения движения. На многих пироэлектрических модулях это время регулируется встроенным потенциометром. Второй отрезок времени - Ti: как долго светодиод гарантированно не загорится, когда движения не было. Изменять этот параметр не так просто, для этого может понадобится паяльник.

Давайте взглянем на даташит BISS:

Расчет времени импульса ПИР датчика движения

На датчиках от Adafruit есть потенциометр, отмеченный как TIME. Это переменный резистор с сопротивлением 1 мегаом, который добавлен к резисторам на 10 килоом. Конденсатор C6 имеет емкость 0.01 микрофарат, так что:

Tx = 24576 x (10 кОм + Rtime) x 0.01 мкФ

Когда потенциометр Rtime в 'нулевом' - полностью повернут против часовой стрелки - положении (0 мегаом):

Tx = 24576 x (10 кОм) x 0.01 мкФ = 2.5 секунды (примерно)Когда потенциометр Rtime полностью повернут по часовой стрелке (1мегаом):

Tx = 24576 x (1010 кОм) x 0.01 мкФ = 250 секунд (примерно)

В средней позиции RTime время будет составлять около 120 секунд (две минуты). То есть, если вы хотите отслеживать движение объекта с частотой раз в минуту, поверните потенциометр на 1/4 поворота.

Для более старых/других моделей PIR датчиков

Если на вашем датчике нет потенциометров, можно провести настройку с помощью резисторов.

Резисторы для настройки чувствительности ПИР датчика

Нас интересуют резисторы R10 и R9. К сожалению, китайцы умею многое. В том числе и путать надписи. На рисунке выше приведен пример, на котором видно, что перепутаны R9 с R17. Отследить подключение по даташиту. R10 подключен к 3 пину, R9 - к 7 пину.

Например:

Tx is = 24576 * R10 * C6 = ~1.2 секунд

R10 = 4.7K и C6 = 10 нанофарад

и

Ti = 24 * R9 * C7 = ~1.2 секунд

R9 = 470K и C7 = 0.1 микрофарад

Вы можете изменить время задержки установив различные резисторы и конденсаторы.

Подключение PIR датчика движения к Arduino

Напишем программу для считывания значений с пироэлектрического датчика движения. Подключить PIR датчик к микроконтроллеру просто. Датчик выдает цифровой сигнал, так что все, что вам необходимо - считывать с пина Arduino сигнал HIGH (рбнаружено движение) или LOW (движения нет).

При этом не забудьте установить коннектор в позицию H!

Подайте питание 5 вольт на датчик. Землю соежинети с землей. После этого соедините пин сигнала с датчика с цифровым пином на Arduino. В данном примере использован пин 2.

Arduino_PIR_датчик_движения_подключение

Программа простая. По сути она отслеживает состояние пина 2. А именно: какой на нем сигнал: LOW или HIGH. Кроме того, віводится сообщение, когда состояние пина меняется: есть движение или движения нет.

/*

* проверка PIR датчика движения

*/

int ledPin = 13;  // инициализируем пин для светодиода

int inputPin = 2;  // инициализируем пин для получения сигнала от пироэлектрического датчика движения

int pirState = LOW;  // начинаем работу программы, предполагая, что движения нет

int val = 0;  // переменная для чтения состояния пина

void setup() {

pinMode(ledPin, OUTPUT);  // объявляем светодиод в качестве  OUTPUT

pinMode(inputPin, INPUT);  // объявляем датчик в качестве INPUT

Serial.begin(9600);

}

void loop(){

val = digitalRead(inputPin);  // считываем значение с датчика

if (val == HIGH) {  // проверяем, соответствует ли считанное значение 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;

}

}

}

Не забудьте, что для работы с пироэлектрическим датчиком не всегда нужен микроконтроллер. Порой можно обойтись и простым реле.