Tabla de Contenidos
Relay I2C
Esta tarjeta fue desarrollada para ser compatible con los productos Arduino(MR) y permite controlar hasta 8 relays de 12Vdc, con una interfaz I2C.
El contacto permite tener cargas de hasta 10A en 220Vac en los contactos del Relay, estos son controlados por un par de pines de la interfaz I2C.
Esta PCB permite configurar las direcciones desde la 0x20 a 0x27 (default), permitiendo poner en cascada hasta 8 PCB de Relays controladas por un par de señales desde Arduino o desde cualquier Microcontrolador que permita disponer de una interfaz I2C.
Las 8 salidas de Relay, disponen de contactos NA (Normal Abierto) y NC (Normal Cerrado), por cada relay. El NA lado izquierdo, y el NC al lado derecho de cada conector de Relay.
Tabla de Direccionamiento
Para el direccionamiento de la tarjeta, están disponibles en PCB tres jumper de soldadura, con las indicaciones A0, A1, y A2, estos jumper permiten modificar la dirección de la tarjeta de Relay, el default es que están abiertos, y tienen una resistencia de PULL-UP dejando los tres bit en HIGH, la siguiente tabla muestra los valores del direccionamiento de la PCB para la interfaz I2C.
A2 | A1 | A0 | Dirección | Estado |
---|---|---|---|---|
0 | 0 | 0 | 0x20 | Todos Cerrados |
0 | 0 | 1 | 0x21 | A2=A1 ⇒ Cerrado |
0 | 1 | 0 | 0x22 | A2=A0 ⇒ Cerrado |
0 | 1 | 1 | 0x23 | A2 ⇒ Cerrado |
1 | 0 | 0 | 0x24 | A0=A1 ⇒ Cerrado |
1 | 0 | 1 | 0x25 | A1 ⇒ Cerrado |
1 | 1 | 0 | 0x26 | A0 ⇒ Cerrado |
1 | 1 | 1 | 0x27 | Todos Abiertos (Default) |
Interfaz I2C
La interfaz es un conector estándar de 4P de 100mils y contiene la siguiente configuracion:
Nro Pin | Señal |
---|---|
1 | GND |
2 | VCC (+5V) |
3 | SDA |
4 | SCL |
Este conector provee de la tensión de alimentación de la interfaz y tiene un led indicador de +5Vdc regulador, con capacitores de inmunidad de ruido y filtro para la tensión de control.
Alimentación Relays
La alimentación es un conector azul con prensa y tornillos que se le conecta una alimentación de +12Vdc y tiene protecciones de polaridad inversa para evitar errores de conexión.
Cada Relay visto de frente, tiene un conector azul de tres contactos, el punto medio de cada conector de Relay, tiene un NC (Normal Cerrado) a la derecha y un NA (Normal Abierto) al lado izquierdo, en cada conector de Relay.
Indicaciones de Actividad
Cada Relay tiene una luz piloto que nos permite saber que Relay tenemos activado, cada Relay a su vez en estado activo tiene el contacto cerrado entre el pin NO y Común que es el central.
Programa Ejemplo
Este es un programa de uso de ejemplo que permite realizar un manejo básico de la PCB, esta realizado con el Arduino-IDE.
//------------------------------------------------------------------ // Escritura en nuestro dispositivo I2C ELECTROLINUX.CL // // Demostracion usando la biblioteca estándar de Arduino IDE, que // nos permite escribir un byte en un dispositivo desde la interfaz // I2C. // // Creado 30 Marzo 2021 // Este ejemplo es de dominio publico, puede modificarlo y usarlo // sin restricciones. //------------------------------------------------------------------ #include <Wire.h> #define AddrI2C 0x27 // Dirección por defecto de nuestra PCB //------------------------------------------------------------------ void setup() { Wire.begin(); // Inicializamos la biblioteca } //------------------------------------------------------------------ void Write_I2C_Relay( uint8_t Address, uint8_t data){ Wire.beginTransmission(Address); Wire.write(data); Wire.endTransmission(); } //------------------------------------------------------------------ void loop() { // Bucle que muestra la secuencia de encendido de 0-7 y permite // encender los 3 primeros relay en secuencia for( uint8_t x=0 ; x < 8 ; x++ ){ Write_I2C_Relay(AddrI2C, x); delay(2000); } // Activaremos un solo Relay en este ejemplo el 6 Write_I2C_Relay(AddrI2C, 0x40); delay(3000); // Activaremos un solo Relay en este ejemplo el 5 Write_I2C_Relay(AddrI2C, 0x20); delay(3000); }
Como podemos ver, el programa es simple, esta funcionando.
Hemos basado el uso de cada Relay, en una función que hemos creado para facilitar el manejo, la función *Write\_I2C\_Relay* acepta dos parámetros, el primero es la dirección del dispositivo I2C que en nuestro ejemplo es 0x27, y el segundo parámetro es el dato que queremos escribir.