Skip to content

Commit

Permalink
Add extruder calibration guide
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewEllis93 committed Dec 4, 2022
1 parent e1acb2f commit 8c4f718
Show file tree
Hide file tree
Showing 23 changed files with 169 additions and 11 deletions.
2 changes: 1 addition & 1 deletion articles/build_surface_adhesion.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Build Surface Adhesion
nav_order: 1
nav_order: 2
parent: Tuning
---
{% comment %}
Expand Down
2 changes: 1 addition & 1 deletion articles/cooling_and_layer_times.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Cooling and Layer Times
nav_order: 6
nav_order: 7
parent: Tuning
---
{% comment %}
Expand Down
158 changes: 158 additions & 0 deletions articles/extruder_calibration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
---
layout: default
title: Extruder Calibration
nav_order: 1
parent: Tuning
---

{% comment %}
# This guide has moved! Please visit [the new site](https://ellis3dp.com/Print-Tuning-Guide/).
{% endcomment %}

# Extruder Calibration
{: .no_toc }
---

{: .compat}
:dizzy: This page is compatible with Klipper, Marlin, and RepRapFirmware.

---

Extruder calibration simply ensures that 100mm requested = 100mm extruded.

- This is separate from [:page_facing_up: Extrusion Multiplier](./extrusion_multiplier.md), which is a per-filament setting.

This simply guarantees that your extrusion multiplier will be the same across any (calibrated) printer, and will be comparable to others.

---

## Hot or Cold?

You may choose to do the test cold (bypassing the hotend). This can ensure things like partial clogs don't throw off your results.

- With bowden, there's no reason to do it hot. Disconnect the tube and do it cold.

- With direct drive, however, **this means taking the nozzle, hotend, or extruder off.**
- I find this to be a hassle, so I usually calibrate hot.

- Just run the test a couple times to verify that you get exactly the same every time. I've never had an issue doing this.

---

## Steps

1. Klipper / RepRapFirmware:

---
![]({{ "/assets/img/klipper.png" | absolute_url }}) Klipper
- Open your printer.cfg and find the `[extruder]` section.
- Set `max_extrude_only_distance` to 101 or higher.
- *(+1 just helps avoid rounding error issues)*
- Set `min_extrude_temp` to 0 if doing the test **cold**.

- Run `RESTART`.

---

![]({{ "/assets/img/duet.png" | absolute_url }}) RepRapFirmware
- If calibrating **cold**, run `M302 P1` (allows cold extrusion)

---

2. If calibrating hot, heat your hotend to printing temp.
- If calibrating cold:

- Bowden: Disconnect the bowden tube from your extruder.
- Direct drive: Remove your nozzle, hotend, or extruder.

3. Extrude a small amount to ensure that your extruder motor is on and holding.

- You can usually do this in your printer's web interface, if equipped.
- G-codes:
- `M83 ; E relative`
- `G1 E1 F60 ; Extrude 1mm at 1mm/s (60mm/min)`

4. Take a ruler and place a piece of tape at the 120mm mark.

- You can use a marker too - I just find tape easier and a bit more precise.
- ![](./images/extruder_calibration/1.png)
- *Don't worry if your ruler has extra length at the ends. We're only taking a relative measurement.*

- ![](./images/extruder_calibration/ruler.png)

5. Pull your filament as straight as you can against the ruler. Transfer the tape to it to mark 120mm.

- ![](./images/extruder_calibration/2.png) ![](./images/extruder_calibration/3.png)

6. Extrude 100mm :warning: **at 1mm/s**. :warning:

If doing this **hot**, watch to make sure the plastic isn't shooting out to the side (partial clog) or showing signs of skipping.
- You can usually do this in your printer's web interface, if equipped.
- G-codes:
- `M83 ; E relative`
- `G1 E100 F60 ; Extrude 100mm at 1mm/s (60mm/min)`
- **Only use the LCD to extrude if it allows you to choose a speed.**

- ![](./images/extruder_calibration/4.png)

7. Measure how much is left. Subtract it from 120 and note the value for later.

- **Example**
- I had 21mm left.
- 120mm - 21mm = **99mm actual extrusion**.

- ![](./images/extruder_calibration/5.png)

8. Calculate your new `rotation_distance` / e-steps and activate it:

---
![]({{ "/assets/img/klipper.png" | absolute_url }}) Klipper
- Find the `[extruder]` section in your printer.cfg. Note your current `rotation_distance`.
- Calculate your new `rotation_distance` using this formula:
- \<new_rotation_distance\> = \<previous_rotation_distance\> * ( \<actual_extrude_distance\> / 100 )
- Temporarily set your new value with `SET_EXTRUDER_ROTATION_DISTANCE`.
- Example: `SET_EXTRUDER_ROTATION_DISTANCE EXTRUDER=extruder DISTANCE=34.99312407591`

