<p>The developers explained the use of the M425 code <a href="https://github.com/MarlinFirmware/Marlin/issues/10826" rel="nofollow noreferrer">themselves</a>.</p>
<blockquote>
<p>We devised a routine for measuring Z backlash automatically during G29
and found that software backlash compensation does wonders for the
first layer. However, this comes at the expense of artifacts on the
rest of the print. In particular, any rapid motions of the motor to
try to take up any backlash will inevitably create a small pause and
vibration, leading to a seam in the print. We devised a smoothing
algorithm that allowed backlash correction to be gradually applied
over a distance, this eliminated any harsh transitions, which again
lead to a huge improvement. Alas, we learned that the feature was very
sensitive to the variances in the printer build, working amazingly
well in some cases, but leading to a degraded quality other printers.
This perhaps is a feature that could be used by someone who wished to
hand tune the algorithm, but not something we could use in a mass
produced printer.</p>
<p>...</p>
<p><strong>&quot;M425 F&quot; sets a value from 0 to 1 which is multiplied by the backlash
distance. This command is meant for use by the slicer, and allows it
to &quot;fade&quot; away the backlash compensation gradually over several
layers, or to turn it off completely after the first layer (with a
&quot;M425 F0&quot;)</strong>.</p>
</blockquote>

CC BY-SA 4.0
2020-11-21T06:28:25.117Z
Interesting. This answers my question, but makes me wonder how correction moves are treated by the planner. Since they're not intended to actually move the mass of the carriage, it seems to me they could be performed nearly instantaneously and ignored by the planner so the surrounding path gets treated as the smooth curve it is rather than a zig zag.
neurozero
CC BY-SA 4.0
2020-11-21T07:05:53.877Z
It looks like it actually only adjusts existing segments, which is certainly better than a zig zag going through the planner, but even if `BACKLASH_SMOOTHING_MM` is undefined, it still takes the length of the first segment.
neurozero
CC BY-SA 4.0
2020-11-19T17:34:23.773Z
2020-11-19T17:34:23.773Z
FarO
<p>Marlin has an option to fade out the amount of backlash correction, given as <code>BACKLASH_CORRECTION</code>. It is also available in <a href="https://marlinfw.org/docs/gcode/M425.html" rel="nofollow noreferrer">GCode as <code>M425 [F&lt;value&gt;]</code></a>, where 0.0 = none and 1.0 = 100%.</p>
<p>Assuming backlash correction is otherwise well tuned at 100%, when is useful to reduce its effect? Why not always keep it at 100%?</p>

CC BY-SA 4.0
2020-11-12T12:45:04.147Z
Because tuning 100% correct is unlikely and undercompensating is likely preferable to overcompensating, I guess
FarO
CC BY-SA 4.0
2020-11-12T22:07:07.053Z
That would mean backlash correction is not otherwise well tuned at 100%. In this case, why not reduce the root cause of overcompensation, `BACKLASH_DISTANCE_MM`?
neurozero
CC BY-SA 4.0
2020-11-15T15:56:36.833Z
Wouldn't the same apply to flow rate? The setting is done in the steps/mm, different for each material, but you still have flown rate compensation.
FarO
CC BY-SA 4.0
2020-11-17T02:21:08.750Z
I can think of a use case for a percentage based flow adjustment: it allows hardware independent filament profiles. Different filaments extrude at different rates due to differences in how deep the feeder teeth bite and other factors, but the percentage change per filament may be similar across various machines. Is there a comparable scenario for backlash correction?
neurozero
CC BY-SA 4.0
2020-11-19T08:12:58.767Z
Good point. Open a ticket in GitHub marlin repo so that they can let us know, then post here an answer!
FarO
<marlin><calibration>
What is the purpose of partial (<100%) backlash correction?
neurozero
# What is the purpose of partial (<100%) backlash correction?

(Asked by: username_0 on 2020-11-12)

Marlin has an option to fade out the amount of backlash correction, given as `BACKLASH_CORRECTION`. It is also available in [GCode as `M425 [F<value>]`](https://marlinfw.org/docs/gcode/M425.html), where 0.0 = none and 1.0 = 100%.

Assuming backlash correction is otherwise well tuned at 100%, when is useful to reduce its effect? Why not always keep it at 100%?

**Tags:** marlin, calibration

> **Comments:**
> **username_1**: Because tuning 100% correct is unlikely and undercompensating is likely preferable to overcompensating, I guess  
> **username_0**: That would mean backlash correction is not otherwise well tuned at 100%. In this case, why not reduce the root cause of overcompensation, `BACKLASH_DISTANCE_MM`?  
> **username_1**: Wouldn't the same apply to flow rate? The setting is done in the steps/mm, different for each material, but you still have flown rate compensation.  
> **username_0**: I can think of a use case for a percentage based flow adjustment: it allows hardware independent filament profiles. Different filaments extrude at different rates due to differences in how deep the feeder teeth bite and other factors, but the percentage change per filament may be similar across various machines. Is there a comparable scenario for backlash correction?  
> **username_1**: Good point. Open a ticket in GitHub marlin repo so that they can let us know, then post here an answer!  

---

## 1 answers

### Answer by username_1 on 2020-11-19. Score: 1 | Accepted answer

The developers explained the use of the M425 code [themselves](https://github.com/MarlinFirmware/Marlin/issues/10826).

> We devised a routine for measuring Z backlash automatically during G29
> and found that software backlash compensation does wonders for the
> first layer. However, this comes at the expense of artifacts on the
> rest of the print. In particular, any rapid motions of the motor to
> try to take up any backlash will inevitably create a small pause and
> vibration, leading to a seam in the print. We devised a smoothing
> algorithm that allowed backlash correction to be gradually applied
> over a distance, this eliminated any harsh transitions, which again
> lead to a huge improvement. Alas, we learned that the feature was very
> sensitive to the variances in the printer build, working amazingly
> well in some cases, but leading to a degraded quality other printers.
> This perhaps is a feature that could be used by someone who wished to
> hand tune the algorithm, but not something we could use in a mass
> produced printer.
>
> ...
>
> **"M425 F" sets a value from 0 to 1 which is multiplied by the backlash
> distance. This command is meant for use by the slicer, and allows it
> to "fade" away the backlash compensation gradually over several
> layers, or to turn it off completely after the first layer (with a
> "M425 F0")**.

> **Comments:**
> **username_0**: Interesting. This answers my question, but makes me wonder how correction moves are treated by the planner. Since they're not intended to actually move the mass of the carriage, it seems to me they could be performed nearly instantaneously and ignored by the planner so the surrounding path gets treated as the smooth curve it is rather than a zig zag.  
> **username_0**: It looks like it actually only adjusts existing segments, which is certainly better than a zig zag going through the planner, but even if `BACKLASH_SMOOTHING_MM` is undefined, it still takes the length of the first segment.  

---

