Controla y sincroniza cientos de relés sin esfuerzo con expansores de E/S
Componentes y materiales
| Expansor de E/S (IO Expander) | 2 |
| Expansor de relés (Relay Expander) | 2 |
| Placa de 16 relés | 2 |
| Arduino Nano R3 | 1 |
Sobre el proyecto
¿Necesitas controlar y sincronizar cientos de relés simultáneamente? Conecta tu Arduino, ESP8266, Raspberry Pi, PC o Mac a un IO Expander con Relay Expanders y usa la nueva función External Latching (latch externo).
Esto permite enviar la configuración de los relés en formato bit compacto listo para ser bloqueado. Luego, una sola línea GPIO (del MCU o de una salida del IO Expander) dispara todas las salidas latcheadas al mismo tiempo.
Ver proyecto relacionado: Control Up to 65,280 Relays with Your Arduino.
Configuración de latch externo en IO Expander
Estructura de comandos simple. Caso de uso: placa de 16 relés con latch externo.
>g4o1;g10n;el10
ok
ok
10
>
g4o1: GPIO pin 4 como salida nivel alto (1).g10n: GPIO pin 10 detección flanco negativo.el10: habilita latch externo de relés en pin 10.
Luego encendemos relés y disparamos el latch:
>e1o;e10o;e16o
ok
ok
ok
>g4o0,1
ok
>
e1o;e10o;e16o: enciende relés 1, 10, 16.g4o0,1: pin 4 a bajo durante 1 ms (pulso de latch), vuelve a alto para siguiente ciclo.
Escalado: 2 IO Expanders, 2 Relay Expanders, 2 placas de 16 relés
Los IO Expanders se comunican en bus multidrop protocolo 9-bit (hasta 255 expansores). Arduino Nano gestiona el bus.
Diagrama de latch externo
Esquema de conexiones: Arduino Nano → bus serie 9-bit → 2× IO Expander → cada uno a su Relay Expander → placa 16 relés. Pin GPIO 4 del primer expansor genera pulso de latch común.
Código Arduino
/* IO Expander - Relay Expander External Latching */
#include <HardwareSerial9Bit.h>
#include "IOExpander9Bit.h"
#include <avr/wdt.h>
//#define SERIAL_DEBUG
#define MAX_BOARDS 2
#ifdef SERIAL_DEBUG
SoftwareSerial swSerial(8,7);
#endif
void setup() {
Serial9Bit.begin(115200, SERIAL_9N1);
Serial9Bit.write(0); // Modo 9-bit
#ifdef SERIAL_DEBUG
swSerial.begin(115200);
swSerialEcho = &swSerial;
#endif
wdt_enable(WDTO_8S);
for (uint8_t board = 1; board <= MAX_BOARDS; board++)
SerialCmdDone(board, "eb1"); // Habilita relay expander
SerialCmdDone(1, "g4o1;g10n;el10"); // Config latch externo board 1
SerialCmdDone(2, "g10n;el10"); // Config latch externo board 2
}
void loop() {
static uint16_t i = 0;
uint8_t r[2];
r[0] = ~(uint8_t)(i >> 8);
r[1] = ~(uint8_t)i++;
SerialWriteRelayExpander(1, r, 2); // Envía 2 bytes (16 relés) board 1
delay(50);
r[0] = ~r[0]; // Invierte para board 2
r[1] = ~r[1];
SerialWriteRelayExpander(2, r, 2);
delay(50);
SerialCmdDone(1, "g4o0,1"); // Pulso latch sincronizado
wdt_reset();
}
Demostración en vídeo
Ver vídeo de latch externo en acción
Esquemático
Diagrama de bloques: Arduino Nano → bus 9-bit → IO Expanders → Relay Expanders → placas de relés. Alimentación común y señal de latch compartida.
Proceso de manufactura
- Cómo la Centralita (ECU) Controla los Vehículos Modernos: Cerebro Electrónico
- Relés Automotrices: Función, Tipos y Cómo Protegen tu Vehículo
- Guía Esencial de Relés: Tipos, Aplicaciones e Historia
- Primer seguro de coche: guía paso a paso para conseguir cobertura asequible
- Paneles de Control Eléctrico: Fundamentos de Diseño para Seguridad y ROI
- Recupere el Control de su Ciclo de Compra: Estrategias Comprobadas para Fabricantes
- Impulsando eficiencia con robot receptivo en Energy Dynamics
- Entendiendo los costes ocultos de integraciones Salesforce
- Dominando SaaS: estrategias para mantener el control mientras aprovecha la nube
- Robótica en el siglo XXI: Sistemas distribuidos, telepresencia y exploración espacial
- Por Qué los Almacenes Deben Adoptar IoT Ahora: Impulsar Eficiencia, Precisión y Seguridad