Placa 8 Relés

Esta placa es un interface de salida de 8 canales. Las entradas están aisladas ópticamente mediante optoacopladores que atacan un transistor bipolar que amplifica la corriente para activar un relé de 5V. En nuestro montaje la accionaremos desde un Arduino UNO.

Tendríamos a grandes rasgos una placa que:
- Las señales digitales de entrada tiene que ser de 5V
- Tenemos disponible activación por nivel bajo o alto por cada canal independientemente.
- Entrada externa de alimentación a los relés de 5V.
- Salidas tipo conmutador. Una normalmente cerrada y otra normalmente abierta, por cada canal.

CARACTERISTICAS

La placa tiene 8 canales iguales que gestionan un relé cada una, pudiendo activarse a nivel bajo (LOW) o alto (HIGH). Si elegimos activación por nivel alto, como es el caso del montaje que vamos a realizar, cuando enviemos 0V o nivel bajo a la entrada, ese canal esta desactivado. Lo veremos ademas en el led que tiene asociada cada entrada, que estará apagado. Cuando enviemos 5V o nivel alto a la entrada, ese canal se activará, se encenderá el led asociado a la entrada y se activará el relé de ese canal.



PINEADO

El pineado de esta placa es:

- DC+ : Este pin es la entrada positiva que alimenta las bobinas de los relés. Tiene que tener 5V y 1A. He medido el consumo máximo con los 8 relés activados y era de 510mA. Existen varios modelos de esta placa y el consumo máximo podría variar. Cada relé viene a consumir 63mA. Como este consumo es demasiado elevado para las salidas de las placas Arduino, el diseño esta preparado para que una fuente externa se encargue de alimentar las bobinas de los relés y no sobrecargar al Arduino.

- DC- : Este pin es la entrada negativa que alimenta las bobinas de los relés y la masa de toda la placa. La tensión que alimenta las bobinas entonces entrará entre este pin y DC+. Cuando esta alimentación está presente tenemos un led en la placa marcado como PWR que nos lo indica.

- IN1 a IN8 : Entradas que activan cada uno de los canales y sus relés asociados. Pueden estar activas a nivel alto o bajo dependiendo de la posición de los jumper situados a los ambos lados de las entradas. Si seleccionamos la posición -LOW- estaría seleccionada la entrada activa a nivel bajo y si seleccionamos la posición -HIGH- estaría seleccionada la entrada activa a nivel alto.
Recordemos que los niveles de activación son 0V y 5V, no debiendo superar los 5V en ningún caso. Esta placa se podrá usar directamente con cualquier Arduino que funcione a 5V. Los Arduinos que funcionan a 3,3V podrán usarla, pero antes deberemos adaptar los voltajes.

- Conector de salida : Tenemos 8 conectores de salida asociados a cada canal de la placa. Vamos a suponer, para explicarlo, que estamos mirando la salida del canal 6 (el de la foto). Cada conector tiene tres conexiones llamadas: NO6, COM6 y NC6. Las tres están conectadas a la salida del relé y soportan (dependiendo de la placa) hasta 220V en corriente alterna y 10 amperios. Las funciones de cada conexión son:
- NO6 : salida normalmente abierta (Normaly Open)
- COM6 : terminal común a ambas salidas (COMmon)
- NC6 : salida normalmente cerrado (Normaly Close)
Teniendo los nombres de las conexiones, queda claro que cuando el canal no está activado los pines COM6 y NC6 estarán unidos eléctricamente con una resistencia de aproximadamente 0Ω y la conexión entre COM6 y NO6 estará en circuito abierto. Sin embargo cuando el canal esté activado, COM6 y NO6 estarán unidos eléctricamente y entre COM6 y NC6 tendremos un circuito abierto.
Podremos activar bombillas, dispositivos, persianas o cualquier equipo o componente que necesite una activación o desactivación, mientras no superemos el limite de tensión o intensidad de los relés.

LED's INDICADORES

