Electrónica Analógica · Tema 29

Control on/off con histéresis

El termostato de toda la vida: calentar hasta arriba, esperar hasta abajo, y que el relé sobreviva años. Un modelo térmico con sus números, la banda elegida por ciclos por día, lo que el retardo del sensor le hace al rizado, el Schmitt diseñado desde el NTC del Tema 26, el driver con su diodo y la falla segura que nadie piensa hasta que se prende fuego.

≈ 90 minutos NTC + Schmitt + 2N2222 + relé de 5 V Incluye 2 simuladores y Python

01 · Punto de partida

Prende, apaga, repite (sin morir)

Estufa, heladera, bomba de un tanque, incubadora, caldera: el control más usado del mundo es el on/off con banda muerta. Se enciende el actuador cuando la variable baja de un umbral, se apaga cuando sube de otro más alto, y entre los dos se queda como estaba. Sin esa diferencia entre umbrales el actuador tabletea (el repiqueteo del Tema 20); con una banda bien elegida conmuta decenas de veces por día y el relé dura años.

Una escena típica. Armás el termostato de una estufa: el NTC y el INA del Tema 26 entregan voltios, un Schmitt decide, un transistor maneja el relé. Funciona, pero a las tres semanas el relé empieza a pegarse. No había error de lógica: había una banda de 0,5 °C, 384 ciclos por día y un relé de 100 000 operaciones. Matemática de vida útil, no de electrónica.

Para un programador esto es un bucle de control con deadband: el mismo patrón que el autoscaling que evita sube-y-baja de instancias o el health check que no marca «caído» por una pérdida de un paquete. La diferencia es que acá cada transición tiene un costo físico: desgasta contactos, calienta, mete ruido en la fuente.

  • ¿Cómo se arma la cadena sensor → Schmitt → driver → carga?
  • ¿Cuántos ciclos por día da una banda y cuánto dura el relé?
  • ¿Por qué el rizado real es mayor que la banda?
  • ¿Cómo se calculan los umbrales a partir del NTC?
  • ¿Cómo se maneja un relé sin quemar el circuito?
  • ¿Qué pasa si el sensor se desconecta?

02 · La cadena

Sensor, decisión, músculo

NTC + puente + INA (Vin baja al subir T) →Schmitt 19/21 °C →driver + diodo → relé → calefactor
  1. 1
    Sensar: la cadena del Tema 26.

    NTC en puente más INA de ganancia 2 entregan, entre 19 y 21 °C, entre 0,68 y 0,45 V. La salida baja al subir la temperatura (el NTC pierde resistencia al calentarse, pero el puente está armado así).

  2. 2
    Decidir: el disparador de Schmitt del Tema 20.

    Dos umbrales: enciende cuando la temperatura baja de 19 °C y apaga cuando sube de 21 °C. Entre medio, memoria. Es el único elemento «inteligente» del lazo.

  3. 3
    Manejar: transistor y relé.

    El comparador entrega unos pocos miliamperios; la bobina de un relé de 5 V pide unos 70 mA y, al cortarla, genera un pico inductivo. El transistor hace de músculo y el diodo de rueda libre protege.

  4. 4
    Calentar: el actuador térmico.

    El calefactor calienta el ambiente con un retardo, y el sensor siente el ambiente con otro. El lazo cierra por la física, no por un cable.

La regla de oro del reparto: el comparador decide, el transistor suda, el relé cierra. Nunca se conecta una bobina directamente a la salida de un operacional o un comparador.

03 · El modelo térmico

Un ambiente es un sistema de primer orden

Un ambiente (una habitación, una caja, un tanque) tiene una capacidad térmica que se calienta con la potencia del calefactor y pierde calor hacia afuera en proporción a la diferencia con la temperatura exterior. El modelo más simple que captura lo esencial es una ecuación de primer orden, la misma forma que el RC de los Temas 3 y 23:

Con los valores del curso —a = 0,01 °C/s (36 °C por hora si no perdiera nada) y k = 0,000333 s⁻¹— resulta una constante de tiempo τ = 50 min y una temperatura de equilibrio con el calefactor siempre encendido de Tamb + 30 °C. Con 10 °C afuera, el máximo alcanzable es 40 °C; la consigna de 20 °C está lejos de él, y por eso el sistema oscila en lugar de apoyarse en un tope.

Con la banda entre Tbajo y Talto, la trayectoria es una exponencial en cada tramo, y los tiempos se calculan sin simular:

Consigna 20 °C, ambiente 10 °C: la banda cambia el período pero no el duty (calculado).
BandatontoffPeríodoCiclos/díaDuty
0,5 °C75 s150 s3,8 min38433 %
1 °C150 s301 s7,5 min19233 %
2 °C300 s603 s15,0 min9633 %
4 °C602 s1218 s30,3 min4833 %

El período es proporcional a la banda (mientras ésta sea chica frente a ΔTmáx), porque cada tramo recorre una fracción de la misma curva. Duplicar la banda duplica el período y reduce a la mitad los ciclos por día. El duty (33 %) es el trabajo promedio del calefactor y depende de cuánto pierde el ambiente: es simplemente k·(T − Tamb)/a, con un 33 % para 10 °C de diferencia.

