Commissioning
These pages should be merged such that both pages do not attempt to cover the duplicate topics.
Contents |
Calibrating the X, Y, Z axis
The RepRap firmware contains hints to calculate the correct step settings by hand, or use this online calculator to help.
See also calibration.
Calibrating the Extruder
In the motherboard firmware, you must edit the E_STEPS_PER_MM value in the configuration.h file in order to have your RepRap/RepStrap working correctly.
- (if you only see a configuration.h.dist, copy it to configuration.h)
E_STEPS_PER_MM is the number of steps of the extruder motor needed for the nozzle to extrude the "right" amount of plastic out for every 1mm in a G1 E1.0 or G0 E1.0 command.
If you have a 5mm splined shaft, with no gearbox, on a motor with a 1.8 degree step, and 3mm feedstock, a good starting point is:
#define E_STEPS_PER_MM 0.706
If you have a 3/16" splined shaft, with no gearbox, on a motor with a 1.8 degree step, and 3mm feedstock, a good starting point is
#define E_STEPS_PER_MM 0.743
Some slicing software, (e.g.: Slic3r, or ) generates G-code calibrated to E_STEPS_PER_MM (or E_STEPS_PER_M for Teacup) as a measure of the input feedstock consumed rather than as a measure of the length of filament extruded. Skeinforge calls this 'volumetric calibration', (see http://josefprusa.cz/skeinforge-40-volumetric-calibration/) Calibrating the input length by measuring the filament consumed is relatively easy. See Triffid_Hunter's_Calibration_Guide#E_steps or http://richrap.blogspot.com/2012/01/slic3r-is-nicer-part-1-settings-and.html for an example.
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)
- gearbox ratio ( typically "1" for direct-drive pinch wheels; often "39/11" for Wade's Geared Extruder or "59/11" for Adrian's Geared Extruder)
(You'll still need to do some empirical tweaking, but hopefully you start out so close to the correct value that you'll only need to do a couple of test runs).
From this, we can calculate the number of steps per mm of feedstock:
- steps for pinch wheel to make one complete revolution = steps for stepper to make one complete revolution * gearbox ratio (typically 400 steps)
- pinch wheel circumference = pinch wheel diameter * pi
- steps_per_mm_of_feedstock = steps for pinch wheel to make one complete revolution /( pinch wheel circumference ). (typically 25.46 steps/mm)
We can also calculate other values that a few people find interesting:
- cross-sectional area of feedstock = pi * (feedstock diameter / 2)^2 (this is about 7.07 mm^2 for 3 mm feedstock)
- steps_per_cubic_mm = steps_per_mm_of_feedstock / cross-sectional area of feedstock (this is typically about 3.60 steps/mm^3)
- desired cross-sectional area of extruded plastic = pi * (Nozzle diameter / 2)^2. (This is typically 0.196 mm^2. See below for refinements on this formula).
(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?)
Adrian B. used the formula:
$ \frac{1}{\frac{\pi\varnothing_{pw}}{Steps_{360}}.Ratio_{Nozzle to feedstock}} $
or in other words
E_STEPS_PER_MM ~~ steps_per_mm_of_feedstock * nozzle_diameter / feedstock_diameter.
which no one seems to understand, and we will say no more about it.
Where as in the recent blog post the formula is ((link???))
$ \frac{\varnothing _{Nozzle}^2 . Steps_{360}.Ratio_{gearbox}}{\varnothing _{Filament}^2. \pi . \varnothing_{pw}} $
or in other words
E_STEPS_PER_MM ~~ steps_per_mm_of_feedstock * (nozzle_diameter)^2 / (feedstock_diameter)^2.
Grogyan came up with another way of stating the same formula (link: [1]; [2])
$ \left(\frac{\textrm{Steps}_{360} \times \textrm{Ratio}_{gearbox}} { \pi \phi_{pw}}\right) \times \left(\frac{\phi_{nozzle}}{ \phi_{filament}}\right)^2 $
or in other words
E_STEPS_PER_MM ~~ steps_per_mm_of_feedstock * (nozzle_diameter / feedstock_diameter)^2
Essentially what is happening is having the ratio of feedstock and nozzle squared, multiplied by the arc of one step of the stepper motor.
This is equivalent to
E_STEPS_PER_MM ~~ steps_per_cubic_mm * desired cross-sectional area of extruded plastic.
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.
- How does this related to the "Infill Perimeter Overlap (ratio)"
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.
Personal thanks to for enabling formulas to be put into wiki's
sitmo for their equation editor
Formula Help for the correct syntax