Skip to main content

Cómo configurar «Linear Advance» en Marlin

Durante los últimos días, en un grupo de telegram de impresión 3D habían estado hablando de «Linear Advance», una característica que incluye Marlin pero que no es tan conocida (al menos yo no la conocía hasta que leí en internet lo que significaba). Lo que más me interesaba es que bien aplicada, puede mejorar los resultados de la impresión a altas velocidades.

Contexto

Nota: la mayor parte de la información está traducida directamente de la web de Marlin, el link de referencia lo dejo al final del post por si te interesa leerlo desde ahí directamente.

Por defecto, el comportamiento del extrusor es igual al de los otros ejes, de tal forma que mantiene el mismo comportamiento de aceleración en los puntos de comienzo y fin. Por tanto, cuando el extrusor acelere faltará algo de plástico, y cuando frene se podrá formar un pegotillo. Este fenómeno ocurre principalmente en las esquinas de los perímetros y al rellenar superficies. Se entiende mejor con una imagen.

low

La causa de este problema es la presión. Con la característica «Linear Advance» el extrusor se adapta a la velocidad de impresión reajustando la presión para que sea correcta en el interior del nozzle. De esta forma, con un buen ajuste se lograrán buenos resultados.

En caso de no tener activada esta opción, para solventar el problema puedes bajar la velocidad y ajustar muy bien el flow, aunque lo del flow es algo tedioso ya que puede producir subextrusión y depende mucho del material que se use.

Ventajas

  • Mejor precisión dimensional debido a esa corrección en las esquinas.
  • Mayores velocidades de impresión sin pérdida de calidad en las piezas.
  • Incluso con baja velocidad es visible y tangible esa mejora de calidad.

Consideraciones

  • Hay que desactivar opciones relacionadas con la presión del nozzle del programa de fileteado ya que pueden interferir con esta característica.
  • Hay que reajustar la retracción una vez calculado el factor K.
  • Debido a la mayor carga de procesamiento se recomienda usar una velocidad de comunicación de 115200 baudios o menos para evitar errores o comportamientos extraños.
  • El programa que hace de host durante la impresión hay que usar números de línea y checksums.
  • Teóricamente esta funcionalidad no añade movimientos extra a la impresión. Si ocurren durante la misma habría que revisarla para encontrar la causa.

Puesta en marcha

En primer lugar he diseñado una pieza para poder usarla a modo de calibración. Es una especie de pez minimalista pero lo importante es las esquinas que tiene. Puedes descargarla en thingiverse. (En la imagen están impresas con el factor K final obtenido).

Algunos datos interesantes que he usado para realizar las pruebas:

  • Impresora 3D vadetres, clon #568 de maytheclonebewithyou.
  • Kit de extrusión heatcore DDG de bq (extrusor directo, en caso de que sea bowden he leído que el factor K suele ser mayor)
  • Velocidad de impresión: 75mm/s
  • Filamento: PLA blanco
  • Temperatura: 215ºC

Para la calibración, en la propia web se explica cómo hacerlo. Hay que generar un gcode para realizar un test con diferentes valores de K y poder ver cuál es el que mejor se adapta. Para generarlo, se puede usar la herramienta que ellos mismos proporcionan. La siguiente imagen representa de forma gráfica qué hace el gcode que vamos a ejecutar en la impresora.

basics

Este es el fichero que he generado yo por si quieres echarle un ojo (le he cambiado la extensión a .txt para subirlo, pero es un .gcode normal, solo tienes que renombrarlo para reutilizarlo, aunque lo más conveniente es que generes el tuyo propio). A continuación tienes el resultado.

Antes de imprimir no debemos olvidar activar la opción en Marlin, Para ello, iremos al fichero Configuration_adv.h y descomentaremos la línea #define LIN_ADVANCE de forma que quede como a continuación.

/**
* Implementation of linear pressure control
*
* Assumption: advance = k * (delta velocity)
* K=0 means advance disabled.
* See Marlin documentation for calibration instructions.
*/
#define LIN_ADVANCE

#if ENABLED(LIN_ADVANCE)
#define LIN_ADVANCE_K 75

El factor K que estamos calculando es el que luego sustituiremos en LIN_ADVANCE_K, donde ahora pone un 75.

En principio deberíamos apreciar diferencias en este test que hemos realizado. Siendo sinceros, yo apenas distinguía nada, por lo que he empezado a imprimir mi pieza con diferentes valores de K, iterando según los resultados que iba viendo. De esta forma era mucho más visual. Tras varias iteraciones al final he obtenido un valor K=32.

En mi caso he decidido grabar este parámetro en el firmware ya que son las condiciones que más voy a utilizar, pero también puedes definirlo al principio de cada impresión en el start gcode. El comando es el siguiente. Yo usaré esta opción en situaciones específicas.

M900 K32 ; sustituir 32 por el factor que vayas a utilizar

Y con todo esto ya deberías poder disfrutar de esta nueva funcionalidad.

Fuentes

Linear Advance: http://marlinfw.org/docs/features/lin_advance.html

Patrón de Factor K de calibración: http://marlinfw.org/tools/lin_advance/k-factor.html

Eneko Montero

Estudiando teleco e imprimiendo en 3D. A veces hago robotillos. Cuando tengo tiempo escribo algún artículo.

5 comentarios en “Cómo configurar «Linear Advance» en Marlin”

    1. Hola Sebas, en principio ese factor K si que sería necesario variarlo si cambias de tipos de material o de temperaturas. Si haces eso habitualmente, igual lo mejor es que tengas hechos varios perfiles en tu fileteador y lo definas por gcode al inicio de la impresión con el comando «M900 Kxx» en el start gcode. Si decides hacer esto podrías poner K=0 en Marlin, y de esta forma lo activas cuando te interese por gcode.

  1. hola! consulta.. tengo una FLSUN SR y la tengo con linear advanced. es hemroso como imprime.. PERO… estoy teniendo problema con hilos… no logro dar con la configuracion para unas retracciones decentes. me estoy perdiendo algo?

Deja un comentario