hits counter

RepRap 101: Calibrating your Extruder, Part 2: Fine-Tuning.

At this point, you have most likely done some basic calibration on your extrusion. If not, please check out part one of this series:

Once you’ve got that done, you’re ready to move to the next step, and dial in that calibration just a little bit more finely.

The method I use is a slightly modified version of one originally described by the one and only Alessandro Ranellucci, the developer of Slic3r.

To use this method, you will need a couple of things:

1) You will need a calibration shape that prints at exactly one wall thickness. The one I like to use is available here: 40×10.stl

2) You will need your vernier or dial calipers. If they are electronic, make sure they have fresh batteries!

Slice your calibration piece as normal. If you’re using Slic3r, make sure to let it compute the width of the extrusion. If you try to specify a particular width, your object may not print correctly. Also, leave the filament diameter at its nominal value, and the extrusion multiplier at 1. Here’s roughly what your Slic3r window should look like:

Screenshot from 2014-07-27 19:03:35

Print your calibration piece.

Once you have printed your shape, open your g-code file and look for the section at the beginning that looks like this:


; layer_height = 0.2
; perimeters = 3
; top_solid_layers = 3
; bottom_solid_layers = 3
; fill_density = 0.4
; perimeter_speed = 60
; infill_speed = 60
; travel_speed = 130
; nozzle_diameter = 0.4
; filament_diameter = 3.0
; extrusion_multiplier = .92
; perimeters extrusion width = 0.67mm
; infill extrusion width = 0.67mm
; solid infill extrusion width = 0.67mm
; top infill extrusion width = 0.67mm
; first layer extrusion width = 0.70mm

The line you are interested in is this one:


; perimeters extrusion width = 0.67mm

What this line tells us is that a single perimeter should be 0.67mm thick. (as with all calibration procedures, do NOT simply use my values, as yours will almost certainly be different!)

Now, back to your printed part: With your calipers, measure the thickness of the wall on each of the four sides. Make sure you’re measuring from the top edge, since the bottom layers will be slightly wider to ensure good adhesion during the print. Also, try to measure the smallest number of layers as possible, to minimize the effect of any misalignment between layers.

Take the four values you have just measured, and throw away the largest one. Now average the remaining three (add them all together, then divide by 3).

If all has gone well, the average of the three measurements you just took will be the same as the perimeter width (in this case, 0.67mm). More than likely, though, this will not be the case, and so now it’s time for some math.

First, we’re going to compute an extrusion multiplier, or as I like to call it, a “Magic Number”. We’ll do this like so:

Multiplier = (What You Wanted)/(What You Got)

For example, let’s say your measured extrusion was a little too large, and your average was 0.70mm. In this case, our equation would look like this:

Multiplier = .67/.70 = 0.957142857 (I think we can round this to 0.96).

So in this example, we have a multiplier of .96.

Now we have our “Magic Number” for this particular roll of filament.

There are a number of ways we can apply this number:

1) You can enter this into your slicing program as an extrusion multiplier. Back to Slic3r, you should see something like this:

Screenshot from 2014-07-27 17:16:22

One feature of Slic3r that I really like is the ability to create and save a “profile” for a particular filament. This way you can change filament at just about any time, and all you need to do in Slic3r is select the appropriate item fro a drop-down menu.

2) If you have an LCD controller and are running Marlin, you can dial the Magic Number in by selecting the Tune menu, then setting the multiplier into the Flow variable. In our example, you would set Flow to 96%. You can save this to your EEPROM if you have the EEPROM functions enabled, just remember that you’ll need to change this value when you swap filament. If you don’t save to EEPROM, the number will reset to 100 after a reboot of the printer, so keep this in mind.

If you use a number of different filaments, I would suggest creating some way of keeping track of what Magic Number goes with what filament. I have already mentioned the possibility of setting up a profile for each filament in Slic3r, although other methods are possible as well, right up to simply writing hte number down on a Post-It note and slapping it on the side of the spool!

That’s my method!

If you check out Alessandro’s original method, he includes the measured diameter of the filament as well as the extrusion multiplier in Slic3r’s settings. My experience has been that leaving filament diameter at its nominal value produces results that are indistinguishable from those obtained with a measured diameter. Of course, the trick is to stay consistent, regardless of which method you use.

3 comments to RepRap 101: Calibrating your Extruder, Part 2: Fine-Tuning.

  • Ricardo

    Hi,
    Have you tried this technique with the latest version of slic3r ? With 1.1.7 the perimeters extrusion width always gives me the value of 0.4 wich is the size of my nozzle, with 0.9.4b, for example, it gives me 0.53. Something is not right with the latest version of slic3r, or am i doing something wrong ?

    • I don’t think you’re doing anything wrong, it seems that Slic3r now does it that way. Even so, the technique should still work the same. If what you measure is what Slic3r is expecting, then the math is right. If not, it’s not.

      Alternately, at least on Slic3r 1.20, under Print Settings -> Advanced, there is an option to set the default extrusion width. You can change it there if you want to experiment.

  • Patrick Voelker

    I’m really appreciating your tutorials, thanks!

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>