<p>This answer below is (partially) taken from <a href="https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed/6710#6710">my answer</a> to <a href="https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed">Delta printer nozzle not moving square with a perfectly level bed (as if the bed is bent... but it isn&#39;t)</a>.</p>

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

<hr>

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

<p>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. </p>

<p>I seriously recommend that you watch this video <a href="https://www.youtube.com/watch?v=QuEhQU8vGZk" rel="nofollow noreferrer">#18:Calibration</a> 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.</p>

<p>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:</p>

<ul>
<li><strong>Arduino IDE</strong>, and;</li>
<li><p><strong>Pronterface</strong></p>

<p>and performs the calibration by adjusting, in the firmware:</p></li>
<li><p><code>MANUAL_HOME_Z_POS</code>, and;</p></li>
<li><code>DELTA_SMOOTH_ROD_OFFSET</code></li>
</ul>

<hr>

<p>Here is a run down of the video's contents:</p>

<ul>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk" rel="nofollow noreferrer">0:00</a> Intro: The perfect first layer can be obtained, either with/without a probe (the printer is, arguably, better without probe) This tutorial is <em>without</em> the probe. </li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=55" rel="nofollow noreferrer">0:55</a> Arduino software loaded with Marlin firmware source, looking at the file <code>configuration.h</code> and in particular, the line <code>#define MANUAL_HOME_Z_POS</code></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=170" rel="nofollow noreferrer">2:30</a> - Ensure that the Pronterface USB port is disconnected as otherwise this will inhibit the Arduino IDE from connecting to the printer.</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=200" rel="nofollow noreferrer">3:20</a> - Initial test - Gap at the center of the bed

<ul>
<li>Connect with Pronterface and use the following G-code commands</li>
<li><code>G28</code> Home the printer head</li>
<li><code>G1 Z10</code> Bring the head down...</li>
<li><code>G1 Z5</code> a bit more...</li>
<li><code>G1 Z4</code> a bit more...</li>
<li><code>G1 Z3</code> a bit more...</li>
<li><code>G1 Z2</code> a bit more...</li>
<li><code>G1 Z1</code> and if the head hits bed then this is too close</li>
<li><code>G1 Z2</code> raise the head again</li>
<li>Paper thickness is 100 microns, place under the head</li>
<li><code>G1 Z1.5</code> lower the head again, but no by so much as before</li>
<li>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)</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=431" rel="nofollow noreferrer">7:11</a> - Deduction of actual distance from print bed is 1.5 mm</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=450" rel="nofollow noreferrer">7:30</a> Return to firmware, and finely tune <code>MANUAL_HOME_Z_POS</code> in the Arduino IDE, disconnecting Pronterface again and upload.</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=490" rel="nofollow noreferrer">8:10</a> - Return to printer 

<ul>
<li>Connect with Pronterface, again, and use the following G-code commands</li>
<li><code>G28</code> Home</li>
<li><code>G1 Z5 F5000</code> Move head down rapidly</li>
<li><code>G1 Z2</code></li>
<li><code>G1 Z1</code></li>
<li><code>G1 Z0</code> and the head comes to a rest at the correct distance from the bed</li>
<li>Retest with the paper</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=570" rel="nofollow noreferrer">9:30</a> Final test

<ul>
<li><code>G28</code> Home</li>
<li><code>G1 Z0</code> Go from home straight down to the bottom</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=602" rel="nofollow noreferrer">10:02</a> - Further calibration

<ul>
<li><code>G1 Z0.2</code> Raise head ever so slightly to give us some room</li>
<li>In Pronterface - Move the head horizontally</li>
<li><code>G1 X50</code> - Moves head 50 mm to the right</li>
<li><em>In this case</em>, if there is a larger gap between the head and the bed. This means that the bed is curved, and <strong>convex</strong>. If the gap was smaller, or the head hits the bed, then the bed is <strong>concave</strong></li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=700" rel="nofollow noreferrer">11:40</a> - Diagram of convex and concave print beds</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=730" rel="nofollow noreferrer">12:10</a> - Endstops