El clima manda el duty: misma banda de 2 °C, distinta temperatura exterior (calculado).
TambtontoffPeríodoCiclos/díaDuty
0 °C601 s301 s15,0 min9667 %
5 °C400 s401 s13,4 min10850 %
10 °C300 s603 s15,0 min9633 %
15 °C240 s1218 s24,3 min5916 %
18 °C214 s3299 s58,6 min256 %

Fijate el máximo de ciclos en el medio (Tamb ≈ 5 °C: cuando el calentamiento y el enfriamiento son parecidos) y el mínimo en los extremos, donde un tramo domina. Un termostato conmuta más en otoño que en pleno invierno o en verano.

04 · Banda y vida útil

Elegir la banda: confort contra vida útil

La banda no se elige por la precisión del sensor sino por una negociación entre dos cosas medibles: el rizado que se tolera (confort o proceso) y los ciclos de vida del actuador. Un relé pequeño tiene del orden de 100 000 operaciones eléctricas a carga nominal (la hoja de datos da el valor para su modelo; la vida mecánica, sin carga, es de decenas de millones). La cuenta es directa:

Consigna 20 °C, ambiente 10 °C, relé de 100 000 ciclos (calculado).
BandaRizado idealCiclos/díaVida del reléVeredicto
0,5 °C±0,25 °C3840,7 años (8,6 meses)Se gasta antes de que lo notes
1 °C±0,5 °C1921,4 añosJusto, para un relé caro
2 °C±1 °C962,9 añosRazonable para una estufa
4 °C±2 °C485,8 añosVida larga, rizado visible
Una banda por confort, no por moda
±1 °C en una habitación es imperceptible; ±0,25 °C no lo percibe nadie. Para una incubadora o un proceso químico la tolerancia es otra, y entonces el on/off ya no es la herramienta (Tema 30).
Un compresor no tolera ciclos cortos
Una heladera no puede reiniciar el compresor en menos de 3 a 5 minutos: la presión del circuito no se igualó y arrancar contra ella lo quema. Se agrega un anti-ciclo corto: tiempo mínimo apagado (y encendido). Con una banda de 0,5 °C el ton de 75 s ya viola la regla.
Relé o estado sólido
El relé es barato, aislado y se gasta. Un SSR o un triac no tiene desgaste mecánico, pero calienta (cae ≈ 1 V a plena corriente), puede tener fuga y se pone en cortocircuito al fallar. Con 96 ciclos por día el relé va bien; con cientos, un SSR; con una carga inductiva fuerte, ambas con protección.

05 · Retardos

El sensor y el calefactor llegan tarde

El modelo ideal supone que el controlador ve la temperatura del aire al instante y que el calefactor deja de calentar en el momento en que se lo apaga. Ninguna de las dos cosas es cierta. Un NTC dentro de una cápsula o pegado a una placa tiene su propia inercia térmica (una constante de tiempo τs de decenas de segundos a minutos), y una resistencia calefactora gruesa sigue entregando calor mientras se enfría (τh).

El efecto es el de un conductor que frena tarde: el sistema sobrepasa la banda. La temperatura del aire sube por encima del umbral de apagado mientras el sensor aún no lo percibe, y baja por debajo del de encendido por el mismo motivo. El rizado real es mayor que la banda:

Banda de 2 °C, consigna 20 °C, ambiente 10 °C: rizado real del aire y ciclos por día según los retardos (simulado, segundo día).
τ sensorτ calefactorRizado realCiclos/díaVida del relé (100 000)
002,0 °C952,9 años
60 s02,6 °C763,6 años
180 s03,6 °C545,1 años
300 s04,5 °C446,2 años
0180 s2,5 °C545,1 años
120 s120 s3,4 °C475,8 años
300 s180 s4,9 °C328,6 años

Hay un efecto paradójico: el retardo alivia al relé (menos ciclos) y empeora el control (más rizado). Con un sensor lento de 300 s la banda «de 2 °C» produce un rizado de 4,5 °C y la mitad de los ciclos. Esto tiene consecuencias de diseño en las dos direcciones:

  • Si querés un rizado de ±1 °C, no alcanza con poner una banda de 2 °C: hay que medir el rizado real y achicar la banda para compensar el sobrepico.
  • El sensor debe ser rápido y estar donde importa: en el aire que se quiere regular, con buena circulación, no pegado a una pared ni al calefactor. Un sensor pegado al calefactor corta antes de que el ambiente se caliente: el ambiente queda frío y el lazo rápido.
  • Un sensor con inercia grande puede dar ciclos muy lentos y un rizado enorme sin que nada «falle» eléctricamente.

06 · El Schmitt

Los umbrales de 19 y 21 °C, desde el NTC

