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!