Strain Gauge/Load Cell based Endstops

Well… I guess it was bound to happen…

It crashed, smashed the load cell and bent the cross beam. Not sure why it happened. I actually have a graph of the event that clearly shows the measurement leaving the deadband which means it should have triggered. I got no logs because I hit the power button.

I learned that the probe code doesn’t drain the move queue before it issues the homing command to the endstop. So I added a toolhead.wait_moves() in my probe_prepare() so that the retract move completes and the load cell has a chance to cleanly exit the trigger state before the trsync is enabled again.

With higher sample rates I can trigger in fewer microsteps, so the overshoot is less. This was causing the trigger setpoint to be right on the boundary of the deadband. And this caused the deadband to drift upward while the toolhead was stopped. This is a pretty classic debouncing problem. I re-used the settling count to set up a debounce variable. It counts up for successful in-band samples and resets to 0 on the first out of band sample. This means that it wont shift the deadband unless the signal has been in the deadband for the settling time.

The best I got was a range of 0.017 @ 5mm/s @ 14K samples/s. The endstop switch has a range of 0.00059. I believe on this z-axis that’s 1 microstep, so the load cell range is ~28 microsteps wide. Not entirely encouraging.

I need to take a step back and build a test rig before I break this printer.