Con la cadena del Tema 26 (puente de 5 V con NTC de 10 kΩ, B = 3950, INA de ganancia 2 y REF = 0), la salida a las temperaturas de interés es: 0,676 V a 19 °C, 0,563 V a 20 °C y 0,449 V a 21 °C. Cada grado vale unos 113 mV: fuerte. Hace falta un Schmitt no inversor (la entrada sube cuando hace frío y la salida debe subir con ella para encender el calefactor), con la forma del Tema 20:

  1. 1
    Histéresis necesaria.

    0,676 − 0,449 = 0,227 V. Con un comparador que oscila entre 0 y 5 V (excursión de 5 V): R1/Rf = 0,227/5 = 0,045.

  2. 2
    Resistores de la serie E24.

    Rf = 100 kΩ y R1 = 4,7 kΩ dan R1/Rf = 0,047: histéresis de 0,235 V, es decir 2,07 °C. Un 1 % de error en R1 mueve la banda en 0,02 °C: irrelevante.

  3. 3
    Referencia.

    El umbral superior debe caer en 0,676 V con la salida en BAJO (0 V): Vref·1,047 = 0,676, es decir Vref = 0,646 V. Se obtiene de un divisor a 5 V (68 kΩ / 10 kΩ da 0,641 V) o, mejor, de un potenciómetro que permita ajustar el cero.

  4. 4
    Comprobar.

    Con 0,641 V: enciende a 19,04 °C y apaga a 21,12 °C. Un error de 1 % en Vref (6 mV) mueve ambos umbrales 0,06 °C. Los resistores de este circuito casi no tienen influencia; la referencia sí.

Una lección conocida: la histéresis es robusta y el centro es frágil. La banda (diferencia entre umbrales) depende de una relación de resistores y de la excursión de la salida; el centro (la consigna) depende directamente de la referencia, que debe ser estable (Tema 28). Por eso la consigna casi siempre se hace ajustable con un potenciómetro.

07 · Músculo

Driver, diodo de rueda libre y relé

La bobina de un relé de 5 V típico tiene 71 Ω y consume 70 mA. Un comparador como el LM358 entrega unos 20 mA como máximo y, alimentado a 5 V, su salida alta llega a unos 3,5 V. Hace falta un transistor que multiplique la corriente.

Transistor NPN con resistencia de base
Se lo usa como interruptor: saturado, con la ganancia forzada a ≈ 10. Ib = 70 mA/10 = 7 mA y Rb = (3,5 − 0,7)/7 mA = 400 Ω. Con 330 Ω (E12) llega a 8,5 mA: sobra y el transistor satura firme. Un 2N2222 aguanta 600 mA; para cargas de amperios, un MOSFET de nivel lógico (sin resistencia de base y sin corriente de control en continua).
Diodo de rueda libre (flyback)
La bobina almacena energía (≈ 0,5·L·I² ≈ 0,5 mJ con 0,2 H y 70 mA). Al cortar la corriente, la bobina impone la misma corriente por donde pueda, y sin un camino genera miles de voltios hasta romper el transistor. Un diodo en antiparalelo con la bobina (1N4148 o 1N4007), cátodo al positivo, le da ese camino. Sin él, el transistor muere en días. El costo: la bobina tarda más en soltar (el diodo mantiene la corriente unos milisegundos).
La carga de potencia
Los contactos del relé tienen una capacidad nominal para carga resistiva (por ejemplo 10 A a 250 V~); con cargas inductivas (motores, bobinas, transformadores) se degradan por el arco. Un RC en paralelo con el contacto (snubber, p. ej. 100 Ω y 100 nF) lo mitiga. Para calefactores de más de unos 2 A y muchos ciclos, un SSR con cruce por cero.
Aislamiento
El relé aísla la red de 220 V del circuito de bajo voltaje; un SSR óptico también. Todo lo que toque la red se aísla y se protege con fusible y, si corresponde, un termostato de seguridad mecánico independiente (ver la sección siguiente).

08 · Falla segura

Qué pasa si el sensor se desconecta

El diseño de un termostato incluye decidir qué hace cuando algo falla. El caso más traicionero: el cable del NTC se corta. En la cadena del Tema 26, un NTC abierto da VA = 5 V, una diferencia de +2,5 V y, con ganancia 2, +5,00 V a la salida. Eso, para el Schmitt, es «muchísimo frío»: la entrada sube por encima del umbral de encendido y el calefactor queda encendido para siempre. Una estufa que no puede apagarse es un incendio.

Salida de la cadena (G = 2) en operación y en falla (calculado).
CondiciónVin del SchmittLo que ve el termostato
21 °C (apagar)+0,449 VCalefactor OFF
19 °C (encender)+0,676 VCalefactor ON
0 °C (límite frío de la cadena)+2,71 VON (muy frío)
NTC abierto+5,00 VON para siempre
NTC en corto−5,00 VOFF (fuera de rango por debajo)

