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 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 N_ARC_CORRECTION 25

1 Answer 1


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.

  • $\begingroup$ 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. $\endgroup$ Jun 27, 2016 at 14:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .