Caută cod

Utilizarea unui senzor de mișcare HC-SR501 cu un releu și cod Arduino

Utilizarea unui senzor de mișcare HC-SR501 cu un releu și cod Arduino

În acest tutorial, vom explora cum să folosim senzorul de mișcare HC-SR501 împreună cu un releu pentru a controla un bec de curent alternativ sau alt tip de sarcină folosind un Arduino. HC-SR501 este un senzor de mișcare cu infraroșu care poate detecta mișcarea până la 7 metri distanță, fiind ideal pentru diverse aplicații precum alarme de securitate sau sisteme de iluminat automat. Prin utilizarea acestui senzor și a unui releu, puteți crea un proiect care aprinde o lumină atunci când este detectată mișcare.

Vom oferi un ghid pas cu pas pentru configurarea hardware-ului, instrucțiunile de cablare și codul Arduino necesar pentru a realiza această funcționalitate. Pentru o înțelegere mai clară a procesului, asigurați-vă că urmăriți videoclipul asociat (în videoclip la 00:00).

Hardware Explicat

Componentele principale din acest proiect includ senzorul de mișcare HC-SR501, un modul releu și o placă Arduino. Senzorul HC-SR501 are trei pini: VCC, GND și OUT. Pinul VCC se conectează la o sursă de alimentare (5V), pinul GND se conectează la masă, iar pinul OUT trimite un semnal către Arduino atunci când este detectată mișcare.

Modulul releu acționează ca un comutator care poate controla dispozitive de înaltă tensiune. Are trei pini principali: COM (comun), NO (normal deschis) și NC (normal închis). În această configurație, vom folosi pinul NO, care se conectează la sarcină atunci când releul este activat. Acest lucru permite Arduino să controleze releul pe baza semnalului primit de la senzorul de mișcare.

Detalii din Fișa Tehnică

ProducătorHC-SR501
Număr de piesăHC-SR501
Tensiune logică/IO5 V
Tensiune de alimentare5–20 V
Consum de energie65 mA
Unghi de detecție120 grade
Distanță de detecție3–7 m
Temperatură de operare-15 până la 70 °C
Tip de ieșireDigital
PachetModul

  • Asigurați o sursă de alimentare adecvată (5–20 V) pentru senzor.
  • Reglați potențiometrul de sensibilitate pentru o rază de detecție optimă.
  • Folosiți pinul NO al releului pentru a controla sarcina eficient.
  • Fiți atenți la ratingul de curent al releului (maxim 10 A).
  • Testați raza de detecție a senzorului de mișcare înainte de instalarea finală.
  • Luați în considerare disiparea căldurii dacă folosiți releul pentru sarcini mari.

Instrucțiuni de Cablare

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

Pentru a cabla senzorul de mișcare HC-SR501 și releul cu Arduino, începeți prin conectarea pinului VCC al senzorului de mișcare la pinul de 5V de pe Arduino. Apoi, conectați pinul GND al senzorului la unul dintre pinii GND de pe Arduino. Pinul OUT de la senzorul de mișcare ar trebui conectat la pinul digital 2 de pe Arduino.

Pentru modulul releu, conectați pinul VCC la pinul de 5V de pe Arduino și pinul GND la masă. Pinul de intrare (adesea etichetat IN sau similar) al releului ar trebui conectat la pinul digital 4 de pe Arduino. Asigurați-vă că verificați orientarea releului pentru a vă asigura că este setat pe normal deschis (NO) pentru această configurație. În final, conectați sarcina (de exemplu, un bec de curent alternativ) la releu conform specificațiilor releului, asigurându-vă că conexiunile sunt sigure.

Exemple de Cod și Explicații

În codul Arduino, definim constante pentru pinii senzorului și releului. Pinul senzorului este setat la SENSOR_PIN, care este atribuit pinului digital 2, iar pinul releului este setat la RELAY_PIN, atribuit pinului digital 4. Această configurație ne permite să citim ieșirea senzorului și să controlăm releul în consecință.

const int SENSOR_PIN = 2; // pinul Arduino conectat la ieșirea senzorului
const int RELAY_PIN = 4; // pinul Arduino care este conectat pentru a controla releul

În funcția setup(), inițializăm monitorul serial pentru depanare și setăm modurile pinilor pentru senzor și releu. Acest lucru asigură că Arduino știe care pini sunt intrări și care sunt ieșiri.

void setup() {
  Serial.begin(9600); // configurați monitorul serial pentru a afișa informații
  pinMode(SENSOR_PIN, INPUT); // Definiți SENSOR_PIN ca Intrare de la senzor
  pinMode(RELAY_PIN, OUTPUT); // Definiți RELAY_PIN ca IEȘIRE pentru releu
}

În funcția loop(), verificăm continuu starea senzorului de mișcare. Dacă este detectată mișcare, afișăm un mesaj pe monitorul serial și activăm releul setându-l pe LOW. Dacă nu este detectată mișcare, afișăm un mesaj diferit și dezactivăm releul setându-l pe HIGH.

void loop() {
  int motion = digitalRead(SENSOR_PIN); // citiți pinul senzorului
  if (motion) {
    Serial.println("Mișcare detectată");
    digitalWrite(RELAY_PIN, LOW); // Activați releul
  } else {
    Serial.println("===Nimic nu se mișcă");
    digitalWrite(RELAY_PIN, HIGH); // Dezactivați releul
  }
  delay(500);
}

Demonstrație / Ce să Vă Așteptați

Când senzorul de mișcare detectează mișcare, releul se va activa, permițând curentului să curgă către sarcina conectată, cum ar fi un bec de curent alternativ. Ar trebui să vedeți becul aprinzându-se imediat la detectarea mișcării. Dacă senzorul nu detectează nicio mișcare, becul va rămâne stins. Fiți conștienți că setările de sensibilitate ale senzorului vor afecta raza de detecție, astfel încât ajustările pot fi necesare pentru performanță optimă (în videoclip la 05:00).

Capcanele comune includ cablarea incorectă sau depășirea limitelor de curent ale releului, ceea ce poate duce la defecțiuni. Asigurați-vă că toate conexiunile sunt sigure și testați configurația într-un mediu controlat înainte de utilizarea finală.

Marcaje Temporale din Videoclip

  • 00:00 Start
  • 00:35 Hardware explicat
  • 04:35 Puterea nominală a releului
  • 06:00 Cablaj explicat
  • 07:53 Codul Arduino explicat
  • 09:48 Demonstrația acestui proiect

Imagini

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
Limba: C++
/*
 * This Arduino code uses an HS-SR501 motion sensor and a relay
 * and switches an alarm or a device using the relay when motion is detected.
 * The device can be an alarm, a light, or any other device.
 *

 * Written by Ahmad Shamshiri on August 5, 2018, at 12:36 PM for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch the video instruction for this code: https://youtu.be/QQ7iDagQnQM
 * This code has been downloaded from Robojax.com

 */

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

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
   Serial.println("Robojax Arduino Tutorial");
   Serial.println("HC-SR501 sensor with relay");
  pinMode(SENSOR_PIN, INPUT);// Define SENSOR_PIN as Input from sensor
  pinMode(RELAY_PIN, OUTPUT);// Define RELAY_PIN as OUTPUT for relay
}

void loop() {
  // Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
  int motion =digitalRead(SENSOR_PIN);// read the sensor pin and stores it in "motion" variable
 
  // if motion is detected
  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);
  // Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
}

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.