El principio es el de la programación defensiva: validar la entrada. Todo lo que cae fuera del rango físicamente posible (menos de −2,5 V o más de +3 V en este diseño, es decir, fuera de 0–50 °C) es una falla, y la respuesta es apagar. Se implementa con un comparador de ventana (dos comparadores y una compuerta) que fuerza el driver a OFF, o por software si hay un microcontrolador y un ADC. Dos reglas más de la misma familia:

  • Falla segura = actuador apagado. El relé de reposo abierto: si se corta la alimentación del control, el calefactor se apaga.
  • Un termostato de seguridad independiente, mecánico (bimetálico) o electrónico separado, en serie con el calefactor y calibrado a una temperatura límite. Si el control falla de cualquier forma, el segundo corta. En equipos que producen calor es obligatorio por norma, no por prolijidad.

09 · Simuladores

Dos experimentos: el termostato vivo y la vida del relé

El primero integra el modelo térmico completo —con la inercia del sensor y del calefactor— y muestra la temperatura del aire, la que ve el sensor, los umbrales y los intervalos en que el calefactor está encendido. El segundo calcula con las fórmulas del modelo la vida del relé en función de la banda.

SIMULADOR 29

Termostato vivo

dT/dt = a·u − k·(T − T_amb)

Temperatura del ambiente en cuatro horas Curva de la temperatura del aire (verde), de la que ve el sensor (naranja), los dos umbrales punteados y, abajo, las barras que indican cuándo el calefactor está encendido. TEMPERATURA DEL AIRE (VERDE) Y DEL SENSOR (NARANJA) · PUNTEADO = UMBRALES · BARRAS = CALEFACTOR ON
Ciclos por día95
Período15,2 min
Duty del calefactor33 %
Rizado real del aire / banda2,0 / 2,0 °C
Vida del relé (100 000 ciclos)2,9 años
EstadoOscila ✓

Recorrido guiado (10 minutos)

  1. 1
    Pestaña ①, «Ideal, banda 2 °C».

    El aire (verde) oscila entre los umbrales de 19 y 21 °C y el sensor (naranja) lo acompaña sin retardo. Las barras muestran el calefactor encendido el 33 % del tiempo: cinco minutos de calor y diez de espera, unos 95 ciclos por día, relé de casi 3 años.

  2. 2
    Pasá a «Banda 0,5 °C» y «Banda 4 °C».

    Con 0,5 °C el período baja a unos 4 minutos y los ciclos se cuadruplican (≈ 380 por día; el relé dura menos de un año); con 4 °C el período se duplica y el relé llega a casi 6 años. El duty sigue en 33 % en las tres: la banda reparte el mismo trabajo.

  3. 3
    Pasá a «Sensor lento (300 s)».

    El sensor (naranja) llega tarde: el aire sobrepasa los umbrales, el rizado real es de 4,5 °C con una banda «de 2 °C», y los ciclos caen a la mitad. El relé vive más y el confort empeora.

  4. 4
    Pasá a «Calefactor con inercia».

    Tras apagarse, la resistencia sigue entregando calor: el aire se pasa por arriba del umbral. Es el mismo efecto por otro camino; ahí el sobrepico es solo hacia arriba en cada ciclo.

  5. 5
    Pasá a «Día templado (18 °C)».

    Con el exterior casi igual a la consigna el calefactor trabaja el 6 % del tiempo: pocos minutos de calor y casi una hora de espera. Cae el número de ciclos pero el sistema es lento a reaccionar a una perturbación.

  6. 6
    Movete con «Temperatura exterior» en ①.

    Con 0 °C el duty sube al 67 %; con 5 °C hay más ciclos por día que con 0 o con 10. El control no cambia: cambia la demanda.

  7. 7
    Pestaña ②, «Estufa, banda 2 °C».

    La curva muestra los años de vida contra la banda: bajando la banda la vida se hunde en proporción inversa. El punto en 2 °C marca 2,9 años; la zona sombreada empieza en unos 3,5 °C.

  8. 8
    Pasá a «Compresor (lockout 5 min)».

    Con banda de 0,5 °C el ton es de 75 s y el toff de 150 s: no cumplen 5 minutos de espera. El simulador lo marca. Hay que agrandar la banda o agregar un temporizador.

Preguntas para pensar

  1. En ①, ¿cuántos ciclos por día da una banda de 2 °C con el exterior a 0 °C? ¿Y el duty?
  2. En ①, con sensor lento de 300 s, ¿cuánto vale el rizado real? ¿Qué banda pondrías para tener ±1 °C?
  3. En ②, ¿qué banda necesita un relé de 100 000 ciclos para durar 5 años con el exterior a 10 °C?
  4. En ②, ¿por qué un compresor con lockout de 5 minutos exige una banda mucho mayor?
Ver respuestas sugeridas
  1. Unos 96 ciclos por día (ton 601 s, toff 301 s) y un duty de 67 %: el calefactor trabaja el doble.
  2. Unos 4,5 °C pico a pico. Para ±1 °C reales (2 °C) hace falta achicar la banda configurada, quizás a 0,5–1 °C, a costa de más ciclos; mejor sería un sensor más rápido (menos inercia), que baja el sobrepico sin costo de relé.
  3. 5 años son 1825 días: 100 000/1825 ≈ 55 ciclos por día, es decir un período de ≈ 26 min: una banda de ≈ 3,5 °C.
  4. Porque el período es proporcional a la banda. Para toff ≥ 300 s con 10 °C afuera hace falta una banda de ≥ 1 °C (toff de 301 s), y para ton ≥ 300 s, de ≥ 2 °C. El compresor impone un piso de banda.

