My Ender-3 is missing about 1 mm moving in the z-direction.

When it hits the z-endstop, it produces a nice gap (~ 0.1 mm). Then, for example, I lift up the extruder 5.00 mm it only elevates about 4 mm (1mm-short).

If I lift up by 100 mm, it lifts about 99 mm (still, 1mm-short).

If I reinstall the endstop at a higher position, then it starts printing in the air.

I made a Google Slides to demonstrate the behavior and here’s the link.

Does anybody have any clue??

What slicer are you using? You may have a Z offset set somewhere

I would also check your firmware to make sure that your Z-axis stepper has the correct value for steps/mm. Your endstop switch will always stop your extruder at the height you set it to, regardless of the steps/mm you have in your firmware. Moving 4mm when you tell it to move 5mm makes me think it’s a firmware value being incorrect. I could be wrong though.

@Jory I fully agree, this would be the next thing to test for sure.

@User76, have you had any luck?

I am using S3D. The z-offset was fine, which can be confirmed by:

  1. the gap between the tip of the nozzle and the bed was fine on G28 Z (autohome Z), and

  2. the first layer had been printed well.
    https://photos.app.goo.gl/dWWXsZzHYmod9KpHA

The z-offset can be adjusted on three levels: the position of the z-endstop, the firmware(M206 command), the shift in the g-code file. I have checked all the three, with no clue.

I have already tried that with M92 Z[steps/mm], with no luck.

The thing is, I can’t “correct” the behavior by adjusting the value for steps/mm. It would have worked if my printer behaved:

“Lift to 5mm” -> (Goes to 4mm)
“Lift to 10mm” -> (Goest to 8mm, proportionally).

But my printer goes to 4mm and 9mm on such cases (more strangely, with the correct starting height).

Further investigation revealed that the missing height occurred between 0 to 3 mm interval and didn’t have hysteresis (i.e. if I order it to lift 3 mm it actually only goes up 2 mm and stops there. Then I order it to go down 2 mm it wouldn’t hit the endstop, leaving 0.x mm. Then I order it to go down 1 mm further then it just hits the endstop).