Ya que hay varios preguntando por ahi lo mismo, y me parece que es algo que tiene que estar en este foro... voy a explicar como se hace el autotune y alguna cosilla más. Si me corregis y/o completais puede quedar una guía rápida. un poco de teoría:
QUE ES PID - POR QUE REGULARLO
Existen varias maneras de controlar la temperatura, nuestras impresoras usan dos tipos: controlador todo/nada y controlador PID. El controlador todo/nada es el más sencillo, calienta a tope cuando la temperatura esta por debajo del objetivo y nada cuando esta por encima. Este controlador no requiere ningún calculo pero hace que la temperatura oscile demasiado y nunca se queda fija en la temperatura objetivo.
El PID es un tipo de regulador que consta de 3 componentes: proporcional, integral y derivativo. No voy a entrar en detalles de que hace cada uno por que gracias al autotune que viene en Marlin no vamos a tener que saberlo, pero se puede mirar como afecta cada componente y ajustarlos a mano (es un trabajo muy tedioso pero quedaría incluso mejor que con autotune). Simplemente decir que gracias al PID vamos a conseguir que la temperatura se quede estable en el objetivo.
Es recomendable hacer autotune en los siguientes casos:
- La impresora es nueva
- La impresora se ha movido a un lugar con diferente temperatura
- La impresora no es capaz de alcanzar la temperatura objetivo y da error.
AUTOTUNE EXTRUSOR
Necesitamos algun programa con comunicacion serie con la impresora (pronterface, repitier, simplify3d...) y vamos a usar el comando M303 E0 S220 C8. Donde E0 es el primer extrusor, S220 la temperatura media a la que solemos imprimir y C8 en numero de iteraciones a realizar. He puesto 220 por hacer una media entre abs y pla, si sólo se usa pla se puede poner 200, y 8 iteraciones para que afine más, se pueden poner menos para que lo haga más rápido aun que no será tan exacto.
![[Imagen: IMG-20181113-221055.jpg]](https://preview.ibb.co/ndif9f/IMG-20181113-221055.jpg)
Antes de nada hay que colocar el extrusor en un lugar en el que se pueda calentar sin dañar nada, yo hago G1 X100 Y100 Z25 para dejarlo en medio y alejado de la cama. Al mandar el M303 parece que no pasa nada pero si te fijas en la temperatura del extrusor va a empezar a subir hasta 220 y lo dejará enfriar, 8 veces. Hay que fijarse en el puerto serie, cada vez que haga un test aparecerán unos valores para Kp, Ki y Kd, que son las Konstantes de los 3 componentes del PID, y al hacer la octaba prueba, dará los valores definitivos.
![[Imagen: autotune1.jpg]](https://preview.ibb.co/dJwYUf/autotune1.jpg)
Guardar Valores por Pantalla
Esto valores se pueden introducir por la pantalla. Aparecen en Control -> Temperatura -> PID-P/PID-I/PID-D Después hay que guardar en memoria (M500) y para eso hay que tener la EEPROM activada.
![[Imagen: IMG-20181113-220635.jpg]](https://preview.ibb.co/gk5JUf/IMG-20181113-220635.jpg)
Firmware
Aquí esta como configurar el PID en Marlin 1.1.9.
**Autotune desde pantallahay que descomentarlo en el firmware de aquí arriba
Control -> Temperatura -> Autotune : 150 -> Seleccionar temperatura deseada. Envia comando "M303 U1 E0 S(temp)", realiza 3 iteraciones y coge los valores. Solo quedaría guardar con M500.
![[Imagen: IMG-20181113-220619.jpg]](https://preview.ibb.co/fPYNpf/IMG-20181113-220619.jpg)
AUTOTUNE CAMA CALIENTE
Comenzamos como con el extrusor, poniendo la cama en un lugar seguro para calentar y nos conectamos a la impresora para poder mandar/recibir información por el puerto serie. En este caso usaremos el mismo comando pero con otros parámetros: M303 E-1 S80 C4. Donde E-1 es la cama caliente, S80 la temperatura media a la que usamos la cama y C4 el número de iteraciones. Si sólo se usa pla se puede bajar la temperatura. Hemos reducido el numero de iteraciones por que la cama tarda más en calentar y puede dar un timeout, en caso de que de error: bajar la temperatura objetivo y el numero de iteraciones.
En este caso no aparece nada en la pantalla, ni para ver/guardar valores y para hacer el autotune.
Firmware
Y esto es lo que habría que modificar en marlin:
Lo dicho, agradezco cualquier corrección, mejora o información que sirva para completar. Todo está escrito por mi aun que se parecerá mucho a cualquier manual... espero que se entienda y sea útil. Cualquier duda que tengáis podéis preguntar en este tema.
QUE ES PID - POR QUE REGULARLO
Existen varias maneras de controlar la temperatura, nuestras impresoras usan dos tipos: controlador todo/nada y controlador PID. El controlador todo/nada es el más sencillo, calienta a tope cuando la temperatura esta por debajo del objetivo y nada cuando esta por encima. Este controlador no requiere ningún calculo pero hace que la temperatura oscile demasiado y nunca se queda fija en la temperatura objetivo.
El PID es un tipo de regulador que consta de 3 componentes: proporcional, integral y derivativo. No voy a entrar en detalles de que hace cada uno por que gracias al autotune que viene en Marlin no vamos a tener que saberlo, pero se puede mirar como afecta cada componente y ajustarlos a mano (es un trabajo muy tedioso pero quedaría incluso mejor que con autotune). Simplemente decir que gracias al PID vamos a conseguir que la temperatura se quede estable en el objetivo.
Es recomendable hacer autotune en los siguientes casos:
- La impresora es nueva
- La impresora se ha movido a un lugar con diferente temperatura
- La impresora no es capaz de alcanzar la temperatura objetivo y da error.
AUTOTUNE EXTRUSOR
Necesitamos algun programa con comunicacion serie con la impresora (pronterface, repitier, simplify3d...) y vamos a usar el comando M303 E0 S220 C8. Donde E0 es el primer extrusor, S220 la temperatura media a la que solemos imprimir y C8 en numero de iteraciones a realizar. He puesto 220 por hacer una media entre abs y pla, si sólo se usa pla se puede poner 200, y 8 iteraciones para que afine más, se pueden poner menos para que lo haga más rápido aun que no será tan exacto.
![[Imagen: IMG-20181113-221055.jpg]](https://preview.ibb.co/ndif9f/IMG-20181113-221055.jpg)
Antes de nada hay que colocar el extrusor en un lugar en el que se pueda calentar sin dañar nada, yo hago G1 X100 Y100 Z25 para dejarlo en medio y alejado de la cama. Al mandar el M303 parece que no pasa nada pero si te fijas en la temperatura del extrusor va a empezar a subir hasta 220 y lo dejará enfriar, 8 veces. Hay que fijarse en el puerto serie, cada vez que haga un test aparecerán unos valores para Kp, Ki y Kd, que son las Konstantes de los 3 componentes del PID, y al hacer la octaba prueba, dará los valores definitivos.
![[Imagen: autotune1.jpg]](https://preview.ibb.co/dJwYUf/autotune1.jpg)
Guardar Valores por Pantalla
Esto valores se pueden introducir por la pantalla. Aparecen en Control -> Temperatura -> PID-P/PID-I/PID-D Después hay que guardar en memoria (M500) y para eso hay que tener la EEPROM activada.
![[Imagen: IMG-20181113-220635.jpg]](https://preview.ibb.co/gk5JUf/IMG-20181113-220635.jpg)
Firmware
Aquí esta como configurar el PID en Marlin 1.1.9.
Cita:#define PIDTEMP //Descomentar esta linea para activar PID, viene activado por defecto para el primer extrusorSiempre acordaos de restablecer valores de fabrica (M502) y guardar en memoria (M500) después de cargar el firmware.
#define BANG_MAX 255 // limita la corriente en modo todo/nada 255=100%
#define PID_MAX 255 // limita la corriente en modo PID
#define PID_K1 0.95 // factor de suavizado, entiendo que es un multiplicador
#if ENABLED(PIDTEMP)
//#define PID_AUTOTUNE_MENU // activa menu de autotune en lcd **
//#define PID_DEBUG // Manda a tiempo real los valores de las Konstantes en uso por el puerto serie
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
#define PID_FUNCTIONAL_RANGE 10 //si la diferencia de temperatura entre la real y el objetivo es de más de 10 grados, este entrará en modo todo/nada
#define DEFAULT_Kp 24.74 // AQUI HAY QUE INTRODUCIR LOS VALORES OBTENIDOS POR EL AUTOTUNE
#define DEFAULT_Ki 2.04
#define DEFAULT_Kd 75.00
#endif // PIDTEMP
**Autotune desde pantallahay que descomentarlo en el firmware de aquí arriba
Control -> Temperatura -> Autotune : 150 -> Seleccionar temperatura deseada. Envia comando "M303 U1 E0 S(temp)", realiza 3 iteraciones y coge los valores. Solo quedaría guardar con M500.
![[Imagen: IMG-20181113-220619.jpg]](https://preview.ibb.co/fPYNpf/IMG-20181113-220619.jpg)
AUTOTUNE CAMA CALIENTE
Comenzamos como con el extrusor, poniendo la cama en un lugar seguro para calentar y nos conectamos a la impresora para poder mandar/recibir información por el puerto serie. En este caso usaremos el mismo comando pero con otros parámetros: M303 E-1 S80 C4. Donde E-1 es la cama caliente, S80 la temperatura media a la que usamos la cama y C4 el número de iteraciones. Si sólo se usa pla se puede bajar la temperatura. Hemos reducido el numero de iteraciones por que la cama tarda más en calentar y puede dar un timeout, en caso de que de error: bajar la temperatura objetivo y el numero de iteraciones.
En este caso no aparece nada en la pantalla, ni para ver/guardar valores y para hacer el autotune.
Firmware
Y esto es lo que habría que modificar en marlin:
Cita:#define PIDTEMPBED //descomentar para activar el PID en la camaSiempre acordaos de restablecer valores de fabrica (M502) y guardar en memoria (M500) después de cargar el firmware.
//#define BED_LIMIT_SWITCHING //activa la histeresis cuando el PID esta desactivado
#define MAX_BED_POWER 255 // limita la corriente de la cama 255=100%
#if ENABLED(PIDTEMPBED)
//#define PID_BED_DEBUG // Manda a tiempo real los valores de las Konstantes en uso por el puerto serie
#define DEFAULT_bedKp 645.34 // AQUI HAY QUE INTRODUCIR LOS VALORES OBTENIDOS POR EL AUTOTUNE
#define DEFAULT_bedKi 123.09
#define DEFAULT_bedKd 845.87
#endif // PIDTEMPBED
Lo dicho, agradezco cualquier corrección, mejora o información que sirva para completar. Todo está escrito por mi aun que se parecerá mucho a cualquier manual... espero que se entienda y sea útil. Cualquier duda que tengáis podéis preguntar en este tema.