<p>The extruder advance feature is probably not enabled on your printer, so this code effectively does nothing (and you don't need to mess with it). Extruder advance is a feature that tries to compensate for the delay between feeding (or retracting) the filament and the point at which it actually starts to extrude, but it's generally not used. The fact that the manufacturer left <code>D_FILAMENT</code> at the default of 2.85 probably means they didn't enable this. You can check whether it is enabled by seeing if there is an (uncommented) <code>#define ADVANCE</code>.</p>

<p>The reason <code>D_FILAMENT</code> appears twice is because they're computing the cross-sectional area of your filament, which proportional to the square of its diameter.</p>

<p>The arc interpolation settings have nothing to do with extruder calibration at all, but define the resolution at which G2/G3 approximate arcs. G2/G3 are currently not supported/used by most slicers, so you can safely ignore these settings since they don't do anything that would influence regular printing.</p>

<p>The <strong>only</strong> thing that you should change is the following line in the <code>Configuration.h</code> file:</p>

<pre><code>#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,500}
</code></pre>

<p>Leave the first three values as-is (they may be different for your printer) and change the last one to <code>417</code>.</p>

<p>You could also avoid changing the firmware at all, and use <code>M92 E417</code> to set the steps per mm for your extruder, or (if you have an LCD) use the LCD to adjust the steps per mm.</p>

CC BY-SA 3.0
2016-06-27T14:06:27.893Z
Sailfish and MachineKit both have effective advance algorithms that everybody always uses with those firmwares. RepRapFirmware also has a working advance algorithm but I don't think many people are using it. Otherwise, Repetier, Marlin, Slic3r -- their advance implementations simply don't work, which is why they aren't used. It's just code bloat from failed experiments that didn't work. And Smoothie doesn't have any advance algorithm at all. So... there are perhaps 100,000 working 3d printers out there using pressure advance with good results, but not in the "mainstream" hobbyist community.
Ryan Carlyle
CC BY-SA 3.0
2016-06-27T08:10:08.607Z
2016-06-27T08:10:08.607Z
Tom van der Zanden
<p>I not sure what this code does..... I recently bought a titan extruded that needs to be calibrated with my printer (417 microsteps <a href="http://wiki.e3d-online.com/wiki/Titan_Assembly#Firmware_Calibration" rel="nofollow">http://wiki.e3d-online.com/wiki/Titan_Assembly#Firmware_Calibration</a>). </p>

<p>I am having a hard time understanding why they have D_Filament at 2.85 (my printer was made using 1.85mm filament) and why they used it twice in there equation. Also, what are the arc interpretations for?</p>

<p>#ifdef ADVANCE</p>

<p>#define EXTRUDER_ADVANCE_K .0</p>

<p>#define D_FILAMENT 2.85</p>

<p>#define STEPS_MM_E 836</p>

<p>#define EXTRUTION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)</p>

<p>#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUTION_AREA)</p>

<pre><code>#endif // ADVANCE
</code></pre>

<p>// Arc interpretation settings:</p>

<pre><code> #define MM_PER_ARC_SEGMENT 1

 #define N_ARC_CORRECTION 25
</code></pre>

<filament><extruder><calibration><maintenance><marlin>
Advance extrusion, extruder code help?
Chris Manning
# Advance extrusion, extruder code help?

(Asked by: username_0 on 2016-06-27)

I not sure what this code does..... I recently bought a titan extruded that needs to be calibrated with my printer (417 microsteps <http://wiki.e3d-online.com/wiki/Titan_Assembly#Firmware_Calibration>).

I am having a hard time understanding why they have D\_Filament at 2.85 (my printer was made using 1.85mm filament) and why they used it twice in there equation. Also, what are the arc interpretations for?

#ifdef ADVANCE

#define EXTRUDER\_ADVANCE\_K .0

#define D\_FILAMENT 2.85

#define STEPS\_MM\_E 836

#define EXTRUTION\_AREA (0.25 \* D\_FILAMENT \* D\_FILAMENT \* 3.14159)

#define STEPS\_PER\_CUBIC\_MM\_E (axis\_steps\_per\_unit[E\_AXIS]/ EXTRUTION\_AREA)

```
#endif // ADVANCE

```

// Arc interpretation settings:

```
 #define MM_PER_ARC_SEGMENT 1

 #define N_ARC_CORRECTION 25

```

**Tags:** filament, extruder, calibration, maintenance, marlin


---

## 1 answers

### Answer by username_1 on 2016-06-27. Score: 3

The extruder advance feature is probably not enabled on your printer, so this code effectively does nothing (and you don't need to mess with it). Extruder advance is a feature that tries to compensate for the delay between feeding (or retracting) the filament and the point at which it actually starts to extrude, but it's generally not used. The fact that the manufacturer left `D_FILAMENT` at the default of 2.85 probably means they didn't enable this. You can check whether it is enabled by seeing if there is an (uncommented) `#define ADVANCE`.

The reason `D_FILAMENT` appears twice is because they're computing the cross-sectional area of your filament, which proportional to the square of its diameter.

The arc interpolation settings have nothing to do with extruder calibration at all, but define the resolution at which G2/G3 approximate arcs. G2/G3 are currently not supported/used by most slicers, so you can safely ignore these settings since they don't do anything that would influence regular printing.

The **only** thing that you should change is the following line in the `Configuration.h` file:

```
#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,500}

```

Leave the first three values as-is (they may be different for your printer) and change the last one to `417`.

You could also avoid changing the firmware at all, and use `M92 E417` to set the steps per mm for your extruder, or (if you have an LCD) use the LCD to adjust the steps per mm.

> **Comments:**
> **username_2**: Sailfish and MachineKit both have effective advance algorithms that everybody always uses with those firmwares. RepRapFirmware also has a working advance algorithm but I don't think many people are using it. Otherwise, Repetier, Marlin, Slic3r -- their advance implementations simply don't work, which is why they aren't used. It's just code bloat from failed experiments that didn't work. And Smoothie doesn't have any advance algorithm at all. So... there are perhaps 100,000 working 3d printers out there using pressure advance with good results, but not in the "mainstream" hobbyist community.  

---

