Termostatos inteligentes con control PID o cómo mantener tu casa caliente sin dejarte el sueldo

    • Descripción detallada del control PID en los sistemas de calefacción e implementación en el controlador domótico Home Center 2 de Fibaro.

    Este año llegó el frío… llegó tarde, pero llegó. Precisamente esa tardanza hizo que este artículo se demorase más de lo que nos hubiese gustado. Sin embargo, hemos requerido de ingentes pruebas y mucha programación para ofreceros este artículo. Antes de entrar en materia, quiero dar las gracias a nuestro compañero Antonio Maestre, que es el ideólogo de este proyecto, por todo lo que he aprendido y la paciencia que ha tenido en explicarme como actúa un regulador por PID. Nos metemos en harina.

    El caso es que cuando llega el frío, todos queremos mantener el confort en casa pero sin que ello nos cueste el sueldo. A estas alturas de la película no vamos a descubrir nada si os decimos que los termostatos convencionales no son precisamente la panacea: ni ahorran dinero ni aportan un confort elevado. Por otra parte, los llamados termostatos inteligentes aportan ventajas importantes a nuestras instalaciones. Pero como en casi todo en la vida, la perfección no existe y estos termostatos tienen algunas desventajas. Vamos a tratar de darle solución a estos problemas con ingenio.

    Control de temperatura en controladores Fibaro

    Tipos de termostatos

    Vamos a tratar de explicar de una forma sencilla los diferentes tipos de termostato del mercado. Los termostatos más básicos que encontraremos son sistemas de control todo/nada. ¿Qué queremos decir con esto? Se trata de equipos que dan la orden de empezar a funcionar  a nuestra calefacción (bien sea una caldera, una válvula, bomba de calor, etc…) siempre que la temperatura está por debajo de la temperatura de consigna (temperatura que deseamos alcanzar en nuestra casa).

    Cuando la temperatura de la vivienda supera la temperatura de consigna, el termostato da la orden de apagar la calefacción. Como podéis suponer, este sistema no es capaz de mantener una temperatura constante en la habitación y además es muy ineficiente desde el punto de vista de nuestro bolsillo. Como una imagen vale más que mil palabras, os dejamos una imagen de este tipo de control

    Control todo-nada sin histeresis

    Posteriormente llegaron al mercado unos termostatos que presentaban una variante importante… la histéresis. Básicamente lo que hace la histéresis es establecer una banda de oscilación en torno a la temperatura de consigna. Cuanto mayor es la histéresis menor es el confort. Este tipo de termostatos aplican un control como éste:

    Control con histeresis

    Ahora bien, como podéis imaginar los ingenieros como Antonio siempre se las apañan para diseñar sistemas de control mucho más eficientes asociados a la industria, y como resultado desde hace décadas disponemos de lo que los ingenieros conocen como regulador PID o controlador PID. Este tipo de control se basa en control en bucle cerrado (se compara la temperatura actual con la de consigna y se toman decisiones en base a ello) mediante técnicas Proporcionales, Integrales y Derivativas.

    Bucle cerrado

    Este tipo de control, mucho más complejo, permite eliminar los típicos dientes de sierra en torno a la temperatura de consigna, alcanzar antes esa temperatura y mantenerte muy próximo a ella de forma eficiente. Y la eficiencia en este caso se traduce en mejoras de confort y mejoras económicas.

    Control PID

    Este tipo de control es el que implementan los llamados termostatos inteligentes. Además, los más “inteligentes” son capaces de incluir variables tan variopintas como la presencia o no en casa de personas, la detección de la apertura de puertas y/o ventanas o la temperatura exterior. Pero nada es perfecto, y he de decir que no hay un termostato que me llene. Precisamente por eso nos hemos puesto manos a la obra con objeto de programar un termostato lo más digno posible para nuestra casa.

    Antes de ponernos manos a la obra, vamos a enumerar brevemente los principales defectos que le encontramos a los sistemas que están en el mercado:

    • Tecnología no nativa: La mayoría de los termostatos inteligentes son WIFI, es decir, no soportan de forma nativa Z-Wave u otros protocolos domóticos. Eso hace que integrarlos en el sistema sea en algunos casos una odisea.
    • Dependencia del fabricante: Derivado del punto anterior muchos de ellos requieren de servidores del fabricante para darles órdenes remotas. Esto es terrorífico porque el día que el fabricante decida dejar de prestar este servicio tendremos un pisapapeles en lugar de un termostato.
    • Precio alto: No son nada baratos, especialmente los más afamados. Además, si queremos zonificar nuestra casa necesitamos varios, disparándose el coste.
    • Inteligencia: Algunos no son tan inteligentes como los pintan, de modo que no son capaces de analizar todas aquellas variables que a nosotros nos pueden interesar.
    • Personalización: Si programamos nuestro propio termostato podemos llegar a niveles de confort y eficiencia mayores a los comerciales.

    Nos ponemos manos a la obra. Termostato PID

    Lo que hemos programado es un conjunto de dos VD (dispositivo virtuales para HC2 de Fibaro) que conforman un sistema virtual de termostato. Se pueden establecer tantas zonas y termostatos como queramos, basta con instalar más VD y ubicarlos en diferentes habitaciones. El primer VD es un dispositivo de configuración que establece los parámetros de configuración del propio PID. El segundo VD es el propio termostato.

    Termostato virtual

    Posteriormente entraremos en la configuración del PID, ahora veamos qué puede hacer el termostato.

    • Leer el panel de temperaturas de la habitación: Si establecemos un panel de temperatura en la habitación en la que ubicamos el termostato virtual, éste lo utilizará si está en modo AUTO.
    • Modo Auto: En este modo la temperatura de consigna estará marcada por el panel de calefacción de nuestro controlador Fibaro HC2. Debemos por tanto crear un panel nuevo y establecer las temperaturas en función de las horas y días de la semana.
    • Modo Manual: En este modo la temperatura de consigna la establecemos de forma manual gracias a los botones del propio dispositivo. Podremos subir y bajar la temperatura de consigna, así como establecer un Modo Eco de temperatura a 18ºC. Además ,podemos especificar el tiempo que debe funcionar el termostato en esa temperatura.
    • Modo Off: Establecerá una temperatura de consigna de 5ºC.
    • Interacción con otros VD o escenas: Gracias al botón de On/Off podemos cambiar entre el modo Auto/Off, o incluso implantar el modo manual. Esa facilidad a la hora de cambiar entre modos, hace que podamos programar cómo debe operar la calefacción en nuestra vivienda ante eventos como ventanas abiertas, puertas abiertas, temperaturas exteriores muy frías, viento, presencia o ausencia en la casa, etc.

    Configuración del termostato PID

    Para que el PID llegue a funcionar correctamente, es preciso establecer una serie de configuraciones mínimas. Dado que hemos preparado un manual de instalación que colgaremos en nuestro foro, no me extenderé. Sin embargo, creo que hay una serie de cosas importantes que debéis conocer.

    Configurador del PID

    Lo primero que todo usuario debe establecer en la configuración son los elementos físicos del sistema:

    • Termostato: Indica el número de dispositivo virtual del termostato que configuraremos.
    •  Sonda: Se trata de la elección del sensor de temperatura que medirá la temperatura de la habitación y que será quien indique al termostato la temperatura real del sistema. Tiene la peculiaridad de que puede personalizarse el código seleccionando la sonda 0 y que ésta sea una composición o fórmula matemática. Por ejemplo, imaginemos una habitación con dos sensores de temperatura. Podríamos establecer que la temperatura real de referencia que tome el termostato sea la media de ambos. Es importante que el tiempo de actualización de datos de este sensor esté en consonancia con el número de ciclos hora que veremos más adelante.
    • Actuador: Es el accionador que activa/desactiva la caldera, es decir, el relé que activa el antiguo termostato de la casa. En nuestro caso hemos empleado un actuador SSR 303 que podéis adquirir en nuestro partner domboo.es.

    A continuación, debemos configurar los parámetros de funcionamiento del algoritmo PID. Sobre cómo afinar este apartado podríamos escribir tratados. Es más, ya están escritos y se estudian en las universidades como teoría del control. No vamos a entrar en grandes detalles, ni siquiera vamos a describir los métodos empíricos de sintonizado (así se llama en el argot la elección de estos parámetros) que se estudian en las universidades. Vamos a ir a lo sencillo. Entendamos lo siguiente:

    El algoritmo PID debe su nombre a las tres acciones en las que se basa: Proporcional, Integral y Derivativa.

    La acción Proporcional es la acción fundamental del algoritmo. La acción P es matemáticamente proporcional a la señal de error, es decir a la temperatura real menos temperatura de consigna, con objeto de  lograr que el error en estado estacionario se aproxime a cero. En definitiva, lo que hará es que la caldera se encienda más tiempo cuando estamos más lejos de la temperatura de consigna que si estamos próximos a ella. ¿Lógico no?

    Una acción proporcional que sea pequeña hará que nunca alcancemos la temperatura de consigna. Una acción proporcional muy grande hará que nos pasemos constantemente de ella y provoquemos sobreoscilaciones. Además, por sí sola no permite eliminar el error estacionario, es decir, no es capaz de llegar a la consigna.

    El modo de control Integral tiene como propósito disminuir y eliminar el error en estado estacionario provocado por el modo proporcional. Únicamente funciona dentro de un rango final con objeto de evitar su saturación.

    La acción derivativa se manifiesta cuando hay un cambio en el valor absoluto del error (si el error es constante, solamente actúan los modos proporcional e integral). Recordemos que error es la desviación existente entre el punto de medida y el valor consigna, o “Set Point“.

    Para aquellos más avanzados, os diré que el PID tiene control de saturación de la acción integral y control de patada derivativa.

    Acciones de control

    El VD de configuración de termostato nos permite seleccionar tres variables que controlan el comportamiento anterior Kp, Ki y Kd. A mayor valor, mayor acción. Establecer correctamente estos parámetros hará que el sistema funcione o no correctamente. Cada casa es diferente, de modo que cada usuario debe buscar los que mejor le funcionen. Os aconsejamos empezar con los siguiente valores:

    Kp=350, Ki=50, Kd=75

    A continuación, atendiendo a los resultados, debéis afinar los mismos. La siguiente tabla puede ser de ayuda.

    Consejos de sintonizado

    Para ver cómo evolucionan los diferentes parámetros, el sistema deja registrar los datos en ThingSpeak y ver las gráficas de comportamiento del sistema. Si nos pasamos mucho de la consigna bajaremos Kp y aumentaremos Kd. Si nos quedamos habitualmente por debajo de la consigna, aumentaremos Kp. Si no conseguimos llegar a la consigna de forma estacionaria, aumentaremos Ki. En caso de que la acción de control sea muy grande en modo estacionario, bajaremos Ki.

    Otro de los parámetros a seleccionar es el número de ciclos hora. Esto es algo habitual en los termostatos físicos. En sistemas con poca inercia (radiadores eléctricos) seleccionaremos 12 c/h, en sistemas con inercia media (radiadores de agua) seleccionaremos 6 c/h y en sistemas de mucha inercia (radiadores de aceite) seleccionaremos 3 c/h.

    También podremos seleccionar el rango de histéresis que os recomiendo dejarlo entre 0.1 y 0.2 grados si queréis un confort elevado. Los sistemas comerciales simples están entre 0.5 y 1 grado, los inteligentes en los valores que os recomiendo.

    Para evitar que la acción integral se sature podemos incluso seleccionar a partir de cuando se tendrá en cuenta. Os recomiendo un valor de wUp en torno a los 0.5 grados.

    Temporalmente podemos seleccionar el tiempo mínimo de encendido. Esto es para evitar que la caldera se vuelva loca. En mi caso, únicamente se enciende la caldera si la acción mínima de control es superior a los 60 seg. Podéis personalizarlo con el parámetro mTa.

    Por último, podemos seleccionar el tiempo de seguridad que apagará siempre el accionador dentro del ciclo. Este parámetro es necesario debido a que hemos detectado que algunos  accionadores se bloquean con ciclos completos. Como hay accionadores de todo tipo, podremos seleccionarlo. En mi caso lo tengo a 15 segundos. Eso significa que si tengo establecidos 6 ciclos/hora, es decir, ciclos de 10 min (600 segundos), mi ciclo será de 585 segundos.

    Resultados

    Si habéis sido capaces de llegar hasta aquí… solo os queda probarlo. Con un poco de pericia vais a conseguir resultados como este que os presento de mi casa en el día de hoy. Basta decir que ningún termostato del mercado de los que he podido probar consigue unos resultados similares.

    Termostato en funcionamiento

    Para que sea sencilla la instalación, os hemos preparado un manual y hemos habilitado una entrada en el foro para hablar de ello.

    Los VD los podéis descargar del foro también.

    Cualquier duda estaremos en el foro para ayudaros.

    Os recomiendo que os animéis a utilizarlo ya que funciona muy bien y permite un control de la temperatura mucho más apropiado. Esperemos que se note en vuestros bolsillos.

    Manuel Pascual

    Madrileño, técnico de sistemas y apasionado de la tecnología. Autodidacta, le encanta enredar todo tipo de aparatos electrónicos. En la actualidad, investigando el apasionante mundo de la domótica.


    15 Respuestas

    1. Benjamin Ortuzar dice:

      El SSR303 funciona con la frecuencia Z-wave de Chile (908.4 MHz, 916 MHz)? Necesito controlar una electro valvula 220VAC (Compact RSF-X) que abre y cierra el flujo de agua caliente al piso donde vivo.

    2. Antonio Maestre dice:

      No sé si se vende el SSR303 en esas frecuencias, pero puedes probar a manejar la electrovalvula con cualquier dispositivo tipo relé ya que el VD es compatible.

    3. LiNKey dice:

      Efectivamente, con cualquier dispositivo de tipo relé que funcione en la frecuencia que necesitas podrías actuar la electro válvula y usar este sistema de control.

    4. Benjamin Ortuzar dice:

      Muchas gracias por su ayuda. Si me puede copiar el link de algun relé SPDT en 220 VAC que pueda abrir y cerrar la electro válvula les agradeceria.

    5. Marcos dice:

      Se agradece la informacion muy interesante …. pero para quienes no manejamos los detalles de la domotica será posible que nos recomienden algún termostato con todo incluido que intenté al menos un resultado decente.
      Saludos
      Marcos

    6. Javier Garcia dice:

      El termostato Nest de 3ª generación ya incluye compatibilidad con el protocolo Openterm que permite en las calderas compatibles modular la temperatura de impulsión del circuito de calefaccion consiguiendo resultados optimos.
      Por otra parte con las anteriores generaciones de Nest y con su integración con un Vera Lite a traves de un plugin puedes hacer lecturas de la temperatura de consigna y de la habitación donde este instalado, e interactuar con tu sistema domótico.
      Habria alguna forma de comandar una válvula proporcional que nos permitiese modular nuestra temperatura de impulsion de calefaccion incluso en una antigua calefaccion consiguiendo asi actualizar nuestros obsoletos equipos a un sistema moderno y eficiente con una minima inversion?

    7. I have installed the Virtual Thermostats x3 and I am getting the Boiler Controller turning On/OFF/ON/OFF .

      If I put any 2 on Maintenance mode the other works fine on its own. Have I set something wrong?

      • linkey dice:

        Right now I’m reconfiguring my system and I can bo testing.
        In principle all three should uncionar correctly.
        Each Thermostat must control a different kettle if you want to take temperatures of different rooms, you must use the virtual probe.

    8. linkey dice:

      Right now I’m reconfiguring my system and I can no testing.
      In principle all three should run correctly.
      Each Thermostat must control a different boil, if you want to take temperatures of different rooms, you must use the virtual probe.

    9. Brent Brown dice:

      Hi linkey,

      Scenario:
      MasterBed room – 1 x Danfoss LC-13 TRV – ID12, 1 x Fibaro Multi Sensor- ID13, 1 x Virtual Termostat-ID113
      Lounge: – 2 x Danfoss TRV – ID 14,15, Secure Temperature Controller – ID16, 1 x Virtual Termostat – ID114
      Kitchen – 1 x Danfoss TRV – ID 17, AEON Multisensor – ID18, 1 x Virtual Termostat – ID115
      Bioler Controler – ID20

      I want each room to accurately control the temperature of its own room.

      How can I do this?

      Brent

    10. linkey dice:

      Hi Brent,
      The virtual thermostat is based on boiler control works in cycles, during each cycle a certain time the boiler stays on one part of the cycle and off the rest, when the cycle in response to the PID parameters calculates the part that must be lit during the next cycle and thus will regulate to achieve the set temperature are passed and try to maintain it.

      If you only have a boiler, you can not control with several thermostats at once because conflicting orders would occur.

      I use two thermostats because one handles a gas boiler and other electric radiator support, each have a different configuration.

      To take into account the temperature of the entire room you should apply the concept of virtual probe is explained in the manual and in the article. Obtaining readings from different sources.

      I recommend putting keys “Danfoss” on all radiators except one, if possible which is located in the coldest room in the house. The virtual thermostat should be placed in this room, ie, the temperature sensor or thermostat is directly related to a probe that is in that room.

      The control panel must do it from the controller HC2 heating, creating an area with all the rooms, so that both keys “danfoss” as the virtual thermostat, take the setpoint temperature of the panel. Thus the room before reaching the set temperature will be downregulated by the “danfoss” key and boiler control managed by the virtual thermostat refers to the stay that has no key “danfoss”.

      I hope I have been helpful

    11. Brent Brown dice:

      linkey,

      Thank you for confirming my thoughts.

      I shall keep hunting for a MultiZoned Heating control system for a single boiler. Many thanks

    12. Cucullatus dice:

      Hi Linkey,

      I have to say that I think your PID control is a brilliant solution but unfortunately I have the same problem as Brent Brown with needing a multi-zoned heating for a single valve/actuator.

      Looking at the code I was thinking if we could make a small adaption to the design then I think it would do what we need and provide multi-room control on one actuator!

      The idea is that we still have the thermostat and thermostat panel per room but instead of linking directly to a actuator we link to a variable. If the actuator needs to be turned on, it sets the variable to 1, when not needed back to 0. We then have a script that checks the status of variables of the associated rooms to the actuator and if any are 1, turns the actuator on, only when all are 0 it turns it off. This will then stop the “On, Off, On, Off” effect.

      For the changes i think we need three.
      1. I was thinking to be able to allow the thermostat panel for the actuator to allow a variable to selected/set – such as RoomX_Heat.
      2. In the function of “function setActuador(actuator, start)” (in the main loop of the themostat) instead of turning the actuator on/off we change the variable that we selected in the thermostat panel (point 1 above).
      3. Add a script for each actuator that allows you to assign the required variables (from point 1) to check if the actuator should be on or off. Then if any are 1, turn the actuator on, when all are 0 turn off.

      I hope that makes sense! Do you think this would work?

      Thanks so much!

      • linkey dice:

        I am now very busy and I can not look at it, it seems that the idea could work, but I’m not sure the “PID” controller loses its effectiveness.

    Deja un comentario

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