Continuamos con la serie de entradas dedicadas a sistemas de control automático con un procesador como Arduino, destinadas a presentar la teoría de sistemas de control de forma intuitiva y sin fórmulas.
En la entrada anterior vimos algunas generalidades sobre qué es un sistema de control automático. Vimos lo que es una planta, un controlador, un bucle cerrado y su importancia en el comportamiento del sistema.
Finalizábamos con el ejemplo de que tú vas a hacer de controlador y te has despertado en una sala. Sabes que estás controlando el sistema de climatización de un edificio a través de una palanca, y tienes unos displays que muestran la temperatura medida y la consigna.
Aparte de eso, no sabes absolutamente nada sobre cómo es tu planta o lo que está pasando. Tampoco sabes qué efecto tiene pulsar la palanca que tienes delante tuyo, sólo sabes que aumenta o reduce la potencia de aplicas a la calefacción del edificio.
¿Cómo controlas el sistema? Es decir ¿Qué estrategia sigues para mover la palanca en función de los indicadores que ves?
En esta entrada vamos a ver la forma más sencilla y seguramente extendida de control de un sistema, el controlador todo o nada y su variante con histéresis.
¿Qué es un control todo o nada?
Como su nombre introduce, el control todo o nada consiste en aplicar toda la acción posible cuando la medición está por debajo de la consigna, y no realizar acción en absoluto cuando está por encima (o viceversa, según el efecto del actuador en la medición).
En nuestro ejemplo, si la consigna es de 24º consistiría en subir la palanca a tope si la temperatura baja de 24º, y bajarla del todo si estamos por encima.
Desde luego más sencillo no puede ser. Pero lógicamente, esta sencillez tiene sus consecuencias. Así, el control todo o nada tiene importantes limitaciones que se traducen en una respuesta bastante pobre, como veremos a continuación.
Salida del control todo o nada
Imaginemos que, con una consigna de 24º, cuando te despiertas tienes a 18º y, según las normal, pones la calefacción a tope. Pasas a 20º, 22ºC, 24ºC… y paras de golpe.
Si la respuesta de tu sistema fuera instantánea, en el mismo momento en que pares va a bajar la temperatura. En el momento que sea 23.999…ºC vas a encender a tope. Subirás a 24.00…01 ºC y pararas otra vez.
Así repetidamente, tendrás infinitos encendidos en el momento que alcances la consigna por primera vez. Como es imposible que le des infinitas veces por segundo a la palanquita, el universo lo arreglará rompiendo algo (normalmente el actuador).
Afortunadamente para ti (y para tu muñeca) muchos sistemas tienen una cierta inercia así que no vas a tener infinitos encendidos. Cuando alcances 24ºC por primera vez, llevas la calefacción encendida a tope ¡vas con todo! Y aunque pares, has aplicado tanta potencia que la temperatura va a seguir subiendo un tiempo, aunque hayas eliminado la acción.
Bien, no te has roto la muñeca, pero ahora tienes un sobrepasamiento de la consigna que no puedes controlar, porque tu única forma de control es encender a tope o parar por completo.
Pese a la inercia del sistema, aún vas a tener que encender muchas veces tu sistema para mantener la temperatura constante. Además, el posible ruido de la medición y las perturbaciones (por ejemplo, las pequeñas corrientes de aire internas en el edificio) van a contribuir a estos encendidos frecuentes.
Todo esto se traduce en un mal comportamiento y un acortamiento de la vida de tu sistema. Algo que podemos mejorar con el control con histéresis, que veremos a continuación.
Simulación control todo o nada
Vamos a ilustrar lo anterior con una pequeña simulación. A continuación, tenemos la respuesta de un control todo, aplicado a una planta con una cierta inercia. La consigna está fija a 1.0, posteriormente pasa a 0.5, y finalmente a 1.0 otra vez.
El único parámetro que podemos variar, K es la acción que ejecuta nuestro controlador. En un control todo o nada no es un parámetro del controlador si no que viene fijo por el sistema, pero aquí podemos variarlo para ver su influencia en el sistema.
K
Como vemos, en el momento en que alcanzamos la consigna tenemos múltiples encendidos de corta duración, y aparece un “diente de sierra” en la variable controlada. Si la potencia del actuador (K) aumenta respecto a la inercia del sistema, tenemos un menor número de encendidos a costa de una mayor desviación de la consigna.
Control todo o nada con histéresis
Hemos quedado que el control todo o nada tiene el problema de que provoca muchos encendidos del actuador. La solución es sencilla, definimos un rango de valores aceptables o histéresis.
En nuestro ejemplo, decidimos que encendemos la calefacción si bajamos de 22ºC, y la apagamos si llegamos a 26ºC. De esta forma, damos más tiempo al sistema y reducimos el número de encendidos.
Lógicamente, esto también tiene consecuencias negativas, la principal es que en realidad ya no estamos intentando llegar al valor de consigna si no que nos conformamos en estar “más o menos cerca” de ella.
Cuanto más amplio sea el rango que aceptamos (por ejemplo, encendemos a 20Cº y apagamos a 28ºC) menos encendidos tendremos, pero estamos aumentando el rango de oscilación del sistema (en este ejemplo, 8º de temperatura de diferencia ¡es mucha diferencia para un sistema de climatización!)
En general, cuando hablamos de control todo o nada nos referimos a un control todo o nada con histéresis. No obstante, considerar que el caso sin histéresis es un caso particular de este, con el rango de valores +-0.
Simulación control todo o nada con histéresis
Ahora veremos la respuesta del control todo o nada con histéresis aplicado al mismo sistema y evolución de consigna que el anterior. En esta ocasión tenemos dos parámetros más, el umbral superior y umbral inferior.
K
Sup
Inf
Podemos comprobar que a medida que aumentamos el rango de umbral del control reducimos el tiempo entre encendidos, y estos son más largos. A cambio, lógicamente, aumenta la oscilación en torno a la consigna.
¿Cuando usar un control todo o nada?
Si el comportamiento del sistema es tan “justito” entonces, ¿por qué se usa tanto? Sin ir más lejos, el termostato que tienes en tu casa es un control todo o nada. Pues en muchas ocasiones se usa porque es sencillo de implementar y, aunque su comportamiento no sea el mejor, en general siempre funciona.
Además, es la única opción cuando tienes un sensor digital, aunque tengas un actuador analógico. Por ejemplo, imagina que tienes una bombilla que se enciende si estas por encima de 24º, y se apaga si estas por debajo.
No tienes más opciones que aplicar un todo o nada, porque cuando la luz se apaga no sabes si estas por encima 1º, o 20º. Y si no sabes nada sobre la planta, ni el entorno, cualquier otra estrategia es muy temeraria.
De forma similar, si tienes un sensor analógico, también es el único controlador si tienes un actuador digital puro. En nuestro ejemplo un botón en lugar de una palanca.
Si el actuador lo permite, podríamos jugar con hacer pequeñas pulsaciones en el botón para regular la acción (es decir, aplicar un PWM). Este caso podríamos considerarlo analógico, no digital. Pero no todos los actuadores digitales permiten un control pulsado.
En resumen, si tienes un sensor digital, o un actuador digital puro y no conoces la planta ni el entorno, no puedes hacer mucho más que emplear un control todo o nada.
Pero, si dispones de un sensor analógico y un actuador analógico (o pseudo analógico) emplear un todo o nada es un poco vagancia. Aunque bueno, es una opción sencilla y que funciona.
Implementar un control todo o nada en Arduino
Como decíamos, la sencillez es uno de los puntos fuertes del control todo o nada. Por tanto, es fácil implementarlo en un microprocesador como Arduino.
De hecho, vimos cómo implementar un control todo o nada en esta entrada. E incluso, tenéis la librería Arduino Threshold para que sea aún más sencillo.
Limitaciones del sistema
El control todo o nada (o su evolución, el control todo o nada con histéresis) tienen importantes limitaciones y, en general, una respuesta pobre.
El motivo es que el sistema dispone de poca información respecto a un sistema analógico, lo que se traduce en la falta de capacidad de modular la salida frente al error de la entrada. Por ejemplo, el control todo o nada aplica la misma acción si estamos a 23.8º que si estamos a 12ºC.
Resumiendo, cuales son las limitaciones de un controlador todo o nada con histéresis.
En primer lugar, vamos a tener múltiples encendidos en torno a la consigna, lo cual contribuye a un acortamiento de la vida útil del actuador.
Por otro lado, por su propio funcionamiento nunca vamos a poder alcanzar el valor de consigna suavemente, y deberemos conformarnos con estar dentro de “un rango aceptable” en torno a la misma.
Por otro lado, el comportamiento va a ser siempre de carácter oscilatorio (en general, similar a un diente de sierra), fruto de tener que actuar a tope, y después dejar que el sistema “caiga”.
Un buen ejemplo es un robot seguidor de línea que únicamente tiene dos sensores de infrarrojos. Veréis como oscilan continuamente en torno a la línea, porque tienen que hacer “barridos” para ver la línea.
En general, no es un sistema cómodo para el usuario, aunque, cómo siempre depende de las características del sistema. Puede que sea tolerable para un control de climatización, pero no es un controlador que quieras tener el control de velocidad de tu coche.
Imaginar un coche que acelera a tope para alcanzar la velocidad de crucero, y luego deja que la velocidad baje, y vuelve a acelerar a tope, dando pequeños tirones en torno a la velocidad de consigna.
Afortunadamente, tenemos controladores analógicos mejores. En la próxima veremos al rey indiscutible, el controlador PID.