Tenemos 9 led en la placa que nos dan la siguiente información:
- PWR: indica la presencia de alimentación externa en la placa entre DC+ y DC- para alimentar los relés.
- LED1 a LED8: tenemos un led en serie con el optoacoplador en cada canal que nos indica la activación de ese canal correctamente.

PROBEMOS LA PLACA CON UN ARDUINO UNO R3

Ahora viene lo más importante. Vamos a probar nuestra placa de 8 relés controlada desde un Arduino UNO R3.
Primero la probaremos en solitario conectada a la placa protoboard y posteriormente se conectara al Arduino para hacer una secuencia de encendido progresiva y apagado.

NECESITAREMOS

Un Arduino UNO R3

Placa de 8 relés

Placa protoboard, pequeña si puede ser

Cableado macho-macho o hilo rígido que entre en la protoboard

Nos hará falta una fuente de alimentación capaz de dar 5V y 1A. En mi caso uso una fuente de laboratorio ajustada a 5V. Para ajustar la corriente máxima, primero debemos asegurarnos de que la fuente es cortocirtuitable (mirar las características del fabricante). Si lo es, cortocircuitamos la salida y ajustamos el potenciómetro "CURRENT I", en mi caso, hasta que la corriente sea de 1A, con esto nos aseguramos que la fuente nunca dará más de 1A en ningún caso y así protegemos nuestros montajes. Se há elegido 1A como corriente máxima de la fuente porque el prototipo consume aproximadamente 510mA en su momento de máximo consumo (todos los reles activados).

PRUEBA DE LA PLACA EN SOLITARIO

Lo primero es configurar a que nivel se activarán las entradas de la placa. Esto lo conseguimos con los dos juegos de jumper que tenemos a cada lado de las conexiones. En el lado izquierdo tenemos las configuraciones de las entradas 1 a 4 y el resto en el lado derecho, como se puede ver en las imágenes.
Pondremos los jumper en la posición HIGH, y como hemos explicado antes, las entradas estarán activas a nivel alto. Así es como las necesitamos y como se pueden ver en las fotos.

En la foto podemos ver que hemos conectado la alimentación a la placa protoboard y luego hemos alimentado la placa de los 8 relés. Recordemos que las dos filas con la raya roja y negra están conectadas longitudinalmente para facilitarnos repartir las tensiones de alimentación por toda la placa.
También podemos ver que hemos conectado cada una de las entradas a la placa protoboard.
Por último hemos conectado un cable (blanco) a la fila de alimentación positiva para enviar un nivel alto o de 5V a las entradas de la placa de 8 reles. Según conectemos el cable blanco a las diferentes entradas se irán activando las mismas y los relés de cada entrada.
Cuando consigamos que todas las entradas se puedan activar, ya tendremos probada la placa y podemos continuar con nuestro montaje.

ESQUEMA

En es esquema podemos ver:
- Un Arduino UNO R3 que estará alimentado por el ordenador a través del puerto USB.
- La placa de 8 relés, alimentada por la fuente de alimentación.
- Las conexiones entre el Arduino y la placa son:
• La salida digital 2 del Arduino va conectada a la entrada IN8 de la placa de relés
• La salida digital 3 del Arduino va conectada a la entrada IN7 de la placa de relés
• La salida digital 4 del Arduino va conectada a la entrada IN6 de la placa de relés
• La salida digital 5 del Arduino va conectada a la entrada IN5 de la placa de relés
• La salida digital 6 del Arduino va conectada a la entrada IN4 de la placa de relés
• La salida digital 7 del Arduino va conectada a la entrada IN3 de la placa de relés
• La salida digital 8 del Arduino va conectada a la entrada IN2 de la placa de relés
• La salida digital 9 del Arduino va conectada a la entrada IN1 de la placa de relés
- Fijémonos en la unión de las masas del Arduino UNO y de nuestra placa de 8 reles. Si no hacemos esta unión, la placa tendría la alimentación correcta y estaría encendida, pero los niveles de tensión de las salidas del Arduino estarían sin referenciar. Tendríamos un montaje inestable o no funcional.
De esta manera conseguimos que cuando, por ejemplo la salida digital 9 del Arduino este a nivel bajo, este nivel se envía a la placa de los reles hasta su entrada IN1 y como las entradas estaban configuradas activas a nivel alto, tendremos la entrada desactivada y el relé no estará activado. En cuando la salida pase a nivel alto, se activara la entrada, se encenderá el LED asociado a esa entrada para indicarnos la activación y se activará también el relé de esa entrada.
Esto se puede aplicar a todas las salidas del Arduino que hemos conectado a la placa de relés, por lo que tenemos control total de todos y cada uno de los relés desde el Arduino.

