Backlash compensation (in Z) M425

New Home Forum Mostly Printed CNC – MPCNC Advice – MPCNC Backlash compensation (in Z) M425

This topic contains 9 replies, has 3 voices, and was last updated by  Alex 4 months, 3 weeks ago.

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
  • #98426


    Hi everyone,

    did anybody test marlins backlash compensation (M425) so far?

    My measurements show now backlash in x/y, but the usual lead screw backlash (0.04mm). Compensation in software is standard, however estlcam unfortunately seems not to support it (did I miss something?).

    Marlin has the M425 command. Does anybody test it with the mpcnc?



    I know 0.04mm is not much, but it’s a systematic error which might hit me when milling 3D shapes like airfoils, and it is standard to correct it in software.



    I had a look in the dual endstop firmware.

    There I find M425 / backlash related stuff only in ./Marlin/src/lcd/extensible_ui/ui_api but nowhere else. To my understanding this are only settings vial LCD, which should be taken into acount elsewhere (in the basic code).

    Could it be that the firmware uses a state of marlin in which backlash compensation is only partly implemented?


    in the current marlin 2 firmware, there is everything M425 related stuff included

    I now used the most recent firmware (the marlin bugfix-2 branch has been megred in recently) and I was able to enable backlash_compensation in configuration_adv.h

    #define BACKLASH_GCODE

    I decided to keep the default compensation to 0 which is ‘off’ by default. This should allow me to configure from repetier-host using

    M425 Z0.04

    M425 F1 ;full compensation

    M425 S0 ; no smoothing

    M425 Z0.04 F1 S0 ; one liner

    works like a charm!

    1 user thanked author for this post.


    I just updated the firmware to include the firmware changes for backlash compensation last night. I am confident you are the first one around here to try it.

    I am a little skeptical about your 0.04mm number. The Z axis on the T8’s is easily 1-2mm. Since we have gravity on our side, plunging into metal is the only time it should/could be a problem. How did you come up with that tiny number, I don’t think I have any tools that could accurately test that.

    1 user thanked author for this post.


    Hi Ryan,

    I used the dial gauge sown in the picture in the measurements post. It was about 13 $ and can measure down to 0.01 mm.

    I plugged it in vertically (not horizontally as shown in the picture) and from repetier stepped z down, then up with the lowest possible setting (which is 0.01mm). I counted 5 commands until I see the dial move (which means 0.04mm backlash) in both directions. Correcting this via M425, I can step back/forth and the needle hops to the next dial segment as expected.

    This is force free (not like plunging into some material)! Gravity holds the spindle down, but the nut on the screw has backlash when changing direction (which is typically small). I’m not talking about forcefully pushing the spindle up.


    As an example: when milling foam (XPS) in 3d, e.g. a sphere like surface or in my case an airfoil. The material will not ‘lift’ the spindle. However:

    along one path across the geometry the milling tool /spindle for half of the pass is stepped up in z, then down again for the second half. The backlash artificially flattens the region within the backlash length – so in my case everything around the uppermost positions within 0.04mm would have had the same z hight.

    Could be that I’m too much of a perfectionist, but I dislike having systematic errors I know they could be fixed.


    By the way: I found squaring the machine can easily be done mounting a needle in the spindle, use some paper and dip a tiny hole at the corners of a large square (and measure the diagonals). I found this much more accurate than using a pen.


    1 user thanked author for this post.


    What board and drivers are you using (step rate)? Was the axis holding a spindle at the time of measurement (it should)? 0.04mm both up and down, and consistently? Pictures of your Z axis coupler area would be cool so I can make sure it looks good. What happens if you directly tell it 0.025mm steps or 0.03mm not just 0.01mm sequentially. After you have cleared the backlash zone does it correctly step at 0.01mm, what about other increments 0.017mm? Or from zero to 4.01mm? I am not confident in the one method of testing. A longer range is probably a good test as well and would show the same thing but bypass potential firmware/software/driver settings.

    G90 Z0.015 F200

    This is interesting to me, I am sure there are some hardware issues but I would suspect them to be larger if the showed up. I am wondering if it is a software/firmware thing. We have a lot of settings in the firmware that might disregard a single command and wait for a larger move to add it all together. All sorts of new motion controls/smoothing that have been implemented.




    sorry for the late response.

    I did the tests also for larger steps and had the same backlash (0.04mm) there (if not corrected), too as far as I remember.

    Its the ramps 1.4 and DRV8825

    I don’t think it is a problematic issue due to 2 reasons

    • 0.04 is a small number. Spindle getting warm and therefor a bit longer over time might give us a larger error than that I guess
    • I think this is a usual effect of the lead screw. It is not a 100% fit on the nut and therefore when reversing direction there is some ‘loss’.
      This is also well known for much more precise ballscrew axes. Guys there sometimes use 2 ball bearing parts which get tensed up. The tension however leads to wear and recurrence of backlash over time. Therefore it is usual to correct the backlash in software for those machines.

    You guess gravity pulls down the nut on the lead screw and we therefore should not see a backlash effect. I will redo the test with larger steps to sort out firmware issues. Thanks for the hint!



    I made some further tests:

    • its not the firmware or the drivers: if I issued the micro steps, I can definitely hear the motor making a step
    • the backlash is present also for larger steps
    • the actual value changes a bit along the Z height (sometimes 0 sometimes up to 0.04mm much is not much either)

    The heavy spindle compresses the aluminum decoupler completely.

    Sorry for the bad quality, my lense has a crack and the cam refuses to focus correctly.

    The Z-axis runs smooth. Without motor holding it, it slides all the way down (btw. is ther a good approach to prevent this / hold the spindle in place without motor engaged?)


    any further information / photos desired?





    The heavy spindle compresses the aluminum decoupler completely.

    I don’t think this is intended in the design.  The lead screw is supposed to be butted up against the motor shaft (inside the coupler), so axial compression is supported by the motor bearings.  And the bottom side of the coupler is supposed to ride on the bearing which sits in the plastic part, so tension on the lead screw is supported through the coupler and bearing.

    Not sure if it would make a difference in your experiments, but that’s my understanding of the intended design.

    2 users thanked author for this post.


    Correct. I have a cutaway view of this in the assembly instructions. The shaft and screw should touch. The stepper bearings are rated high enough to support a router.

    1 user thanked author for this post.


    Ok, got it. I will correct this.

Viewing 10 posts - 1 through 10 (of 10 total)

You must be logged in to reply to this topic.