This is an old revision of the document!
Table of Contents
Nozzle is high above the bed at HOME
HOME doesn't take us to the center of the plate, by homing we send the probe to the trigger position.
HOME is not where the nozzle is at the center of the bed, it's where the probe is at the center x,y position, not the nozzle. HOME is also not Z0, unless you’ve changed this, and it should be about 10mm above the bed, yet we expect it to be ~10mm +/- the gcode z offset and a variety of other factors. See Layer Height Composition for a diagram that explains some to the factors that go into the exact nozzle position.
Usual suspects
So why's the nozzle too high or in the wrong expected position? Often it's the expectation is wrong.
the bed is leveled poorly
The bed screws could be set at extremes. Unscrew them each, all the way, then screw them back on just 1 1/3 full rotations and relevel the bed with SCREWS_TILT_CALCULATE. Do not level with the paper method.
offsets are affecting position
You could be using the gcode z offset for more than its proper role as nozzle height adjustment and also overloading it with an error adjustment for the probe not being calibrated. If your gcode z offset is negative, then this confirms your z probe isn’t calibrated. If that adjustment value was miscalculated then your position could be off.
Set your gcode z offset value to an appropriately up/down value than it is currently, using SET_GCODE_OFFSET MOVE=1 Z Z=newValue to bisect the difference until it’s about 10mm off the bed. Then calibrate your gcode z offset. Do not use the paper method. Use observation for the correct filament squish while babying stepping.
our z probe is misaligned or damaged
Check to make sure it’s properly aligned in the head.
Diagnosis
Enter the follow in the Klipper console to home the probe :
G28 GET_POSITION
This should produce something similar to:
// mcu: stepper_x:-334500 stepper_y:312573 stepper_z:-80771 // stepper: stepper_x:141.000000 stepper_y:98.000000 stepper_z:1.449000 // kinematic: X:141.000000 Y:98.000000 Z:1.449000 // toolhead: X:141.000000 Y:98.000000 Z:10.000000 E:40218.477580 // gcode: X:141.000000 Y:98.000000 Z:9.991639 E:40218.477580 // gcode base: X:0.000000 Y:0.000000 Z:20.010000 E:40219.677580 // gcode homing: X:0.000000 Y:0.000000 Z:20.010000
This tells us the toolhead (nozzle) considers itself at the X:141.000000 Y:98.000000 Z:10.000000 position, which is where the probe is at the center of the bed for the Neptune 4 and 4 Pro.
However our gcode offsets for x,y,z are X:0.000000 Y:0.000000 Z:20.010000 so we're very likely far from the plate, likely about 30mm above the plate.
Observe above that stepper: stepper_z:1.449000 is my probe z offset value as we're at the probe trigger point position.
Is your's zero? If so your probe is uncalibrated as this should be the measured z distance between the nozzle and the probe. You're including an adjustment for the lack of this in your gcode z offset and that adjustment value varies.
In the end what really counts when it all comes down to the actual position that's what's actually being considered by the mcu which uses the mcirostep position of the abstracted stepper motor (micro steps position.)
Compare this with the following:
G28 G1 Z10 GET_POSITION
which should produce something like
// mcu: stepper_x:-334499 stepper_y:312528 stepper_z:-57916 // stepper: stepper_x:141.000000 stepper_y:98.000000 stepper_z:30.030250 // kinematic: X:141.000000 Y:98.000000 Z:30.030250 // toolhead: X:141.000000 Y:98.000000 Z:30.030000 E:40218.477580 // gcode: X:141.000000 Y:98.000000 Z:30.010000 E:40218.477580 // gcode base: X:0.000000 Y:0.000000 Z:20.010000 E:40219.677580 // gcode homing: X:0.000000 Y:0.000000 Z:20.010000
Here the Z10 + the gcode offset has the toolhead (nozzle) at 30.010000mm from the bed.
Cautiously, compare this with the following:
SET_GCODE_OFFSET Z=0 MOVE=1 G28 G1 Z10 GET_POSITION
which should produce something like
// mcu: stepper_x:-334501 stepper_y:312520 stepper_z:-80780 // stepper: stepper_x:141.000000 stepper_y:98.000000 stepper_z:1.449000 // kinematic: X:141.000000 Y:98.000000 Z:1.449000 // toolhead: X:141.000000 Y:98.000000 Z:10.008409 E:40218.477580 // gcode: X:141.000000 Y:98.000000 Z:10.000000 E:40218.477580 // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:40219.677580 // gcode homing: X:0.000000 Y:0.000000 Z:0.000000
and the nozzle at about 10mm above the plate.
