01 · Punto de partida
Ripple cero, error chico
El on/off (Tema 29) oscila ±1 °C por diseño. El proporcional entrega potencia ∝ error: cerca de la consigna baja la llama en vez de apagarla. Resultado: ripple ≈ 0 pero queda un error permanente (droop) de +1,4 °C con Kp = 20 %/°C. Menos que el ripple, con otra naturaleza.
- ¿Cómo se calcula la potencia desde el error?
- ¿Qué es el droop y de qué depende?
- ¿Cómo se actúa proporcional sin DAC?
- ¿Qué agregan I y D?
02 · Ley P
Tanto error, tanta potencia
e = Tset − T; duty = Kp×e limitado a 0–100 %. Con Kp = 20 %/°C y e = 5 °C: 100 % (a fondo); con e = 1 °C: 20 %. El sistema se asienta donde el calor entregado iguala las pérdidas: con ambiente a 10 °C necesita 29 % → e = 1,43 °C → T = 18,57 °C (droop).
03 · PWM
El músculo digital
| Carga | Frecuencia | Driver |
|---|---|---|
| Calefactor | ~1 Hz | Relé/SSR o MOSFET |
| LED | kHz (sin parpadeo) | MOSFET + R serie |
| Motor dc | ~20 kHz (sin silbido) | Puente H + flyback |
El promedio es la potencia; la carga filtra el resto por inercia térmica, visual o mecánica. PWM ≠ analógico: los picos siguen siendo 100 % (un parlante lo notaría).
04 · I y D (idea)
Lo que P no puede
- I (integral)
- Suma el error en el tiempo y empuja hasta anularlo: elimina el droop. Riesgo: windup (se satura integrando de más): se limita o se apaga cerca del blanco.
- D (derivativa)
- Frena según la velocidad del error: anticipa sobrepicos. Riesgo: amplifica ruido (derivar es pasar-altos): se filtra antes.
- PID completo
- P + I + D con tres constantes: curso entero aparte. Idea mínima: P manda, I corrige lentos, D calma rápidos.
- Ajuste práctico
- Empezar solo P bajo, subir hasta oscilar, bajar a la mitad; luego I chico hasta borrar el droop. D solo si hay sobrepico rebelde.
05 · Proporcional en código
Droop número a número
Mismo ambiente del Tema 29, ley P en vez de relé: sin ciclos, con error permanente.
Python en tu navegador. Subí Kp y mirá el droop achicarse (sin desaparecer).
def control_p(tset=20.0, tamb=10.0, kp=20.0, horas=8, dt=5.0):
t = tset - 5
n = int(horas * 3600 / dt)
for _ in range(n):
u = min(max(kp / 100 * (tset - t), 0), 1)
t += ((0.01 * u) - 0.000333 * (t - tamb)) * dt
print(f"Kp={kp} tamb={tamb}: T={t:.2f}C err={tset-t:+.2f}C duty={u:.0%}")
return t
control_p(kp=5)
control_p(kp=20)
control_p(kp=100)
Kp 5/20/100 → errores +4,00/+1,43/+0,32 °C. Más Kp achica el droop: ¿qué lo frena? (Pista: retardos + Kp alto = oscilación.)
Frío exterior
control_p(kp=20, tamb=0.0)
control_p(kp=100, tamb=0.0)
06 · Analogía programador
Manejar con tacto
- 1P = pedal proporcional.
Más lejos del semáforo, más freno: llegar suave es modular, no bombear el pedal (on/off).
- 2Droop = llegar corto.
Frenar proporcional a la distancia deja el auto antes de la línea: I es el ajuste final.
- 3PWM = dithering.
Promediar pulsos para simular continuo: como half-toning en impresión o içi en audio.
07 · Exploración
Laboratorio: elegir Kp
Consigna 20 °C. Elegí Kp y clima: el laboratorio integra 8 h y muestra el régimen (sin animación: resultado directo).
Régimen P
Kp 20 · T 18,57 °C
Kp 20 · ambiente 10 °C: régimen 18,57 °C.
Preguntas para explorar
- Subí a Kp 100 con ambiente 10 °C. ¿Error? ¿Duty? ¿Por qué el duty casi no cambia?
- Bajá el ambiente a 0 °C con Kp 20. ¿Droop? ¿Qué lo empeora?
- On/off ±1 °C vs P con droop 1,43 °C: ¿cuál “gana”? ¿Por qué no hay respuesta única?
Ver respuestas sugeridas
- +0,32 °C y 32 %: el duty lo fija el clima (pérdidas), Kp solo reparte ese duty en más o menos error.
- +2,85 °C (57 % necesario): más frío = más potencia = más droop con el mismo Kp.
- Depende del proceso: on/off ripplea pero promedia justo; P es estable pero sesgado. Con I se tiene todo (casi).
08 · Comprensión
Confusiones frecuentes
«P elimina el error»
P necesita error para actuar: sin error, potencia cero, y con pérdidas hace falta potencia. Droop inevitable sin I.
«Más Kp siempre mejor»
Kp alto + retardo = oscilación: el sensor lejos y la inercia convierten corrección en sobrecorrección. Mitad del que oscila.
«PWM es analógico»
El promedio sí, los pulsos no: un calefactor los ignora, un parlante los canta. La carga decide si vale.
«D adivina el futuro»
D extrapola la pendiente actual: con ruido, extrapola disparates. D siempre con filtro, o mejor sin D.
09 · Práctica guiada
Ejercicios de matiz
Ejercicio 1: droop a mano
Ambiente 10 °C, Kp = 20. Calculá u necesario, droop y T final sin simular. Verificá con control_p().
Ver solución razonada
u = 0,000333×(T−10)/0,01 con T = 20−u×100/20… resolviendo: T ≈ 18,57 °C, u ≈ 29 %, droop +1,43 °C. El simulador confirma.
Ejercicio 2: LED con PWM
LED 20 mA a 5 V con MOSFET desde pin PWM 5 kHz. ¿R serie? ¿Duty para mitad de brillo (aprox)?
Ver solución
R = (5−2)/0,02 = 150 Ω. Brillo ≈ duty (ojo no lineal): 50 % se ve como ~70 %. PWM manda, el ojo promedia.
Ejercicio 3: I mental
Con droop +1,43 °C estable, ¿qué haría un término I con el tiempo? ¿Riesgo al arrancar en frío?
Ver solución
Integraría +1,43 hasta subir u y borrar el error. Riesgo: windup al arrancar (integra el error grande inicial): limitar I o activarlo cerca del blanco.
10 · Síntesis
Ideas para recordar
- u = Kp×e con PWM: sin ripple, con droop = u_nec/Kp.
- Kp 5/20/100 → +4,00/+1,43/+0,32 °C (ambiente 10 °C).
- Duty lo fija el clima; Kp reparte error.
- I borra droop (cuidado windup); D frena (cuidado ruido).
- Ajuste: P hasta oscilar, mitad; I chico después.
Matiz conseguido. Ahora a integrar todo: en el próximo tema, proyecto estación con alarma.