I was talking to someone in the Z=0 bug thread and he mentioned that his "Z probe" is three force-sensitive resistors (FSRs) under the glass, and tied in parallel to the Z_min pin. Wherever the hot end touches the glass, the three FSRs generate enough signal that it always triggers perfectly. He ran my probe calibration routine and found that his repeatability had a mu=0 and sigma=0. (That's statistics-speak for "utterly perfect" - no variation at all, it always triggers at precisely the same elevation.) This suggests to me that the FSRs he is using are highly accurate, at least for the way he's using them. Perhaps, then, FSRs can be used in a more elaborate way.
It occurred to me that IF:
- You have three FSRs - one near X, one near Y, and one near Z, in precisely known locations (this would require some change in how the heated bed and glass are mounted)
- Your controller has x_min, y_min, and z_min pins available to connect each FSR independently (they have to be ANALOG)
- The FSRs are hardy enough to withstand routine temperature cyclings from 0C to 120C
- The FSRs have enough resolution to discriminate the force and turn it into a usable signal, not just on or off, but on a gradient
If the hot end touches the glass at (0, 100), near the Z tower, the Z tower's FSR should register more force than X's or Y's FSRs. If the hot end touches the glass at (0, 0), all three should register the same force. There should be some mathematical formula that would triangulate the true (x, y) based on the differences in force between the three FSRs.
Are there FSRs that can withstand repeated temp cycling up to 120C? Do they have enough accuracy to produce a signal we can use for triangulation?
If such a setup is possible using FSRs that are being produced today, we would get precise endstop adjustments, and that would take a considerable amount of slack out of the calibration. If you adjust the endstops, you also have to adjust the delta radius, and if you're messing with the tower radii and rotations, those have to be redone as well. However, if the endstops are known concretely, it's one less variable that could be throwing everything off. I've found that the annealing algorithm can be tripped up if you set it to calibrate two kinds of variable that produce similar error when they are mis-calibrated, especially if you turn on all the available calibration types at the same time. (Which you really want to do, because they work better when they're converged simultaneously.)