Vamos a empezar con una pequeña mejora para la impresora de la Guía de cómo montar una impresora 3D casera que podemos aplicar a la impresora de manera sencilla mediante una modificación del propio firmware: la regulación de la cama caliente.
Por defecto, la cama caliente se maneja mediante el sistema "bang bang", esto significa que empieza a calentarse hasta llegar a la temperatura deseada, una vez alcanza esa temperatura, la controladora desactiva la resistencia y deja de entregar energía a la cama caliente, hasta que baja unos grados y vuelve a calentar.
En principio esto no debería suponer ningún problema, sin embargo, al producirse esos cambios de temperatura repentinos, el espejo y la propia cama se dilatan y contraen, y la única manera de liberar ese movimiento es doblando hacia arriba o hacia abajo de manera prácticamente imprescindible.
Sin embargo, a nivel de impresión sí que se nota, creando capas desiguales y patrones de impresión erróneos que se producen de manera periódica (cada vez que la cama recibe energía para mantener la temperatura), creando piezas con capas poco unidas y con malos acabados. Este problema me surgió los primeros meses tras el montaje de la impresora, y pasé bastantes semanas buscando la causa, hasta descubrir la deformación por calor de la cama.
En la siguientes fotos podéis ver el efecto:
Hay varias maneras de solucionar esto:
Básicamente, lo que vamos a hacer es cambiar el modo en el que se calienta la cama, haciendo que en vez de utilizar el sistema "bang-bang", utilizaremos el PWM, que permite variar la entrega de energía según la temperatura que busquemos, evitándonos los golpes de calor/frío y minimizando al máximo los problemas que sufríamos con el modo anterior.
Básicamente el funcionamiento del PWM es similar al "bang-bang", consiste en apagar/encender la resistencia de la cama, la diferencia es que en el modo PWM estos ciclos de apagado/encendido, se realizan una vez cada 0.14 segundos, por lo que a efectos prácticos, la variación de temperatura es mínima.
Para activar el modo PWM tenemos que ir al firmware Marlin y cambiar unas líneas en el Configuration.h:
Tendremos que buscar la línea
// #define PIDTEMPBED
y la línea
// #define BED_LIMIT_SWITCHING
Y quitarle los comentarios, es decir, borrar las "//"
Ahora buscamos las líneas
Y deberemos quitar los comentarios ("//") a las últimas tres líneas, las que empiezan por "#define"
Una vez hecho esto, tan solo tenemos que cargar el firmware al arduino, como hicimos en la guía.
Ahora conectamos la impresora, abrimos el cura, y en la ventana del control manual (la que sale al darle a imprimir), tenemos que escribir en la derecha el siguiente código G-CODE manualmente:
M303 E-1 C8 S90
Ahora la impresora comenzará un ciclo de "auto-tune" durante unos minutos, lo que hará será buscar la configuración exacta de nuestra cama caliente para poder controlarla con PWM. Una vez termine, podremos ver los valores bedKp, bedKi y bedKd en pantalla
Ahora tenemos que volver al Marlin y abrir el configuration.h y escribir los valores que nos acaba de dar la imprersora en las tres líneas que empiezan por #define que habíamos comentado antes.
Por ejemplo si tenemos los valores bedKp = 103, bedKi = 33 y bedKd= 380, tendremos que hacer esto:
Ahora solamente tenemos que cargar de nuevo el firmware y ya podremos imprimir sin problemas.
Este es el resultado tras la modificación, capas uniformes y sin ningún saliente como ocurría al principio.
Por defecto, la cama caliente se maneja mediante el sistema "bang bang", esto significa que empieza a calentarse hasta llegar a la temperatura deseada, una vez alcanza esa temperatura, la controladora desactiva la resistencia y deja de entregar energía a la cama caliente, hasta que baja unos grados y vuelve a calentar.
En principio esto no debería suponer ningún problema, sin embargo, al producirse esos cambios de temperatura repentinos, el espejo y la propia cama se dilatan y contraen, y la única manera de liberar ese movimiento es doblando hacia arriba o hacia abajo de manera prácticamente imprescindible.
Sin embargo, a nivel de impresión sí que se nota, creando capas desiguales y patrones de impresión erróneos que se producen de manera periódica (cada vez que la cama recibe energía para mantener la temperatura), creando piezas con capas poco unidas y con malos acabados. Este problema me surgió los primeros meses tras el montaje de la impresora, y pasé bastantes semanas buscando la causa, hasta descubrir la deformación por calor de la cama.
En la siguientes fotos podéis ver el efecto:
Hay varias maneras de solucionar esto:
- Apagar la cama caliente: esto terminaría con las variaciones de temperatura, pero supondría el no poder imprimir con ABS al no adherirse a superficies frías.
- Mantener la cama caliente conectada directamente a la fuente de alimentación: también solucionaría el problema, pero no podríamos controlar la temperatura, siempre funcionaría al máximo (unos 110-120 grados)
- Cambiar la manera en la que la electrónica gestiona la temperatura de la cama. Esto es lo que vamos a explicar en esta pequeña guía.
Básicamente, lo que vamos a hacer es cambiar el modo en el que se calienta la cama, haciendo que en vez de utilizar el sistema "bang-bang", utilizaremos el PWM, que permite variar la entrega de energía según la temperatura que busquemos, evitándonos los golpes de calor/frío y minimizando al máximo los problemas que sufríamos con el modo anterior.
Básicamente el funcionamiento del PWM es similar al "bang-bang", consiste en apagar/encender la resistencia de la cama, la diferencia es que en el modo PWM estos ciclos de apagado/encendido, se realizan una vez cada 0.14 segundos, por lo que a efectos prácticos, la variación de temperatura es mínima.
Para activar el modo PWM tenemos que ir al firmware Marlin y cambiar unas líneas en el Configuration.h:
Tendremos que buscar la línea
// #define PIDTEMPBED
y la línea
// #define BED_LIMIT_SWITCHING
Y quitarle los comentarios, es decir, borrar las "//"
Ahora buscamos las líneas
#ifdef PIDTEMPBED
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, argressive factor of .15 (vs .1, 1, 10)
// #define DEFAULT_bedKp 174.56
// #define DEFAULT_bedKi 21.65
// #define DEFAULT_bedKd 351.78
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, argressive factor of .15 (vs .1, 1, 10)
// #define DEFAULT_bedKp 174.56
// #define DEFAULT_bedKi 21.65
// #define DEFAULT_bedKd 351.78
Una vez hecho esto, tan solo tenemos que cargar el firmware al arduino, como hicimos en la guía.
Ahora conectamos la impresora, abrimos el cura, y en la ventana del control manual (la que sale al darle a imprimir), tenemos que escribir en la derecha el siguiente código G-CODE manualmente:
M303 E-1 C8 S90
Ahora la impresora comenzará un ciclo de "auto-tune" durante unos minutos, lo que hará será buscar la configuración exacta de nuestra cama caliente para poder controlarla con PWM. Una vez termine, podremos ver los valores bedKp, bedKi y bedKd en pantalla
Ahora tenemos que volver al Marlin y abrir el configuration.h y escribir los valores que nos acaba de dar la imprersora en las tres líneas que empiezan por #define que habíamos comentado antes.
Por ejemplo si tenemos los valores bedKp = 103, bedKi = 33 y bedKd= 380, tendremos que hacer esto:
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, argressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 103
#define DEFAULT_bedKi 33
#define DEFAULT_bedKd 380
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, argressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 103
#define DEFAULT_bedKi 33
#define DEFAULT_bedKd 380
Ahora solamente tenemos que cargar de nuevo el firmware y ya podremos imprimir sin problemas.
Este es el resultado tras la modificación, capas uniformes y sin ningún saliente como ocurría al principio.
Comentario