How do you calibrate a delta robot 3D printer?
This answer below is (partially) taken from my answer to Delta printer nozzle not moving square with a perfectly level bed (as if the bed is bent... but it isn&#39;t).

Whilst the answer below is for a Kossel, assuming that you are using Marlin, then the process should be more or less the same.



Calibration on any printer is difficult, but especially so on deltas, as there construction is more complex than a cartesian printer.

Have you manually calibrated the printer (at both the center and the edges), such that you can just about get a sheet of paper between the print bed and the hotend nozzle, at z = 0? This last check ensures that the first printed layer of extruded filament is actually touching and "presses on" to the print bed. 

I seriously recommend that you watch this video #18:Calibration for a great explanation on the use of the paper. This video is for a Delta printer, a Kossel XL (although the Kossel Mini is also covered) and it clearly demonstrates the height that the zeroed print head should be at, and how to check using a sheet paper.

It is an hour long tutorial video, by Tom of BuildA3DPrinter.eu, and it shows you step-by-step how to calibrate the printer, and also how to deal with deformed beds (concave/convex). It uses:


Arduino IDE, and;
Pronterface

and performs the calibration by adjusting, in the firmware:
MANUAL_HOME_Z_POS, and;
DELTA_SMOOTH_ROD_OFFSET




Here is a run down of the video's contents:


0:00 Intro: The perfect first layer can be obtained, either with/without a probe (the printer is, arguably, better without probe) This tutorial is without the probe. 
0:55 Arduino software loaded with Marlin firmware source, looking at the file configuration.h and in particular, the line #define MANUAL_HOME_Z_POS
2:30 - Ensure that the Pronterface USB port is disconnected as otherwise this will inhibit the Arduino IDE from connecting to the printer.
3:20 - Initial test - Gap at the center of the bed


Connect with Pronterface and use the following G-code commands
G28 Home the printer head
G1 Z10 Bring the head down...
G1 Z5 a bit more...
G1 Z4 a bit more...
G1 Z3 a bit more...
G1 Z2 a bit more...
G1 Z1 and if the head hits bed then this is too close
G1 Z2 raise the head again
Paper thickness is 100 microns, place under the head
G1 Z1.5 lower the head again, but no by so much as before
Slide the paper between head and bed. The paper should move freely, but with some friction felt (you should be able to hear the head lightly rubbing against the paper)

7:11 - Deduction of actual distance from print bed is 1.5 mm
7:30 Return to firmware, and finely tune MANUAL_HOME_Z_POS in the Arduino IDE, disconnecting Pronterface again and upload.
8:10 - Return to printer 


Connect with Pronterface, again, and use the following G-code commands
G28 Home
G1 Z5 F5000 Move head down rapidly
G1 Z2
G1 Z1
G1 Z0 and the head comes to a rest at the correct distance from the bed
Retest with the paper

9:30 Final test


G28 Home
G1 Z0 Go from home straight down to the bottom

10:02 - Further calibration


G1 Z0.2 Raise head ever so slightly to give us some room
In Pronterface - Move the head horizontally
G1 X50 - Moves head 50 mm to the right
In this case, if there is a larger gap between the head and the bed. This means that the bed is curved, and convex. If the gap was smaller, or the head hits the bed, then the bed is concave

11:40 - Diagram of convex and concave print beds
12:10 - Endstops


G1 X-40 Moves the head to the left (of center) and the head is now further away from the bed than in the middle. 

13:20 - This means that the endstops are not correctly positioned. So, before tackling the concave/convex issue, it is first necessary to adjust the endstops, for each tower.
13:37 - Tackling the tower positions individually


G1 Z10 For safety reasons, leave a margin of 1 cm.

14:08 - Calibrating the X tower (left tower). Note: The commands will depend on whether you have the Kossel or the Mini.


Printer moves in three axes: 


X: parallel (to the front);
Y: perpendicular (to the front);
Z: height (not of interest at this point).

X tower is not in either of these axes exactly
G1 X-100 Moves the head to the side but 6 cm away from the X tower
G1 X-100 Y-60 Positions the head next to the tower correctly
G1 Z5 - Lower the head bit by bit
G1 Z2
G1 Z1
G1 Z0 and the head is still 1 mm too high

16:50 Endstop needs to be adjusted by 1 mm lower. There are two ways of doing this:


Lower the endstop itself - good for large changes
Adjust the screw - good for smaller adjustments. Turn it anti-clockwise, and raise the screw by 1 mm.
-G28 Home
G1 Z10 Bring head down 1 cm above bed
Move to the tower:


XL: G1 X-100 Y-60
Mini G1 X-60 Y-35

G1 Z2
G1 Z1
G1 Z0 Head hits the bed
G1 Z0.2
So the end stop needs to be raised by 0.2 mm, by re-adjusting the screw (turning it clockwise).
Now home it the head, G28
And bring it down G1 X-100 Y-60 Z0 and it should not hit the glass and the paper should slide underneath

21:00 Minor re-adjustment and fine tuning so that the paper slides without the need a too much force.
21:50 Repeat for each tower
22:15 Y Tower (right tower)
-G28 Home


G1 Z10 Bring head down 1 cm above bed
Move to the tower:


XL: G1 X100 Y-60
Mini G1 X60 Y-35 

Repeat the above process - remember to test with G28 and G1 X100 Y-60 Z1 for safety, and then adjust the Z command
This is an iterative process

28:04 - Z Tower (rear tower)
-G28 Home


G1 Z10 Bring head down 1 cm above bed
Move to the tower:


XL: G1 X0 Y120
Mini G1 X0 Y70 

Repeat above process

30:14 Re-check! each position (center, X, Y and Z towers)


G28 Home
G1 X0 Y120 Z0 Check Z tower &amp; drop head (head should not touch the bed)
G1 Z10 Raise head (see below)
G1 X-100 Y-60 Move to X tower
G1 Z0 Drop head (head should not touch the bed)
G1 Z10 Raise head (see below)
G1 X100 Y-60  Move to Y tower
G1 Z0 Drop head (head should not touch the bed)
Calibration of the endstops is now complete

31:30 Why the Z10?


G1 Z10
G1 X0 Y0
The first calibration was the center point, but now the endstops have changed and as the bed is either convex or concave, we therefore raised the head by 1 cm, using the Z10, to avoid hitting the bed in the center. Now test it
G1 Z2 Lower head slightly
G1 Z1
G1 Z0 If the bed is concave then the head is still too high! Conversely, if the bed is convex the the head will hit the bed.

32:40 Adjusting the DELTA_SMOOTH_ROD_OFFSET in configuration.h - alter the physical parameter of the printer:


Convex: Increasing DELTA_SMOOTH_ROD_OFFSET lowers the hotend in the center
Concave: Decreasing DELTA_SMOOTH_ROD_OFFSET raises the hotend in the center
Adjust the setting in the Arduino IDE and recompile and upload (ensure that Pronterface is disconnected)

35:07 Testing the new DELTA_SMOOTH_ROD_OFFSET setting - again in Pronterface:


G28 - As the firmware has changed, we must re-home.
G1 X0 Y0 Z0
You will notice the the center point has not changed! It is the same. However if you go to the tower positions you will see that the (previously) perfect gap has changed. This is because by changing the DELTA_SMOOTH_ROD_OFFSET the center stays in the same place but the edges change instead. So, for the convex bed, we have virtually bent the surface, without moving the center point down, and moved the rim up (or, for a concave bed, down - depending upon the direction of the adjustment), thereby flattening the bed.

37:10 Demonstration of adjustment
37:51 Adjusting the height


Return to the firmware and change, again, the #define MANUAL_HOME_Z_POS line that we changed at the beginning, adjusting it by the amount that the head is from the center point. 
Disconnect Pronterface and upload the new adjusted firmware. 
Then reconnect Pronterface, and Home (G28) and drop to zero (G1 Z0). 
The head may still a little too high. 
Then move to the tower, and the head may be too close to the bed, without any gap. This means that the bed is still convex and further adjustment is required of the DELTA_SMOOTH_ROD_OFFSET and then, obviously, the MANUAL_HOME_Z_POS. 
Again, this is a bit of an iterative process. Don't forget to home after any firmware updates.
Finally once the bed is flat (i.e. it has been virtually flattened in the software) and the gap between the head and the bed is the same at the center and the towers, then adjust MANUAL_HOME_Z_POS (an adjustment of 0.05 or less may be required) to get the paper test just perfect.

44:35 Check each tower (screw adjustment, of the endstops, may be required). As the bed has been flattened, mechanical sub 0.1 mm adjustments may be required. Note that the firmware does not need to be re-uploaded, when making mechanical changes - although the head will always need to be re-homed (G28) after each change.
The head should now be at the correct height.
47:14 - Extruder Calibration