10 · En código

El termostato, simulado y diseñado en Python

Cuatro herramientas: las fórmulas cerradas contra la simulación paso a paso, el efecto de los retardos sobre el rizado, el diseño del Schmitt a partir de la cadena del NTC, y el driver del relé con la vida útil.

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar. Ejecutalos en orden.

Paso 1: fórmulas cerradas contra simulación

import math

HEAT, LOSS = 0.01, 0.000333                           # °C/s con el calefactor ON; 1/s de pérdida
TAU = 1 / LOSS


def analitico(tset, banda, tamb):
    bajo, alto = tset - banda / 2, tset + banda / 2
    tmax = tamb + HEAT / LOSS
    ton = TAU * math.log((tmax - bajo) / (tmax - alto))
    toff = TAU * math.log((alto - tamb) / (bajo - tamb))
    return ton, toff, 86400 / (ton + toff), ton / (ton + toff)


def simular(tset, banda, tamb, tau_s=0.0, tau_h=0.0, dt=1.0):
    bajo, alto = tset - banda / 2, tset + banda / 2
    t = ts = bajo
    h, on, previo = 1.0, True, True
    ciclos, t_on, tmin, tmax = 0, 0.0, 1e9, -1e9
    pasos = int(86400 / dt)
    for i in range(2 * pasos):                         # el primer día es transitorio: se mide el segundo
        if on and ts >= alto:
            on = False
        elif not on and ts <= bajo:
            on = True
        h += (on - h) / tau_h * dt if tau_h else (on - h)
        t += (HEAT * h - LOSS * (t - tamb)) * dt
        ts += (t - ts) / tau_s * dt if tau_s else (t - ts)
        if i >= pasos:
            tmin, tmax = min(tmin, t), max(tmax, t)
            t_on += dt if on else 0
            ciclos += 1 if previo and not on else 0
        previo = on
    return ciclos, t_on / 86400, tmax - tmin


print(f"tau = {TAU / 60:.1f} min, temperatura máxima con ambiente de 10 C = {10 + HEAT / LOSS:.0f} C")
print("Fórmula cerrada frente a simulación (consigna 20 C, ambiente 10 C):")
for banda in (0.5, 1, 2, 4):
    ton, toff, cd, duty = analitico(20, banda, 10)
    c, d, r = simular(20, banda, 10)
    print(f"  banda {banda:3.1f}: t_on {ton:4.0f} s, t_off {toff:5.0f} s, {cd:5.1f} ciclos/dia, duty {duty:.0%}, rele {100000 / cd / 365:.1f} años | simulado: {c} ciclos, duty {d:.0%}, rizado {r:.2f} C")
print("El clima manda el duty (banda de 2 C):")
for tamb in (0, 5, 10, 15, 18):
    ton, toff, cd, duty = analitico(20, 2, tamb)
    print(f"  exterior {tamb:2d} C: {cd:5.1f} ciclos/dia, duty {duty:.0%}")

La fórmula y la simulación coinciden: 384, 192, 96 y 48 ciclos/día (379, 191, 95 y 47 simulados; la diferencia es de discretización), duty de 33 % en todas, y vida del relé de 0,7, 1,4, 2,9 y 5,8 años. Con exterior de 0 °C el duty sube a 67 % y con 18 °C baja a 6 %.

Paso 2: lo que el retardo le hace al rizado

print("Banda de 2 C, consigna 20 C, ambiente 10 C: efecto de la inercia del sensor y del calefactor")
print("  tau_s  tau_h  ciclos/dia  rizado real  rele (100k)")
for tau_s, tau_h in ((0, 0), (60, 0), (180, 0), (300, 0), (0, 180), (120, 120), (300, 180)):
    c, d, r = simular(20, 2, 10, tau_s, tau_h)
    print(f"  {tau_s:5d}  {tau_h:5d}  {c:9d}  {r:9.2f} C  {100000 / c / 365:6.1f} años")

Sin retardos: 95 ciclos y 2,0 °C de rizado. Con un sensor de 300 s: 44 ciclos y 4,5 °C. Con sensor de 300 s y calefactor de 180 s: 32 ciclos y 4,9 °C. El retardo reduce los ciclos y aumenta el rizado: el relé se salva y el confort se pierde. Probá simular(20, 1, 10, 300, 0): con una banda de 1 °C y un sensor lento, ¿qué rizado queda?

Paso 3: el Schmitt diseñado desde el NTC

B, R0 = 3950.0, 10000.0


def rx(t_c):
    return R0 * math.exp(B * (1 / (t_c + 273.15) - 1 / 298.15))


