This page has been flagged as containing duplicate material that RepRapSoftwareTweakingManual also attempts to cover.These pages should be merged such that both pages do not attempt to cover the duplicate topics.

Further, some firmware can make use of a machine-independent volumetric unit, Triffid_Hunter's_Calibration_Guide#Optional:_Switch_to_volumetric_E_units where the G-code 'G1 E1.0' represents 1mm^3 of 1.128mm diameter filament, while the firmware can adjust the extrusion relative to 1mm^3/mm filament (E.g. Marlin: M200 D3.0 ; Calibrate E for steps/mm^3) The point of this is that the gcode need not be re-calculated for different filaments.

empirical calibration

Sometimes the extruder dumps out plastic so thick that, after putting down one layer, the nozzle digs into the plastic of that layer while trying to put down the next layer.
When that happens, you need to reduce the E_STEPS_PER_MM.

Sometimes the extruder trickles out so little plastic that, after putting down one layer, the next layer of plastic is "stretched" so thin that cups are not water-tight.
When that happens, you need to increase the E_STEPS_PER_MM.

If your test looks good, you are done building the Mendel -- yay!
Skip the rest of this page and go right to How to use Mendel.

calculated calibration

In principle, it should be possible to calculate a estimate for E_STEPS_PER_MM that is very close to the correct value.

Note: This equation was derived assuming either the old RepRap Host or Skeinforge. I do not know if it still works for the official host as RepSnapper now seems to be the standard for Windows users.
If you are plannin on using Skeinforge 40 or above, I suggest you try the Volumetric Dimension Settings on the wiki.

feedstock diameter (typically 3 mm)

Nozzle Diameter (typically 0.5 mm)

Pinch Wheel Diameter (typically 5 mm)

Steps for stepper to make one complete revolution (typically "400 steps" for a stepper with 200 "full steps" per revolution driven with a half-stepper drive; often "3200 steps" for a stepper with 200 "full steps" per revolution with a 16x microstepper drive)

(Is there a good way to measure steps_per_mm_of_feedstock directly? Then we don't need to worry about how deep the teeth on the pinch wheel bite into the feedstock.)
(Is there a good way to measure steps_per_cubic_mm directly?)

With the above typical values, this gives about 0.707 Esteps/mm of nozzle travel, close to the empirically derived value above.

Note to self add a method of putting values on this page and output the correct value.

open questions

Some people argue that this equation is still not quite correct -- it is a mere coincidence that this equation happens to give a good result in this particular case.

the nozzle diameter has no effect on the volume of plastic extruded. Why do we need the nozzle diameter in this formula?

this formula assumes that the plastic (or frosting or whatever) does not change in density -- i.e., it is incompressible and has no thermal expansion.

this formula seems to assume that the output has the same diameter of the nozzle, whereas real plastic immediately expands ("die swell"). Some people have reported[3] "if the nozzle is 0.5mm the extruded plastic will come out at ~0.7mm or maybe 0.8mm (depending on the type of plastic used)".

Does the length of the small-bore section of the nozzle affect how much the extruded plastic swells?

some measurements of extruded output diameter vs. "output rate" on a single fixed nozzle: [4]

this formula seems to assume that the output is a perfect cylinder, but (except for the occasional "dx=0, dy=0, dz= +1 layer up" moves) the output plastic ends up squashed in a more complex cross-section shape roughly 1 layer thick. Why is the layer thickness missing from this formula?

Do we need to worry about sparse infill being close to circular cross section, while packed "solid" parts are closer to a rectangular cross section? nophead[5] uses a squashed ellipse in his calculations.

Some people suggest that E_STEPS_PER_MM should be replaced by a more useful term, such as E_STEPS_PER_CUBIC_MM or StepsPerMM3Extruded, calibrated for extruded output volume after cooling (approximately equal to input feedstock volume).
(The 3D-to-5D-Gcode-php would also need to be updated
so that both the host and the firmware use the same interpretation of the G code E axis).

Other people argue that this sort of thing shouldn't be in the firmware at all[6]. Since the feedstock filament diameter varies from one spool to the next (*),
it would be nice if the host software (or perhaps a setting in EEPROM) could somehow compensate for this rather than having to re-flash the firmware every time you get a new spool of feedstock filament.
Some people would like to vary the width of the extrusion in different areas of a single printed part.

(*) There are reports of nominally "3 mm" feedstock filament varying from 2.8 mm to 3.1 mm diameter from one spool to another.