Strain Gauge/Load Cell based Endstops

:heart_eyes: :fire:

  • Black dots are samples
  • Orange dot: the “elbow point”. Likely first point of the collision dataset
  • Blue and green lines: least squares best fits of the pre and post collision lines
  • Red dot: the estimated time when the collision started which is reported to klipper
  • Yellow dot is the point where the endstop on the board triggered to stop the move
  • Magenta dot is when klipper said probing ended.

Taken me more than a year to get here but these PROBE_ACCURACY results are just nuts :peanuts: :peanuts: :peanuts:

// PROBE_ACCURACY at X:200.000 Y:125.000 Z:6.573 (samples=10 retract=5.000 speed=5.0 lift_speed=5.0)
// ...
// probe accuracy results: maximum 1.573681, minimum 1.570139, range 0.003542, average 1.572205, median 1.572205, standard deviation 0.001245

(sampled at 1200 SPS)
That’s 1/2 the standard deviation of a switch probe at the same speed. It’s very close to a commercial CNC probe.

There is still room for improvement, especially on consistency between speeds and sample rates. I have at least 3 things left to try:

  • alternate elbow finder from @D4SK
  • 60Hz notch filter from SciPy to remove noise
  • Using the trapq to find when the Z axis stopped so we can take advantage data points after probing ends.
  • And maybe a 4th idea…
3 Likes