Simulador de controlador PID para sistemas de robótica
Sintoniza ganancias proporcional, integral y derivativa visualizando respuesta temporal, error, saturación y perturbaciones en un simulador PID interactivo.
- Categoría
- Sistemas de control
- Tiempo
- 60–120 min
- Plataforma
- Browser · Arduino
01 / Empieza aquí
Introducción
El control PID es ubicuo en robótica: velocidad de ruedas, rumbo, posición de articulaciones y balance dependen de la retroalimentación. Este proyecto convierte la teoría de control en un experimento visual interactivo. Modifica ganancias, perturba la planta y relaciona la curva resultante con el código que implementarías en un Arduino o microcontrolador embebido.
Live lab / Deterministic sampled control loop
PID controller simulator
Drive a second-order plant toward a setpoint. Tune each gain, inject a load, and watch response, error, and control effort in real time.
Three stacked plots share a scrolling time axis: measured output against the setpoint line, tracking error around zero, and control effort inside the shaded actuator-limit band.
- Setpoint
- 1.00
- Measured
- 0.000
- Error
- 1.000
- Control
- 0.000
- Overshoot
- 0%
- Steady-state error
- 1.000
Keyboard: focus the plots, then use Space to run/pause, N to step, R to reset, G to toggle the load, and F for full screen.
Controles
El simulador expone la consigna, las ganancias proporcional, integral y derivativa, el intervalo de muestreo, el límite del actuador y la magnitud de la perturbación. Las gráficas alineadas muestran la consigna, la salida medida, el error y el esfuerzo de control. Reiniciar limpia la memoria del controlador para que los experimentos sigan siendo comparables.
Teoría
Un controlador por realimentación calcula el error como consigna menos medición. La acción proporcional reacciona de inmediato, la acción integral acumula el error persistente, y la acción derivativa responde a la velocidad de cambio. Su suma se convierte en la orden al actuador.
El rendimiento del controlador está limitado por la planta. Muestrear demasiado despacio oculta el movimiento; excitarse por encima del límite del actuador provoca saturación; las mediciones ruidosas hacen inestable un término derivativo sin filtrar. Por eso la sintonización es un experimento que implica tanto al controlador como al sistema.
Algoritmo
- Lea la medición a un intervalo fijo y calcule el error.
- Acumule una integral acotada usando el paso de tiempo real.
- Estime la derivada a partir de la medición o del error y aplique el filtrado adecuado.
- Sume los tres términos ponderados y acote al rango del actuador.
- Aplique la orden, guarde la muestra anterior y registre las métricas.
- Reinicie la integral y el historial cuando cambien sustancialmente el modo de control o la planta.
Código fuente
Esta implementación incluye una condición sencilla de anti-windup:
float updatePid(float setpoint, float measured, float dt) {
const float error = setpoint - measured;
const float derivative = (error - previousError) / dt;
const float candidateIntegral = integral + error * dt;
const float raw = kp * error + ki * candidateIntegral + kd * derivative;
const float output = constrain(raw, outputMin, outputMax);
if (raw == output) integral = candidateIntegral;
previousError = error;
return output;
}
Los controladores de producción también definen el comportamiento ante mediciones inválidas, desbordamientos de temporizador, transiciones de modo y averías de actuador.
Suposiciones y diferencias con el hardware
La planta de aquí es un modelo limpio de segundo orden con masa, amortiguación y retardo conocidos
que usted fija con los deslizadores, no un motor real con fricción, zona muerta, par que se desvanece
con la velocidad y un driver que se calienta. El muestreo es fijo por construcción, así que el
término derivativo se mantiene bien comportado; en un Arduino, delay() u otro trabajo bloqueante
hace que el intervalo oscile y que el término D se mal comporte aunque las ganancias no cambien. La
saturación del actuador se modela como un recorte duro con anti-windup incluido, pero un sistema
físico también tiene límites de corriente, caída de alimentación y calor que cambian el límite
mientras funciona. Ajuste la forma aquí y después verifique en hardware, donde la planta solo se
conoce de forma aproximada.
Diagrama de circuito
El sensor de realimentación informa de la salida real; no es un sustituto de la limitación de corriente ni de una parada de seguridad por hardware. El controlador compara la consigna con la lectura condicionada del sensor, y después maneja el actuador a través de una etapa PWM dimensionada para la carga.
Experimentos guiados
Leer sobre el sobreimpulso no es lo mismo que producirlo a propósito. Cada experimento de abajo tarda un par de minutos y aísla exactamente un efecto.
1. Hallar la ganancia última
Ponga Ki y Kd a cero. Suba Kp hasta que la salida oscile con amplitud constante, ni
creciendo ni decreciendo. Anote esa ganancia (Ku) y el periodo de oscilación (Tu).
Esos dos números son todo lo que necesita para una primera sintonización:
| Controlador | Kp |
Ki |
Kd |
|---|---|---|---|
| PID (clásico) | 0.6 Ku |
1.2 Ku / Tu |
0.075 Ku Tu |
| PID (sin sobreimpulso) | 0.2 Ku |
0.4 Ku / Tu |
0.066 Ku Tu |
Introdúzcalos y compare. La fila clásica es agresiva y sobrepasa entre un 20 % y un 40 %; la segunda llega sin sobreimpulso y tarda más. Ninguna de las dos es «correcta»: son respuestas distintas a requisitos distintos, que es justo la idea.
2. Ver cómo ocurre el windup integral
Ponga el límite del actuador bajo —alrededor del 20 % de su rango— y luego mande un escalón grande de consigna. Mire la gráfica del esfuerzo de control: se satura de inmediato y se queda ahí, mientras la integral sigue acumulando error sobre el que no puede actuar. Cuando la salida por fin alcanza la consigna, toda esa acción almacenada se descarga y el sistema se pasa de largo.
Ahora suba el límite del actuador y repita con las mismas ganancias. El sobreimpulso desaparece en su mayor parte. No ha cambiado nada del controlador, y esa es la lección. El windup es una propiedad de la interacción entre el controlador y un actuador que satura, no de las ganancias.
3. Demuestre que lo que mata al lazo es la latencia, no el ruido
Suba el intervalo de muestreo desde su valor mínimo en escalones, con las ganancias fijas. La respuesta se degrada mucho antes de que la gráfica parezca ruidosa: primero crece el sobreimpulso, después aparece la oscilación y luego se vuelve inestable.
| Intervalo de muestreo | Lo que ve con una sintonización por lo demás buena |
|---|---|
| 5 ms | Limpia, tal como se sintonizó |
| 20 ms | Algo más de sobreimpulso |
| 50 ms | Oscilación visible |
| 100 ms | Oscilación sostenida |
| 200 ms | Inestable |
Por eso quitar un delay() del bucle de un robot a menudo mejora el seguimiento más que cualquier
cantidad de sintonización. La información obsoleta no la recupera una ganancia.
4. Dele ruido al término derivativo
Suba la magnitud de la perturbación con Kd a cero, y luego suba Kd. La traza del esfuerzo de
control se vuelve escarpada mucho antes de que lo haga la salida: está viendo cómo la derivación
amplifica contenido de alta frecuencia, exactamente como debe.
Ese comportamiento es la razón de que la gente concluya que D no sirve y lo ponga a cero. La solución real está aguas arriba: filtre la medición, o filtre el propio término derivativo.
Qué debería observar
| Ajuste | Forma esperada | Si ve otra cosa |
|---|---|---|
Solo Kp, bajo |
Sube despacio, se asienta por debajo de la consigna | — |
Solo Kp, alto |
Sobrepasa, oscila, decae | Una oscilación que crece significa que ha pasado de Ku |
Kp + Kd |
Subida rápida, poco sobreimpulso, pequeño desvío permanente | Un esfuerzo escarpado significa que D está amplificando ruido |
Kp + Ki |
Alcanza la consigna exacta, más despacio | Pasarse de largo significa windup o demasiado Ki |
| PID completo | Rápido, sobreimpulso mínimo, sin desvío | — |
El desvío permanente con P y D pero sin I merece la pena producirlo a propósito una vez. Es la demostración más clara de para qué sirve realmente el término integral: la acción proporcional necesita un error distinto de cero para producir alguna salida, así que necesariamente aparca ligeramente corto.
Llevarlo al hardware
Las ganancias encontradas aquí son un punto de partida, no una transferencia. Lo que se traslada perfectamente es el procedimiento; lo que no se traslada son los números, porque describen esta planta.
| Este laboratorio | Un robot real |
|---|---|
| El intervalo de muestreo es exacto | Oscila salvo que mida dt y lo pase |
| La planta es un modelo limpio de segundo orden | Fricción, zona muerta, par que se desvanece con la velocidad |
| El límite del actuador es un recorte duro | También límites de corriente, caída de alimentación y calor |
| Sin ruido de sensor salvo que usted lo añada | Siempre hay ruido, y rara vez gaussiano |
| La planta nunca cambia | La tensión de la batería, la carga y la temperatura la cambian |
La última fila es la que más confusión causa en la práctica. Una sintonización que es perfecta con pilas nuevas será perezosa con pilas descargadas, porque la misma orden ahora produce menos par. Eso no es un fallo del método: las ganancias son propiedades de la planta, y la planta se movió. Las respuestas profesionales son un lazo de velocidad por debajo, o el escalado de ganancias. Recorra cómo sintonizar un controlador PID para el procedimiento completo, y luego llévelo al laboratorio del seguidor de línea donde la planta responde.
Lista de hardware
Componentes
- Microcontrolador con temporizador estable
- Planta física instrumentada (motor de CC o servo)
- Encoder, potenciómetro u otro sensor de retroalimentación
- Etapa de potencia dimensionada para el actuador
- Fuente de alimentación regulada y parada de emergencia
Explora el grafo
Dónde se usa este simulador
Los proyectos, rutas de aprendizaje y tutoriales que se basan en este laboratorio.
Sigue construyendo
Descargar recursos
Usa estas referencias de la página mientras trabajas en el proyecto. Los paquetes descargables del proyecto se añadirán solo cuando se publiquen su código fuente y su versión.
Preguntas comunes
Preguntas frecuentes
¿Qué parámetro debe sintonizarse en primer lugar?
Inicia con las ganancias integral y derivativa en cero. Incrementa la ganancia proporcional hasta obtener una respuesta rápida pero oscilatoria; a continuación, introduce amortiguación derivativa para suprimir el balanceo. Añade la ganancia integral en último lugar y solo si persiste un error estacionario sistemático. Regla práctica: P aporta rapidez, D reduce el sobreimpulso e I elimina el error permanente.
¿Cómo se elimina el sobreimpulso en un controlador PID?
El sobreimpulso suele deberse a un exceso de acción proporcional o acumulación integral. Reduce la ganancia proporcional primero y aumenta la derivativa para frenar la aproximación al setpoint. Si el sobreimpulso ocurre tras saturar el actuador al máximo, la causa es el windup integral y debe mitigarse acotando el término integral en saturación.
¿Por qué entra en oscilación sostenida mi lazo PID?
La oscilación constante casi siempre indica que la ganancia proporcional es excesiva para la dinámica del sistema o que el término derivativo es insuficiente para disipar la energía cinética. Disminuye la ganancia proporcional aproximadamente a la mitad e incrementa la derivativa. Periodos de muestreo lentos o con fluctuaciones temporales también desestabilizan el término derivativo.
¿Qué es el windup integral y cómo se previene?
El windup ocurre cuando el actuador satura a su límite físico (motor al 100 % de PWM), pero el error sigue integrándose en memoria. Al revertir el error, la acumulación masiva retarda la respuesta y genera un grave sobreimpulso. Se previene con técnicas de clamping (detener la integración si la salida calculada satura) o mediante recálculo inverso (back-calculation).
¿A qué frecuencia debe ejecutarse un lazo PID?
El lazo debe muestrear varias veces más rápido que la constante de tiempo dominante de la planta, a intervalos estrictamente regulares. Evita retardos bloqueantes como delay(): un periodo variable altera las constantes efectivas de integración y diferenciación aunque las ganancias fijas no varíen.
¿Se puede emplear control PID prescindiendo de algún término?
Sí. El control PD (sin integral) es habitual cuando se tolera un pequeño error permanente y se busca máxima agilidad sin riesgo de windup. El control PI (sin derivativo) se aplica en señales con ruido de alta frecuencia donde la derivada amplificaría perturbaciones. Emplea solo los términos que el problema demande.
¿Qué diferencia existe entre sintonización manual y el método Ziegler–Nichols?
La sintonización manual ajusta término a término observando la respuesta transitoria, siendo intuitiva y segura para el aprendizaje. Ziegler–Nichols es un método analítico que calcula las ganancias a partir de la oscilación crítica sostenida (Ku y Tu); es más rápido pero tiende a respuestas agresivas que luego deben suavizarse manualmente.
Lecturas adicionales
Referencias
Fuentes autorizadas para profundizar más allá del modelo educativo acotado de este simulador.