def v_cadena(t_c, g=2.0):
    return g * (5 * rx(t_c) / (10000 + rx(t_c)) - 2.5)      # NTC en puente de 5 V más INA (Tema 26)


def temp_de(v):
    lo, hi = -10.0, 60.0                                    # bisección: v_cadena baja al subir T
    for _ in range(60):
        m = (lo + hi) / 2
        lo, hi = (m, hi) if v_cadena(m) > v else (lo, m)
    return (lo + hi) / 2


v_on, v_off = v_cadena(19), v_cadena(21)
print(f"19 C = {v_on:.3f} V | 20 C = {v_cadena(20):.3f} V | 21 C = {v_off:.3f} V | {abs(v_cadena(20.5) - v_cadena(19.5)) * 1000:.0f} mV/C")
VH, VL = 5.0, 0.0
k_ideal = (v_on - v_off) / (VH - VL)
print(f"histéresis {v_on - v_off:.3f} V -> R1/Rf = {k_ideal:.4f}")
r1, rf = 4.7e3, 100e3
k = r1 / rf
vref = 5 * 10 / (68 + 10)                                  # divisor 68k / 10k
sube = vref * (1 + k) - VL * k                              # umbral con la salida en BAJO
baja = vref * (1 + k) - VH * k                              # umbral con la salida en ALTO
print(f"R1 = 4,7k, Rf = 100k (k = {k:.3f}), Vref = {vref:.3f} V: umbrales {sube:.3f} V y {baja:.3f} V")
print(f"enciende a {temp_de(sube):.2f} C, apaga a {temp_de(baja):.2f} C (banda {temp_de(baja) - temp_de(sube):.2f} C)")
print(f"un 1 % de error en Vref mueve la consigna {0.01 * vref * (1 + k) / (abs(v_cadena(20.5) - v_cadena(19.5))):.3f} C; 1 % en R1, la banda {k * 0.01 * 5 / abs(v_cadena(20.5) - v_cadena(19.5)):.3f} C")
print(f"falla: NTC abierto = {2.0 * (5.0 - 2.5):+.2f} V (calefactor ON para siempre) | rango válido 0-50 C: {v_cadena(50):+.2f} a {v_cadena(0):+.2f} V")

19 °C = 0,676 V, 21 °C = 0,449 V, 113 mV/°C. Con R1 = 4,7 kΩ, Rf = 100 kΩ y Vref = 0,641 V (divisor de 68 k/10 k), el termostato enciende a 19,04 °C y apaga a 21,12 °C. Un error de 1 % en Vref mueve la consigna 0,06 °C, y en R1, la banda 0,02 °C. Y el NTC abierto da +5,00 V, fuera del rango válido de −2,36 a +2,71 V.

Paso 4: el driver del relé y su vida

V_BOBINA, I_BOBINA = 5.0, 0.070
V_SALIDA_ALTA, V_BE, BETA_FORZADA = 3.5, 0.7, 10.0

print(f"bobina: R = {V_BOBINA / I_BOBINA:.0f} ohm, consumo {V_BOBINA * I_BOBINA * 1000:.0f} mW")
ib = I_BOBINA / BETA_FORZADA
rb_ideal = (V_SALIDA_ALTA - V_BE) / ib
print(f"corriente de base con ganancia forzada de {BETA_FORZADA:.0f}: {ib * 1000:.0f} mA -> Rb = {rb_ideal:.0f} ohm")
rb = 330.0
ib_real = (V_SALIDA_ALTA - V_BE) / rb
print(f"con Rb = {rb:.0f} ohm (E12): Ib = {ib_real * 1000:.1f} mA, ganancia forzada real = {I_BOBINA / ib_real:.1f} (saturado)")
energia_uj = 0.5 * 0.2 * I_BOBINA ** 2 * 1e6
print(f"energía de la bobina (L = 0,2 H): {energia_uj:.0f} uJ -> sin diodo, la punta rompe el transistor")

print("Vida del relé de 100 000 ciclos según los ciclos por día:")
for cd in (384, 192, 96, 48, 24):
    print(f"  {cd:3d} ciclos/dia: {100000 / cd / 365:5.1f} años")

La bobina de 71 Ω consume 350 mW. Con ganancia forzada de 10 hacen falta 7 mA de base y 400 Ω; con 330 Ω (E12) llegan 8,5 mA y el transistor satura firme. La bobina almacena ≈ 490 µJ, que sin el diodo de rueda libre se descargan en una punta de cientos de voltios. Y la vida: 0,7, 1,4, 2,9, 5,7 y 11,4 años para 384, 192, 96, 48 y 24 ciclos por día.

11 · Analogía de programador

Deadband, flapping y circuit breakers

