Código de Arduino para un módulo de relés de 4 a 16 canales de 5 V
En este tutorial, aprenderemos cómo controlar un módulo de relés de 4 canales con un Arduino. Esto te permitirá gestionar cargas de CA como luces, ventiladores o calefactores de forma segura y eficaz. El código proporcionado puede adaptarse a módulos con más canales, lo que lo hace versátil para diversas aplicaciones.
Antes de profundizar en los detalles, es esencial comprender los componentes involucrados en este proyecto. El módulo de relés actúa como un interruptor que puede controlar dispositivos de alto voltaje mientras es controlado por señales de bajo voltaje desde el Arduino. Cada relé puede ser normalmente abierto o normalmente cerrado, lo que permite flexibilidad en la forma en que operan los dispositivos conectados. Por favor, consulte el video para orientación visual (en el video a las 02:15).
Hardware explicado
Los componentes principales de este proyecto incluyen la placa Arduino y el módulo de relés. El Arduino actúa como controlador, enviando señales al módulo de relés según el código que escribimos. El módulo de relés contiene varios relés que pueden conmutar cargas de CA encendiéndolas y apagándolas. Cada relé tiene tres terminales: normalmente cerrado (NC), normalmente abierto (NO) y un terminal común (COM).
Cuando se activa el relé, el terminal común se conecta al terminal normalmente abierto, permitiendo que la corriente fluya a través de la carga. Se trata de un relé activado por nivel bajo, es decir, se activa cuando recibe una señal de bajo voltaje (0V) y se desactiva con una señal de alto voltaje (5V). Comprender este mecanismo es crucial para controlar de forma segura dispositivos de corriente alterna.
Detalles de la ficha técnica
| Fabricante | Genérico |
|---|---|
| Número de parte | Módulo de relé de 4 canales |
| Tensión lógica/E/S | 5 V |
| Tensión de alimentación | 5 V |
| Corriente de salida (por canal) | 10 A máx. |
| Corriente de pico (por canal) | 15 A |
| Orientación sobre la frecuencia PWM | No aplica |
| Umbrales lógicos de entrada | Bajo: 0 V; Alto: 5 V |
| Caída de tensión / RDS(on) / saturación | No aplica |
| Límites térmicos | 85 °C |
| Paquete | Módulo de relé estándar |
| Notas / variantes | Disponible en variantes de 2, 4, 8 y 16 canales |
- Asegúrese de no exceder la corriente nominal del relé para evitar daños.
- Utilice fuentes de alimentación separadas en aplicaciones de alta corriente para aislar el Arduino.
- Mantenga una disipación de calor adecuada para los relés durante su funcionamiento.
- Compruebe el cableado cuidadosamente para evitar cortocircuitos.
- Utilice optocopladores si es necesario para mayor protección.
Instrucciones de cableado

Para cablear el módulo de relés a tu Arduino, comienza conectando el pin de tierra del módulo de relés al pin de tierra del Arduino. A continuación, conecta el pin VCC del módulo de relés al pin de 5V del Arduino. Para los pines de control, conecta los pines IN1, IN2, IN3 e IN4 del módulo de relés a los pines digitales 2, 3, 4 y 5 del Arduino, respectivamente. Esta configuración permite que el Arduino controle el estado de cada relé.
Asegúrate de colocar el módulo de relés sobre una superficie aislada, ya que maneja cargas de CA. Si usas una fuente de alimentación externa para los relés, conecta su tierra a la masa (GND) del Arduino para asegurar una referencia común. Esto es crucial para el funcionamiento correcto y la seguridad.
Ejemplos de código y guía paso a paso
El siguiente fragmento de código inicializa el número de relés y establece los pines de control:
int ch = 4; // number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers for relays
Esto define el número de relés y sus correspondientes conexiones a los pines del Arduino. El arreglorelayalmacena los números de los pines utilizados para controlar cada relé.