Este es el montaje terminado

PROGRAMACIÓN

¿Qué vamos a programar?, pues una activación paulatina (cada 100 milisegundos) de todas las salidas del Arduino, desde la 2 a la 9 y su posterior apagado. Haremos que se repita el proceso una y otra vez.

A continuación tenemos el código fuente del Sketch terminado para consultarlo. Se puede escribir copiándolo o descargarlo desde aquí

CÓDIGO ARDUINO
/*
 * AFPT - Arduino Fácil Para Todos
 * 
 * Prueba Arduino UNO + Placa 8 reles activos a nivel alto
 * 
 * Arduino_UNO_8_reles.ino
 * 
 * www.fantasystudios.es/arduino
 * 
 * Creado el 21 de Marzo de 2018
 * Por Manuel Peláez
 * 
 */

/*
 * Uso de los Pines
 * Digital 2 -> Rele de la placa número 8
 * Digital 3 -> Rele de la placa número 7
 * Digital 4 -> Rele de la placa número 6
 * Digital 5 -> Rele de la placa número 5
 * Digital 6 -> Rele de la placa número 4
 * Digital 7 -> Rele de la placa número 3
 * Digital 8 -> Rele de la placa número 2
 * Digital 9 -> Rele de la placa número 1
 */


void setup() {
  // put your setup code here, to run once:

  //declaramos los pines 2 a 9 como salidas digitales
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);

  
}

void loop() {
  // put your main code here, to run repeatedly:

  for (int i=2; i<10; i++)
  {
    digitalWrite(i,HIGH);
    delay(100);
  }

  for (int i=9; i>1; i--)
  {
    digitalWrite(i,LOW);
    delay(100);
  }

}

CÓDIGO ARDUINO

Una explicación rápida del Sketch sería:
- Dentro del void setup tenemos el código que solo se ejecutará una vez, cada vez que encendamos o reseteemos el Arduino. En esta zona informamos al Arduino UNO de los pines que vamos a usar y su función. Con pinMode(2,OUTPUT); configuramos el pin I/O número 2 como salida. Repetimos este paso para los demás pines. Podríamos haber hecho un bucle for o similar, pero lo he dejado para la ejecución del resto del programa.

- Dentro del void loop tenemos el código que se ejecuta una y otra vez mientras el Arduino este encendido. Aquí tenemos en programa que activará y desactivará paulatinamente los relés de la placa.
Ahora si vamos a generar un bucle for que, empezará en 2 y se ejecutará hasta que la variable a comprobar, en este caso "i" sea menor de 10. O sea que irá desde 2 aumentando de uno en uno y cuando sea 10 saldrá del bucle al no cumplirse la condición. Nos viene perfecto este bucle for, ya que en cada interacción del bucle la variable "i" va teniendo el número de una salida a escribir, en este caso. Usamos la función digitalWrite para poner a nivel alto la salida que marque la variable "i". Creo que queda claro ahora la función de la variable "i" y como aprovechamos su incremento hasta 9. Después de esto hacemos un delay de 100 milisegundos y repetimos el bucle for, que quedara de la siguiente forma:
 for (int i=2; i<10; i++)
 {
   digitalWrite(i,HIGH);
   delay(100);
 }

