Uso de un sensor de movimiento HC-SR501 con un relé y código de Arduino
En este tutorial, exploraremos cómo usar el sensor de movimiento HC-SR501 junto con un relé para controlar una bombilla de CA u otro tipo de carga utilizando un Arduino. El HC-SR501 es un sensor de movimiento infrarrojo que puede detectar movimiento hasta 7 metros de distancia, lo que lo hace ideal para diversas aplicaciones como alarmas de seguridad o sistemas de iluminación automáticos. Al utilizar este sensor y un relé, puedes crear un proyecto que enciende una luz cuando se detecta movimiento.

Proporcionaremos una guía paso a paso sobre la configuración del hardware, las instrucciones de cableado y el código de Arduino necesario para lograr esta funcionalidad. Para una mejor comprensión del proceso, asegúrate de ver el video asociado (en el video a las 00:00).
Hardware Explicado
Los componentes principales de este proyecto incluyen el sensor de movimiento HC-SR501, un módulo de relé y una placa Arduino. El sensor HC-SR501 tiene tres pines: VCC, GND y OUT. El pin VCC se conecta a una fuente de alimentación (5V), el pin GND se conecta a tierra y el pin OUT envía una señal a la Arduino cuando se detecta movimiento.
El módulo de relé actúa como un interruptor que puede controlar dispositivos de alto voltaje. Tiene tres pines principales: COM (común), NO (normalmente abierto) y NC (normalmente cerrado). En esta configuración, utilizaremos el pin NO, que se conecta a la carga cuando el relé está activado. Esto permite que el Arduino controle el relé en función de la señal recibida del sensor de movimiento.
Detalles de la hoja de datos
| Fabricante | HC-SR501 |
|---|---|
| Número de parte | HC-SR501 |
| Voltaje de lógica/entrada y salida | 5 V |
| Tensión de suministro | 5-20 V |
| Consumo de energía | 65 mA |
| Ángulo de detección | 120 grados |
| Distancia de detección | 3-7 m |
| Temperatura de operación | -15 a 70 °C |
| Tipo de salida | Digital |
| Paquete | Módulo |
- Asegure un suministro de energía adecuado (5-20 V) para el sensor.
- Ajusta el potenciómetro de sensibilidad para un rango de detección óptimo.
- Utiliza el pin NO del relé para controlar la carga de manera efectiva.
- Ten cuidado con la clasificación de corriente del relé (máximo 10 A).
- Pruebe el rango de detección del sensor de movimiento antes de la instalación final.
- Considere la disipación de calor si utiliza el relé para cargas altas.
Instrucciones de cableado

Para cablear el sensor de movimiento HC-SR501 y el relé con el Arduino, comienza conectando el pin VCC del sensor de movimiento al pin de 5V en el Arduino. A continuación, conecta el pin GND del sensor a uno de los pines GND en el Arduino. El pin OUT del sensor de movimiento debe estar conectado al pin digital 2 en el Arduino.
Para el módulo de relé, conecta el pin VCC al pin de 5V en el Arduino y el pin GND a tierra. El pin de entrada (a menudo etiquetado como IN o similar) del relé debe conectarse al pin digital 4 en el Arduino. Asegúrate de comprobar la orientación del relé para asegurarte de que esté configurado como normalmente abierto (NO) para esta configuración. Finalmente, conecta la carga (por ejemplo, una bombilla de CA) al relé de acuerdo con las especificaciones del relé, asegurando que las conexiones sean seguras.
Ejemplos de código y guía paso a paso
En el código de Arduino, definimos constantes para los pines del sensor y del relé. El pin del sensor se establece enSENSOR_PIN, que está asignado al pin digital 2, y el pin del relé está configurado aRELAY_PINasignado al pin digital 4. Esta configuración nos permite leer la salida del sensor y controlar el relé en consecuencia.
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
En elsetup()función, inicializamos el monitor serial para depuración y configuramos los modos de los pines para los pines del sensor y del relé. Esto asegura que el Arduino sepa cuáles pines son entradas y salidas.
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
}
En elloop()en la función, verificamos continuamente el estado del sensor de movimiento. Si se detecta movimiento, imprimimos un mensaje en el monitor serial y encendemos el relé configurándolo en bajo. Si no se detecta movimiento, imprimimos un mensaje diferente y apagamos el relé configurándolo en alto.
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);
}
Demostración / Qué Esperar
Cuando el sensor de movimiento detecta movimiento, el relé se activará, permitiendo que la energía fluya hacia la carga conectada, como una bombilla de AC. Deberías ver la bombilla encenderse inmediatamente al detectar movimiento. Si el sensor no detecta ningún movimiento, la bombilla permanecerá apagada. Ten en cuenta que la configuración de sensibilidad del sensor afectará su rango de detección, por lo que pueden ser necesarios ajustes para un rendimiento óptimo (en el video a las 05:00).
Los errores comunes incluyen un cableado incorrecto o exceder los límites de corriente del relé, lo que puede llevar a fallos. Asegúrese de que todas las conexiones estén seguras y pruebe la configuración en un entorno controlado antes del uso final.
Marcas de tiempo de video
- 00:00 Comienzo
- Hardware explicado
- 04:35 Calificación de potencia de relé
- 06:00 Explicación del cableado
- 07:53 Explicación del código de Arduino
- 09:48 Demostración de este proyecto
Cosas que podrías necesitar
-
Amazonas
-
eBay
-
AliExpressCompra el sensor de movimiento HC-SR501, HC-SR505, HW-MS03 en AliExpress.s.click.aliexpress.com
Recursos y referencias
Aún no hay recursos.
Archivos📁
No hay archivos disponibles.