Lo + Popular

Control de calefacción con Arduino - Parte II

En la entrada anterior explicamos la idea, en que iba a consistir el proyecto, así como un listado del material que hemos empleado y el coste. En esta entrada explicaré como se ha realizado el montaje y como funciona el dispositivo.

Conectando el sistema


La conexión es muy sencilla, si bien podéis tener algún problema si la caldera está a mucha distancia del lugar que habéis elegido para situar el dispositivo. Este fue uno de los problemas que se me presentaron, y más adelante explicaré una manera de resolverlo.

Los elementos que aparecen con interrogación son los relés. 

El código de colores empleado es el siguiente:
  • Rojo: +5V
  • Negro: GND
  • Amarillo: Control Relés
  • Marrones: Control LCD
  • Azul: Datos Termómetro
Se ha incorporado un pulsador con enclavamiento (un interruptor) para controlar la retroiluminación del LCD. También he optado por colocar una resistencia fija para regular el contraste, en lugar de un potenciometro.

El motivo de colocar un interruptor para controlar la luz de fondo es reducir el consumo, ya que el LCD se usará esporádicamente. Por otro lado no tiene sentido colocar un interruptor para apagar el dispositivo, ya que el objetivo es que pase todo el día encendido. 

En cuanto a dejar fijo el contraste tiene sentido solo si la alimentación va a ser constante, esto es, si la fuente siempre va a ser la misma. De no ser así el contraste se modificaría al cambiar de fuente. Esto puede ocurrir si utilizáis un respaldo con una batería, o tenéis directamente más de una conexión a red.


Finalmente conectando la calefacción a nuestro dispositivo, y todo convenientemente a la red eléctrica, tendríamos un esquema como el de arriba.

Fijaros en la conexión de los relés, que se ha hecho en la pestaña ON (interruptor normalmente abierto).

Programando arduino

Como ya comenté en la primera entrada se han consultado multitud de proyectos e información en Internet. Por ello no voy a detenerme en explicar como se ha programado, sino que me limitaré al funcionamiento. Todas las referencias utilizadas podréis encontrarlas al final.

La placa comienza iniciando todas las conexiones, esto es, desarrollando la conexión con la placa ethernet e implementando la conexión con el termómetro (protocolo One-Wire).

Una vez hecho esto procede a actualizar la ip en el subdominio. Esto es necesario ya que la ip del domicilio es dinámica, cambia cada cierto tiempo de manera aleatoria. Además no se dispone de un dominio de pago, sino que se aprovecha un subdominio gratuito, perfecto para el uso que se le va a dar.

Esta actualización se realizará cada cierto tiempo, el cual será fijado previamente. Para ello se toma el tiempo de proceso cada vez que se actualiza la ip, y se verifica periódicamente. Si ha transcurrido el tiempo establecido la placa inicia una conexión con una url de configuración. 

La url de configuración esta preparada para estar constantemente a la escucha, y en el momento que se reciba una petición de conexión determinada se recoge la ip del cliente que solicita la conexión. Esta ip será a la cual se redirigirá el subdominio.

La comprobación de la temperatura se realiza siguiendo el mismo proceso, dejando otro periodo de tiempo entre comprobaciones.

La pantalla se actualiza constantemente, ya que es algo que no ocupa casi al procesador, y sobretodo, no lo bloquea. 

Por último se evalúa constantemente la conexión ethernet buscando un cliente. En el caso de que conecte se procede a enviarle el código HTML de la web. Su navegador lo leerá y lo interpretará adecuadamente. Veréis como el código de la web es muy fácil de editar, pudiendo adecuarlo rápidamente a vuestras necesidades.

Algunas consideraciones

Este tutorial explica el montaje de una versión definitiva, previa a la cual ha habido otras tantas. Algunas de las ideas que se implementaron y que finalmente se descartaron son:


  • Incorporar una batería para respaldar el sistema en caso de fallo de la red: La idea era poder añadir la funcionalidad de que avisará en este caso. Se descartó ya que añadía complicaciones con la placa ethernet, y finalmente no es necesario para saber si se ha ido la luz.
  • Alimentación a 12V: Se utilizó durante el diseño por tenerlo más a mano. Provoca que la placa se caliente mucho, y al final acaba fallando.
  • Sensor de corriente: Al descartar la batería tampoco tenía sentido mantener este sensor.
Por otro lado, el código también ha sido mejorado a la vez que el dispositivo. Uno de los factores que se ha tenido en cuenta es el reinicio de la cuenta del tiempo de proceso

El problema surge al llegar dicho tiempo a cierto valor, superando la capacidad del dato. En esta situación la placa reinicia la cuenta automáticamente, lo cual nos genera un problema, ya que ese tiempo se empleaba para hacer verificaciones periódicas. 

Para solucionarlo se han añadido unas lineas que se encargan de reiniciar, si fuera necesario, las variables donde se almacenaba este tiempo.

Alternativas

En el caso que vuestra calefacción esté muy lejos del dispositivo podréis emplear esta alternativa:

Con este montaje conseguimos separar los relés del dispositivo, necesitando únicamente dos cables que vayan del termostato a la caldera. Si ya tenéis un termostato clásico instalado en vuestra vivienda, este seguramente será vuestro caso. 

En general la mayoría de los termostatos emplean dos cables, de tal manera que conectándolos entre si se encendiende la caldera. En un montaje básico podríamos haber prescindido del relé que apaga o enciende completamente la calefacción, y haber situado el relé "termostato" en el mismo dispositivo. Esto sería equivalente a un termostato convencional.

En nuestro montaje cada cable controlará un relé.

Como veis se ha separado la alimentación del dispositivo de la de los relés, pero se ha mantenido la referencia de tierra (GND). Para ello se ha contado con que toda la vivienda comparte la misma toma de tierra. Esto no significa que podamos emplear esta conexión para transmitir una señal, pero si nos sirve para fijar la referencia de tierra.

En realidad se podría prescindir del cargador, ya que al fijar la referencia de tierra, y debido a como están diseñados estos relés, la propia señal basta para alimentar los relés. No obstante, esto obliga a la placa arduino a suministrar toda la potencia, con el consiguiente riesgo de fallo

Para hacernos una idea en mi montaje los cables de cobre rígido que van de la caldera al termostato podían tener una longitud de unos 30 metros. Cada cable ofrecía una resistencia de 2 ohmios. La corriente que se midió al activar el relé sin el cargador fue de 25 mA, siendo el máximo por pin de 40mA. Esto es, más de la mitad de la capacidad total.

Código


Aquí podéis descargar el código. Los códigos están separados en tres archivos: programa principal, programa de actualización del dominio y servidor web.

En el programa de actualización del dominio tendréis que configurar previamente una cuenta en freedns e introducir la url de configuración en el hueco conveniente. Tener en cuenta que debéis introducir la url sin el comienzo (sin... freedns.afraid.org) y sin corchetes rectos [] ni angulares <>.

CÓDIGO FUENTE

FOTOS

Y también algunas fotos de como ha quedado el montaje final:

Caja montada


Detalle relé Keyes

Detalle sensor de temperatura

Foto del primer prototipo. Se pueden apreciar los soportes
para pilas y el sensor de corriente.

No hay comentarios:

Publicar un comentario