A continuación, configuramos los pines en elsetup()función:
void setup() {
Serial.begin(9600); // prepare Serial monitor
for(i=0; i < ch; i++) {
pinMode(relay[i], OUTPUT); // set i(th) pin as output
digitalWrite(relay[i], HIGH); // Turn the relay OFF
}
Serial.println("Robojax 4 Relay Test");
}
Este código inicializa el monitor serie y configura cada pin del relé como salida, apagándolos por defecto. La instrucción Serial.print confirma que la configuración se ha completado.
El bucle principal del programa controla los relés:
void loop() {
for(int i=0; i < ch; i++) {
Serial.print("Relay "); Serial.print(i+1); Serial.println(" ON");
digitalWrite(relay[i], LOW); // Turn the relay ON
delay(wait);
}
for(int i=0; i < ch; i++) {
Serial.print("Relay "); Serial.print(i+1); Serial.println(" OFF");
digitalWrite(relay[i], HIGH); // Turn the relay OFF
delay(wait);
}
Serial.println("====== loop done ==");
}
Este bucle primero enciende cada relé uno por uno, espera un tiempo especificado y luego los apaga en la misma secuencia. La salida serie ayuda a supervisar el estado de los relés en tiempo real.
Demostración / Qué esperar
Cuando ejecutes el programa, deberías ver los relés activarse en secuencia, encendiéndose y apagándose cada dos segundos. Si todo está cableado correctamente, las cargas de corriente alterna conectadas a los relés responderán en consecuencia. Ten cuidado con la corriente que extrae el Arduino; si se activan demasiados relés simultáneamente, podría superar la capacidad de la placa (en el video a las 13:45).
Marcas de tiempo del vídeo
- 00:00Introducción
- 02:15Explicación del hardware
- 05:30Instrucciones de cableado
- 08:45Recorrido por el código
- 13:45Demostración
++
/*
This is code to control 4 to 16 channel 5V relay modules using Arduino.
* Watch the video on how to use 4 to unlimited relay channels: https://youtu.be/Wbm3MCMgM_s
*/
/*
* This code was written by Ahmad Shamshiri for Robojax.com.
// Written March 26, 2018, at 12:14 in Ajax, Ontario, Canada.
*
*/
int ch = 4;// number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers. The same number of relays should be defined here as input pins
int wait = 2000;// delay time
int i=0;
void setup() {
Serial.begin(9600);// prepare Serial monitor
// set pins as output
for(i=0; i < ch; i++)
{
pinMode(relay[i], OUTPUT);// set i(th) pin as output
digitalWrite(relay[i], HIGH); // Turn the relay OFF
}
Serial.println("Robojax 4 Relay Test");
}
void loop() {
for(int i=0; i < ch; i++)
{
Serial.print("Relay "); Serial.print(i+1);Serial.println(" ON");
digitalWrite(relay[i], LOW); // Turn the relay ON
delay(wait);
}// for loop
for(int i=0; i < ch; i++)
{
Serial.print("Relay "); Serial.print(i+1);Serial.println(" OFF");
digitalWrite(relay[i], HIGH); // Turn the relay OFF
delay(wait);
}// for loop
Serial.println("====== loop done ==");
}// loop
pinMode(relay[0], OUTPUT);// connected to relay 1
digitalWrite(relay[0], HIGH); // Turn the relay OFF
pinMode(relay[1], OUTPUT);// connected to relay 2
digitalWrite(relay[1], HIGH); // Turn the relay OFF
pinMode(relay[2], OUTPUT);// connected to relay 3
digitalWrite(relay[2], HIGH); // Turn the relay OFF
pinMode(relay[3], OUTPUT);// connected to relay 4
digitalWrite(relay[3], HIGH); // Turn the relay OFF
Cosas que podrías necesitar
-
Amazonas
-
AliExpressCompra módulo de relé de 1 2 4 6 8 canales de 5v 12v.s.click.aliexpress.com
Recursos y referencias
Aún no hay recursos.
Archivos📁
Archivo de Fritzing
-
módulo de relé de estado sólido SSR de 4 canales Omron
omron-relay-module-4way-1.fzpz0.02 MB -
Módulo de relé de 4 canales 5v
4-Channel 5v Relay Shield.fzpz0.02 MB -
módulo de relé de estado sólido Omron SSR - 8 canales
omron-relay-module-8way-1.fzpz0.02 MB -
Parte Fritzing del enchufe de CA (Robojax.com)
ACPlug_Robojax.com.fzpz