Использование датчика движения HC-SR501 с реле и кодом Arduino

Использование датчика движения HC-SR501 с реле и кодом Arduino

В этом учебном пособии мы рассмотрим, как использовать инфракрасный датчик движения HC-SR501 в сочетании с реле для управления лампой переменного тока или другим типом нагрузки с помощью Arduino. HC-SR501 - это инфракрасный датчик движения, который может обнаруживать движение на расстоянии до 7 метров, что делает его идеальным для различных приложений, таких как системы охранной сигнализации или автоматическое освещение. Используя этот датчик и реле, вы можете создать проект, который включает свет при обнаружении движения.

Мы предоставим пошаговое руководство по настройке оборудования, инструкциям по проводке и коду Arduino, необходимому для реализации этой функции. Для более четкого понимания процесса обязательно посмотрите соответствующее видео (в видео на :00).

Аппаратное обеспечение объяснено

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

Релейный модуль действует как выключатель, который может управлять высоковольтными устройствами. У него есть три основных вывода: COM (общий), NO (обычно разомкнутый) и NC (обычно замкнутый). В этой конфигурации мы будем использовать вывод NO, который подключается к нагрузке, когда реле активируется. Это позволяет Arduino управлять реле на основе сигнала, поступающего от датчика движения.

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

ПроизводительHC-SR501
Номер деталиHC-SR501
Логика/Напряжение ввода-вывода5 В
Напряжение питания5-20 В
Потребление электроэнергии65 мА
Угол обнаружения120 градусов
Дистанция обнаружения3-7 м
Рабочая температураот -15 до 70 °C
Тип выводаЦифровой
ПакетМодуль

  • Обеспечьте правильное питание (5-20 В) для датчика.
  • Отрегулируйте потенциометр чувствительности для оптимального диапазона обнаружения.
  • Используйте normally open (NO) вывод реле для эффективного управления нагрузкой.
  • Будьте осторожны с током реле (максимум 10 А).
  • Проверьте диапазон обнаружения датчика движения перед окончательной установкой.
  • Учтите тепловыделение, если используете реле для больших нагрузок.

Инструкции по электропроводке

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

Чтобы подключить датчик движения HC-SR501 и реле к Arduino, начните с подключения вывода VCC датчика движения к выводу 5V на Arduino. Далее подключите вывод GND датчика к одному из выводов GND на Arduino. Вывод OUT от датчика движения должен быть подключен к цифровому выводу 2 на Arduino.

Для релейного модуля подключите вывод VCC к 5V на Arduino, а вывод GND к земле. Входной вывод (часто обозначаемый как IN или подобным образом) реле должен быть подключен к цифровому выводу 4 на Arduino. Убедитесь, что реле установлено в режиме нормально открытого (NO) для этой схемы. В конце подключите нагрузку (например, лампу переменного тока) к реле в соответствии со спецификациями реле, убедившись, что соединения надежны.

Примеры кода и пошаговое руководство

В коде Arduino мы определяем константы для пинов сенсора и реле. Пин сенсора установлен наSENSOR_PIN, который назначен цифровому выводу 2, и вывод реле установлен наRELAY_PIN, назначенный для цифрового пина 4. Эта конфигурация позволяет нам считывать выходные данные сенсора и управлять реле соответственно.

const int SENSOR_PIN = 2; // the Arduino pin connected to the output of the sensor
const int RELAY_PIN = 4; // the Arduino pin which is connected to control the relay

В вsetup()функции мы инициализируем последовательный монитор для отладки и устанавливаем режимы пинов для пинов датчика и реле. Это гарантирует, что Arduino знает, какие пины являются входами, а какие - выходами.

void setup() {
  Serial.begin(9600); // setup Serial Monitor to display information
  pinMode(SENSOR_PIN, INPUT); // Define SENSOR_PIN as Input from sensor
  pinMode(RELAY_PIN, OUTPUT); // Define RELAY_PIN as OUTPUT for relay
}

В вloop()функция, мы постоянно проверяем состояние датчика движения. Если движение зафиксировано, мы выводим сообщение на серийный монитор и включаем реле, установив его в низкое состояние. Если движение не зафиксировано, мы выводим другое сообщение и выключаем реле, установив его в высокое состояние.

void loop() {
  int motion = digitalRead(SENSOR_PIN); // read the sensor pin
  if (motion) {
    Serial.println("Motion detected");
    digitalWrite(RELAY_PIN, LOW); // Turn the relay ON
  } else {
    Serial.println("===Nothing moves");
    digitalWrite(RELAY_PIN, HIGH); // Turn the relay OFF
  }
  delay(500);
}

Демонстрация / Что ожидать

Когда датчик движения обнаруживает движение, реле активируется, позволяя электрическому току поступать к подключенной нагрузке, такой как лампочка переменного тока. Вы должны увидеть, что лампочка включается немедленно после обнаружения движения. Если датчик не обнаруживает никакого движения, лампочка останется выключенной. Имейте в виду, что настройки чувствительности датчика влияют на его дальность действия, поэтому может потребоваться регулировка для достижения оптимальных показателей (в видео на 05:00).

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

Временные метки видео

  • 00:00 Начало
  • 00:35 Объяснение аппаратного обеспечения
  • 04:35 Номинальная мощность реле
  • 06:00 Объяснение проводки
  • 07:53 Объяснение кода Arduino
  • 09:48 Демонстрация этого проекта

Изображения

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
141-Arduino source code for an HC-SR501 motion sensor to control an AC bulb or load
Язык: C++
Скопировано!

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

Ресурсы и ссылки

Ресурсов пока нет.

Файлы📁

Нет доступных файлов.