Cuando termine este bucle for tenemos todas las salidas a nivel alto y todos los relés activados. Es el momento de apagarlos en sentido inverso, o sea empezando por la salida 9 he ir apagándolos hasta la 2, justo al revés de como los hemos encendido. el bucle for que tenemos que hacer es muy similar al anterior y seria:
 for (int i=9; i>1; i--)
 {
   digitalWrite(i,LOW);
   delay(100);
 }

Una vez visto el código vamos a ver paso a paso como cargar el programa y ejecutarlo. En este caso vamos a lanzar del IDE desde Mac Os X. Los pasos serian:

En esta imagen podemos ver que hemos descargado el Sketch en el escritorio. Un poco más adelante veremos que esta manera de cargar los archivos .ino no es correcta, tenemos que tenerlos dentro de una carpeta. el IDE hará esto por nosotros si intentamos cargar el archivo .ino desde el escritorio, en este caso.

Abrimos el IDE de Arduino. En este caso vamos a hacerlo desde Mac Os X.

Vamos a intentar abrir el archivo .ino que hemos descargado en el escritorio

Como podemos ver al intentar abrirlo nos aparece un mensaje de alerta indicándonos que el archivo "Arduino_UNO_8_reles.ino" necesita estar dentro de una carpeta de proyecto llamada igual que el archivo. Nos da la opción de crearla automáticamente y mover el archivo ino dentro de esta. Pulsamos OK.

Ahora si podemos abrir el archivo ino y ver su contenido sin problemas. Recordemos esto para otros montajes.

Ya tenemos en pantalla el Sketch abierto. Este sería el momento de repasarlo.

Ahora, como siempre, vamos a informar al IDE de la placa Arduino que vamos a usar, así podrá compilar el código adecuadamente. Para ello pulsamos en el menú la opción Herramientas, luego vamos a Placa:"---------" (aquí estará seleccionada la última placa Arduino con la que hayamos trabajado) y por último Arduino/Genuino Uno.

Lo siguiente es conectar el Arduino UNO al ordenador. Esto hará que se encienda y comience a correr el último Sketch que estaba cargado. No nos preocupamos de esto ahora.
Ahora configuraremos el puerto de programación, para ello pulsamos en el menú la opción Herramientas, luego vamos a Puertos:"/dev/cu.usbmodem1D221 (Arduino/Genuino Uno)" (aquí estará seleccionado el último puerto que hayamos usado con este modelo de Arduino) y por último /dev/cu.usbmodem1D221 (Arduino/Genuino Uno)". Casi siempre esta parte estará correcta, pero conviene comprobarla para evitar fallos a la hora de programar el Arduino.

Una vez terminado de configurar el IDE, ya podemos verificar el Sketch. Evidentemente si no hemos modificado el código, no debería tener ningún error y deberá pasar el test de verificación sin problemas, como se ve en la imagen superior. Aquí vamos a hacer un inciso importante. Cuando estemos trabajando con diferente placas Arduino, al cambiar en el IDE el modelo de placa, podemos encontrarnos con un aviso de error al verificar nuestros códigos. Este aviso realmente no es un error, si no un aviso de cambio de placa. Si pulsamos de nuevo y verificamos el Sketch, estará libre de errores. Ojo, si la segunda vez el IDE sigue insistiendo en el error, entonces realmente tendremos un error de código y tendremos que revisarlo.

Ya podemos enviar el Sketch al Arduino UNO, pulsamos el botón de "subir". Veremos como el Arduino UNO recibe los datos y cuando termine el IDE de enviar los datos, empezara a ejecutarse.

El Sketch esta ejecutándose correctamente y los relés están activándose de forma secuencial desde el 8 hasta 1 hasta que estén todos encendidos y apagándose de forma contraria, desde el 1 hasta el 8. Estaremos en este estado indefinidamente hasta que apaguemos el Arduino.

A continuación tenemos un video con todo el proceso completo.