Relés y Arduino: Encendiendo una bombilla desde tu arduino.


En este nuevo post vamos a hablar de como hacer funcionar un relé con Arduino, en primer lugar necesitamos saber que un relé es un dispositivo que funciona como un interruptor, permitiendo la activación o des-activación de un circuito eléctrico independiente, es decir, podemos activar aparatos electrónicos de mayor voltaje y gran consumo a través de nuestros microcontroladores (como por ejemplo encender una bombilla que funciona a 220V a través de nuestro microcontrolador).

Yo para este tutorial he empleado unos relés de la casa HUI KE que funcionan a 5V y comprados por ebay a un precio muy reducido, en concreto HUI KE HK4100F-DC5V-SHG, os pongo unas imagenes y las conexiones interiores:

Como podéis ver estos relés son de muy reducido tamaño y perfectos para trabajar con nuestro microcontroladores, ya que funcionan a 5V, sin necesidad de disponer de fuentes externas para activar su bobina. Os dejo el esquema de conexión realizado en Fritzing y un esquemático realizado en Eagle:

Como podéis ver los componentes que necesitamos para realizar el circuito de control son muy pocos:

* Relé de 5V (En este caso de la casa HUI KE, vale cualquier otro).
* Transistor BC547.
* Resistencia de 10k.
* Diodo 1N4001.

Como siempre os dejo una foto del montaje del mismo y un vídeo del funcionamiento del circuito, en esta caso la bombilla se enciendo durante un segundo y permanece apagada durante diez segundos:

Y por último os dejo el código (aunque es muy sencillo):

/*Programa realizado por Javier Couto Rego "Regata" para
www.tallerarduino.wordpress.com

Encendiendo una bombilla a 220V con un Arduino y un relé
a 5V*/

int rele=8;

void setup()
{
  pinMode(rele,OUTPUT);
}

void loop()
{
  //Nota tenemos el relé conectado como Normalmente Abierto
  //así solo se activará la carga cuando activemos la bobina
  //del relé, para que funcione al revés cambiaremos el cable
  //a la posición Normalmente Cerrado
  digitalWrite(rele,HIGH);  //Activamos la bobina del relé y encendemos la bombilla
  delay(1000);              //durante 1 segundo
  digitalWrite(rele,LOW);   //Desactivamos la bobina del relé y apagamos la bombilla
  delay(10000);             //durante 10 segundos
}

Espero que os guste y que os sirva de ayuda!!!

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

