PID

Es posible que hayas notado que tu impresora Prusa i3 Hephestos no te hace caso en la temperatura y varía todo el rato en torno al valor deseado. La temperatura exterior puede  afectar a tu impresora también. Si la has cambiado de sitio o si está en una corriente de aire se puede dar el caso de que todo el tiempo esté oscilando la temperatura y nunca se fije en la deseada.

Esto es provocado porque el mecanismo encargado del calentamiento del hotend no está ajustado. Se soluciona de una forma muy sencilla y es marcando los valores correctos del PID. Para comprender mejor dicho proceso, tenemos que conocer qué es exactamente un PID.
Comparativa PID

Gráficas que muestran un PID no ajustado (oscilando en torno a la temperatura deseada) y un PID ajustado (mucho más estable cerca de dicha temperatura)

Conociendo qué es el PID

El PID (proporcional, integral, derivativo) es un mecanismo de control a través de retroalimentación que calcula la desviación o el error que tenemos entre una medición y un valor deseado. A su salida se aplica una señal con la que intentamos ajustar todo el proceso para que la medición y el valor deseado sean iguales. Cuando obtenemos el error cometido, el PID a través de sus tres constantes (Kp, Ki, Kd) realiza el ajuste correspondiente. En el caso de una impresora 3D, su proceso de calentamiento se realiza con este proceso. Nosotros indicamos que queremos obtener la temperatura de 210ºC, pero en el hotend hay otra temperatura, se resta la temperatura deseada menos la real y así obtenemos este error. El error es aplicado en el proceso de PID para indicar al calefactor lo que se debe calentar. Dicho proceso es constante y en todo momento se está realizando este bucle para obtener la temperatura correcta.
Diagrama de bloques de un control PID (fuente: Wikipedia)

Diagrama de bloques de un control PID (fuente: Wikipedia)

¿Qué ocurre si el PID no está ajustado? Pues que tendremos una oscilación de la temperatura constante. ¿Por qué? Pues digamos que la temperatura real está muy cerca de llegar a la deseada, pero si el PID no es el correcto, aplicará demasiada acción al calefactor y volverá a pasarse de la temperatura. Y así podrá estar un buen rato hasta que se ponga a imprimir. Si el PID está correctamente ajustado dicha oscilación disminuirá o directamente se eliminará haciendo que el calentamiento del hotend sea mucho más rápido.
Hay que tener en cuenta que si has cambiado de habitación la impresora o si tienes la ventana abierta, esto puede afectar al calentamiento del hotend y por lo tanto puede hacer que el PID que tenemos ajustado no sea totalmente correcto para las circunstancias del momento. En el firmware el PID se calculó con unas determinadas condiciones que pueden ser diferentes a las que tú tengas cuando vayas a imprimir. Por ello, si notas que la temperatura oscila en todo momento o que cuando empiezas la impresión tarda mucho en tener la temperatura correcta, debes ajustar el PID.

¿Cómo se ajusta el PID?

Para ajustar el PID tienes que estar conectado a la impresora a través de USB y usar un programa que permita poder enviar comandos a la impresora. El Cura lo permite perfectamente. Para ello, lo primero que tienes que activar es la interfaz para manejar la impresora por USB. Ve a “File” -> “Preferences” y a la pestaña de “Print window”. Para conectarte con tu impresora tienes que seleccionar el puerto serie correcto en la sección de “Machine settings”. Añade una pieza en la base para que puedas conectarte y pulsa en el icono de imprimir. Verás que te aparece esta captura.
Pronterface

Pronterface

Ya estamos conectados a la impresora. Si deseas comprobarlo puedes pulsar en el botón de home de cualquier eje para ver como se mueve el motor correspondiente. Para ajustar el PID en el firmware existe una opción creada que es un autotune, digamos que es el propio firmware el que te va a dar los valores correctos de Kp, Ki, Kd que debes de tener. Ten en cuenta que es aconsejable que la temperatura del hotend para realizar el autotune esté a la temperatura ambiente de la sala donde esté la impresora normalmente. Para empezar el autotune de PID tienes que enviar el comando M303 S210. En este caso “S210″ lo que indica es la temperatura a la que normalmente vas a imprimir (210ºC por ejemplo).
En cuanto envíes el comando verás cómo la temperatura empieza a subir, y al cabo de un cierto tiempo vuelve a bajar, así varias veces. Cuando finalice el proceso del todo, te dará los valores Kp, Ki, Kd. En la imagen adjunta puedes ver los que me ha dado al realizar la prueba.
Autotune finalizado y valores de las variables

Autotune finalizado y valores de las variables

Ahora tenemos que decir a la impresora que use estos valores en vez de los que tiene en el firmware. Tienes dos formas de hacerlo: indicándoselo al principio de cada Gcode o modificando el firmware. Si deseas indicarlo al principio de cada Gcode tendrás que ir al “start.gcode” en Cura y poner en el principio el comando M303 con los valores que te ha dado el autotune . En este caso tendríamos que poner M301 P14.82 I0.8 D68.25 (ojo a las mayúsculas, es importante respetarlas). Ten en cuenta que, para tener este PID, tienes que ponerlo en todos los Gcode. Este proceso es bueno para probar si el PID es correcto antes de modificar el firmware.
Si, por el contrario, quieres añadir los valores en el firmware directamente, tendrás que descargar el firmware en el siguiente enlace. Tendrás que modificar el archivo “configuration.h”, buscar la parte del “PIDTEMP” y los valores de las variables “DEFAULT_Kp”, “DEFAULT_Ki”, “DEFAULT_Kd”. Modifica los valores que has obtenido de autotune y ponlos en las variables.
Modificación de valores en el firmware

Modificación de valores en el firmware

Cuando lo tengas guardado correctamente tendrás que cargar el código. Lo puedes realizar a través de Arduino IDE. Para ello abre el archivo “marlin.ino” con el programa. Selecciona la tarjeta controladora correcta (en este caso es “Arduino Mega 2560″) y el puerto serie correcto donde está puesta tu electrónica. Por último, pulsa en el icono de la flecha hacia la derecha para cargar el código. Así tendrás ya cargado el firmware modificado.
Ya tendrás tu PID correctamente ajustado para tus condiciones y no debería oscilar todo el rato al calentar. Este proceso lo puedes repetir todas las veces que quieras hasta que compruebes que es totalmente efectivo.

Rubén Sierra (@sgruben en Twitter) es Ingeniero Técnico Industrial con la especialidad de Electrónica Industrial. Maker, apasionado por la programación, robotica y impresión 3D. Trabaja en el soporte técnico de 3D en BQ