Strain Gauge/Load Cell based Endstops

Took a couple days to reflect on where I’m at and what to do next.

Clearly I need to ship a guided calibration tool and some documentation. A bunch of safety checks need to be added to stop people from accidentally crashing their machines. I’m going to focus on this first.

On the accuracy side, I think we need to look at the two core algorithms and find a way to measure the impact of any further code changes. Specifically:

  • Locating the elbow point
  • Estimating the contact time based on the elbow point

I think a good next step here would be setting up a simulation of a probe so we can control the exact timing, velocity, noise, elasticity etc. I cant run real probes in the 10’s of thousands that it would take to validate tweaks to this code. I think there is probably another order of magnitude improvement to be had with the right mathematical model. This might be something we can work on as a community.

Then there are other things beyond the current approach. Prusa captures both the down and up strokes of the probe and actually bases their z height on the up stroke. We could look into doing the same. Having 2 probe samples for the time cost of 1 is certainly attractive.

I’m also looking for ways to improve sensor read performance possibly using adaptive timing. This hasn’t been done exactly this way before in the klipper codebase but the general idea is not uncommon in other applications. It would be a win for low SPS devices like the HX71x chips.