arduino-salida-rele

Manejar cargas de más de 220V con Arduino y salida por relé

¿Qué es un relé?

Un relé es un dispositivo electromecánico que permite a un procesador como Arduino controlar cargas a un nivel tensión o intensidad muy superior a las que su electrónica puede soportar.

Por ejemplo, con una salida por relé podemos encender o apagar cargas de corriente alterna a 220V e intensidades de 10A, lo cual cubre la mayoría de dispositivos domésticos que conectamos en casa a la red eléctrica.

Las salidas por relé son muy frecuentes en el campo de la automatización de procesos, y casi todos los autómatas incluyen salidas por relé para accionar cargas como motores, bombas, climatizadores, iluminación, o cualquier otro tipo de instalación o maquinaria.

Físicamente un relé se comporta como un interruptor “convencional” pero que, en lugar de accionarse manualmente, es activado de forma electrónica. Los relés son aptos para accionar cargas tanto de corriente alterna como continua.

Un relé dispone de dos circuitos:

  • El circuito primario se conecta con la electrónica de baja tensión, en nuestro caso Arduino, y recibe la señal de encendido y apagado.
  • El circuito secundario es el interruptor encargado de encender o apagar la carga.

Al ser dispositivos electromecánicos que requieren el movimiento de componentes interno para su funcionamiento el tiempo de conmutación de un relé es elevado, del orden de 10ms.

Como consecuencia los relés no pueden usarse con una señal PWM, ni otro tipo de señales de frecuencia media-alta. En caso de tener está necesidad deberéis usar otro dispositivo, como un transistor BJT, un MOSFET o relés de estado sólido, en función de las características de vuestro proyecto.

La vida útil del dispositivo está determinada por el número de conmutaciones. Sin embargo, típicamente es del orden de 100.000 a 1.000.000 de conmutaciones por lo que en un uso normal son componentes duraderos y fiables.

Existen gran multitud modelos de relés, con diferentes características eléctricas tanto para el circuito primario y secundario. Debemos elegir un relé que se adecue a las necesidades de nuestro diseño, es decir, que el primario tenga un rango de tensión compatible con nuestra electrónica y el secundario pueda soportar la tensión y corriente requerida por la carga.

Los relés son componentes fundamentales en nuestros proyectos de electrónica, domótica, e Internet de las cosas. Podemos usar salidas por relé para interactuar y controlar casi cualquier cualquier dispositivo que tengamos por casa.

Por ejemplo, podemos encender un tubo fluorescente desde el móvil, encender o apagar la caldera actuando sobre el termostato, desplegar un toldo o bajar una persiana, encender un sistema de riego, activar o apagar discos duros externos, entre un sinfín de aplicaciones.

Precio

Los relés son dispositivos baratos. Existen placas integradas listas para conectar a Arduino, con distintos tamaños y número de canales. Cada canal es un interruptor totalmente independiente de los demás, lo que permite controlar múltiples cargas con un mismo procesador.

Podemos encontrar un relé de un canal por 0,55€, de dos canales por 1,10€, cuatro canales por 2,20€ y ocho canales por 4,10€, en vendedores internacionales de eBay y AliExpress.

Estas placas comerciales montan relés con una limitación de 250V en corriente alterna (AC) o 30V en corriente continua (DC). La intensidad máxima que pueden soportar es de 10A. Esto es equivalente a una carga de 2.300W a 230V AC, y 300W en 30V DC.

arduino-salida-rele-componente

Siempre que sea posible elegiremos montajes con optoacoplador. El optoacoplador es un dispositivo que aísla galvánicamente el circuito primario y secundario, lo que supone una protección adicional para Arduino frente a un fallo catastrófico en la placa del relé.

Al ser un dispositivo sencillo también podemos montarlo nosotros mismos. En general no merece la pena ya que sólo el relé nos costarían más, sin contar el tiempo necesario y la calidad que podríamos obtener, por lo que lo normal es que usemos un modelo comercial.

Ensamblarlo por nosotros mismos solo tiene sentido cuando necesitemos integrarlo en nuestro proyecto, o necesitemos relés con mejores características eléctricas que los disponibles en estas placas.

