Automating Delta Calibration Setup

Automated Delta Calibration Request

I'd like to request the following Delta printer setup revision, or similar, be considered. I realize some of these sequences are in place. I am requesting a refinement of process for a more fully automated delta printer setup and configuration, which will create a faster printer setup, more precise prints sooner and a better printing experience. (Maybe?)

* Delta printer kinematics are now well modeled within the firmware and software.
* Properly configured Delta printers print successfully.
* The Delta printer form/configuration are generally similar, known and stable.
* The print beds are commonly either round or square and we are comfortable with the printer hardware operations.
* Many Delta printers have bed sensors/probes for Z height and bed leveling.
* There are several tedious ways to setup, calibrate and commission a Delta printer.
* To get a close tolerance print of fine quality the refinement settings are an iterative, tedious and time consuming process.

 Please consider the following calibration sequencing for Repetier firmware and Host software.

I suggest a more automated Delta Printer setup and bed level process as follows:

Wizard - Sequence suggestion for delta printer calibration and setup by Operator.
1. Turn machine on and connect PC Host to printer.
2. Initiate a First_Time/Recalibration setup wizard.
    Follow wizard instructions:
        1. Determine and Mark or Note print surface bed Center.
        2. Place piece of paper on print surface center and manually lower and position the print nozzle onto the paper and print surface center.  Allow the customary light drag of paper between nozzle and print surface.
        3. Press the calibration wizard 'Next' sequence and the machine homes X, Y, Z axes/towers. The distance measurement from bed center to top/home recorded.
        [Now, it will be known the tower heights from firmware measurement and print bed dimensions from the configuration.h file. The X, Y, Z heights do not have to be equal or even. The firmware/software will calculate their use. The X, Y, Z distances measured to bed center are used for calculation of preliminary printer dimensions and positions of the print bed location and condition. The firmware/software records and calculates: the print bed center, an approximate diagonal rod, smooth rod, Z height, and some other dimensions from known geometry of a delta printer. These first step software calculations are determined from a Delta printer's geometry and are good enough since more refined and detailed dimensions for the printer to print close tolerances will be calculated through and from the bed leveling process - Not from hard physical printer dimensions.]
        4. Offer selection to run - Bed level sequence - or not.

        [Use the Z probe to measure the bed level and to refine the delta diagonal rod dimensions as well as the other dimensions to print level while also removing the concave tendency of the delta printers.]

The above rough sequence will automate the present process quickly allowing an Operator to accurately setup and/or recalibrate a Delta printer.

Firmware & Software changes (?)
Actions/Calculations performed by Firmware and PC Host to be part of automated configuration, setup and EEPROM store:
* Print height - calculate from measurement of distance of print head travel to bed center - manual print head/nozzle placement by the Operator and noted by the printer through calibration home command.
* The print bed shape & dimensions will be input by Operator within the configuration.h file.
* Delta printer hardware configuration selected for calculations.
* From print bed center and the height of X, Y, Z towers all other information can be rough calculated.
* Run a bed level which now can be automated since the print bed dimensions and the X, Y, Z tower distances to bed center are known. The head can go to within 5mm of bed height and begin to probe the bed for level. The bed rotation for a square print bed can be determined with an edge test within the probe test. If the Z probe goes -X below bed center then an error is sent to determine a past edge condition. The process continues mapping out a surface and the edge errors. From this a rough orientation of the bed can be determined. And since the bed center is known, the geometry and dimensions then the corrected bed position and orientation can be set within the EEPROM.

Required Software Values from new process sequence -
Known and automatic measured values -
* Bed size and shape     - Configuration.h file and Host, as present, input by operator - round (diameter), square (L X W).
* Print area center      - Manual process via print head/nozzle placement to print bed center and a piece of paper by Operator.
* X, Y, Z heights         - Calculated by printer firmware and Host interactions when special home command is executed.

Calculated -
* The diagonal rod, horizontal distance and some other printer measurements can be calculated by software to fit known Delta geometry and from values above to provide accurate printing.
* Will still require existing Z probe offsets input from measurements by Operator from physical machine geometry.


  • Unfortunately, the task is not that simple. If diagonal or horizontal length are wrong, the z map would reveal waves. With bed rotation the skew of bed also gets added. If some tower positions are not exact you get additional disturbances into the map and you can not find this error with a z-probe - that requires a delta calibraion print.

    Calibration needs some experience to find out what wrong measurement is causing what. I do not see a simple solution to let software decide all this. Things like diagonal rod size can be measured by the user, so we accept user choice and calibartion prints revial if this is correct.

    From the center position we find the right homing sequence and compute the endstop offsets (G131/G132) so that part is already implemented.

    For bed leveling we normally use symmetric positions near tower to remove most error defects getting the best possible bed rotation. That is the point where the automatic calibration stops. To optimize further you would need to tweak your geometrie errors guessed from height maps and check it. I know tedious work but I haven't found a working automated process to find this directly. With some optimization tweaks you can run a optimiztion for 10 minute sor so and it may converge against a value or not, but that is often not the correct solution and even more often does not converge at all making all worse.

    Last solution is G29 making a distortion map to correct remaining bumps you didn't figureout. We spend month of testing in all the calibration stuff, but that's the best we could do so far. If you have some nice math formulas to do better let us know, but we simply have too many variables and only small differences with errors in measurements to work with.
  • Thank you very much for your time and detail regarding my suggestion/request. Granted my suggestion would require some assumptions for perpendicularity of towers to bed, angles between towers to bed center and a few others. But, with a nearly correct machine and the bed center, shape, homing distance from bed surface with a bed level test I was certain that most other dimensions could be iteratively calculated by the firmware for best case. The diagonal rod would be an easy calculation for a from bed center and z homing. Then, the diagonal rod would be fine tuned by the firmware after a bed level probe of points. This is done manually by Operators now in an iterative fashion so can become an automated effort.

    In your video you use rods to set the carriages to the same distance from the bed. This could be eliminated if the test setup collects the X Y, Z distances from an automated sequence between the print head nozzle and print bed center to Z home. You would then be able to account for an off center print bed to machine towers too. Any variances of the tower to bed center would be captured. Remember, the delta consists of a certain ideal geometry from which we build. Many of the various rod length values are then more constrained when you set the print bed size, shape and collect the tower heights from the print bed. The machine is triangle with constrained vertices and can not vary much once you know the center of print bed, the print bed size and the distances the X, Y, Z towers can traverse. We are not trying to envelope all possible dimensions of any machine but a Delta that can print to a bed of size A, Center of B, and height of C. Yes? The rest of the dimensions as present are fine tuned during the print bed Z probe leveling process. I was suggesting this be a fully automated process by linking the various steps and simplifying, for the operator, some.

    From a machine wizard: Configure the print bed size, Configure Z probe offset. Place the nozzle properly in center of print bed. Run Z Home. Run Z probe bed level. Firmware captures data, runs calculations, sets values of bed positon, level, tower lengths, rod lengths to print level into EEPROM. Then, Operator prints perfect print.  ;-)

    Either option ---- Thank You very much for your fine Firmware and Software, your deligent support, continued high quality effort and excellent results. And Thank You All for making - Making - available and fun for the rest of us to follow and play along.

     The tower X, Y, Z distances then can be of different heights which are accounted for in the firmware calculations and EEPROM saved values.
  • Your text clearly shows the problem, which are assumptions that are more often not correct then you think.
    1. Finding bed center and position extruder exactly over it is not really possible. For one of my deltas I can hardly see the nozzle at all if at z=0 and the other is a bit better but I wouldn't think I could find it as accurately as I need. The G131/G132 rod trick does the same only differently. So G131 moving to center and G132 would also work perfectly if you hit the center.

    2. Calculation from homing from delta. Formula is diag rod length = sqrt(deltaZ^2 - horRadius^2) so you assume horizontal radius would be known and correct.

    3. z-probe can not reach the same positions as extruders if they are offset or even if not depending on printer. So it is not always possible to reach a position where one diagonal is exactly vertical. This would be a position allowing to neglect some influences like wrong diagonal rod length for leveling bed.

    What I wanted to show is that it is easy to make wizard if you make enough assumptions, but every printer has different errors making the assumptions wrong and requiring a different solution. None the less I hope I someday get the time to find a good method to automate this somehow, but the solution will be complex to implement and test.
Sign In or Register to comment.