Blog de Acuariofilia, Biología y Medioambiente (Antonio Castro)

Blog sobre Acuariofilia, Biología, Medioambiente, Mundo animal, Maltrato Animal, Medioambiente, Biodiversidad, Cambio Climátido…

CAO-11: El uso de relés en Arduino.

Reles de 5v para Arduino

Reles de 5v para Arduino

Para nuestro proyecto de Control de Acuarios por Ordenador (CAO) necesitaremos relés capaces de  activar los distintos elementos eléctricos que deseemos controlar.

En el mercado existen una diversidad de placas de relés para Arduino. La información sobre su uso y sus características no siempre vienen explicadas con el detalle necesario para un nivel amateur, lo cual aumenta el riesgo de comprar algo diferente de lo que uno pretendía. Afortunadamente, gracias a la sencillez de los circuitos y a la economía de sus componentes, no resulta descabellado construirse uno mismo su propia placa de relés a la medida de las propias necesidades.

Para montar circuitos electrónicos no hace falta tener muchos conocimientos de electrónica y ese es exactamente mi caso. Debes tomar todo lo que digo como puramente testimonial. Yo comento los resultados de lo que he logrado hacer funcionar, pero de teoría voy muy justito. Dado que aquí vamos a usar transistores con diferentes características quizás a ti te interese profundizar un poco más sobre la teoría de este componente electrónico. Si ese es el caso echa un vistazo a este manual: El mundo del automatismo electrónico.

El uso de relés en Arduino no tiene mucho misterio. Basta con localizar relés que se activen con tensiones de 5 voltios que son las que entregará Arduino a la salida y  para no sobrecarcar la salida de Arduino tendremos que usar un transistor capaz de entregar al relé la corriente necesaria.

 El factor Intensidad de corriente:

La corriente que puede entregar Arduino es muy débil. Aquí usamos los transistores como amplificadores de corriente contínua.  Arduino entrega como máximo 40 mA en cada pin de salida. Poner una carga mayor podría dejar ese pin permanentemente averiado.

Con el Transistor 2N2222A podremos cargar hasta 120 mA con un 2N2221A podríamos cargar hasta 300 mA, y con un BD-243 podríamos cargar hasta 6A, es un transistor muy barato y muy utilizado. Es capaz de disipar 65W.  Por su bajo precio, estamos usando el transistor BD-243, para activar el relé  OMRON G2R-1C 5v capaz de conmutar corrientes de 10A.

 El relé, TQ2-5V no es capaz de conmutar más que 1A.

En la figura de cabecera podemos ver un esquema electrónico con dos circuitos de conmutación para Arduino que únicamente se diferencian el el uso de componentes capaces de manejar más o menos carga.

He añadido un diodo led a cada circuito porque es útil señalizar el estado de los pines que controlan los relés.

En el caso de los transistores nos valen transistores NPN de propósito general, y los modelos referidos al ser muy usados son muy baratos.

Para pequeñas cantidades no hay una gran diferencia de precio entre el 2N2222A y el BD-243. Tampoco hay grandes diferencias de precio entre los relés de 1A y de 10A que hemos referido.

En el caso de que deseemos controlar potencias superiores a 2200 vatios, por ejemplo usando la regla de 1 vatio/litro, para controlar calefactores de un acuario de 300 litros, tendremos que usar un relé más potente y posiblemente tengamos que activarlo con más de 5 voltios. Algunos se activan usando 220 voltios. Es decir que tendríamos que usar dos relés en cascada, el primero de baja potencia se usaría para activar al relé más potente.

Circuito para conmutación de corrientes de hasta 1A:

Relé TQ2-5V (1A)

Relé TQ2-5V (1A)

Transistor NPN  2N2222A_ (TO-92)

Transistor NPN 2N2222A_ (TO-92)

El circuito de baja potencia capaz de conmutar corrientes de 1A al no ser capaz de soportar grandes cargas ni tensiones elevadas, resultaría adecuado para activar dispositivos tales como motorcitos de corriente continua, iluminación LED nocturna, etc. Típicamente se usaría para dispositivos eléctricos de bajo consumo alimentados con corriente continua de por ejemplo: 9, 12 o 24 voltios.

Este circuito para conmutar corrientes de escasa intensidad usa un transistor NPN 2N2222A y un mini-relé TQ2-5V.

Este relé me dió problemas hasta que descubrí que, a diferencia de otros relés, su bobina solo puede ser polarizada en un único sentido. La lista de componentes sería la siguiente:

Circuito para conmutación de corrientes de hasta 10A:

Relé OMRON G2R-1C 5v  (10A)

Relé OMRON G2R-1C 5v (10A)

Este segundo circuito de mayor potencia, muy similar al anterior, es capar de conmutar corrientes de 10A y manejar tensiones de 220 voltios.

BD-243

Es decir puede conmutar potencias de hasta 2200 vatios.

Las únicas desventajas respecto al circuito anterior de baja potencia es que la conmutación en este es  más lenta y que el relé  tiene un tamaño mayor, pero no es previsible que ninguna de estas desventajas tengan la menor importancia para nuestro proyecto.

Este circuito para conmutación de corrientes de hasta 10A usa un transistor NPN BD-243 de mayor potencia que el anterior y un Relé OMRON de 5v. La lista de componentes sería la siguiente:

Precauciones en el uso de relés para el control de la temperatura de un acuario:

No es conveniente usar los relés al máximo de su capacidad porque a intensidades elevadas se acortaría su vida de trabajo.  Corrientes elevadas durante un tiempo corto pueden provocar chispas que en casos extremos pueden dejar los contactos del relé permanentemente soldados. En el caso de la calefacción del acuario no que remos que eso ocurra bajo ningún concepto, porque supondría dejar permanentemente conectado el elemento calefactor y la temperatura alcanzaría valores que matarían a todos los peces y plantas convirtiendo el acuario en una sopa de pescado con verduras.

En tales casos es recomendable usar elementos que aguanten el doble de carga de la que finalmente deban controlar como margen de seguridad. También conviene que el control de la temperatura sea tal que los relés no reaccionen a cambios de temperatura demasiado pequeños. De lo contrario, los relés estarían continuamente conectando y desconectando.

Oscilaciones de medio grado en la temperatura de un acuario no solo son tolerables sino deseables para evitar riesgos por sobrecarga de trabajo en los relés.

Todos los termostatos para las distintas aplicaciones industriales tienen un valor de histéresis (valor que introduce inercia en el estado de un conmutador) que nosostros tendremos que programar en nuestro software en función de la sensibilidad del sensor para evitar un excesivo trabajo de conmutación del sensor.

Dado que hemos mencionado el concepto de histéresis, avanzaremos que en nuestro software este será un parámetro ajustable y que para la calefacción podría tener un valor por defecto de 0.2 ºC lo cual significa que para la temperatura ideal (+/-) 0.2 ºC no ocurriría ningún cambio en el estado del relé que gobierne el elemento calefactor.

Per ejemplo: Para una temperatura de acuario de 27.5 ºC el relé conectariá el calefactor por debajo de los 27.3 ºC y lo desconectaría por encima de los 27.7 ºC.

Código de prueba muy sencillo para relés:

Lo primero que desearás hacer cuando dispongas una placa de relés para tu Arduino será probarla. Lo único que tendrás que hacer es indicar en el sencillo programita que pongo a tu disposición es indicar en que pin de salida debe de empezar a testear y en cual debe terminar. Los irá probando secuencialmente, y así podrás ver si todos funcionan correctamente.

#define P1 5    
#define PF 13   

int i;

// ***  setup ****
void setup(){
    for (i=P1; i< =PF; i++){
	pinMode(i, OUTPUT);
    }
}

// *********** MAIN LOOP ***********
void loop(){
    for (i=P1; i<=PF; i++){
      digitalWrite(i, HIGH);
      delay(2000);
      digitalWrite(i, LOW);
    }
}

Conclusiones:

Yo tengo ahora una pequeña placa de relés con los dos tipos de relés que acabo de mencionar, porque deseaba probar ambos, pero los componentes que hemos referido costarían en ambos casos casi lo mismo (en torno a 2.50 euros por circuito).

Por ello, en estos momentos para el proyecto CAO creo preferible montar una placa de relés de 10A que son más versátiles por tolerar mayores intensidades y tensiones de conmutación.

El número de relés a usar depende de el número de dispositivos que desees controlar.

Anterior

¿Cuál es la postura de UPyD sobre el Fracking?

Siguiente

30 meses para salvar el mundo

19 comentarios

  1. felixsvo

    Les recomiendo aislar la salida de potencia(transistor o relevador) con un optoacoplador. Esto con el fin de que si ocurre un cortocircuito o una contracorriente, no afecte a el Arduino. Puedo recomendarles e 4N26.

  2. Antonio Castro

    Felixsvo, me pare muy buena recomendación. Gracias por aportar tu granito de arena.

    Me compré una placa con 8 relés optoacloblados por 17 euros.

    Ignoro si para implementar en una salida con PWM un dimeo con un transistor 141 también resulta posible y conveniente activarlo por medio de un optoacoplador. Estoy pensando usarlo para una iluminación LED de intensidad variable.

  3. felixsvo

    Una recomendación, los relevadores son muy buenos haciendo su trabajo pero no son muy rápidos trabajando a ciertas altas frecuencias ya que tiende a quedarse pegado(debido a que llega un momento en el que no se le da un tiempo al switch interno para que responda).

    Con respecto a el transistor 141, un optoacoplador si es capaz de activar este transistor. Solamente este transistor para ser activado debe recibir 0.5A en la base, los cuales obtendrás seguramente de una fuente de energía externa. Pero no es muy recomendable usar un transistor para PWM por que estos también tienen cierto tiempo de respuesta y resultan ser lentos a comparación de otros por ejemplo, los IGBT los cuales también son de potencia y podrás tener un mayor control en PWM debido a que son rapidísimos. Solamente que para realizar el disparo necesitas cierto voltaje en la Base(Gate), creo que son entre 12v-20v. Si te quieres ahorrar todo este problema puedes comprar un Photo IGBT (SSR o Relevador de estado solido) el cual es mas caro pero te ahorraras gran cantidad de elementos.

    Te paso unos links donde podrás visualizar información que consulte.

    http://pdf.datasheetcatalog.com/datasheet/mospec/TIP146.pdf (141-146)
    http://www.waitingforfriday.com/index.php/Controlling_LED_brightness_using_PWM (control PWM en Leds que consulte)

  4. Antonio Castro

    Yo he visto un circuito usando el TIP141 se activa desde una salida de Arduino y el circuito dima unos LEDs con una fuente de 12 V.

    http://3.bp.blogspot.com/-69aTHtIdZxM/UEzGuyq-_aI/AAAAAAAAALE/6PSfrB6kTBs/s1600/esquema-fuente_bb.jpg

    Aún no lo he probado y no sé si será lo mejor, pero parece ser que funciona.

    Gracias por tus sugerencias, se ve que controlas el tema de la electrónica que es donde más flojeo yo.

    Mi principal problema ahora mismo es la limitación de memoria del Arduino MEGA 2560. Ignoro si el nuevo invento de Intel Arduino Galileo me servirá para superar este límite ya que viene un un S.O. Linux. Yo lo que necesito es memoria para ejecutar mi programa que está creciendo mucho porque no estoy buscando implementar un autómata para algo muy concreto sino un sistema muy configurable y bastante flexible.

  5. felixsvo

    Bueno, no había tomado en cuenta que tal ves no vaya a ser un parpadeo bastante rápido. Lo mas seguro es que si funcione.

    Con respecto a la memoria del Arduino Mega yo uso el Chipkit Max32, el cual es compatible con Arduino, se programa como Arduino(MPIDE) o como PIC(MPLAB) pero tiene mas memoria y mayor velocidad de procesamiento(80MHz), ademas de ser de 32 bits.

    Saludos.

  6. Antonio Castro

    Dice que el hardware chipKIT es compatible con los actuales “shields”. Me queda una pequeña dudaa porque menciona el tema de 3,3 voltios pero luego dice que es compatible con todos los recursos existentes.

    Lo pregunto porque Arduino DUE tiene el gran problema de que se quema si le aplicas 5v en las entradas, pierde compatibilidad con varios Shields, y por eso quería que me confirmaras que esta maravilla que me comentas no tiene ese problema.

    Tiene pinta de ser la mejor solución a mis problemas. Incluso mejor que Arduino Galileo, porque a mí me viene mejor que el servidor y el controlador estén separados en placas diferentes.

    En mi diseño el controlador Arduino debería contener toda la inteligencia del sistema pudiendo funcionar completamente sin intervención humana por tiempo indefinido.

    Un Raspbery Pi serviría para proporcionar un servidor, con interfaz Web de conexión al sistema CAO y programas de monitorizacion, de estadísticas etc.

    La parte de interfaz Web no la he empezado. De momento tengo un monitor en lenguaje Python que abre varias ventanas para separar la información recibida, y un sistema para enviar y recibir comandos con CAO.

    Todo este protocolo de comunicación entre ambos equipos está muy avanzado y es bastante sofisticado. Lo primero que incluí fueron facilidades de depuración de programas, ya que el IDE se queda muy corto para el desarrollo de aplicaciones grandes. Este sistema de depuración consiste en funciones de traza que admiten un numero variable de argumentos a lo printf().

  7. Antonio Castro

    PD:
    Acabo de ver esto
    http://www.youtube.com/watch?v=WhtXrtTiDWs
    Nada más empezar dice este vídeo que es compatible con Shields que trabajan a 3,3v .

    Es decir es como el Arduino DUE. He seguido buscando y esa incompatibilidad hardware me parece un grave inconveniente aunque parece que existen una serie de soluciones añadiendo algo de hardware.
    http://www.microchip.com/stellent/groups/techpub_sg/documents/devicedoc/en026368.pdf

    Yo creo que las soluciones propuestas encarecerían bastante el tema dependiendo del número de entradas salidas que necesiten ser adaptadas.

    Lo suyo sería encontrar una Shield que hiciera esa función de adpatación, aunque no se si adaptar todas la entradas salidas resulta razonable. Podría aumentar el consumo de forma escandalosa y quizás por eso la placa viene preparada para trabajar a a 3.3v

  8. felixsvo

    Es compatible a 3.3v solo a entradas analógicas, pero para entradas digitales es 5v(hasta 5.5v). Esta información viene respaldada por un pdf en las paginas 8 y 9.
    http://ww1.microchip.com/downloads/en/DeviceDoc/chipKIT%20Max32_rm.pdf
    Con respecto a los shields, la mayoría son compatibles a excepción de algunos Ethernet. A diferencia de Arduino, esta placa (Max32) tiene un controlador USB OTG el cual seria una gran ventaja para manejar dispositivos USB en la placa, tales como almacenamiento USB, comunicaciones, entre otros.
    Todo ese sistema que mencionas me parece muy interesante, sobre todo la interfaz web.

  9. Antonio Castro

    ChipKIT usa un MIPS y Arduino DUE usa un ARM. La coma flotante es emulada para ambos procesadores y opino que no son suficientemente diferentes como para decantarse por uno de ellos teniendo únicamente en cuenta el detalle del microprocesador, las placas también son parecidas.

    Creo que ChipKIT fue el primer Arduino en salir para 32 bits (corrigeme si me equivoco) y su impulso inicial se debe lógicamente a ser el primero que ofreció los 32 bits.

    Arduino DUE salió después y según parece podría tener ya una comunidad de usuarios comparable a la de ChipKIT y de cara al futuro podría superarla facilmente.

    La clave para la elección entre ambas parece estar en el desarrollo del software para MIPS o para ARM y hay quien asegura que en eso ARM tiene ventaja.

    En cuanto al problema de los 3.3V parece ser que existe un integrado para traducir voltajes. 3.3v a 5v
    GTL2000 (22-bit bi-directional low voltage translator)
    http://www.nxp.com/documents/data_sheet/GTL2000.pdf
    http://www.datasheetdir.com/GTL2000+Level-Translators

    Este integrado parece una solución ideal para ambos casos.

    Puestos a soñar un poco, seguramente lo que debería hacer sería diseñar una PCB con Relés, Transistores para Dimeos, Amplificadores Operacionales para sensores de PH y Potencial Redox, un Rejoj de Tiempo Real con su pila, pusadores, leds para las salidas, y todo el hardware que sea necesario para dotar la funcionalidad de CAO. En principio yo creo que se podría lograr diseñar el software y el hardware para que sea compatible con ambas tarjetas, pero para eso habría que hacer el desarrollo probando con ambas tarjetas.

    Lo mio no es el diseño de PCBs y no sé lo que pueden cobrar por ello, pero creo que un buen diseño de PCB es la solución ideal para un programa que ya consta de una docena de módulos y va por la 5000 líneas de código. La cantidad de esfuerzo que estoy dedicando es considerable.

    Mi idea para este proyecto es escribir con todo ello un par de libros (uno para usuarios y otro para desarrolladores) y terminar liberando tanto el código como el diseño de la PCB. Para todo ello me hace falta tiempo y dinero. No descarto recurrir a abrir una iniciativa tipo crowdfounding, pero no quiero correr. Antes quiero tener algunos resultados, y plasmar mis logros en vídeos. De momento estoy funcionando solo y lógicamente al crecer el desarrollo cada vez me cuesta más trabajo avanzar. Por cada dos pasos que avanzo tengo que retroceder uno porque la idea del diseño se ha ido perfeccionando sobre la marcha.

    Te agradezco mucho tu interés.

  10. David

    Tengo un problema hace un tiempo, al conectar mi modulo de 4 reles con mi arduino uno R3, funciona de maravilla, hasta que al modulo de reles le conecto una lampara de 220v, entonces con el monitor serial le digo q se prenda y apague, y el programa o algo colapsa… no se por que me puede estar pasando, pero cuando lo dejo solo, sin la lampara puedo prender y apagar los reles a mi antojo…

    Alguien me ayude pls, de ante manos muchas gracias.

  11. Antonio Castro

    No parece muy lógico. Con tan pocos datos no puedo ayudarte. Lo primero que debes hacer es confirmar que lo que crees que está ocurriendo es tal cual lo acabas de explicar o hay alguna conexión mal. Haz cambios en el circuito. Prueba a usar el relé para conmutar con corriente continua en un sentido y en el otro un diodo LED por ejemplo. Insisto, lo que ocurre no es lógico. Desconfía de tus propias conclusiones.

    • claudio

      si es logico, porfavor informese antes de escribir un articulo, investigue sobre como el ruido afecta a la comunicacion serial hay muchos post al respecto en el foro arduino. atentamente.

      • Antonio Castro

        Este tema no lo trato en este artículo porque rara vez representa un problema. Es un tema que conozco. El ruido eléctrico que provoca un relé es fácil de filtrar y no representa problema alguno en la mayoría de los casos.

  12. Roberto Madrid

    Que tal, muy bueno sin lugar a dudas Me encanta muy útil

  13. Buenas… el articulo es bastante interesante… me sirvio mucho y ademas esta explicado para un mortal comun y silvestre como yo… jeje, quisiera consultarte si tendrias a mano alguna lista de componentes para armar un rele como el que armaste en tu articulo, pero que soporte los 10A comodamente… esto es debido a que tengo un aire acondicionado viejo… que enfria muy bien… pero quisiera poder automatizarlo con mi arduino uno… Saludos
    P/D: muy buenos tus aportes

  14. REINEL MAVISOY

    esta es una solución para el arduino due en la conexión de reles de 5v aquí les dejo el link del producto para este caso, espero que sea de ayuda.
    http://www.didacticaselectronicas.com/index.php/semiconductores/convertidor-de-nivel-logico-bidireccional-detail

  15. Muchas gracias por las soluciones que daís a través de los comentario y también por el esfuerzo realizado por la persona que ha escrito el articulo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Funciona con WordPress & Tema de Anders Norén