El mismo oficio, en dos mundos.
En softwareEn el termostato
Un autoscaler con umbral de subida del 80 % y de bajada del 40 %El Schmitt: dos umbrales y memoria para que el estado no oscile
Flapping: un servicio que alterna sano y caído cada segundoEl repiqueteo de un comparador sin histéresis
Un recurso con costo por arranque (abrir una conexión, lanzar un proceso)Cada ciclo del relé gasta vida útil: menos arranques, más años
Un job grande y pocos ciclos frente a muchos jobs chicosBanda ancha: mismo trabajo (duty) en menos y más largos turnos
Métricas con retardo: reaccionás a lo que pasó hace 5 minutosLa inercia del sensor: el controlador ve un aire que ya cambió y se pasa de largo
Cooldown tras un escalado para no volver a decidir enseguidaEl anti-ciclo corto del compresor: tiempo mínimo entre arranques
Un circuit breaker que corta ante datos imposibles y abre en fallaLa falla segura: sensor fuera de rango, calefactor apagado
Un watchdog independiente del proceso que supervisaEl termostato de seguridad en serie con el calefactor

La fila de los retardos es la más instructiva: un controlador con deadband sobre una métrica con retardo sobrepasa siempre, en cualquier dominio. La solución es la misma: o la medición es más rápida, o el controlador anticipa (que es lo que hace el control proporcional, el tema que viene).

12 · Comprensión

Confusiones frecuentes

«Banda cero es mejor control»

Banda cero es repiqueteo: el relé conmuta al ritmo del ruido y muere en días. Una banda de 0,5 °C ya da 384 ciclos por día y menos de un año de vida. La banda protege al actuador, no al orgullo del diseñador.

«La banda de 2 °C produce un rizado de 2 °C»

Es el mínimo, no el real. Con sensor lento o calefactor con inercia el aire sobrepasa los umbrales: 4,5 °C reales con un sensor de 300 s. El rizado se especifica y se mide, no se deduce de la banda.

«Una banda más angosta consume más energía»

El duty, es decir la energía promedio, depende de las pérdidas y no de la banda: 33 % en las cuatro bandas del ejemplo. La banda solo cambia el tamaño de los turnos. Sí cambia el desgaste del actuador.

«Relé directo al comparador»

El comparador entrega ≈ 20 mA y el relé pide 70 mA más el pico inductivo. Hace falta un driver y un diodo de rueda libre; sin ellos se quema la salida o el transistor.

«Si el sensor se rompe, el termostato se apaga»

Depende de cómo falle. Con el NTC del tema, abierto da la lectura de «muchísimo frío» y el calefactor queda encendido para siempre. Hay que validar el rango y forzar la salida a OFF, más un termostato de seguridad independiente.

«El sensor va lo más cerca posible del calefactor»

Pegado al calefactor corta antes de que el ambiente se caliente: el ambiente queda frío. Va en el aire que se quiere regular, lejos de la fuente de calor y de las corrientes de aire falsas.

«On/off es lo mismo que PID»

El on/off tiene rizado inherente y ni anticipa ni corrige finamente: para ±0,1 °C hace falta control proporcional o PID (Tema 30). Cada estrategia tiene su liga.

13 · Práctica guiada

Ejercicios de control

Ejercicio 1: bomba con 30 % y 70 %

Un tanque tiene un sensor de nivel de 0 a 5 V que corresponde a 0–100 %. Diseñá un Schmitt que encienda la bomba por debajo de 30 % y la apague por encima de 70 %. ¿Qué umbrales, qué lógica y qué driver?

Ver solución razonada

Umbrales 1,5 V y 3,5 V: la bomba se enciende cuando el nivel baja de 1,5 V y se apaga cuando sube de 3,5 V. Como la bomba debe estar ON con la entrada baja, el Schmitt es inversor (Tema 20): salida ALTA con la entrada baja, y umbral Vref + β·(Vsalida − Vref). Con salida de 0 a 5 V: con la salida en 0 el umbral es Vref·(1 − β) = 1,5 V, y con la salida en 5 V es 1,5 + 5β = 3,5 V, de modo que β = 0,4 y Vref = 2,5 V (un divisor de 10 k/10 k). La realimentación positiva con β = 0,4 sale, por ejemplo, de 15 kΩ y 10 kΩ. Luego un NPN o MOSFET con diodo de rueda libre sobre el relé de la bomba.

Ejercicio 2: vida del relé de una heladera

Una heladera tiene una banda de 3 °C y arranca 60 veces por día, con un relé de 100 000 ciclos. ¿Cuántos años? ¿Y si la banda se achica a 1 °C? ¿Cumple un compresor de 5 minutos mínimos apagado?

Ver solución razonada

100 000/(60 × 365) = 4,6 años. Con la banda a 1/3, los ciclos suben a ≈ 3× (180 por día): 1,5 años. El período pasa de 24 min (60 ciclos por día) a 8 min (180): si el compresor necesita 5 min de espera mínima, con 8 min de período casi no queda margen para trabajar. La banda se paga o se cobra.

Ejercicio 3: ¿qué banda para 5 años?

Con el modelo del tema (consigna 20 °C, exterior 10 °C) y un relé de 100 000 ciclos, ¿qué banda da 5 años de vida? Verificalo con analitico.

Ver solución razonada

