Backlash compensation?

Does the Marlin code have support for backlash compensation? I notice with using a dial indicator on my bed that the z-axis appears to not be compensating for backlash. When I change directions it only moved half the .1mm it is supposed to. @parachvte ?

1 Like

Yes Marlin has backlash compensation but it is not implemented on the SM2. I notice the backlash when doing manual bed leveling.


While working on getting my mesh leveling to work, I notice that Z require backlash of .13. However with this adjustment, the machine introduce +.01 mm for every direction change.

I also noticed that. We were unable to locate a source of that in the code.

How did you track that down to that level of accuracy? I never got a rate that error accumulates at in my tests, but it was consistent. Your listed rate sounds plausibly consistent with what I observed.

I only observed it when my x was broke, requiring 0.2mm of backlash. Ultimately the solution is likely to correct the slop on the axis by disassembling and adjusting the eccentric nut, there is instruction on the support faq page.

I use digital indicator. I move the Z to 10mm and adjust by 1mm up and down. Without adjustment the Z movement is only .89mm when direction reverse.

I did not see the adjusting the eccentric nut instruction on support faq page. If you can send me the link that will be helpful.

Before doing this you should verify that the carriage has some slop when you move it around by hand. It won’t feel like much but you should rule out other issues first before completely dismantling.

can anyone clarify what the note in step 6 of the guide means?
"Note: Please leave a slight gap like 0.05mm between the bearing and the optical axis.

           Otherwise, it will cause the lose-step issue."

specifically what is the “optical axis”?

The phrasing is nearly impossible to follow.

What I did was just tighten it enough so that when you insert the carriage you can feel a slight resistance but it still moves freely.

If it’s too tight you can’t insert it, or it will have so much resistance that it causes the stepper motor to skip steps and lose position. If it’s too loose it’ll still have a wobble when reassembled.

yah this is what I’m dealing with. but it got rid of all the backlash, so I’m not too keen on going back! Just lube that sucker! More! More! haha… (just kidding!)

I’m probably going to take mine apart and add like .04mm below theoretical because I’m definitely having occasional skip steps, which is sad.

i used this article and model to test for bad backlash

anyone have a view as to whether this is or isn’t a good test?

(my machine passed the test so i didn’t go any further…)

I read before that setting backlash compensation for Z does not work well with bed leveling (calibration and actual application). That is why I turned it off. Did I miss something?

I use it on all 3 axes at 0.02mm. I have noticed it improves very small movements on Z, I have not noticed any negative effects with small values of compensation.

As noted there are issues with large values.

When setting Z height during calibration I control the machine via USB and jog in 0.01 mm increments, enabling backlash compensation helps with that. Without compensation the machine will not move until the third jog command is issued.

Let said that you start with 0 reference and you are on the last step of calibration - nozzle height.
Assume that you move 1mm at either direction and when you change direction the actual movement is .88mm.

It depends on the sequence of movement. There can be +.12, 0 or -.12 mm different in logical vs physical distance.

For example:
Last movement is down then you issue the following direction. D-D-D-U-U-D-D-U

Logical distance: 5D (5*-1) + 3U (3*1) = -2mm
Actual distance -1 + -1 + -1 + .88 (direction change) + 1 + -.88 (direction change) + -1 + .88 (direction change)

You will have logical distance of -2mm and actual distance is -2.12mm.

Accurate, if overly complicated in the explanation.

It may be more straightforward to just note backlash occurs on direction changes.

This is all just standard backlash behavior. I am curious about the Z offset saved by the touchscreen calibration routine. When you jog down too far, and jog back up, then jog down and save the Z-offset, is the Z offset determined by a mechanism (e.g. a different reading on the proximity sensor), or is it simply counting the number of jogs? If the latter, doing touchscreen calibration without backlash compensation sounds pretty dicey. Might need to switch to console.

The Touchpad does nothing more than issue commands to the Controller. Can the Touchpad tell the Controller to damage a Module? Yes, if certain conditions are met. Does the Touchpad always know where the Module is? No, a Home is required after a power cycle to sync, but it can still lose sync. Does the Controller always know where the Module is? Not until a Home is performed after a power cycle, then yes. Can the Controller get lost? Yes, if commands are issued improperly, the Controller can think that the Module is somewhere other than where it actually is.

Can i ask, did you use a specific calibration print to determine this, or just the stated specs from snapmaker?

That’s a good question. I determined those parameters through testing, actually prior to Snapmaker publishing those numbers (Sep 2020 from my post, vs Jan 2021 from that article). It makes me wonder…

I tested Z by detecting small changes in pulling tension on the calibration card. There is a sharp response where a 0.01mm move will drastically change the holding friction.

I originally tested X and Y using a calibration print: Quick Backlash Calibration V.2 by Muele - Thingiverse

Since the lines are single width it’s very sensitive to bed adhesion. Also, it relies on visually discerning very small changes.

I since reran X and Y using the laser by drawing a circle. I posted about this all in more detail previously elsewhere. The laser has a sharp transition that makes it easy to discern when backlash occurs.

Originally, using the 3D printed test I determined backlash was 0.035mm. After further refining with the laser I got 0.02mm. In all cases I had identical backlash on all modules (No discernable differences between X and Z, for example)

Both 0.035 and 0.02 gave me acceptable results. 0.02 was better though.

I have noticed this on my printer too.

I do not yet have laser running due to not having exhaust right now. I will try using the backlash test your posted though.

I had used your values for backlash for awhile, and noticed it was not really good for me personally, there were some weird artifacts going on so it could be an over correction. I am interested to try this out on the print

I noticed this on my printer even with 0.1 where taking the pressure off with one z+ and then doing a z- doesn’t put the same pressure back on. I now understand this is backlash. If i change the setting should I feel the difference?

Also i note sometimes after doing a home or x+/- or y+/- moves my machine buzzes as it sits there doing nothing. (i am deaf in one ear so trying to locate sound is very very hard) but its like the linear rails are, umm, energized… moving the x rail is the one that makes it the loudest but i cant tell if its the fan in the head or the rails, lol and this is the y rails doing the same. Is this normal, related to backlash or something else?