Dead simple printer calibration

Profileinator - By David Durant

Profileinator - By David Durant

This last weekend I was fortunate enough to catch up with Dave Durant to talk about how to calibrate my 3D printers. Not only has Dave written a number of amazingly detailed posts on properly configuring Skeinforge for 3D printers, but he’s also written an amazing program for determining the proper settings1  Although this program has been out for two months, I hadn’t given it a shot until just this Saturday.  Oh!  If only I could capture the lost hours I’ve wasted calibrating my machines when I could just have used this program!  You, gentle reader, need not toil away in front of your machines and may simply use Dave’s program powered by MATH and SCIENCE.  Here’s a quick walk through of how to use his program:

  1. Install Dave’s program
    1. The program is just a single executable file that will generate an XML file for storing saved values.  To run, just open the executable.  To uninstall, just delete both the executable and the XML file.  The ZIP file contains more than this single executable, so unzip those if you want them too – but you don’t need them.
    2. You’re going to want to open the program now.  Don’t worry about any of the settings just yet – we’ve got an important step next.
  2. Measure your filament’s diameter
    1. Dave’s program works by taking a measurement of the volume of plastic entering the extruder and then providing the values you need to account for the volume of plastic as it exits the extruder.
    2. To calculate my filament’s I took measurements of the filament over the span of about a foot at ten different points.  At each point I measured the filament twice – at 90 degree angles from each other.  Here are my readings (yours should differ).  The first two values on each row are the two readings at each level.  The third value in each row is the average of the first two values.  The 11th line is merely an average of the ten prior averaged readings.
      1. 2.98    2.85    2.9152
      2. 2.84    2.98    2.91 (Average of 2.84 and 2.98))
      3. 2.81    2.86    2.8353
      4. 2.88    2.81    2.845
      5. 2.82    2.86    2.84
      6. 2.86    2.79    2.825
      7. 2.85    2.85    2.85
      8. 2.84    2.81    2.825
      9. 2.92    3.15    3.035
      10. 2.85    3.01    2.93
      11. 2.881mm4
    3. As this is the only reading you’ll be taking of your setup, be sure and do it carefully.  If you get this right, you’ll never agonize over Skeinforge calibrations again.
  3. Enter your filament’s average diameter into Dave’s program
    1. Try out these settings:
      1. Gear diameter:  If you’re using the MakerBot MK5 Drive Gear, it should stay 10.58.
      2. Filament diameter:  This is where you enter your averaged measurements from the last step.  Mine was 2.88 – yours will differ.
      3. Gear swell mod:  For the moment, just enter “0.90″ if you’re using ABS and “1.0″ if you’re using PLA.  This is where some of the voodoo math comes in.
      4. Flow rate min/max/fudge factor:   0.5 / 5.0 / 1.0
      5. Feed rate min/max/increment:  30/30/5
      6. Thread height min/max/increment: 0.36 / 0.36 / 0.05
      7. Thread width min/max/increment: 0.75/0.75/0.05
    2. Click “Go” to get your recommended settings!
      1. If you entered different values for the minimum and maximum values for Feed rate, Thread height, and Thread width, you’ll have a number of options to choose from.  If you want a profile that will “just work” try out those settings above.  Dave’s first Skeinforge guide defines all of these things, but a very quick overview is as follows:
        1. Feed rate is how fast your XY platform will be moving as you print.  30mm/s is a nice safe bet for speed.  35 should work reasonably well too.
        2. Thread height is the layer height.  Layers at 0.36mm each will give you a good solid, quick printing object.  More layers per millimeter will give you a higher Z resolution.
        3. Thread width is the width of each extruded thread as it is laid down.  Thinner threads will give you a higher XY resolution.
        4. Flow rate is how fast the extruder takes in plastic.  This is the magic value you are solving for with Dave’s program.
  4. Enter your recommended settings into Skeinforge
    1. Enter “Thread height” into Carve -> “Layer Thickness (mm)”
    2. Enter “Thread width” into Carve -> “Perimeter Width over Thickness (ratio)”
    3. Enter “Thread width” into Fill -> “Infill Width over Thickness (ratio)”
    4. Enter “Feed rate” into Speed -> “Feed Rate (mm/s)”
    5. Enter “Flow rate” into Speed -> “Flow Rate Setting (float)”
    6. Enter “Feed rate” into Speed -> “Travel Feed Rate (mm/s)”
  5. Print!
    1. Print happily secure in the knowledge Skeinforge is powered by SCIENCE!

Fair warning – I’m leaving out two of the coolest features from Dave’s program.  I’ll cover both of these features next time.  However, for right now, as long as you provide his program an accurate reading of your filament diameter, you can basically just tell it how fast you want to print and at what resolution – and get all the settings you need.

    1. Configuring Skeinforge:  Basic Settings with David Durant
    2. Configuring Skeinforge:  Five Critical Settings with David Durant
    3. Configuring Skeinforge:  Configuring the Latest Version of Skeinforge with David Durant
    4. Configuring Skeinforge:  Creating a New Profile with THE David Durant
    5. Configuring Skeinforge:  Tuning a New Profile with THE AMAZING David Durant

    []

  1. Average of 2.98 and 2.85 []
  2. Hey!  Now you’re getting it! []
  3. Average all of the averages above []