<ul>
<li><code>G1 X-40</code> Moves the head to the left (of center) and the head is now <em>further</em> away from the bed than in the middle. </li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=800" rel="nofollow noreferrer">13:20</a> - 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.</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=817" rel="nofollow noreferrer">13:37</a> - Tackling the <em>tower</em> positions individually

<ul>
<li><code>G1 Z10</code> For safety reasons, leave a margin of 1 cm.</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=848" rel="nofollow noreferrer">14:08</a> - Calibrating the X tower (left tower). <strong>Note</strong>: The commands will depend on whether you have the Kossel or the Mini.

<ul>
<li>Printer moves in three axes: 

<ul>
<li>X: parallel (to the front);</li>
<li>Y: perpendicular (to the front);</li>
<li>Z: height (not of interest at this point).</li>
</ul></li>
<li>X tower is not in either of these axes <em>exactly</em></li>
<li><code>G1 X-100</code> Moves the head to the side but 6 cm away from the X tower</li>
<li><code>G1 X-100 Y-60</code> Positions the head next to the tower correctly</li>
<li><code>G1 Z5</code> - Lower the head bit by bit</li>
<li><code>G1 Z2</code></li>
<li><code>G1 Z1</code></li>
<li><code>G1 Z0</code> and the head is still 1 mm too high</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1010" rel="nofollow noreferrer">16:50</a> Endstop needs to be adjusted by 1 mm <em>lower</em>. There are two ways of doing this:

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

<ul>
<li>XL: <code>G1 X-100 Y-60</code></li>
<li>Mini <code>G1 X-60 Y-35</code></li>
</ul></li>
<li><code>G1 Z2</code></li>
<li><code>G1 Z1</code></li>
<li><code>G1 Z0</code> Head hits the bed</li>
<li><code>G1 Z0.2</code></li>
<li>So the end stop needs to be <em>raised</em> by 0.2 mm, by re-adjusting the screw (turning it clockwise).</li>
<li>Now home it the head, <code>G28</code></li>
<li>And bring it down <code>G1 X-100 Y-60 Z0</code> and it should not hit the glass and the paper should slide underneath</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1260" rel="nofollow noreferrer">21:00</a> Minor re-adjustment and fine tuning so that the paper slides without the need a too much force.</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1310" rel="nofollow noreferrer">21:50</a> Repeat for each tower</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1335" rel="nofollow noreferrer">22:15</a> Y Tower (right tower)
-<code>G28</code> Home

<ul>
<li><code>G1 Z10</code> Bring head down 1 cm above bed</li>
<li>Move to the tower:

<ul>
<li>XL: <code>G1 X100 Y-60</code></li>
<li>Mini <code>G1 X60 Y-35</code> </li>
</ul></li>
<li>Repeat the above process - remember to test with <code>G28</code> and <code>G1 X100 Y-60 Z1</code> for safety, and <em>then</em> adjust the Z command</li>
<li>This is an iterative process</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1684" rel="nofollow noreferrer">28:04</a> - Z Tower (rear tower)
-<code>G28</code> Home

<ul>
<li><code>G1 Z10</code> Bring head down 1 cm above bed</li>
<li>Move to the tower:

<ul>
<li>XL: <code>G1 X0 Y120</code></li>
<li>Mini <code>G1 X0 Y70</code> </li>
</ul></li>
<li>Repeat above process</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1814" rel="nofollow noreferrer">30:14</a> Re-check! each position (center, X, Y and Z towers)