5 años = 1825 días → 100 000/1825 = 54,8 ciclos por día → período de 26,3 min. Como el período es proporcional a la banda (15,05 min para 2 °C), la banda es 2 × 26,3/15,05 ≈ 3,5 °C. Con analitico(20, 3.5, 10) da ≈ 54 ciclos por día: 5,1 años.

Ejercicio 4: diseñar el termostato de 23 °C

Cambiá la consigna a 23 ± 1 °C con la misma cadena (G = 2). ¿Qué tensiones corresponden a 22 y 24 °C? ¿Qué histéresis y Vref necesitás?

Ver solución razonada

Con v_cadena: 22 °C ≈ +0,336 V, 23 °C ≈ +0,224 V y 24 °C ≈ +0,111 V (≈ 0,11 V/°C). La histéresis es de 0,225 V, R1/Rf ≈ 0,045 (R1 = 4,7 kΩ con Rf = 100 kΩ, como antes) y Vref ≈ 0,336/1,047 ≈ 0,32 V. La banda es la misma; el centro se corrió con la referencia. Tensiones tan chicas exigen una referencia muy estable y un potenciómetro fino.

Ejercicio 5: el relé que se pega

Un termostato con relé de 10 A para una estufa de 800 W (3,6 A) tiene el contacto soldado a los 4 meses. La banda es de 0,5 °C. ¿Qué dos causas revisás y qué corregís?

Ver solución razonada

(1) Demasiados ciclos: 384 por día × 120 días ≈ 46 000 ciclos, de los 100 000 nominales y con contactos que ya estaban castigados. Ensanchar la banda a 2 °C. (2) Arco en el corte: una resistencia calefactora es casi resistiva, pero si hay un ventilador (inductivo) o chispa por falta de snubber, el arco funde el contacto. Agregar un RC en paralelo o pasar a un SSR con cruce por cero.

Ejercicio 6: diagnosticar síntomas

(a) La estufa queda encendida aunque el cuarto esté a 30 °C. (b) El relé hace «tic-tic» rápido cerca de la consigna. (c) El cuarto oscila entre 17 y 23 °C con una banda configurada de 2 °C. (d) El transistor del driver se quema en pocas semanas.

Ver solución razonada

(a) Sensor abierto (lectura de «muy frío») o transistor en corto: validar el rango y forzar OFF; termostato de seguridad. (b) Sin histéresis o con histéresis menor que el ruido: revisar R1/Rf y el cableado de realimentación (Tema 20). (c) Retardos: sensor lento o sensor mal ubicado; mover el sensor al aire, usar uno más rápido, achicar la banda. (d) Falta el diodo de rueda libre o está al revés, o el transistor no satura (ganancia forzada insuficiente).

14 · Síntesis

Ideas para recordar

  • La cadena on/off: sensor → Schmitt → driver con diodo de rueda libre → relé. El comparador decide, el transistor suda.
  • Un ambiente es de primer orden: dT/dt = a·u − k·(T − Tamb), con τ = 1/k (50 min) y Tmáx = Tamb + a/k.
  • ton = τ·ln[(Tmáx − Tbajo)/(Tmáx − Talto)] y toff = τ·ln[(Talto − Tamb)/(Tbajo − Tamb)]: el período es proporcional a la banda.
  • La banda se elige por ciclos por día: 0,5 °C → 384/día → 0,7 años; 2 °C → 96/día → 2,9 años; 4 °C → 48/día → 5,8 años.
  • El duty lo fija el clima (33 % con 10 °C afuera), no la banda; la banda reparte el mismo trabajo en más o menos arranques.
  • El retardo del sensor o del calefactor produce sobrepico: rizado real mayor que la banda (4,5 °C con un sensor de 300 s), pero menos ciclos.
  • Schmitt desde el NTC: 0,676 V a 19 °C y 0,449 V a 21 °C; R1 = 4,7 kΩ, Rf = 100 kΩ, Vref ≈ 0,64 V. La banda es robusta, el centro depende de la referencia.
  • Driver: Rb con ganancia forzada de 10 (330 Ω); diodo de rueda libre siempre; snubber o SSR para cargas fuertes.
  • Falla segura: el NTC abierto lee «muy frío» y enciende para siempre; validar el rango, forzar OFF y poner un termostato de seguridad independiente.

¿Listo para el Tema 30?

Podés avanzar si sos capaz de responder esto sin mirar:

  • Calcular ton, toff, ciclos por día y duty de un termostato con el modelo de primer orden.
  • Elegir la banda a partir de la vida del relé y del rizado tolerable.
  • Explicar por qué los retardos aumentan el rizado y disminuyen los ciclos.
  • Diseñar el Schmitt (R1, Rf, Vref) desde las tensiones de la cadena del NTC.
  • Dimensionar el driver del relé y justificar el diodo de rueda libre.
  • Identificar la falla del sensor abierto y diseñar la respuesta segura.

El on/off no puede hacer mejor que oscilar: o está todo encendido o todo apagado. Para acercarse a la consigna con matices —calentar más cuando falta mucho, menos cuando falta poco— hace falta otra idea. En el próximo tema: el control proporcional.