40 comentarios en “Relés y Arduino: Encendiendo una bombilla desde tu arduino.”

  1. hola, me gustó mucho este blog!
    con respecto a esta entrada, tengo una duda al respecto
    el hecho de que se prenda durante 1 segundo y se apague durante 10 es porque el sistema no aguanta más tiempo prendido???
    verás, me gustaría poder controlar ciertas luces de mi hogar con el arduino, pero no se si este puede estar conectado constantemente a 220v…
    muchas gracias 😀

  2. Hola Felipe!! No, el hecho de que este encendido durante 1 segundo es sólo cuestion del programa para el ejemplo, puedes tener conectado constantemente a 220V. Esto es sólo un ejemplo que hice para que la gente viera como se encendía con una temporización determinada. Así que sin ningún problema vas a poder conectar las luces de tu casa!! Cualquier duda ya sabes puedes preguntar e intentaremos resolverla.

    Nos gusta que a la gente le sirva este blog, Un saludo y gracias por visitarnos!!!!

  3. Hola! Gracias por el aporte

    Estoy intentando hacer algo parecido pero no tengo idea alguna sobre arduino.
    Mas o menos entiendo el ruteo de todo con el Fritzing, pero si no te importaria explicarlo, seria de gran ayuda.
    Hay muchas cosas que no se como conectar.

    Gracias!!

  4. Hola Vero!!

    Pues mira te comento: Conectado al pin del micro con el que activaremos el relé vamos a tener una resistencia de 1k, que a su vez va conectada a la base de un transistor (el cual nos va a permitir proporcionar más corriente para poder activar nuestro relé desde el pin de arduino, ya que este suministra sobre unos 40mA, en ocasiones insuficientes para activar relés, motores, etc…), el emisor va a masa (GND de la placa arduino) y al colector vamos a tener conectado un diodo rectificador (la función del diodo lo que hace es evitar que circulen corrientes en sentido inverso que puedan dañar nuestro microcontrolador) y en paralelo el relé, es decir, las patillas de control de la bobina del relé que será la que active o desactive las correspondientes salidas del relé (En este caso tiene una normalmente abierta (NA), que estará sin alimentar hasta que se active la bobina del relé, y en ese momento pasará a alimentar la salida, la otra salida es normalmente cerrada (NC), que funcionará de manera opuesta a la anterior), además tenemos una patilla común que sirve para conectar el cable del dispositivo que vamos a activar o desactivar. Esto es, conectamos una punta del cable del dispositivo y la otra punta a una de las salidas NA o NC.

    No sé si es esto lo que quieres que te explique, si no es así no dudes en preguntar más!! Un saludo

  5. Hola Regata!

    Si…muchas gracias! ahora entiendo más como debo conectar todo. Es que no sabia exactamente como conectar cada cosa, pero ya me va quedando mas claro. Me gustaría comentarte el proyecto que estoy haciendo, a lo mejor me puedes echar una mano. Si me puedes dar tu email para contactar contigo estaría genial.

    Muchas Gracias!!!

  6. Hola Javier.
    Estoy empezando a utilizar arduino y tu ejemplo de uso del relé y la explicación que le has dado a Vero, me parecen excepcionales.

    Muchisimas gracias.

  7. Hola Javier,

    Muy bueno el artículo, hace poco que me enteré de arduino (si, voy un poco tarde jeje) y quiero empezar a trastear con el y me gustaria hacer lo que haces arriba.

    Leyendo veo que muchos dicen que el mejor para empezar es arduino uno, me recomendarias algun otro o este esta bien? otra duda seria si sabes de algún pack que venga arduino con protoboard y cables o donde comprarlos por internet por separado.

    Muchas graciasss tu blog esta muy bien 🙂

  8. Hola Javi!!

    Pues te comento, para empezar está bien cualquier arduino, tanto el uno, como el mega o el nano, dependiendo del número de salidas que necesites te vas a uno u otro. No se si has mirado algo por internet sobre precios y demás, el tiempo que quieres esperar en recibir el paquete, etc.

    Dependiendo de lo anterior puedes hechar un vistazo por tiendas españolas (te cuesta más dinero pero llega más rápido) o bien tirar de un arduino clónico (que funciona exactamente igual y son muchisimo más baratos, pero tardan algo más de tiempo en llegar).

    Yo quizás buscaría algún kit por ebay (pones busqueda todo el mundo y envío gratuito), vas a ver un montón. Un ejemplo sería este (es un kit que trae algo de todo para ir poniéndose con los ejemplos básicos e ir avanzando):

    http://www.ebay.es/itm/Robot-DIY-Starter-Kit-1602-LCD-Relay-Stepper-Infrared-For-Arduino-NEW-/290816168320?pt=LH_DefaultDomain_0&hash=item43b5fe9180#ht_4257wt_1369

    y por otro lado me pillaría el arduino por separado, así te saldría más económico:

    El arduino Uno:

    http://www.ebay.es/itm/R3-development-board-2012-MEGA328P-ATMEGA16U2-Funduino-Arduino-Compatible-/400451100528?pt=LH_DefaultDomain_0&hash=item5d3cbedf70#ht_1530wt_954

    El arduino Mega:

    http://www.ebay.es/itm/ATmega2560-Board-with-USB-Cable-for-ARDUINOs-IDE-MEGA-2560-with-USB-cable-/321085468466?pt=US_Security_Cameras&hash=item4ac22f6f32#ht_2034wt_1188

    Y según vayas avanzando puedes ir encontrando cosas para los montajes por ebay o tiendas nacionales. (Pero ya te digo que ebay puede ser tú mejor amigo tanto para ti como para tu bolsillo en estos casos).

    Resumiendo, yo me decantaría por coger algún kit de componentes por separado, encontrarás muchísimos por ebay, escoge el que más te convenga (el que te puse yo trae un relé), aunque también puedes comprarte aparte una placa de relés ya montada:

    http://www.ebay.es/itm/5V-2-Channel-Relay-Module-Board-Shield-With-optocoup-For-Arduino-PIC-MCU-Cheap-/251231183205?pt=LH_DefaultDomain_0&hash=item3a7e8ba165

    y bueno yo me cogería ambos arduinos jajaa, pero mejor te recomiendo el arduino Uno para empezar, ya que muchos ejemplos están hechos para esta placa en concreto, aunque no hay casi diferencia entre la programación del Uno o del Mega prácticamente. Y según vayas avanzando y necesites más entradas o salidas pillarte un mega. Como ves los clones arduino son bastante baratos. (Yo tengo dos originales para fomentar el proyecto arduino) y 3 clones y funcionan todos perfectamente.

    Un saludo y espero haberte ayudado a escoger!!

  9. hola amigos quizas no sea el lugar adecuado pero alguno de ustedes podria darme orientacion de hacer el mismo proceso pero con netduino plus2 se los agradeceria mucho

  10. Hola cristhian!!

    Te comento que aunque nunca he usado la placa Netduino plus 2, el código para realizar esta prueba es bastante sencillo:

    using System;
    using System.Threading;
    using Microsoft.SPOT;
    using Microsoft.SPOT.Hardware;
    using SecretLabs.NETMF.Hardware;
    using SecretLabs.NETMF.Hardware.Netduino;

    namespace Reles
    {
    public class Program
    {
    public static void Main()
    {
    //Declaración de la variable rele para asignarla al pin digital 8
    OutputPort rele = new OutputPort(Pins.GPIO_PIN_D8,false);
    //false es para indicar el estado inicial del pin digital 8 (apagado)

    while(true) //Se ejecuta el código dentro del while de manera indefinida
    {
    rele.Write(true); //Activamos el rele durante 10 segundos
    Thread.Sleep(10000);
    rele.Write(false); //Desactivamos el rele durante 10 segundos
    Thread.Sleep(10000);
    }
    }
    }
    }

    Como ves el relé está conectado al pin D8 de la Netduino igual que en el ejemplo hecho con la placa Arduino. La conexión es exactamente la misma para ambas placas. Create en el IDE que uses para la Netduino un proyecto y pega el código que te puse arriba, esto hará que la bombilla parpadee cada 10 segundos. Un saludo!!

  11. hola ,muy bueno el blog. yo quiero hacer lo mismo (prender las luces de casa con el arduino) pero quiero hacerlo desde la compu conectando el arduino por wi-fi. para esto deberia comprarme el shield wi-fi que viene no? y de ser asi, como se haria para utilizar pines para controlar las luces y pines para el shield wi-fi. es decir, la placa wi-fi me deja varios pines libres para yo poder conectarlos a los relees?. claro esta q no entiendo como funciona el shield de wifi jaja. gracias

  12. Hola adrian!! De momento no sé como funciona la arduino wifi, pero supongo que se programará igual que los demás arduinos, aparte de tener conexión wifi, también puedes probar a través de un módulo ethernet al cual conectas un mini router al que le das una ip y puedas acceder a través de él. Lo siento pero no puedo ayudarte en mucho más. Un saludo!!

  13. Muy buen aporte. solo que quiero implementar esa usando el Ethernet Shield, usando los circuitos en una pcb en donde pueda conectarlo al arduino. saludos

  14. Hola Josue!! Se me escapaba de responder a tu comentario, te comento que también se pueden comprar PCB de relés ya hechas y diseñadas para emplear con tu Arduino, tienes desde 1 único relé hasta 16 o incluso más, te pongo algún enlace para que puedas echar un vistazo:

    En ebay puedes buscarlo como relay arduino:

    http://www.ebay.es/itm/5V-Eight-8-Channel-Relay-Module-With-optocoupler-For-PIC-AVR-DSP-ARM-Arduino-/310574415181?pt=LH_DefaultDomain_0&hash=item484fad7d4d#ht_2026wt_1188

    http://www.ebay.es/itm/5V-2-Channel-Relay-Module-for-Arduino-PIC-ARM-DSP-AVR-Electronic-/140764956257?pt=LH_DefaultDomain_0&hash=item20c63ec661#ht_1965wt_954

    http://dx.com/es/p/8-channel-relay-module-extension-board-for-arduino-avr-arm-51-141670

    Espero que te sirva de ayuda esta información!! Un saludo!!

  15. Hola, para probar un doble rele para arduino que he comprado he utilizado la tension que da la salida USB, pero no funciona,
    la plaquita viene con un puente que se puede conectar a VCC VCC o a VCC GND, y las entradas son GND IN1 IN2 VCC, aplicando la tension del USB a GND y IN1 o a las otras opciones no arranca ninguno de los dos reles,
    si doy tension directa a la bobina del relé si se activa. Que puede pasar?

  16. Hola edwin!! Lo siento por tardar en contestar pero no he estado disponible estos días. En cuanto a tú consulta, para la activación del relé en principio te serviría cualquier transistor NPN que se capaz de suministrar la corriente necesaria para la activación de la bobina del relé. Algunos ejemplos son: BC547, 2N3904, BD170, etc…

    Un saludo!!

  17. Hola, ya funciona, conecto los GND y 5V a GND y VCC, y tambien aplico la misma tension a IN1 o IN2.

  18. Me alegro de que ya te funcione, como es que aplicas la misma tensión en IN1 o IN2, ¿quieres decir la tensión que proporcionan los pines que declaras como salidas en tu arduino? ¿O bien controlas el módulo de relés sin arduino?

  19. Hola, estoy utilizando una salida de una camara IP que se puede controlar por wifi, esta salida da 0 o 5V segun se active, a partir de ahí conectare el rele a una lampara o voy a probar a cerrar un contacto de un mando a distancia que enciende y apaga luces, para evitar cableado.
    Te queria preguntar por el puente de dos contactos que viene en la plaquita del rele, no se que mision tiene, gracias

  20. Hola Erna!! Supongo que te refieres a está placa de relés: https://tallerarduino.com/2012/10/08/modulo-de-reles/, y el puente de dos contactos debe ser el jumper azul que aparece en la parte inferior de la imagen del módulo de relés. Ese jumper se emplea para seleccionar la alimentación que vas a usar para alimentar los optoacopladores que van a activar/desactivar la bobina del relé. Como ves tiene tres pines y podemos seleccionar alimentar todo el módulo de forma conjunta (es decir seleccionar con el jumper puesto entre jd-vcc y vcc), o bien alimentar de forma independiente tanto optoacopladores como relés (quitando el jumper), de esta última manera necesitarías emplear dos fuentes de alimentación diferentes, mientras que con el jumper puesto como en la imagen solo necesitas una única fuente de alimentación (5V). Yo he usado el módulo con el jumper así puesto y funciona perfectamente. Si no era esta tú duda, explícame más el tema. Un saludo!!

  21. Saludos, quisiera saber si existe una restricción en cuanto al tiempo máximo que el arduino puede estar encendido, es decir si lo pongo a controlar algunas luces, quiero que el arduino este encendido todo el día, todos los días, es posible? Si uso el modo sleep, y solo lo despierto para cuando trabajar, la misma pregunta… existe restricción en el tiempo maximo que el arduino puede estar alimentado?

  22. Hola mauricio siles!!

    Perdón por tardar en contestar, pero no he tenido mucho tiempo libre antes. Te comento que la idea del arduino es hacer un sistema que este en funcionamiento todo el tiempo posible, por lo que no creo que afecte para nada que el sistema esté en funcionamiento todo el tiempo (todos los días), yo tengo hecha una estación meteorológica (sensor de luz, temperatura, humedad, presión barométrica) que lleva funcionando todo el tiempo desde hace unos meses y perfectamente.

    Con el modo sleep no he trabajado nada, pero supongo que es exactamente los mismo, ya que viene siendo un modo del microcontrolador y estos están hechos para realizar sistemas que necesiten estar trabajando a todas horas, así que no veo problemas.

    En definitiva no existe restricción de tiempo máximo que el arduino puede estar alimentado.

    Un saludo y gracias por tu visita!!!

  23. Hola, las salidas de Arduino son de 5V, con esta tension no se excita el relé de 12 V, se podria haciendo un circuito con un transistor con alimentacion a 12V y salida a 5 V, lo que te puede complicar la vida. En Ebay hay unos relés de 5 V que se excitan directamente desde Arduino y son muy baratos, 2€ o menos.

  24. Hola China!! Exacto como dice Ernesto las salidas del Arduino son a 5V. Él te ha dado una buena explicación sobre el tema!! Un saludo a ambos!!

  25. podrias poner el link o el nombre de los reles q se excitan directo de arduino porfis??

  26. Hola Jose!! Aquí tienes el enlace de los módulos de relés que suelo comprar yo, son de este estilo y los hay de más relés a mayor precio: http://www.ebay.es/itm/5V-2-Channel-Relay-Module-Board-Shield-With-optocoup-For-Arduino-PIC-MCU-Cheap-/251231183205?pt=LH_DefaultDomain_0&hash=item3a7e8ba165&_uhb=1

    En cuanto a lo de poder activarlos o desactivarlos a través de internet tendrás que disponer bien de un módulo ethernet para poder comunicar tu arduino con tu router y cargar algún ejemplo (tengo pensado hacer un tutorial sobre esto con dos módulos diferentes ethernet para arduino, a ver si saco algo de tiempo libre), o bien usando algún módulo wifi (que aún no he podido probar). Te pongo el enlace a la placa ethernet para arduino:

    Módulo más económico (algo más complicado de usar): http://www.ebay.es/itm/1pcs-ENC28J60-Ethernet-LAN-Network-Module-Schematic-For-Arduino-51AVR-LPC-STM32-/300882740890?pt=LH_DefaultDomain_0&hash=item460e02469a&_uhb=1

    Módulo shield ethernet (enchufar encima y creo que más sencillo de emplear): http://www.ebay.es/itm/Ethernet-Shield-W5100-board-For-Arduino-UNO-R3-1280-2560-Mega-/231119956363?pt=AU_B_I_Electrical_Test_Equipment&hash=item35cfd2a98b&_uhb=1

    Espero que te sirva de ayuda, si tienes alguna duda no dudes en preguntarme!! Un saludo!!

  27. Hola, para localizarlos, entra en EBAY.es y en la busqueda pon «relay arduino», te aparecen un monton, para mejorar la busqueda y que sean mas baratos utiliza la opcion «Todo el mundo» y en ordenar «Precio mas envio mas barato» y la opcion «Compralo ya» te aparecen desde 1,16€

  28. Hola, para hacerlo funcionar a traves de internet no es complicado, pero debes adquirir una placa ethernet que se acopla a la de Arduino

  29. quiero hacer esta practica, pero las resistencias las tengo de 330ohmios, puedes ayudarme

  30. Heee amigo bueno ejemplo … Pero no es peligroso usar corrientes de 110 y 220 en un protoboar ?

    Porque nunca pondria voltaje de toma corriente en una proto y nunca vi ningun comentario de tu parte de este pequeño detalle..!

Deja un comentario