# How do I use Delta Correction?

Hi, so I'm trying to use the DELTA_RADIUS_CORRECTION and DELTA_DIAGONAL_CORRECTION variables in order to correct build errors in my printer and improve the calibration. However, I'm not really sure if I'm using these variables correctly. I haven't been able to find any instructions out there on how to use these variables.

Here's the issue with my printer: When printing a calibration object, such as this one: http://www.thingiverse.com/thing:745523
the lengths of the legs on the print are incorrect. When calibrated correctly, each pair of parallel legs on the snowflake should measure 120 mm on each side. Instead I get lengths like 119.53 (across tower A) 120.95 (across tower and 120.11 (across tower C). The instructions are written for the Marlin firmware, and the author has no interest in providing a Repetier version.

I know I'm not the only one with this problem, but I just cannot find a clear explanation. All the printer guides I find don't address this part of calibration.

• Ok I have read the instructions and adaption is quite simple - even easier then in Marlin:-)
In EEPROM you see the 3 delta tower angles which are normally 120° apart. Simply change these values like you would change the degrees in Marlin code. So if tower C should not be at 90° but 90.3° just enter 90.3 in that field, thats it.

Do not attach radius correction. What he describes are the Corr. diagonal A/B/C values in EEPROM. Here you do not enter a factor like he computes but the difference between his target diagonal length and the one you have set.
• Ok, so for example, with the 120.95, I put -.95 into the tower B radius correction? is that right?
• No, he and I were talking about diagonal correction, so put it there. So if original diagonal is 200 according to his formula new diagonal would be

200 * 120.95 / 120 = 201.58

So you enter Coor diagonal A 1.58 to close the gap to 200 which you had set already.
• My Corr. diagonal A(0) shows 0.000 B&C have the same value. Should I just put the amount of the error in there or should I still do like what you have above?
• I'm not sure if I've read your suggestion correctly. Currently, the angles are very close to 120 degrees, but the lengths of the legs on the object are not.

The length of the leg closest to Tower B and the leg colinear with that leg measure the length of 121 mm exactly, while the other legs are 120 mm. What am I supposed to calculate, and where do I put the results in EEPROM? (I have repetier host as well)
• Put in Corr diagonal A/B/C (depending on your error) diagonal*121/120 - diagonal

Also that is only a first approximation, but that is what the instructions say translated to repetier.
• Okay. Here's what I got:
when side A is 120 mm long, side B is 120.08 mm long and side C is 120.88 mm long, I calculated:

( 120.88 / 120 ) * 392.35 = 395.227
395.227 - 392.35 = 2.877

(392.35 is my diagonal rod length)

So I put 2.877 into Corr. diagonal B and 0.261 into Corr. diagonal C and I ended up getting 120.45 for the length of the B legs and 119.20 or so for the other legs. Am I supposed to decrease the diagonal rod length again until one of the legs measure 120 mm again and then subtract the difference again, then repeat the process? Or did I do something wrong here?
• Why did you put the correction for c which you computed in B and vice versa?
• I mistyped that. I meant to say side B is 120.88 mm long and side C is 120.08 mm long.
• ACK! I actually put them in the wrong spots, give me a minute to see what happens when I swap them around.
• I applied the corrections, and now all the endstop positions are out of whack. is this supposed to happen?
• Diagonal correction ha sno influnence on endstops. But it might change where z=0 is.
• ok, but my settings for the endstops are no longer valid, by quite a lot. the carriage on tower b will now drop a significant amount when homing, and the offsets put in the firmware for the endstops are no longer valid.

Is this supposed to be happening? Am I supposed to re-measure the endstop offsets for this new value?
• I didn't do it so I can only guessed that something went wrong while changing your values. Maybe wrong field ...
Since you say they are wrong, yes you have to recalibrate them.
• Hi,

I can't set up my printer - the problem is with print size. I tried to print the above linked "caldelta" circle few times. Every time I have wrong dimensions. This is how I am calculating:

My print size is:
X = 59.9 (reference)
Y= 60.27
Z=59.8

New diagonal len.:
Old * (59.9/expected = new Diagonal len.
213.993 * 59.9 / 60) = new Diagonal len.
new Diagonal len = 213.565

Corrections:

Tower A = no correction as (59.9 has the lowest error and it is already corrected by new diagonal Len)
Tower B = 60.27 - 59.9 = 0.37 (+60mm which is the desired dimension)
Tower C = 59.80 - 59.9 = - 0.1 (+60mm which is the desired dimension)

now I count new diagonal len for tower B and C:

Len B = new diagonal len * ( Tower B / 60) = 213.565 * (60.37 /60) =  213.565 * 1.006 = 214.84
Len C = new diagonal len * ( Tower C / 60) = 213.565 * ( 59.90 /60) = 213.565 * 0.998 = 213.12