<ul>
<li><code>G28</code> Home</li>
<li><code>G1 X0 Y120 Z0</code> Check Z tower &amp; drop head (head should not touch the bed)</li>
<li><code>G1 Z10</code> Raise head (see below)</li>
<li><code>G1 X-100 Y-60</code> Move to X tower</li>
<li><code>G1 Z0</code> Drop head (head should not touch the bed)</li>
<li><code>G1 Z10</code> Raise head (see below)</li>
<li><code>G1 X100 Y-60</code>  Move to Y tower</li>
<li><code>G1 Z0</code> Drop head (head should not touch the bed)</li>
<li><strong>Calibration of the endstops is now complete</strong></li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1890" rel="nofollow noreferrer">31:30</a> Why the <code>Z10</code>?

<ul>
<li><code>G1 Z10</code></li>
<li><code>G1 X0 Y0</code></li>
<li>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 <code>Z10</code>, to avoid hitting the bed in the center. Now test it</li>
<li><code>G1 Z2</code> Lower head slightly</li>
<li><code>G1 Z1</code></li>
<li><code>G1 Z0</code> 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.</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=1960" rel="nofollow noreferrer">32:40</a> Adjusting the <code>DELTA_SMOOTH_ROD_OFFSET</code> in <code>configuration.h</code> - alter the physical parameter of the printer:

<ul>
<li>Convex: Increasing <code>DELTA_SMOOTH_ROD_OFFSET</code> lowers the hotend in the center</li>
<li>Concave: Decreasing <code>DELTA_SMOOTH_ROD_OFFSET</code> raises the hotend in the center</li>
<li>Adjust the setting in the Arduino IDE and recompile and upload (ensure that Pronterface is disconnected)</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=2107" rel="nofollow noreferrer">35:07</a> Testing the new <code>DELTA_SMOOTH_ROD_OFFSET</code> setting - again in Pronterface:

<ul>
<li><code>G28</code> - As the firmware has changed, we must re-home.</li>
<li><code>G1 X0 Y0 Z0</code></li>
<li>You will notice the the center point <em>has not changed</em>! It is the same. However if you go to the tower positions you will see that the (previously) perfect gap <em>has</em> changed. This is because by changing the <code>DELTA_SMOOTH_ROD_OFFSET</code> the <em>center stays in the same place but the edges change instead</em>. So, for the convex bed, we have <em>virtually</em> 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.</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=2230" rel="nofollow noreferrer">37:10</a> Demonstration of adjustment</li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=2271" rel="nofollow noreferrer">37:51</a> Adjusting the height

<ul>
<li>Return to the firmware and change, again, the <code>#define MANUAL_HOME_Z_POS</code> line that we changed at the beginning, adjusting it by the amount that the head is from the center point. </li>
<li>Disconnect Pronterface and upload the new adjusted firmware. </li>
<li>Then reconnect Pronterface, and Home (<code>G28</code>) and drop to zero (<code>G1 Z0</code>). </li>
<li>The head may still a little <em>too high</em>. </li>
<li>Then move to the tower, and the head may be <em>too close</em> to the bed, without any gap. This means that the bed is still convex and further adjustment is required of the <code>DELTA_SMOOTH_ROD_OFFSET</code> and then, obviously, the <code>MANUAL_HOME_Z_POS</code>. </li>
<li>Again, this is a bit of an iterative process. Don't forget to home after any firmware updates.</li>
<li>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 <code>MANUAL_HOME_Z_POS</code> (an adjustment of 0.05 or less may be required) to get the paper test just perfect.</li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=2675" rel="nofollow noreferrer">44:35</a> 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. <strong>Note</strong> that the firmware <em>does not</em> need to be re-uploaded, when making mechanical changes - although the head will always need to be re-homed (<code>G28</code>) after each change.</li>
<li><strong>The head should now be at the correct height.</strong></li>
<li><a href="https://www.youtube.com/watch?v=QuEhQU8vGZk&amp;t=2834" rel="nofollow noreferrer">47:14</a> - Extruder Calibration</li>
</ul>

