I have been having some trouble with the delta 3d printer endstop calibration procedures.
It seems like something more formal might converge faster.
I question weather putting the effector in the center of the print bed is correct, given construction errors. My printer is unlikely to be perfectly symmetric and squared.
It seems to me that if things are centered, any bowl distortion should be uniform.
Hence, we should be able to calibrate the endstops by measuring the height of points in a commanded circle about the “center”, then adjusting the endstops such that those points would be at the same height on a properly calibrated printer.
For this procedure, some bowl distortion is expected. Try to calibrate for a flat, symetric bowl.
Alternate this flat-bowl calibration procedure, with adjustments to the DELTA_RADIUS to try and remove the bowl distortion. I will assume that the rod length can be accurately measured, so it will not be adjusted.
Command the effector to equally spaced positions around a circle, and note the actual Z height error at each position. Using calculate_delta.m, convert these Cartesian error positions to the Tower XYZ heights that should have been required to command to this measured Cartesian position.
Compute the mean of all of these tower positions, and subtract them from the current endstop offsets as set by M666 (and reported by M503).
Iterate on this procedure until until the commanded circle is flat.
You may wish to adjust by something like 0.9 or 0.6 times the computed adjustment to avid overcorrection.
I would recommend sampling 4 points, at (50,0,z0), (0,50,z0), (-50,0,z0) and (0,-50,z0) since these positions are easier to command.
If you wish, you could calibrate at points neareast to each tower, which should be (-43.3,-25,z0), (43.3,-25,z0) and (0,50,z0)