3D Printing Linear Advance

I recently upgraded my Creality CR10S with the Micro-Swiss direct drive extruder and all-metal hot end. Having spent some time tuning extruder steps and retraction settings for the new arrangement I discovered linear advance, a feature present in the Marlin open-source firmware and some other printers (e.g. Prusa).

One of the greatest challenges with FDM printing is controlling the flow of molten filament – there is a lag to extrusion demands and it has a tendency to continue to flow after extrusion requests stop, owing to the physics of the system. Various techniques are used to help control this, retraction (pulling the filament back from the nozzle, coasting (turn off extrusion before the end of a print line and wiping (continuing to move the nozzle after retraction to wipe any filament that continues to ooze). With careful tuning they can be quite effective, but even with well-tuned settings, it’s hard to avoid some of the FDM defects especially at higher print speeds where the nozzle pressures rise to meet the extrusion demands. FDM printing quality tends to be highly correlated with print speeds.

Defects such as bulbous corners, zits and other defects are all caused by these extrusion control challenges.

Linear advance is an alternative method to coasting and wiping that attempts to predict the pressure build up and compensate for it during acceleration and deceleration movements. It offers the potential to not only improve print quality, but also improve print speeds for the same quality, compared to a system without linear advance.

In order to use linear advance, one has to calibrate the K factor for your printer and filament. The K factor is effectively a measure of the springiness of the system, with a high K factor correlating with a higher springiness. Therefore long Bowden extruders will require higher K values to compensate for the springiness in both the filament and the feed to the hot end, whilst direct drive systems will require lower values. K factors will be both filament-dependent and temperature-dependent. In the latest version, K is a meaningful value with the following units:
mm of filament compression needed per 1mm/s extrusion speed (mm/mm/s).

In order to calibrate the system you will need to generate some G code to produce a number of printed lines, with different k factors, so you can visually identify the best result for your system. Each line is printed with a slow print speed, followed by an accelerated section, returning to a slow speed at the end of the line.

There’s some detailed information here (https://marlinfw.org/docs/features/lin_advance.html), including a link to a K-factor calibration generator, as well as examples of the changes you will see with different K factors

The results are impressive, I printed 3 XYZ test cubes one with standard settings, one with linear advance at over twice my normal print speed, and one with linear advance at the same print speed. The reduction in artifacts, especially items like the bulbous corners that are common when printing are all but eliminated, the standard speed print being almost perfect.

Well worth the time investment!

This entry was posted in 3D Printing, Engineering and tagged , , , . Bookmark the permalink.

3 Responses to 3D Printing Linear Advance

  1. Jack says:

    What did your k setting end up being?

    • Andrew says:

      Hi Jack,

      These were my k settings for the following materials:

      Technology Outlet PLA: 0.064
      Technology Outlet PETG: 0.088
      Sunlu PLA+: 0.063
      Technology Outlet TPU: 0.6

      Not surprisingly the flexible TPU, being far more springy, has a greater k value by an order of magnitude.

  2. webmaster says:

    It depended on the material, I’ve got figures for PLA, PLA+ and PETG currently.

    WIll check tomorrow for you.

    About to do a cal on TPU, which should be interesting, it will be my first attempt at printing flexibles of any sort.

Leave a Reply to Andrew Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.