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)

I haven’t done the math to see what a centering error would do to the delta displacement pattern. I should… but that is some real work. I wonder if it would help to just remove tilt from the distortion, then measure the cup distortion. Use this measurement to adjust DELTA_RADIUS. Let the bed-leveling calibration handle residual tilt?

One issue I’m having with calibration procedures is that there is no clear explanation of which calibration errors cause what distortions in the effector movement. Right now I’m working on a delta-bot model in Octave (MATLAB) which I could use to simulate calibration errors, then plot out the resulting distortions. This could help me develop calibration intuition, and eventually lead to a script that people could run to calibrate their delta bots.