Código de búsqueda

Código de Arduino y vídeo para el sensor de movimiento HC-SR501

Código de Arduino y vídeo para el sensor de movimiento HC-SR501

En este tutorial exploraremos el sensor de movimiento HC-SR501, que está diseñado para detectar movimiento mediante tecnología infrarroja. El sensor puede activar una salida, lo que te permite controlar dispositivos como LEDs o alarmas en función de la detección de movimiento. Al final de este tutorial, tendrás una comprensión clara de cómo cablear el sensor e implementar el código de Arduino para que funcione de manera efectiva. (en el video en 00:45)

Hardware explicado

El sensor de movimiento HC-SR501 es un módulo compacto que mide 32 por 24 milímetros, capaz de operar dentro de un rango de voltaje de 5 a 20 voltios. En su núcleo se encuentra el sensor infrarrojo LHI 778, que detecta el movimiento al percibir cambios en la radiación infrarroja. Esto lo hace adecuado para diversas aplicaciones, incluidos los sistemas de seguridad y proyectos robóticos.

Este módulo cuenta con tres pines principales:VCCpor el poder,GNDpara tierra, yOUTpara la señal de salida. Cuando se detecta movimiento, elOUTEl pin envía una señal alta (3,3 voltios TTL), que puede usarse para activar alarmas u otros dispositivos. El sensor también cuenta con sensibilidad y retardo de tiempo ajustables, lo que le permite personalizar su funcionamiento según sus necesidades específicas.

Detalles de la hoja de datos

FabricanteHC-SR501
Número de piezaHC-SR501
Voltaje lógico/E/S3.3 V
Tensión de alimentación5-20 V
Corriente de salida (por canal)≤ 20 mA
Corriente de pico (por canal)≤ 50 mA
Guía de frecuencia PWMNo aplicable
Umbrales de la lógica de entrada0.8 V (BAJO), 2.0 V (ALTO)
Caída de tensión / RDS(en conducción) / saturación0.1 V
Límites térmicos0 °C a 70 °C
PaqueteMódulo
Notas / variantesSensibilidad y retardo de tiempo ajustables

  • Asegúrese de que el voltaje de la fuente de alimentación sea el correcto (5-20 V).
  • Utilice una resistencia en serie con los LED para limitar la corriente.
  • Ajuste el potenciómetro de sensibilidad para el rango de detección.
  • Ajuste el retardo de tiempo para controlar cuánto tiempo la salida permanece en alto.
  • Tenga cuidado con las entradas flotantes; utilice resistencias pull-up o pull-down según sea necesario.

Instrucciones de cableado

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

Para cablear el sensor de movimiento HC-SR501, empiece por conectar elVCCConecta el pin a la salida de 5V del Arduino. A continuación, conecta elGNDconecte el pin a tierra (GND) en el Arduino. ElOUTel pin debe conectarse al pin digital 2 del Arduino, que leerá la señal de detección de movimiento.

Si estás usando un LED como retroalimentación visual, conecta el ánodo (patilla larga) del LED al pin digital 8 del Arduino. El cátodo (patilla corta) debe conectarse a un terminal de una resistencia de 680 ohmios, y el otro terminal de la resistencia debe ir a tierra. Esta configuración permite que el Arduino controle el LED en función de la detección de movimiento.

Ejemplos de código y guía paso a paso

El código de Arduino para esta configuración inicializa el monitor serial y configura los pines de entrada y salida. Los identificadores clave en el código incluyenmotion, que almacena el estado del sensor de movimiento, y los pines digitales utilizados para leer la entrada y controlar el LED.

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

En este extracto, elsetup()La función inicializa la comunicación serie y configura los modos de los pines para el sensor y el LED. El pin 2 se configura como entrada para leer la salida del sensor de movimiento, mientras que el pin 8 se configura como salida para controlar el LED.

void loop() {
  int motion = digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8, HIGH);
  }else{
    Serial.println("===nothing moves");
    digitalWrite(8, LOW);
  }
  delay(500);
}

Este fragmento de código representa el bucle principal donde el programa comprueba continuamente el estado del sensor de movimiento. Si se detecta movimiento, imprime "Movimiento detectado" en el monitor serial y enciende el LED. Si no se detecta movimiento, imprime "===nada se mueve" y apaga el LED.

Demostración / Qué esperar

Cuando la configuración esté completa y el código esté cargado en el Arduino, deberías ver que el LED se enciende cuando el sensor HC-SR501 detecta movimiento. Además, el monitor serie mostrará mensajes indicando si se detecta movimiento o no. Si ajustas la sensibilidad y el retardo de tiempo en el sensor, puede que notes cambios en la rapidez con que el sensor responde al movimiento (en el video a las 05:30).

Los errores comunes incluyen un cableado incorrecto, como invertir las conexiones paraVCCyGND, lo que podría dañar el sensor. Asegúrese de que el pin de salida del sensor esté correctamente conectado al pin de entrada designado en el Arduino para evitar entradas flotantes.

Marcas de tiempo del vídeo

  • 00:00Introducción
  • 00:45Descripción general del hardware
  • 02:30Instrucciones de cableado
  • 04:00Explicación del código
  • 05:30Demostración

Imágenes

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
48-This is the Arduino code for the HC-SR501 motion sensor.
Idioma: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of humans or objects using Arduino for robotic car and other applications
 * Watch the video https://youtu.be/mZCJNOf69JI
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: Dec 27, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

void loop() {
  int motion =digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8,HIGH);
  }else{
     Serial.println("===nothing moves");
     digitalWrite(8,LOW);
  }
  delay(500);

}

Recursos y referencias

Aún no hay recursos.

Archivos📁

No hay archivos disponibles.