¿Cómo funciona un relé?

El circuito primario de un relé, que recibe la señal de la electrónica de baja tensión, está formado por una bobina arrollada a un núcleo metálico, formando un electroiman.

El circuito secundario, encargado de alimentar la carga, está formado por unos contactos eléctricos instalados en láminas de metal flexible.

Todos los elementos están fijados a una base aislante y rodeados de una envolvente, que impiden que exista el contacto eléctrico entre los distintos terminales o con el exterior.

De estos contactos uno o dos son contactos fijos, mientras que el restante es un contacto móvil encargado de cerrar el circuito con uno de los contactos fijos.

arduino-salida-rele-funcionamiento

Los relés normalmente disponen de tres contactos en el secundario C (común), NO (normalmente abierto) y NC (normalmente cerrado). Pero también encontramos modelos que prescinden del terminal NC.

Cuando se activa el relé, la corriente circula por la bobina del circuito primario generando un campo magnético que hace pivotar una armadura, que a su vez empuja al contacto móvil, cerrando el circuito con el contacto fijo NO. Mientras, se separa y abre el circuito con el terminal NC.

Cuando la corriente del circuito primario cesa el contacto móvil vuelve a su posición original, abriendo el circuito con el terminal NO, y cerrándolo con el terminal NC.

Por tanto, para controlar la carga con un relé como si fuera un interruptor siempre conectaremos uno de los polos al terminal C (común), que está unido al contacto móvil del secundario.

El otro polo de la carga deberemos conectarlo a uno de los terminales NO o NC, en función de si queremos que al entrar en funcionamiento el relé el circuito se cierre (carga encendida) o se abra (carga apagada).

  • El terminal NO (normalmente abierto) está aislado de C cuando el relé está apagado y conectado cuando el relé está encendido.
  • El terminal NC (normalmente cerrado) está conectado con C cuando el relé está apagado, y aislado cuando el relé está encendido.

Esquema de montaje

En caso de usar una placa comercial el montaje es realmente sencillo. En primer lugar alimentamos la electrónica del módulo Vcc y GND a Vcc y GND de Arduino mediante los terminales existentes.

Por otro lado conectamos la carga a la clema de tres conexiones. Siempre debemos conectar uno de los polos de la carga al terminal C, que habitualmente es el terminal del medio.

El otro polo de la carga lo conectaremos al terminal NO o NC, dependiendo de si cuando el relé este desactivado queremos que el secundario este abierto (NO), o cerrado (NC).

Finalmente conectamos el pin de señal a una salida digital de Arduino. Si empleamos una placa con varios canales, conectaríamos cada uno de los canales directamente a una salida digital.

arduino-salida-rele-esquema

La conexión, vista desde Arduino, sería la siguiente.

arduino-salida-rele-conexion

Si os decidís por hacer todo el montaje vosotros mismos, el esquema eléctrico tampoco es complicado. Las salidas de Arduino no disponen de corriente suficiente para activar un relé, por lo que empleamos una etapa de amplificación como vimos en la entrada de transitores BJT.

Alimentamos esta etapa mediante una salida digital, interponiendo un optoacoplador para aislar galvánicamente ambos circuitos. También añadimos un diodo de flyback, que también vimos en la entrada de transitores BJT, dado que el primario del relé es una carga inductiva.

arduino-salida-rele-detalles

Ejemplos de código

El código necesario es igualmente sencillo, y solo necesitamos tratarla como cualquier otra salida digital tal y como vimos en la entradasalidas digitales.

Por ejemplo, el siguiente código simplemente enciende y apaga la carga en intervalos de 10 segundos.

const int pin = 9;
 
void setup() {
  Serial.begin(9600);    //iniciar puerto serie
  pinMode(pin, OUTPUT);  //definir pin como salida
}
 
void loop(){
  digitalWrite(pin, HIGH);   // poner el Pin en HIGH
  delay(10000);               // esperar un segundo
  digitalWrite(pin, LOW);    // poner el Pin en LOW
  delay(10000);               // esperar un segundo
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full