Probe_calibrate results in negative number

Basic Information:

Printer Model: ender 3 v2, bltouch
MCU / Printerboard: 4.2.2
printer.cfg (6.7 KB)
klippy.log (2.7 MB)

Describe your issue:

after a months of running the printer fine i started to notice that the offset was a bit off.
so i thought lets run probe_calibrate within the command pallet of the fluidd ui.

but when running probe_calibrate it always result in a negative z-offset number
which fluidd will than respond with 'z_offset' in section 'bltouch' must have minimum of 0.0

i updated klipper,moonraker,fluidd to the latest versions just to be sure. but this didnt changed anything.
any help or suggestions would be appreciated.

A negative z_offset in the bltouch section means that the nozzle crashes into the bed before the probe triggers, so that can’t be right. If you’re following the steps in the documentation and it results in a negative z_offset, you may be getting bad readings from your probe or have some other hardware issue.

1 Like

image

  • Delete the marked area
  • Activate z_offset in the main [bltouch] section and set it to 3
  • Repeat the calibration according the link @theophile posted
1 Like

@theophile the strange thing is it always worked. the only thing that realy changed is the updates from klipper over time.

my steps are.

  • home (g28)
  • probe_calibrate
  • use TESTZ Z=-0.025 until it lighly grabs my 0.20mm feeler gauge

@Sineos i tried to delete the save_config entry(s)
i tried putting in different z_offset but it always end up between the -0.030 to -0.0.50

Unfortunately, this does not make too much sense:

image

Depending on the probe / clone model:

  • The distance between retracted pin and nozzle tip should be between 2mm and 4mm. Actually you should follow the recommendation or it can lead to vastly crappy readings
  • With the calibration you exactly determine the difference between the probe’s trigger point (as determined during G28) and the nozzle being at first-layer-height (typically determined with the infamous paper test)

As per logic this distance cannot be negative unless something is very screwed in your setup (or I’m completely missing something)

1 Like

the distance between the nozzle and the retracted CR touch pin is about 4.5mm
could this be the problem?

i use the default cr touch mount.
so the only other option is that i should get the nozzle up a bit more
if 4.5mm is to much of difference

Not sure. I did not find any recommendation for the CR Touch with a short Google search.

But even then: In my logic (and I’d happily stand corrected) a z_offset of 0 would mean the nozzle is already at first-layer-height when the probe triggers, e.g. during a G28.
An offset below 0 would mean that the nozzle is already driving into the bed before the probe triggers.
This should also be the reason for Klipper’s error message since this would be “kind of bad”

Edit:
My understanding:

(you actually forced me to think this through for the first time)

1 Like

Or rather this:

Try doing the PROBE_CALIBRATE procedure over the exact same spot the probe uses for homing the Z axis. If that gives you sane values, then your bed may be significantly out of level, meaning that for prior calibrations, the spot you were probing was lower than where the printer measured Z=0 to be.

If you still get negative values when probing at the same location used for homing, then I would tend to suspect a hardware problem causing the probe to return inconsistent results. If so, that could be due to the probe failing, or there could be some sort of noise or interference on the signal lines.

Good points @theophile
The other explanation could be that the probe is mounted too high → Trigger point moves up → z-offset might even become negative

Although this should be clearly visible. This would mean the nozzle already touches the bed during probing.

@Sineos that was exactly how i envisioned it
and the nozzle definitely does not hit the bed when the nozzle is extended, not even close.
so i think we can rule that out.

i will double check the bed warping and check for cable interference.
if all fails than al i can think of is a defective probe indeed.

Guess you meant “when the probe is extended”. This is not the critical spot. Check where your nozzle tip is when the probe triggers, i.e. when it snaps back up.

indeed i meant when the probe was extended.
and the nozzle does not hit the bed when the probe triggers.

i now set the offset to 0.0
and adjusted the bed a bed. this seems to provide me with a somewhat nice first layer. for now.

when i did a SCREWS_TILT_CALCULATE it seemed that the results coming back from the probe was correct see below.
so for me its hard to understand why the probe should be broken.
it seems more to me that calculation is wrong when doing a probe_calculate