Tagged with , , , , 22 comments
 

22 Comments so far

  • Dave Durant
    February 22, 2011 at 11:25 am
     

    You got all that from our 5 minute conversation??? :)

    Rob Giseburt (http://www.tinkerin.gs/), maker of the *insanely* modded CupCake ‘WinterMute’ (http://www.youtube.com/watch?v=5zYvhdOi5wg) has been working on a “volumetric 5D” plug-in for skeinforge which does very similar stuff. Sorta parallel evolution of software – we talk about this stuff but I haven’t looked through his code and I don’t think he’s looked at mine. I expect his version will be what most people end up using as it integrates with the clever 5D stuff coming from the reprap side of the world.

    Good stuff is coming.

    (ps: if you’re one of the 3-4 people who downloaded this program from thingiverse before yesterday, grab the new v3 version.. the math is a bit better than earlier versions)

     
  • Peter Cauchy
    February 22, 2011 at 12:35 pm
     

    Ok, if we are solving for flow rate and have a dc extruder, what range can we see for setting pwm? Those of us with older machines need to adjust feed rate instead, since the dc motors stall at speeds slightly less than full. Please, what can we put in for flow rate for dc extruders?

     
  • Dave Durant
    February 22, 2011 at 1:01 pm
     

    You’re right – this is really more for stepper extruders than DC extruders.

    To convert raw flow rate RPM to a PWM value, set the “flow fudge factor” to 127.5, which will give you a flow rate of 255 for 2 RPM (127.5 * 2 = 255).

    You should probably also set the min/max flow rate values to something like 1.95 and 2.05 (or maybe 1.9 and 2.1). If you just set the min/max flow to 2.0, it’s probably not going to come up with many results – it’s hard to get a flow rate to work out to exactly 2.00000..

    Compensating for the inconsistancies of DC extruders is a bit more tricky. Instead of using 127.5 for the flow fudge factor, you should carefully measure the length of filament that goes **into** the extruder in one minute. Using that length, set the flow fudge factor to: 33.238 / length * 127.5. I haven’t tested that (my bot will never see a DC extruder again!) but I think it looks right. If you don’t have a MK5-style gear, use the gear diameter * pi instead of 33.238.

    (btw, I’m more likely to see comments at thingiverse than here, if you need more on using this with DC extruders)

     
  • makeme
    February 22, 2011 at 1:06 pm
     

    With the program SOLVING for flow rate it looks like it’s for a stepper extruder. Unless those “flow rate min/max” values are RPMs that you can measure as your DC motor does its one speed. If you can just set the min/max to the same value then maybe you can get the right values for a DC motor? Is that the way it’s supposed to work?

     
  • makeme
    February 22, 2011 at 1:09 pm
     

    Oops. DD got in while I was typing.
    Does your program also recommend reversal speeds and timing?

     
  • Dave Durant
    February 22, 2011 at 1:17 pm
     

    No reversal stuff yet.. I’m actually not using reversal myself but hope to soon. Once I get it working well by hand on a variety of profiles, I’ll try to reduce it to a function of flow rate and update the program to do it for me.

    I think I read somewhere that nophead recommended a reversal speed of 4x (8x?) the flow rate, which sounds like a most excellent (and easy!) place to start, once I find the time. The time value looks a bit harder, as I think that’s about extrusion length, not incoming filament length, which may change vs things like nozzle size/design. Dunno..

     
  • zgbot
    February 22, 2011 at 1:31 pm
     

    reversal is a bit more complicated than that, its reversal speed and time. i have been trying to fine tune that over the past few nights. i am doing it in old fashoned non science and math way.. punch in some numbers and try it out. I have gotten it so i get a small .5mm bump and no strings whatsoever when i move from 2 objects that are about 3 cm apart. the geared stepper from makergear might be showing some flaws with the backlash issues. sometimes i dont see the thing go backwards but i hear it go in reverse. i have been able to run it at 70RPM so far without much of an issue stripping. its also been slowing down the printing a lot when printing at max speed (45-50mm/sec) the head has to pause sometimes for the reversal to take place. the faster you can run reversal the less time you need to do it for. finding out what the max speed of the stepper extruder forward and reverse is a really good thing to test out on a machine before tuning in reversal.

    i am still tracking down the issue of TINY surface voids when changing layers i think. it looks like mine is not advancing the filimaent in time. you can see them really clearly in this photo
    http://www.thingiverse.com/derivative:6902

     
  • zgbot
    February 22, 2011 at 1:37 pm
     

    whoops… i didnt finish reading what you posted before writing that.. there is also a checkbox in reversal that does something but i cant remember what that is right now. i turned it off.

     
  • Dave Durant
    February 22, 2011 at 2:05 pm
     

    I think those tiny voids are from where it switches between doing loops and doing perimeter. I haven’t tested it out yet (it’s somewhere on my depressingly large todo list) but I think those get more noticable as thread width increases.

    Skeinforge doesn’t do this transition between loop & perimeter as a 90 degree turn, it’s more like a 45 degree turn, which can leave a little bit of space between the two sections of perimeter.

    It’s hard to explain.. Here’s a picture: http://www.flickr.com/photos/52118225@N08/5468472093/

     
  • zgbot
    February 22, 2011 at 2:56 pm
     

    hmm that really makes sense. I will have to shoot some slo mo video to see what is really happening.

     
  • Dave Durant
    February 22, 2011 at 4:21 pm
     

    > 2.Enter “Thread width” into Carve -> “Perimeter Width over Thickness (ratio)”

    Minor correction here and on #3 : you should tell skeinforge the value from the Width/Thickness column, not from the Thread Width column.

    Also, if you have a stepper extruder that doesn’t physically spin the filament drive gear at the rate you tell it to, enter the multiplier to get the right value in the Flow Fudge Factor. Example: my extruder turns the filament drive gear at 2RPM if I tell it to turn at 1RPM so I enter 0.5 as the fudge factor.

     
  • mrbug
    February 23, 2011 at 7:55 am
     

    Any chance of a crossplatform port? It’d be really could if you could write this as a php script or something similar.

    If you just make the equations public, I’m sure that someone would even do it for you!

     
  • Dave Durant
    February 23, 2011 at 10:45 am
     

    > Any chance of a crossplatform port?

    I’ve been told it does indeed work on mono, so it’s a little cross-platform already. Sorta. I’m looking into Java (JavaFX, actually) for a project at work. I may be able to rewrite it in that instead of in C#.

    > If you just make the equations public

    The source is included in the zip file. The equations aren’t anything special and can be found in mButtonGo_Click() in FormMain.cs. They’re also not quite right yet – there’s some non-linear stuff we still need to figure out to allow it to behave correctly across a wide range of thread widths..

     
  • Wade
    February 23, 2011 at 5:30 pm
     

    Hey, nice stuff, but it needs more units – hard to tell what’s going on without them – mm, rpm, etc.

     
  • acolwell
    February 24, 2011 at 2:14 am
     

    Thanks for posting this. I have wasted several hours the past few nights trying to dial in the settings for my new Wade extruder. I tried Dave’s program out tonight and was printing reliably in a few minutes. Thank you Dave! Thank you MakerBlock!

     
  • Lessons Learned from Resolution at 0.20mm - MakerBot Industries
    February 24, 2011 at 2:08 pm
     

    [...] Dave Durant’s magic printer calibration program I was able to just specify what layer height (vertical resolution) I wanted – and it just [...]

     
  • dreamer.redeemer
    February 26, 2011 at 11:07 pm
     

    The measuring scheme here is needlessly complicated, using some fairly basic algebra it can be shown that a sum of averages with equal sample size is equivalent to the average of all the elements. In other words, it is sufficient to take a bunch of measurements, just one column, and average that.

    Also, consider Dave’s advice on thingiverse: use values like “1.9″ min and “2.1″ max instead of setting both to “2.0″.

     
  • Getting more out of Dave’s Profilinator - MakerBot Industries
    March 1, 2011 at 1:56 pm
     

    [...] I posted about the basic usage of Dave Durant’s Profilinator, a program that will calculate the best print settings for your 3D printer.   In order to get you [...]

     
  • Instant Profiles with Dave’s Profileinator - MakerBot Industries
    March 1, 2011 at 8:15 pm
     

    [...] already covered the basics of how to use Dave Durant’s Profileinator program as well as it’s ability to provide a range of useful [...]

     
  • Caleb Cotter
    March 3, 2011 at 1:42 am
     

    I wish there was a linux version. Or maybe mac.

     
  • s p e x
    November 13, 2011 at 6:01 pm
     

    “Dead Simple” might be a bit optimistic. Although, I have a cup-cake, not a thing-o-matic, so I have to translate everything and don’t have the privileged of using Print-o-Matic (which was not easy to find, either).

    I have to say, though, trying to figure out where to put these magic numbers when skeinforge is so buried in osx is anything but simple, dead or otherwise.

    I’m manually editing the .csv files (because I can’t even get skeinforge itself to launch without crashing) and I can’t bring myself to change the “Flow Rate Setting” from 255 to the new 2.4978 value. And I have no idea where to put “Layer Height” or “Width / Thickness”.

    Is there a clear, concise, and reasonably successful how-to for calibrating a cup-cake with an old MK-4 extruder?

     
    • MakerBlock
      MakerBlock
      November 14, 2011 at 11:34 am
       

      @spex: Print-O-Matic and ProfileMaker are designed for stepper based extruders. There are several spreadsheet based calculators for Cupcake/PWM based extruder printers. There are also several calibration sets on Thingiverse (try Spacexula’s) which were designed for the Cupcake. As for the flowrate, you’d be best served by keeping it at 255. Setting it to less than that can cause undesirable results. Good luck!

       
 

Leave your comment

 
 
 

xhtml: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>