sintonizar-pid-vida-real

Cómo sintonizar un PID en la práctica

  • 6 min

Sintonizar un PID es ajustar las ganancias Kp, Ki y Kd hasta obtener una respuesta estable y útil para nuestra planta.

Ya sabemos qué hace cada parte del controlador. La P reacciona al error presente, la I corrige el error acumulado y la D amortigua la tendencia. Ahora viene la parte que suele doler: elegir los números.

Porque sí, al final alguien tiene que poner valores concretos en el código:

float Kp = 2.0;
float Ki = 0.5;
float Kd = 0.1;
Copied!

Y esos valores no salen de una tabla universal. Dependen de la planta, del sensor, del actuador, del tiempo de muestreo, de la carga, de los límites físicos y hasta de lo mal que esté apretado un tornillo. Bienvenido al mundo real.

Antes de tocar ganancias

Antes de sintonizar nada, conviene tener tres cosas claras. Si no, vas a perseguir fantasmas durante horas.

Primero, el tiempo de muestreo debe ser constante. Si el PID se ejecuta unas veces cada 5ms y otras cada 40ms, las ganancias no significan lo mismo en cada ciclo.

Segundo, la salida del controlador debe estar limitada al rango real del actuador. Un motor PWM puede ir de 0 a 255, una válvula de 0% a 100%, un servo de cierto ángulo mínimo a cierto ángulo máximo.

Tercero, hay que medir la respuesta. Aunque sea con un Serial Plotter, un CSV o una gráfica cutre. Ajustar un PID mirando solo “parece que va bien” es una receta estupenda para engañarse.

Método empírico para empezar

Para proyectos reales pequeños, muchas veces usamos un ajuste manual. No es glamuroso, pero funciona bastante bien si tienes paciencia.

La secuencia típica es esta:

  1. Pon Ki = 0 y Kd = 0.
  2. Sube Kp poco a poco hasta que el sistema responda rápido, pero sin volverse inestable.
  3. Si empieza a oscilar, baja Kp un poco.
  4. Añade Ki lentamente para eliminar el error permanente.
  5. Si aparece demasiado overshoot, baja Ki o añade algo de Kd.
  6. Añade Kd solo si necesitas amortiguar oscilaciones o reducir el sobrepaso.

Toca una ganancia cada vez. Si cambias Kp, Ki y Kd a la vez, no sabrás cuál ha arreglado el sistema ni cuál lo ha estropeado.

La idea no es encontrar el número perfecto a la primera. Es acercarse por pasos, observando qué cambia en la respuesta.

Cómo se nota cada ganancia

Aunque cada planta tiene sus rarezas, hay tendencias bastante repetibles:

GananciaSi la subimos suele…Si nos pasamos…
KpHacer el sistema más rápido y reducir el error inicialOscilación, overshoot e inestabilidad
KiEliminar el error permanenteWindup, overshoot lento y recuperación pesada
KdAmortiguar y reducir rebotesRuido, vibraciones y salida nerviosa

Esta tabla no sustituye a una prueba real, pero ayuda a no ir completamente a ciegas.

Un procedimiento práctico

Vamos a imaginar que controlamos la velocidad de un motor DC con encoder.

Empezamos con Ki = 0 y Kd = 0. Subimos Kp hasta que el motor llegue rápido a la velocidad objetivo. Si se queda corto, seguimos subiendo. Si empieza a oscilar, bajamos un 20% o 30%.

Después añadimos Ki poco a poco. Queremos que el error permanente desaparezca, pero sin que la integral empuje durante demasiado tiempo. Si el motor se pasa mucho y tarda en volver, Ki está demasiado alta.

Finalmente probamos Kd. Si el sistema rebota, una pequeña D puede ayudar. Si el sensor es ruidoso, cuidado, porque la D va a amplificar ese ruido con bastante alegría.

Cuando el actuador tiene fuerza suficiente para romper algo, sintonizad con límites conservadores. Primero probamos suave, luego ya habrá tiempo de apretar.

Ziegler-Nichols

Uno de los métodos clásicos de sintonización es Ziegler-Nichols. Es antiguo, conocido y sigue apareciendo en muchos libros porque da un punto de partida razonable.

La versión de oscilación sostenida funciona así:

  1. Pon Ki = 0 y Kd = 0.
  2. Sube Kp hasta que el sistema oscile de forma sostenida.
  3. Ese valor se llama Ku (ganancia última).
  4. Mide el periodo de oscilación Tu.
  5. Calcula las ganancias iniciales con una tabla.

Para un PID clásico, la tabla típica es:

ControladorKpTiTd
P0.5 Ku--
PI0.45 KuTu / 1.2-
PID0.6 KuTu / 2Tu / 8

Si tu PID usa la forma paralela:

Entonces puedes convertir:

Ziegler-Nichols suele dar ajustes agresivos y llevar la planta al límite de estabilidad puede ser peligroso. Sirve como punto de partida cuando el ensayo es seguro; no es adecuado para cualquier proceso.

Por qué a veces nos saltamos los métodos clásicos

En un entorno industrial, con una planta grande y documentación decente, tiene sentido aplicar métodos formales. En proyectos maker, robótica pequeña o firmware experimental, muchas veces la planta cambia demasiado.

La batería se descarga, el peso del robot cambia, el motor se calienta, el sensor mete ruido, el rozamiento varía. Así que un ajuste perfecto de laboratorio puede dejar de ser perfecto en cuanto llevas el aparato al suelo del taller.

Por eso muchas veces usamos una mezcla razonable:

  • Entendemos qué hace cada ganancia.
  • Ajustamos manualmente con gráficas.
  • Limitamos salida e integral.
  • Filtramos la derivada si hay ruido.
  • Guardamos los valores y repetimos pruebas.

No queda tan académico, pero evita muchos disgustos.

Guardar y comparar

Un consejo simple: guarda las pruebas, aunque sea en una tabla en una libreta.

PruebaKpKiKdResultado
11.00.00.0Lento, error permanente
22.50.00.0Rápido, algo de overshoot
32.00.30.0Sin error permanente, estable
42.00.30.05Más suave

Cuando llevas 20 minutos tocando números, todos los intentos empiezan a parecer iguales. Tener un historial ahorra vueltas absurdas.

Sintonizar un PID es encontrar un compromiso. Queremos una respuesta rápida, poco error permanente, poco overshoot, poco ruido y estabilidad suficiente. Todo a la vez. Fácil no es, claro.

El método manual consiste en ajustar primero Kp, luego añadir Ki para eliminar el error permanente y finalmente usar Kd solo si necesitamos amortiguamiento.