El control On/Off, también conocido como control de dos posiciones o control bang-bang, es una estrategia que solo puede mandar encender o apagar según si la variable medida está por encima o por debajo del punto de consigna.
Es, con diferencia, el método más extendido en aplicaciones domésticas e industriales sencillas: desde el termostato de tu casa hasta el calentador de una pecera o el compresor de una nevera. Sin embargo, su simplicidad es un arma de doble filo que, si no se gestiona bien, puede destruir mecánicamente nuestros actuadores en cuestión de minutos.
La lógica del control On/Off puro
Como vimos en el artículo anterior, para cerrar el lazo necesitamos calcular el Error. En el control On/Off puro, la lógica es binaria y no admite términos medios.
Si definimos el error como e(t) = Setpoint - PV, la salida del controlador u(t) sería:
Es decir, si nos falta temperatura, encendemos el calentador al 100%. Si nos pasamos (aunque sea por 0.0001 graditos), lo apagamos totalmente.
El problema: el «ametrallamiento» (chattering)
En un mundo ideal, esto no funcionaría. En el mundo real, los sensores tienen ruido. Si estamos intentando mantener 25,0 °C y el sensor oscila por ruido electrónico entre 24,99 y 25,01 °C, el controlador ordenará conmutar al actuador cada vez que la medida cruce el punto de consigna.
Esto se conoce como chattering. Si usas un relé mecánico, escucharás un traqueteo rápido y reducirás mucho su vida útil: los contactos pueden dañarse por el arco eléctrico y el mecanismo, por fatiga.
La solución: la histéresis
Para evitar este desastre, nosotros introducimos una banda de histéresis o diferencial. En lugar de tener un único punto de conmutación, creamos dos: uno para encender y otro para apagar.
La histéresis es la tendencia de un sistema a conservar sus propiedades en ausencia del estímulo que las ha generado. En control, la usamos para crear una “zona de confort” donde el actuador no cambia de estado.
La lógica ahora se convierte en algo parecido a esto:
- Encender si la temperatura cae por debajo de
setpoint - histeresis. - Apagar si la temperatura sube por encima de
setpoint + histeresis.
De esta forma, si el sistema está a 25,0 °C con una semibanda de histéresis de 0,5 °C, el calentador no se encenderá hasta que bajemos de 24,5 °C y no se apagará hasta que lleguemos a 25,5 °C. La banda completa entre umbrales es, por tanto, de 1 °C. Hemos sacrificado precisión a cambio de proteger nuestro hardware.
Implementación en código con C++
Implementar esto en un microcontrolador es trivial, pero debemos ser cuidadosos con la estructura del if-else para que mantenga el estado correctamente.
const float setpoint = 25.0;
const float histeresis = 0.5;
bool estado_rele = false;
void loop() {
float temp_actual = leer_sensor();
if (temp_actual < (setpoint - histeresis)) {
estado_rele = true; // Forzamos encendido
}
else if (temp_actual > (setpoint + histeresis)) {
estado_rele = false; // Forzamos apagado
}
// Si la temperatura está "en medio", el estado_rele no cambia.
// Esto es lo que produce el efecto de memoria de la histéresis.
digitalWrite(PIN_RELE, estado_rele ? HIGH : LOW);
}
Simulador interactivo de histéresis
Para terminar de asimilar el concepto, hemos preparado este simulador. Puedes ajustar el setpoint (la temperatura que queremos) y el ancho de histéresis.
Observa cómo al aumentar la histéresis, el relé conmuta muchas menos veces (las líneas verticales de «Estado»), pero a cambio la temperatura real oscila más lejos de nuestro objetivo. Ese es el compromiso (trade-off) que tenemos que ajustar.
Ventajas y limitaciones del modelo On/Off
Como hemos podido ver, el control On/Off con histéresis es:
- Pros: Extremadamente robusto, fácil de entender y de programar. No requiere cálculos matemáticos complejos.
- Contras: En las aplicaciones habituales, la variable oscila entre los umbrales mientras el actuador conmuta. No mantiene un valor exacto en el setpoint, sino que se mueve alrededor de él.
Si tu aplicación permite esta oscilación (como el radiador de una habitación), perfecto. Si necesitas precisión o una variación mucho menor (como un dron manteniendo la altura), el control On/Off no sirve. Necesitas algo que sepa «graduar» la potencia.