[load_cell_probe] Homing Z-axis Bug?

Basic Information:

Printer Model: own construction (not ready yet)
MCU / Printerboard: Till now: 4x STM32G0B1 connected via CAN-Bus
Host / SBC: PI5
klippy.log

klippy.log (2.1 MB)

Describe your issue:

I am making this post for the 3rd time in 20minutes now…Somehow discourse marks my post as spam each time:

Your post was flagged as spam: the community feels it is an advertisement, something that is overly promotional in nature instead of being useful or relevant to the topic as expected.

I think it tries to drive me mad…

Now to my topic:

I’m about to build a printer with a Bed-Leveling-Sytem built out of 4 load cells under the printer bed (one each corner). The load cells are connected in parallel to a ADS1220 connected to a BTT SKR Mini E3 (STM32G0B1 processor).This Borad also drives the 4 Steppers (one each corner) for the printer bed. The Z-Endstop is a [load_cell_probe] sensor.

When homing Z, the Bed only goes up the value defined in [stepper_z] position_min where in my opinion (and on my modified Ender 5 with a Biqu microprobe is the case) it should be [stepper_z] position_max - [stepper_z]position_min.

I made 2 videos to show this, the first with

[stepper_z]
position_min: -50

It seems that links are not possible here :frowning:

https://michael-gerber.de/Klipper/Video_posmin50mm.mkv

and the second one with

[stepper_z]
position_min: -20

It seems that links are not possible here :frowning:

https://michael-gerber.de/Klipper/Video_posmin20mm.mkv

In the first Video at 0:32 and in the second at 0:26 there is a strange behaviour with the Z-Value. Starting at 480 it slowly lowers by 0.1mm and then jumps to zero and lowers to [stepper_z]position_min and I get the Error “No trigger on probe after full movement”

If I do the homing several times until the head is close enough to the bed it works. Here is the video of that as well: It seems that links are not possible here :frowning:

https://michael-gerber.de/Klipper/Video_working.mkv

I want to put the [stepper_z]position_min to a value of -1 to prevent damaging the nozzle or bed in a later state.

Is this behaviour a bug in klipper?

What can I do to get my desired Value of -1mm for position_min?

Hello @MichaKC11 and welcome to the forum!

The forum system AI is quite picky when it comes to links pointing to a unknown URL from a new user. Let’s say: There have been happened some bad things in the past. And starting new threads in that moment is not quite helpful.

@EddyMI3D Thank you for the welcome and the explanation.

Meanwhile I encountered another problem while the first is not solved now.
I have activated bed_mesh and put samples: 2
sample_retract_dist: 2
lift_speed: 20
samples_result: average
samples_tolerance: 0.1
samples_tolerance_retries: 2

in the load_cell_probe section to probe 2 times at each point.

The error now is

13:41

Probe samples exceed samples_tolerance

13:41

probe: at 10.000,10.000 bed will contact at z=12.432500

13:41

probe: at 10.000,10.000 bed will contact at z=10.537500

13:41

Probe samples exceed tolerance. Retrying...

13:41

probe: at 10.000,10.000 bed will contact at z=8.631250

13:41

probe: at 10.000,10.000 bed will contact at z=6.721250

13:41

Probe samples exceed tolerance. Retrying...

13:41

probe: at 10.000,10.000 bed will contact at z=4.817500

13:41

probe: at 10.000,10.000 bed will contact at z=2.913750


I think this is the same problem with the load_cell_probe as before. It seems that klipper is putting the relative z-position to zero when taring the load cell.

It seems that you probe triggering in the mid air.
As far as my understanding goes, it should be calibrated to “real” grams, then there is a low/high pass configurable filter, and after that, there is a trigger “value”.

Basically, that is it. Toolhead descends until the load cell would more than trigger_force.
Toolhead would stop there and assume the trigger time as “zero”.

Where raw signal from the probe:

  • Tare at the start of the move (current signal is zero)
  • Descends and filters the signal
  • As soon as filtered signal > trigger force, it should stop.

Sooo, if it stops in the mid air, that means something is off, for example, you have too low trigger force, or bad filtering, or high acceleration & etc.
Which leads to triggering in the mid air.

Where adequate stepper_z.position_min, I think, is about -1 or -2 mm.

Hope that helps,
-Timofey

Hello,

I don’t thik this is the case, the trigger works fine as you can see in the last video I have posted

https://michael-gerber.de/Klipper/Video_working.mkv

The trigger force I have is 250g because the default 75g lead to the behavior you described…

Regards Michael

Hello,

to make the point a bit more clear here is the load cell graph and the error:

As you can see the probe triggers right, the trigger force is at 250g

The difference between the Samples seems to be the

sample_retract_dist: 2

I hope someone can help me…

Regards Michael

Again, from the log, or at least from the output that you show, the load cell triggers early.
That is it.

So, it tries to descend from ~3mm, triggers at 2.9, retracts +2mm
Tries to descend at 4.9, triggers at 4.8, retracts & etc.

BTW, I guess, you don’t want hold_current on Z, or on any steppers in general.

[tmc2209 stepper_z]
uart_pin = SKRminiCanZ: PC11
tx_pin = SKRminiCanZ: PC10
uart_address = 0
run_current = 1.2
hold_current = 0.100 # this is too low anyway

-Timofey

Your load cells are full bridge (4 wire) or half bridge (3 wire)?

All 4 are connected to a single input on the ADS1220?

Please supply a wiring diagram.

The ADS1220 only supports 2 differential inputs (full bridge loadcell). Full bridge load cells cannot be wired in parallel and give a meaningful result. 4 half bridges could work but your resolution would be MUCH reduced due to having to lower the PGA gain.

Your data looks like resonance excited by motor step pulses NOT a nozzle touch.

Record the output as you add/remove a test weight from the bed.

Hello,

the load cells are all connected to a single ADS1220.

For testing, I put on a coil of PLA with 1030g:

I hope this helps

Regards

Michael

The lower the hold current, the less warming of steppers :slight_smile:
I have 4 Z-steppers, tried this with different values, with 0.1 the bed is held good enough, I tried with 5kg on Bed …

@nefelim4ag

I think you were right…

changing

max_z_accel: 200

to

max_z_accel: 20

solved both of my problems…

It is common sense to rather not use hold currents in Klipper.
But of course you can do as you like.

You may read on this: TMC drivers - Klipper documentation

Glad you got it sorted.

Please mark as solved.

But for me there is one question still open for the first case with the homing error…

Why was the error “No trigger on probe after full movement” when the load cell was triggered (even when this was a false trigger)?

No trigger on the full movement generally means that the axis has been commanded to move 1.5 x distance between position min/max, and no trigger happened.

That’s the only thing I can tell.

-Timofey