---
![]({{ "/assets/img/marlin.png" | absolute_url }}) Marlin
- Run `M503`. In the output, find the `M92` line and note your current E value.
- ![](./images/extruder_calibration/M503.png)
- Calculate your new e-steps using this formula:
- \<new_e-steps\> = \<current_e-steps\> * ( 100 / \<actual_extrude_distance\> )
- Temporarily set your new e-steps with `M92`.
- Example: `M92 E421`.

---
![]({{ "/assets/img/duet.png" | absolute_url }}) RepRapFirmware
- Run `M92`. In the output, note the E value. (It will look similar to the screenshot for Marlin above)
- Calculate your new e-steps using this formula:
- \<new_e-steps\> = \<current_e-steps\> * ( 100 / \<actual_extrude_distance\> )
- Temporarily set your new e-steps with `M92`.
- Example: `M92 E421`.

---

9. With your new value activated, mark and extrude again. It often takes a few iterations to dial in.
- If you get different lengths in back-to-back tests, you have an **extruder issue** \
(or, if printing hot, it could also be a hotend/nozzle obstruction.).

10. Once you settle on a value, save it permanently:

---
![]({{ "/assets/img/klipper.png" | absolute_url }}) Klipper
- Find the `[extruder]` section in your printer.cfg. Note your current `rotation_distance`.
- Update your `rotation_distance` in your config and `RESTART`.

---
![]({{ "/assets/img/marlin.png" | absolute_url }}) Marlin
- Set your new e-steps with `M92`, as shown in the previous step.
- Run `M500` to save it to EEPROM.

---
![]({{ "/assets/img/duet.png" | absolute_url }}) RepRapFirmware
- Edit the `M92` line in your config.g with the new value and reboot.

---

11. ![]({{ "/assets/img/klipper_small.png" | absolute_url }}) Klipper only:
- If you did the test cold, set your `min_extrude_temp` in your `[extruder]` section back to its previous value.
4 changes: 2 additions & 2 deletions articles/extrusion_multiplier.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Extrusion Multiplier
nav_order: 4
nav_order: 5
parent: Tuning
---
{% comment %}
Expand All @@ -16,7 +16,7 @@ parent: Tuning
:dizzy: This page is compatible with all printers.

{: .prereqs}
>- You should [:page_facing_up: calibrate your extruder](https://docs.vorondesign.com/build/startup/#extruder-calibration-e-steps) first.
>- You should [:page_facing_up: calibrate your extruder](./extruder_calibration.md) first.
> - Calibrating your extruder simply ensures that 100mm requested = 100mm extruded.
> - Extrusion *multiplier* is a per-filament setting, depending on their material properties & tolerances.
>
Expand Down
4 changes: 2 additions & 2 deletions articles/first_layer_squish.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: First Layer Squish
nav_order: 2
nav_order: 3
parent: Tuning
---
{% comment %}
Expand All @@ -20,7 +20,7 @@ I'm going to call it "squish" to be unambiguous. "Z offset" and "z height" can b
{: .prereqs}
>- You should do a rough [:page_facing_up: Z offset calibration](https://docs.vorondesign.com/build/startup/#initial--simple-process) first.
>
>- You should also [:page_facing_up: calibrate your extruder](https://docs.vorondesign.com/build/startup/#extruder-calibration-e-steps) first.
>- You should also [:page_facing_up: calibrate your extruder](./extruder_calibration.md) first.
> - ![]({{ "/assets/img/marlin_small.png" | absolute_url }}) [:page_facing_up: Marlin instructions](https://www.3dmakerengineering.com/blogs/3d-printing/estep-calibration)
>
>- This section also assumes that you have *consistent* first layer squish, both across the entire build surface and between prints.
Expand Down
Binary file added articles/images/extruder_calibration/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/M503.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/extruder_calibration/ruler.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion articles/index_pressure_advance.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Pressure Advance / Linear Advance
nav_order: 3
nav_order: 4
parent: Tuning
has_children: true
---
Expand Down
2 changes: 1 addition & 1 deletion articles/infill_perimeter_overlap.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Infill/Perimeter Overlap
nav_order: 8
nav_order: 9
parent: Tuning
---
{% comment %}
Expand Down
2 changes: 1 addition & 1 deletion articles/pa_em_oddities.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: PA / EM Oddities
nav_order: 5
nav_order: 6
parent: Tuning
---
{% comment %}
Expand Down
2 changes: 1 addition & 1 deletion articles/retraction.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Retraction
nav_order: 7
nav_order: 8
parent: Tuning
---
{% comment %}
Expand Down
2 changes: 1 addition & 1 deletion articles/stepover.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: default
title: Stepover
nav_order: 9
nav_order: 10
parent: Tuning
---
{% comment %}
Expand Down

0 comments on commit 8c4f718

Please sign in to comment.