CC BY-SA 4.0
2018-08-31T18:36:13.433Z
2018-08-31T20:40:19.823Z
2018-08-31T20:40:19.823Z
Greenonline
<p>I have a delta robot 3D printer, but I have no clue how to calibrate it. Any advice?</p>

CC BY-SA 4.0
2018-08-31T18:40:40.460Z
Whilst this question is not *exactly* the same as [Delta printer nozzle not moving square with a perfectly level bed (as if the bed is bent… but it isn't)](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed), I think that the answer will be identical - whilst bearing in mind that the values will probably be different, depending upon the dimensions of your printer. Please edit your question and add details about your printer (model, dimensions (of the horizontals and verticals), etc.)
Greenonline
CC BY-SA 4.0
2018-08-31T20:34:32.357Z
@SeanHoulihane - yes, that is what I thought too. The only difference, and it *could* be considered significant, is that in [the other question](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed), the user *definitely* had a convex bed, whereas here, no configuration has been performed *at all*, and the form of the bed (which could be convex, concave or totally flat) is totally irrelevant in this case - as it currently stands.
Greenonline
<diy-3d-printer><delta>
How do you calibrate a delta robot 3D printer?
Giordano Fearghas
# How do you calibrate a delta robot 3D printer?

(Asked by: username_0 on 2018-08-31)

I have a delta robot 3D printer, but I have no clue how to calibrate it. Any advice?

**Tags:** diy-3d-printer, delta

> **Comments:**
> **username_1**: Whilst this question is not *exactly* the same as [Delta printer nozzle not moving square with a perfectly level bed (as if the bed is bent… but it isn't)](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed), I think that the answer will be identical - whilst bearing in mind that the values will probably be different, depending upon the dimensions of your printer. Please edit your question and add details about your printer (model, dimensions (of the horizontals and verticals), etc.)  
> **username_1**: @SeanHoulihane - yes, that is what I thought too. The only difference, and it *could* be considered significant, is that in [the other question](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed), the user *definitely* had a convex bed, whereas here, no configuration has been performed *at all*, and the form of the bed (which could be convex, concave or totally flat) is totally irrelevant in this case - as it currently stands.  

---

## 1 answers

### Answer by username_1 on 2018-08-31. Score: 2

This answer below is (partially) taken from [my answer](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed/6710#6710) to [Delta printer nozzle not moving square with a perfectly level bed (as if the bed is bent... but it isn't)](https://3dprinting.stackexchange.com/questions/6016/delta-printer-nozzle-not-moving-square-with-a-perfectly-level-bed-as-if-the-bed).

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](https://www.youtube.com/watch?v=QuEhQU8vGZk) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=170) - Ensure that the Pronterface USB port is disconnected as otherwise this will inhibit the Arduino IDE from connecting to the printer.
* [3:20](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=200) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=431) - Deduction of actual distance from print bed is 1.5 mm
* [7:30](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=450) Return to firmware, and finely tune `MANUAL_HOME_Z_POS` in the Arduino IDE, disconnecting Pronterface again and upload.
* [8:10](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=490) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=570) Final test
  + `G28` Home
  + `G1 Z0` Go from home straight down to the bottom
* [10:02](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=602) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=700) - Diagram of convex and concave print beds
* [12:10](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=730) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=800) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=817) - Tackling the *tower* positions individually
  + `G1 Z10` For safety reasons, leave a margin of 1 cm.
* [14:08](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=848) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1010) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1260) Minor re-adjustment and fine tuning so that the paper slides without the need a too much force.
* [21:50](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1310) Repeat for each tower
* [22:15](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1335) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1684) - 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1814) Re-check! each position (center, X, Y and Z towers)
  + `G28` Home
  + `G1 X0 Y120 Z0` Check Z tower & 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1890) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=1960) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=2107) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=2230) Demonstration of adjustment
* [37:51](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=2271) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=2675) 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](https://www.youtube.com/watch?v=QuEhQU8vGZk&t=2834) - Extruder Calibration


---

