ИК датчик движения для Arduino HC-SR501
Модуль с инфракрасным датчиком движения HC-SR501 может фиксировать движения человека или животного на расстоянии до 7 метров. Данный модуль часто используется в простых охранных системах или бытовых проектах (автоматическое включение света при движении, автоматизации электрических приборов и т. д.)
Плата модуля спроектирована на основе чипа управления BISS0001. Чип принимает излучения с датчика и обрабатывает полученную информацию для преобразования ее в аналоговый или в цифровой сигнал.
Модуль HC-SR501 обладает двумя режимами работы (H, L). Для изменения режимов используется джампер, который расположен на обратной стороне модуля. В режиме H, импульс на выходе модуля пропадает в случае отсутствия движения в зоне при заданном времени. Если подключить режим L, на выходе появляется логический сигнал при срабатывании модуля.
Так же на плате расположены 2 потенциометра. С помощью потенциометра SX изменяется расстояние чувствительности датчика (3 – 7 м), соответственно подстроечным резистором TX задается время, в течении которого будет передаваться логическая единица при движении в зоне датчика (5 – 300 с).
Инфракрасный датчик обладает 3 контактами для подключения к микропроцессору Arduino. Выходы VCC и GND обеспечивают подачу напряжения на плату, а контакт OUT необходим для передачи сигнала от датчика к микроконтроллеру устройства.
Подача напряжения на модуль осуществляется от внешнего источника питания, платы Arduino.
Технические характеристики модуля:
Напряжение питания, В | 4,5 … 20 |
Максимальный потребляемый ток, мА | 60 |
Выходное напряжение, В | 3,3 |
Расстояние обнаружения, м | 3 … 7 |
Угол обнаружения, ° | 145 |
Время задержки, с | 5 … 300 |
Рабочая температура, °C | -20 … +80 |
Размеры модуля, мм | 3.2 см x 2.4 см x 1.8 |
Схема подключения модуля к Arduino Uno:
.png)
Пример скетча:
int ledPin = 13; int switchPin = 2; int value = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); } void loop() { value = digitalRead(switchPin); if (HIGH == value) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }