Electroválvula Rain Bird 075-DV controlada por Internet con Arduino

Hace un tiempo estuve haciendo pruebas para controlar una electroválvula mediante una placa Arduino (ver entrada aquí), y hoy le vamos a dar una vuelva de tuerca más a aquel proyecto, conectando la electroválvula a Internet.

Antes de nada, voy a describir cual es la problemática que tengo en mi sistema domótico y como lo he intentado resolver. En el chalet tengo tres casetas para riego, por las que pasa una única tubería de agua (de la toma general de riego, la tubería va hacia la caseta 1, luego hacia la caseta 2 y finalmente a la caseta 3, de una a otra caseta). Además de la tubería de agua, también pasa una tubería con cables eléctricos, que llevan 220VAc (fase, neutro y tierra) que salen de un diferencial dedicado para esta tirada eléctrica, y otra tirada de 24VAc (dos hilos) que salen desde un transformador para electroválvulas (220VAc a 24Vac). Resumiendo: en casa caseta tenemos: agua, 220VAc y 24VAc en una caja estanca.

Queremos conectar cada caseta al nodo central domótico (JDomo), a través de una red Ethernet formada por PLCs y aprovechar dicha conexión para controlar las electroválvulas (máximo 3) en cada caseta. Además queremos controlar una situación de error relativamente típica en los sistemas de riego automático, y es que por algún fallo alguna electroválvula se quede abierta más tiempo del que le hayamos indicado en el sistema domótico y nos eche a perder nuestra plantación de hortalizas o frutales (por ejemplo, algún problema en el relé de control de la electroválvula, una pérdida de conexión con el nodo central a través de Ethernet, no recepción de la señal de apagado, …).

De forma bastante esquemática lo que vamos a montar en cada caseta es lo siguiente:

esquema modificado

Una vez montado, el controlador queda más o menos así:

caja terminada

Los materiales que necesitaremos son lo siguientes:

CantidadDescripciónCoste (€)Tienda
1Caja estanca del tamaño adecuado1,40Leroy Merlin
1Arduino Nano + placa ENC28J60 Ethernet13,01Ebay
1placa con rele 5v optoacoplador1,18Ebay
1cable de red de 25cm2Ebay
1placa sensor de corriente ACS712 5A1,50Ebay
1Conector molex con pines macho y otro hembraReciclados
1Fuente de alimentación 6V2,42Ebay
1Cables varios para puentearReciclados
1PLC TP-Link TL-PA41115Amazon
36,51

Lo primero que debemos hacer son los agujeros en la caja: para la conexión RJ45, la entrada de alimentación de arduino, la entrada/salida de uno de los hilos que lleva los 24VAc a la electroválvula y, por comodidad, la toma USB del Arduino Nano por si tenemos que reprogramar el nodo. En mi caso, y como tengo unos conectores molex de 4 pines procedentes de una fuente de alimentación desguazada, los he aprovechado.

En las siguientes imágenes se ven los agujeros con más detalle (no quedan 100% profesionales pero me valen). Están hechos con una broca de madera de 3mm, un cuchillo, y una lima:

ethernet p power p molex p usb p

Siguiendo este esquema procedemos a realizar las conexiones, teniendo en cuenta que los pines marcados como Gnd y Vcc hay que conectarlos a los pines correspondientes en la placa del relé y la del ACS712:

esquema finalAdemás la alimentación de Arduino se hará a través de los pines Vin y GND (junto al Vin). El montaje final queda bien apretado dentro de la caja, aunque en mi caso, para que la placa del relé y la del medidor de corriente queden bien sujetas, ha sido necesario anclarlas a un pedazo de PCB que tenía de sobra de otro proyecto:

vista final

Para rematar la faena necesitamos cargar el software al Arduino y conectarlo a la red para comprobar el funcionamiento. El software lo podéis encontrar en aquí. Está preparado para compilar con la utilidad INO, con todas las librerías necesarias, y que yo he usado durante el desarrollo y las pruebas.

¿y ahora qué? ¿Como lo hacemos funcionar? Cuando accedemos a la web del aparato (en adelante jEV), nos muestra un listado con los datos actuales: el valor que lee del sensor de energía (powerADC) y su valor util (power), la conversión en amperios (current) y en vatios (watts), la temperatura (en grados centígrados) y el voltaje (en milivoltios) internos de Arduino (atemp y avcc), la temperatura en grados leída por la sonda DS18B20 (tempDS, que en nuestro caso no hemos montado), y los estados de los tres dispositivos que el software puede controlar (estado_dispositivo1, estado_dispositivo2 y estado_dispositivo3). Aunque el software puede controlar una sonda DS18B20 y tres dispositivos, en nuestro montaje no necesitábamos controlar tanto, y nos es suficiente con un relé y un sensor de corriente.

web

Un estado 1 equivale al dispositivo apagado, y un estado 0, equivale al dispositivo encendido. Para cambiar de estado basta con enviar un comando ev1_on, ev1_off, ev2_on, ev2_off, ev3_on, ev3_off, all_on, o all_off, como por ejemplo http://192.168.2.11/ev1_on, o http://192.168.2.11/ev1_on&ev2_off. Al activar una electroválvula veremos como los valores de powerADC y power van variando de acuerdo al consumo del dispositivo. El valor base de powerADC es 1023/2, por encima indica corrientes positivas hasta 5A y por debajo, corrientes negativas hasta -5A. De ahí el valor de power, que no es más que la diferencia, en valor absoluto, con el valor base (1023/2).

En el caso de que enviemos un comando para cerrar una electroválvula, y pasados unos instantes las lecturas de consumo de corriente no se acercan a ese valor base de 1023/2, tendremos un problema, porque la electroválvula continuará abierta.

En el código también se ha establecido un valor máximo para el tiempo de funcionamiento de una electroválvula (kMAX_WORKING_HOURS) en horas. De este modo si perdemos la conexión con el nodo central (por ejemplo, si falla el PLC que nos da la conexión Ethernet), pararemos de regar cuando pasen esas horas.

Otro sistema de control, es el uso del watchdog de Arduino, que se ha definido en 8 segundos. Al definirlo, nos aseguramos de que si hay un problema software y el sistema se bloquea, a los 8 segundos se reiniciará el programa en el nodo de control de la electroválvula. Para usar esta funcionalidad hay que instalarle el bootloader optiboot a nuestro Arduino (podéis encontrar mas información aquí).

Modificación 24/08/2014: Aprovechando que he montado el segundo nodo de control de las electroválvulas, aquí tenéis una galería de imágenes del montaje de un nodo paso a paso:

Actualización 7/9/2013: Integrando Electroválvula en openHAB aquí.

Comentarios

  1. Por ALberto

    Responder

    • Por José María

      Responder

  2. Por Alberto

    Responder

    • Por José María

      Responder

  3. Por Alberto

    Responder

    • Por José María

      Responder

    • Por José María

      Responder

  4. Por Alberto

    Responder

    • Por José María

      Responder

  5. Por Nicolas

    Responder

    • Por José María

      Responder

  6. Por andres

    Responder

    • Por José María

      Responder

  7. Por Jordi

    Responder

    • Por José María

      Responder

  8. Por Jordi

    Responder

    • Por José María

      Responder

Deja un comentario

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