Опубликовано

ИК-датчик движения HC-SR501

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Пассивный инфракрасный датчик движений HC-SR501 (PIR, Passive Infrared) фиксирует движения объектов. Матрица из 15-ти небольших линз фокусирует ИК-излучение из разных участков окружающего пространства на пироэлектрический детектор, основу которого составляет пластина из танталата лития, вырабатывающая небольшое напряжение в ответ на поступающее тепловое излучение. При перемещении объекта из одной зоны в другую генерируется выходной сигнал (рис. S2.1, S2.2).

Основные характеристики

Наименование Значение
Постоянное напряжение, В 4,5 ÷ 20
Ток потребления в режиме ожидания менее 50 мкА
Наибольший потребляемый ток во время работы, мА 65
Напряжение логических уровней, В 3,3
Расстояние обнаружения 3 ÷ 7 м, по умолчанию 7 м
Максимальный угол обнаружения 110° на расстоянии 7 м 120°
Время поддержания высокого уровня выхода при присутствии 20 ÷ 300 с
Время игнорирования событий после фиксации 0,2 с
Температура окружающего воздуха при работе –15 ÷ 70°C
Размеры, мм 32×24×28

Внешний вид, назначение контактов

2-02-HC-SR501

Рис. S2.1. Датчик HC-SR501

2-03-HC-SR501

Рис. S2.2. Поле зрения датчика PIR с линзой Френеля

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

sh_L08_2

Рис. S2.3. Схема подключения датчика движения

Программный код

Листинг S2.1. Обнаружение перемещения датчиком движения HC-SR501

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define IKPin 2 //Номер пина ИК-датчика движения HC-SR501
 
#define ledPin 13 //Номер пина встроенного светодиода
 
void setup(){
 
Serial.begin(9600);
 
pinMode(IKPin, INPUT);// Объявляем пин,
 
// к которому подключен датчик движения, входом
 
pinMode(ledPin,OUTPUT); // Объявляем пин,
 
// к которому подключен светодиод, выходом
 
}
 
void loop(){
 
int pirVal = digitalRead(IKPin); //считываем
 
// значения с датчика движения
 
// Если обнаружили движение, то транслируем
 
// сигнал тревоги в монитор порта
 
// и включаем светодиод
 
if(pirVal == HIGH) {
 
digitalWrite(ledPin, HIGH);
 
Serial.print("ALARM");
 
delay(2000);
 
}
 
else {
 
Serial.print("Scaning");
 
digitalWrite(ledPin,LOW);
 
}
 
}

Результат

C:\Users\DANILA\Desktop\Photomechanics\НАБОРЫ\Набор 2\УРОКИ И ПРОЕКТЫ\Уроки\8 урок - подключение датчика движения\Screenshot_3.png

Рис. S2.4. Фиксация движения на Мониторе порта