Corrections:

Corr B = 214.84 - 213.565 = 1.275mm
Corr C = 213.12 - 213.565 =  -0.445mm

So I put this 3 values to EEPROM:

Diagonal rod length, Corr. diagonal B, Corr. diagonal C.

Do you think my calculations are ok?
Every time I use newly calculated numbers I receive bad print size...

Regards
Pawel

• I used the link :http://www.thingiverse.com/thing:745523 to check/setup  my angles.
then I  used this from Thingiverse.
It took me about 7 iterations of the 2nd link before I was satisfied with the result. but it worked for me.

• Thanks Roko, will try with this solution
• I tried your way, but I am not sure.

I entered my values like below

Horiz. Radius 107 (I am not sure if this value is correct)
D0 - current diagonal 213,84
L (suposed measure) 75
Lx 75.39
Ly 75.04
Lz 74.75

Output for Repetier is:
Diagonal rod len 213.901
Corr diagonal A 0.346
Corr diagonal B -0.019
Corr diagonal C -0.32

Ok. Printed again and my dimensions are still wrong,

Z=74.86
Y=74.6
X=74.76

You did 7 iterations. But how - should I change those 4 parameters again and again?
• edited December 2016
Yes I entered the new values into the spreadsheet.
• I am still trying. With no success... Every time my dimensions are not correct.

Have you changed your steps per mm for each motor?
Do you use any auto level solution for your bed?

• In Repetier the steps/mm for me has only 1 setting for all 3 towers. That was a different calculation.
My hor radius was set by setting all 3 towers to same height @ A X-77.91 Y -45, B X77.91 Y-45 C X0 Y90. Then I set Z0X0Y0 and adjusted hor rad to get same measurement at towers (make it flat) I made a script for the checking.
There was no autolevel or distorion correction enabled.
Then I followed thing 1274733. updating the 4 inputs at the top with the new values and reprinting.
Then I did G32 autolevelling.
• According to hor radius - I executed G1 X0 Y0 command and then measured:

What kind of auto level do you use - induction sensor, endstop?
Go to each tower  at the coords I entered previously and adjust the endstops to give the same height. I set one tower at Z0 height and tweaked the other 2 to match that height. Then I set up X0Y0Z0 for correct height ,carefully approaching Z0 and calibrate that point for Z0. Initially I used a piece of paper and the nozzle. Then go to a tower coord and check the Z0 height. If its too low I would increase the hor. rad @0,0. too high off the bed decrease the number. eventually they would be pretty darn close. Verify at all 3 towers. Then I would use my probe (mine is a mechanical switch)  and verify the 3 towers with the center for the same reading.(+ OR - )(my switch varies about 0.01 to 0.03) I go to Z=10 and use a 10mm shim  to check various points around the bed for flatness.I would run a g32 then to autolevel, if needed Then try the cal with the spreadsheet.It takes time. I try to get it mechanically level first.
• Repetier said:
Ok I have read the instructions and adaption is quite simple - even easier then in Marlin:-)
In EEPROM you see the 3 delta tower angles which are normally 120° apart. Simply change these values like you would change the degrees in Marlin code. So if tower C should not be at 90° but 90.3° just enter 90.3 in that field, thats it.

Do not attach radius correction. What he describes are the Corr. diagonal A/B/C values in EEPROM. Here you do not enter a factor like he computes but the difference between his target diagonal length and the one you have set.
Hi there
im trying to calibrate my delta and for tower B (Y tower? ) when i set it to 331 or 332  my delta whants to ram the bed in z - axis and lift on the  z+ axsis
does the g32 s2 autolevel not work here annymore
my bed is leweled whit autolevel and whit standard degrees i can print whit no problem
• Didn't change autolevel to not work. But after any change you need to redo it. With wrong geometry definition it will not work over complete bed and go up/down depending on dominant error. As you already said with standard degrees it works - so these seem to be closer to real geometry then and hence work better.
• So if i get it right i must adjust the angles reset the autolevel and calibrate it new to get it working? Or can i mehanicly adjust the angle so that i lengthen the one side of the delta?
• If it is already calibrated, why should the extruder go up for z-? That means calibration is not finished/perfect and you just need to continue calibration I said this because you said with correct angles the error was less, so that would be more closely to correct calibration. So it is up to you to restart or continue from a point. Just make sure to not get lost as each change has effects on more then one position. What I normally do is have 3 points for G32 all close to towers, so Z will be correct at these positions. Then test Z for center and correct horizontal radius until that also fits. That gives already a good overall fit. Only there can be waves between towers if you measure a grid in host. These can be fixed with changing angles a bit.

• Yesterday i tried and the tower angles are correct as it is default, the diagonals i must correct to get the acurracy and the perfect square (its a little bit off)
• Last small errors < 0.1mm can be fixed with G33 for the inner square.