11:32:46 
$ SCREWS_TILT_CALCULATE
11:32:52 
// probe at 75.000,35.000 is z=0.017500
11:32:57 
// probe at 75.000,192.000 is z=0.012500
11:33:03 
// probe at 230.000,192.000 is z=0.030000
11:33:08 
// probe at 230.000,35.000 is z=0.000000
11:33:08 
// 01:20 means 1 full turn and 20 minutes, CW=clockwise, CCW=counter-clockwise
11:33:08 
// front left screw (base) : x=75.0, y=35.0, z=0.01750
11:33:08 
// rear left screw : x=75.0, y=192.0, z=0.01250 : adjust CW 00:00
11:33:08 
// rear right screw : x=230.0, y=192.0, z=0.03000 : adjust CCW 00:01
11:33:08 
// front right screw : x=230.0, y=35.0, z=0.00000 : adjust CW 00:01
11:37:48 
// probe at 117.500,117.500 is z=-0.135000
11:37:49 
// Starting manual Z probe. Use TESTZ to adjust position.
// Finish with ACCEPT or ABORT command.
11:37:49 
// Z position: ?????? --> 4.865 <-- ??????
11:38:01 
$ TESTZ Z=-1
11:38:01 
// Z position: ?????? --> 3.865 <-- 4.865
11:38:03 
$ TESTZ Z=-1
11:38:03 
// Z position: ?????? --> 2.865 <-- 3.865
11:38:05 
$ TESTZ Z=-1
11:38:05 
// Z position: ?????? --> 1.865 <-- 2.865
11:38:07 
$ TESTZ Z=-0.1
11:38:07 
// Z position: ?????? --> 1.765 <-- 1.865
11:38:08 
$ TESTZ Z=-0.1
11:38:08 
// Z position: ?????? --> 1.665 <-- 1.765
11:38:09 
$ TESTZ Z=-0.1
11:38:09 
// Z position: ?????? --> 1.565 <-- 1.665
11:38:10 
$ TESTZ Z=-0.1
11:38:10 
// Z position: ?????? --> 1.465 <-- 1.565
11:38:11 
$ TESTZ Z=-0.1
11:38:11 
// Z position: ?????? --> 1.365 <-- 1.465
11:38:12 
$ TESTZ Z=-0.1
11:38:12 
// Z position: ?????? --> 1.265 <-- 1.365
11:38:13 
$ TESTZ Z=-0.1
11:38:13 
// Z position: ?????? --> 1.165 <-- 1.265
11:38:14 
$ TESTZ Z=-0.1
11:38:14 
// Z position: ?????? --> 1.065 <-- 1.165
11:38:16 
$ TESTZ Z=-0.1
11:38:16 
// Z position: ?????? --> 0.965 <-- 1.065
11:38:16 
// Z position: ?????? --> 0.965 <-- 1.065
11:38:17 
$ TESTZ Z=-0.1
11:38:17 
$ TESTZ Z=-0.1
11:38:17 
// Z position: ?????? --> 0.865 <-- 0.965
11:38:17 
// Z position: ?????? --> 0.865 <-- 0.965
11:38:20 
$ TESTZ Z=-0.1
11:38:20 
// Z position: ?????? --> 0.765 <-- 0.865
11:38:21 
$ TESTZ Z=-0.1
11:38:21 
// Z position: ?????? --> 0.665 <-- 0.765

Seems quite unlikely, since this is proven to work on countless printers. Also SCREWS_TILT_CALCULATE is not directly related to the topic (although a properly leveled bed is of course a prerequisite for successfully determining the z_offset. Impact of the bed leveling can be reduced by using the same spot for homing / probing / paper testing)

1 Like

Hello,

Has this been solved? Just a heads up here…

I made failure after failure until I realized my slicer source was a bit off/oof. And yes, I like 3D Printing items for use, learning, and for a sort of correspondence.

Anyway…enough chitchat here. I hope you got all of the three necessities cornered, e.g. bot-slicer-cfg.

It is not always easy and at times, I give in, up, and mediate myself to keep learning.

Seth

P.S. I think there were a lot of valuable points dedicated to the BL Touch or Creality Touch or whatever.

I ruined a Capacitive Sensor thinking my sensor was at fault for reading where the heated_mat and glass bed are adhered together. Anyway, ruined sensor or not, it was a simple slicer issue.

This is hard for me to say. One day things work, I change something, and that change does not reflect on the BIG THREE (bot-slicer-cfg).

[probe]
# needs to be the same in here as in the slicer file
...
#z_offset: 4.0

...
#*# [probe]
#*# z_offset = 1.250

This may or may not shed light on the current issue. But, the lesson has been learned from my perspective. $35.00 sensor alone which is almost impossible to find at that price. Omron! So…

  1. Slicer source needs to match 1:1 to the printer.cfg file
  2. The bot needs to be w/out error
  3. For PROBE_CALIBRATE, try the middle of your workpiece
    a. TESTZ Z=-0.5 to start should get you a feel for testing before ACCEPT and SAVE_CONFIG
    b. Also, if you have any offsets, use them and make sure these offsets are in the slicer source and copied to the .cfg file in the required sections…
    c. Rule of Thumb: if it does not work, usually it is us and not Klipper source

If you find a bug, bug 'em! Ha.

Ok, so I had this problem and let me tell you what I found out. I didn’t know you needed to heat up the nozzle and then RETRACT, then screw in the nozzle. My nozzle wasn’t screwed in all the way so it was crashing into the bed before the bl touch sensor retracted. I feel stupid but here to share it with the world so some other guy doesn’t spend a two days wondering.

1 Like

Hello, i faced with the same error (z-offset can not be negative). And I don’t understand how this can work with z-offset>=0!

  • The z axis is directed from bottom to top.
  • Z-offset is counted from the end of the hotend.
  • The bltouch trigger point is lower than the end of the hotend (otherwise the hotend would hit the table).
    Thus z-offset is a value less than zero (hotend_position (==0) + z-offset (<=0) == bltouch-trigger-point (<=0))
    What did I miss?

The z-offset is the distance between the tip of the nozzle and the trigger-point of the probe.
A negative z-offset means that your probe triggers below the bed surface. Typically not something you would want.