Musings and Experiments on the Art and Science of 3D Printing


Recent Posts

A Strategy for Obtaining Great Prints

By Michael Hackney → Wednesday, August 1, 2018
I've published this Strategy on several forums over the past 4 years. It has been greatly expanded (content not number of strategies!) for my upcoming book but I wanted to share this here on my blog for my followers. Note that some of the information in this list is a bit dated, the updated version in my book is completely up to date and greatly expanded.

A Strategy for Obtaining Great 3D Prints

Like all new endeavors, there IS a learning curve with 3D printing. This is still the pioneering era for desktop printing and we are very fortunate to have such a great community here as well as other resources on the web. But the challenge with all the information out there is finding it when YOU need it and deciphering the many different opinions and practices - some of which are good and some of which are, well, let's just say "poppycock".

Another part of the challenge is there are many different means to the same end, but I assert that those who have developed a workable (AND reproducible) technique most likely took a disciplined approach rather than the shotgun approach of trying one thing after another. So, I thought it would be helpful to describe a method that you can use to 1) develop a reproducible approach to successfully printing the things you want and 2) improving the quality of your prints to meet your (realistic) expectations. Don't hesitate to join in or ask questions. As required, I'll consolidate any interesting information from follow-on posts into this initial post to help make everything easy to find.

Ready to go? Before we do, here is a little suggestion.

TIP: When you are starting a new print session, give the printer a little warm up exercise! Much like an athlete needs to warm up before a game, so does your printer! Don't just turn the printer on and start to print, turn it on and let the hot end get up to equilibrium, let the heated bed get up to temperature. I even like to print a quick part to make sure everything is up to temp, in equilibrium and working properly. It's quick and easy to do and can help eliminate a lot of problems.

#1 Get Experience. Start with the printer. This is more difficult than it seems because without experience, it is hard to know if you have a mechanical or electrical issue, slicing issue or if something else is going on. So, to that end, keep things simple until you have some experience. By "simple" I mean, don't print the Eiffel Tower model for your first print, print a simple, reproducible and small item many, Many, MANY times until you nail it. For me, I used the calibration cube. In retrospect, I should have picked something much simpler (see strategy #2). 

#2 Start Simple. We have a tendency to want to jump ahead to more complicated prints, faster printing, and bigger prints as quickly as possible. But a few hours spent working on a simple object or two will pay dividends. There are many aspects to successful 3D printing, everything from the printer (which in itself has a mechanical system, electronics system, hot end, extruder, heated bed, firmware), to the slicer (and all of the parameters available to control the slicing), to the filament itself, to the actual item being printed. With so many variables (100s, maybe 1000s of them) it is really important to pin down as many of them as you can. One very easy place to do this is with the model itself. Develop your experience printing the same model over and over until you nail it. Even with a simple model, you can (and should) approach printing it with a methodical approach from the ground up. That's the next strategy.

#3 Practice in Measures. I play guitar and was basically self taught. When I found new music to learn, I did what many untrained folks do and practiced the piece over and over again from beginning to end. If I made a mistake, I started over. Then, I took lessons from a trained musician. My very first lesson was worth every penny! My instructor watched me learn a piece and then said "you should Practice in Measures". What he meant by this was to learn the first measure (music is divided into small blocks of notes called measures which are small and relatively simple). Practice it until it is perfect. Then, practice the second measure until it's perfect. Next, combine the first and second measures until that is perfect. Continue in this way until you've learned all the measures and combinations of them. In complex pieces, there will be a few measures or sequences of measures where you need to put in a lot more practice.

The advantage of this approach, my instructor said, is that you are not wasting lots of time playing measures you already know. The practice of playing from the start until you reach a difficult spot and make a mistake is that you play, say, 30 seconds (or more) of music you already know to hit a 1 second spot you need to practice. So in a 30 minute practice session you are really only practicing what you need to practice for 1 minute! This completely changed my approach to practicing everything from guitar to 3D printing to machining to learning CAD, to ...

How does this apply to 3D printing? Easily! Start with a simple object to print and practice nailing the first layer. Too often folks will print a poor first layer and allow the print to continue. Why print on a bad foundation? You might be able to salvage the part but more times than not, it will peel from the bed or warp badly. Instead, nail that first layer. Once you have that perfected, move on to print the rest of the object. Once you have the entire object printed successfully, change slicing parameters to print faster, or at higher resolution and start over (nail the first layer, ...). Practice in measures.

I can't say enough about getting that first layer right, the subject of the next strategy.

#4 Nail the First Layer. I don't believe folks spend enough time learning to print a perfect first layer reliably. If there are defects in the first layer, they will invariably come back later to bite you later - the part separating form the build plate, warping, or a defect in the part. Print a good (or great) first layer is probably one of the most frustrating experiences for most, it is also the most critical. Here's where strategy #3 comes to play, don't continue a print on an inferior first layer! Abort the print and restart that first layer again and again until you nail it. Why waste time on a part that will most likely fail or not be useful? Each time you print a first layer, measure it! If you configure your slicer to print a 0.20mm first layer, then it should be pretty darn close to 0.20mm. If it isn't, you've identified a variable that you can easily fix and nail down (Z height). 0.20mm is not a lot and unless you have highly calibrated eyes, you can't tell the difference between 0.20 and 0.15mm, but your printer sure can. At 0.15mm the first layer is going to squish onto the print surface. It may even seem like you are getting a great first layer and great sticking (which you are) but later, you'll discover the part is nearly impossible to remove or your extruder will start making that all too familiar TICK, TICK, TICK sound from missing steps. A perfect first layer will go down smooth and consistently time after time.

TIP: polish the tip of your nozzle! Chared filament and scratches on the very tip of the nozzle are dragged over the layer as it moves around. Best case, these leave a visible mark on the print; worse case, they rip the first (or higher) layer off the build plate. 

#5 Slow Down. Back to my guitar lesson example... The other thing my instructor taught me in that first lesson was to practice slowly (using a metronome) until I nailed the measure(s) at a slow tempo. Then, gradually and consistently, increase the speed. The same applies to 3D printing, print slowly at first. This gives you time to observe what's going on (strategy #6) and just simplifies everything. I like to start new folks at 20 to 25mm/s print speeds. What's the hurry? If you print 10 aborted prints at 50mm/s what have you gained (or lost)? Printing slow helps all parts of the printer, from the mechanics to the extruder to the plastic filament coming out the nozzle, stay in balance or equilibrium. Fast movements can highlight mechanical issues, extrusion issues, etc. But when you are first starting out, you don't know how to identify and isolate these issues. In fact, even with all of my experience, if something starts to go wrong, I slow down. That removes a lot of variables and gives me a chance to see what's happening. I've identified everything from loose pulleys, to a stretch belt, to a worn joint on a delta printer arm! And, I've helped a lot of folks identify other issues simply by slowing down.

#6 Watch What's Happening. Especially in the early stages of learning, watch all aspects of the printer. Combined with strategy #5 you'll start to develop an appreciation for how the slicer does its magic, how the printer does its magic, and it is just simply fun to watch! I highly recommend putting a flag of some type on your extruder motor shaft so you can actually watch retracts and advances and watch the steady push of the filament. A piece of masking tape stuck to the shaft is fine or print one of the pointer models. Watch that first layer print, that's how you'll see if there is a problem and maybe even figure out why. For example, I noticed that the first layer wasn't sticking in the same spot on my build plate. Turns out that I had some potato chip grease there (don't ask)! A little wipe with isopropyl alcohol and I was back in business. Watch what happens when the layer fan comes on. Is it coming on too early and causing the part to peal from the print surface? Pay attention to the details of what's going on and then...

#7 Keep Notes. I can't stress how important it is to keep notes. I have a word processor file I add notes to as I go. In particular, I keep a section on the filaments I use and the detailed printing parameters for them (strategy #9). Perhaps I'm becoming forgetful in my advanced age but I don't like solving the same problem over and over again. If I keep a note about a problem and my solution, I can usually find it again pretty quickly. Once comment on notes, don't be afraid to purge! After a few years of doing this, my file got quite big. Recently I archived all of my H1 and H1-1 notes. I don't refer to them any longer so why keep them in my working notes?

#8 Be Consistent. A CEO friend I worked with many years ago was fond of saying "Consistency is the hobgoblin of small minds!". I understood what he was trying to say but it has to be taken into context. When you are first learning any new activity, it is critical to be consistent. If too many things are changing at once, you have no idea what contributed to a good or bad result. Don't change too many things at once. In fact, if you can isolate and change just ONE thing, you will have a much better chance of success and understanding. This isn't always possible so lock down as many things as you can. If after a run of successful printing you run into a problem, go back to a known good state (see #7 - you did keep notes on what this state was didn't you?) and start there. Many times we try to change too many things in our frustration and that almost always makes things worse. Step back and think about how to isolate the problem areas with as few changes as possible.

#9 Know Your Filament. This strategy is a little lower level than the previous eight but important and often overlooked. I see a lot of folks just assume that they should print filament X at temperature Z - for instance, print PLA at 200°C. This might get you in the ball park but if you really want to get consistent and GREAT results, profile your filament. It's easy and if you write it down (see #7) you'll never second guess how best to print that filament again. It's important to realize that higher temperatures are not always better, they can actually lead to issues - parts that are just a little too large, parts that stick to the bed too well and can't be removed, blobs on the print, stringing, and a host of other problems. In general, I like to print at the lowest temperature possible for PLA and ABS. Then, as I ramp up print speed, I also need to ramp up the hot end temp a little since the filament is not resident in the hot zone for as much time. I suspect little details like this cause people more problems than they might anticipate.

Here's how I profile a new filament:
  • Start with a reasonable target temperature - 200°C for PLA and 225°C for ABS (one quick note, it is ideal to have a calibrated hot end, so when I say 200°C I mean 200°C. One easy way to do this is to make a little table with the hot end set temperature (what you see on the temp display) and the measured temperature (with a thermocouple). Do this in 5°C increments from 160° to 240° C (or so). Keep this chart in your notes (#7) and you will always know what the actual temperature is.)
  • Now, use the manual controls of your host to extrude 50mm at 50mm/s and watch and listen.
  • If the filament extrudes nicely, reduce the temperature by 5°C and wait for the temperature to stabilize.
  • Test again by extruding 50mm at 50mm/s
  • Repeat until you reach a temperature where the filament does not extrude well. At 5°C to that temperature and note this as the "low extrusion temperature" for that filament. Use this low temperature whenever you are printing slowly (20-30mm/s). You might find some filament need to be bumped up a bit more than 5° so don't hesitate to experiment and find that lowest reliable extrusion temperature.
If you want to get really serious about profiling your filaments, do the melt-flow test at higher extrusion rates - 60 mm/s, then 70mm/s, etc.

Don't forget to measure the diameter of your filament too! Not all filaments are created equally. Measure in several locations to get a sense of variability. Most of the slicers let you enter filament diameter and they will calculate a reasonable flow for you.

Finally, once you've completed the filament profile, print the Simple Single Layer Test object in the Layer Tuning section at the end of this post. 

#10 Know Your Bedfellows. Probably one of the greatest mysteries in 3D printing is "the bed". Metaphorically, this is where the rubber (filament) meets the road (bed) and getting "it" right is absolutely critical to successful fused filament 3D printing. All sorts of folklore on bed materials, coatings, coverings, concoctions, and juju exists here and elsewhere on the internet. It is also one of the areas that there is no one right way to do it. If you have discovered a special incantation and bed preparation that works, by all means stick with it! But, for those of you struggling, here are some strategies you can use to make improvements. One comment before I begin...

I am VERY persnickety about the aesthetics of my 3D prints. My 3D printed fly fishing reel is seen from all sides and so it is important that the first layer is flawless and visually appealing. The photo below is the bottom surface (first layer) in both the outer teal ring and the inner white spool plate (you can see more of my work here). A perfect first layer finish is not required for all objects - consider the base of a Yoda or vase - but if you practice getting a great first layer on these non-critical pieces you'll be prepared when you need a visually perfect first layer on another project.

A number of factors affect adherence of the first printed layer to the bed. These include:
  • surface material
  • surface texture
  • surface treatment/coating
  • bed temperature and uniformity of temperature
  • air temperature
  • chemical bonding or cohesion
  • print speed (see #5)
  • filament temperature (see #9)
  • first layer height (see #4)
cleanliness (of bed and filament)
This isn't an exhaustive list but it does include the big hitters and, as you can see, there are a few of them so it is very important to take a methodical (#2 and #8) and documented (#7) approach when solving bed-related problems. This is also a place where careful observation (#6) can play an important part.

I'm not going to go through all of these in detail now but did want to comment about the last one - cleanliness. Whatever you do, make sure everything near and on your printer is clean and grease free. Silicone greases and lubricants are especially problematic since they are invisible and very difficult to remove. Keep them away from your machine.

Your fingers are a prime source of contaminants. Every time you touch the filament or bed, you risk leaving a greasy print (see my observation in #6) and these can (and will) cause issues. I try not to handle filament with my bare fingers, I use cotton gloves. If you use a plastic or rubber glove, make sure it isn't coated or powdered - we're trying to eliminate sources of contamination, not introduce them. On the occasions that I do handle filament with my bare hands I wash and dry them thoroughly first. This is one area that I think affects a lot of user's and is completely overlooked. How many times have you loaded filament right after eating chips? It introduces a big variable that can be difficult to track down, so develop good habits and eliminate contamination as a variable.

Your fingers can also leave contaminants on the bed when you remove a part or brush off stray filament strands. Don't touch the bed surface if at all possible. If you do, clean/degrease it with an appropriate cleaner. For uncoated surfaces like borosilicate glass, PEI, the various 3d party surfaces (PrintInZ and BuildTak), and films (window tint, Kapton) you can use isopropyl alcohol. I like to use the little packages of wipes as they are convenient and safe. You can also do a quick wipe of your fingers before tossing it in the trash. It is more difficult to deal with coatings like PVA glue, glue stick, and hairspray since these can't be cleaned. If you suspect a contaminated coating, your only recourse is to remove and reapply it. 

Finally, don't overlook filament storage, keep it clean too. I store mine in large zip lock bags to keep off dust. You can put packets of desiccant to help remove moisture in the bag too.

#11 Learn to Diagnose. 

Patient: "Dr. it hurts when I move my arm like this."
Doctor: "Then don't move your arm like that!"

The first point of this joke is, many people do the same thing over and over again without making any changes or stopping to think about what to change (see #8: remember, change one thing at a time) - as if just repeating the same print with the same parameters will magically solve the problem. It won't (see my footnote below).

The second point of the joke is that the doctor didn't attempt to actually determine why the patient's arm hurt, he just had him avoid the problem. I see that a lot too. Usually it takes the form of "I tried printing it with my red PLA and it failed but everything was fine with my blue PLA". There are many other variations on this (changing slicers for example).

Learn how to diagnose problems. This requires careful observation (#6). Once you've identified where the problem occurs (let's say getting the first layer to stick) then PRACTICE that piece (see #3) until you sort it out. No need to run through the entire process over and over. Isolate the problem, formulate a hypothesis on what you think might be happening and design a test to prove or disprove your hypothesis. If you see a problem and can't formulate a hypothesis THEN seek help! Or, pre-test your hypothesis here to get some experienced feedback. But, whatever you do, try to work through the diagnostic process yourself first, that's how you learn.

Footnote: Many years ago (20) my company had an annual laboratory safety week (I worked in a corporate R&D lab with lots of nasty stuff). One of the annual favorites was a gentleman from OSHA who talked about electrical safety. He started his presentation with a black and white video from the 1940s (I think) of a speaker walking up to a microphone on stage. The presentation was being filmed. The speaker reached up and grabbed the mic and was immediately thrown back and fell to the stage unconscious. Members of the audience rushed up to help him. This was all on video. As 4 or 5 people worked to help the victim, you see a gentleman casually walk up to the mic, reach out his hand and touch the mic. He was immediately thrown back and collapsed on the stage next to victim #1. Literally 30 seconds later a THIRD audience member walked up to the mic (now there are 2 victims on the stage and a hoard of people working to revive them) and carefully reached out his finger (looked like the scene from ET) and very, very gently touched the mic with just the tip of his finger. He was immediately thrown to the stage as the third victim. All of this was caught on video. No one died (we were told). Neither of the second two victims stopped to think about the problem, consequences or solutions.

#12 Be a Fanboy. I am probably going to lose some fans for this post about cooling fans!

Don't think of a part cooling fan as an object, instead, think about "air flow". If you need cooling on a PLA (or other material) part, then you need to understand air flow. Not all cooling fans are created equally. Consider this, some folks use a 40mm, some a 25mm, some (like me) a 25mm squirrel cage fan. Some are mounted to blow the full fan width stream at the nozzle area, some have a duct or some (like mine) have a very focused soda straw duct). So comments like "run your fan at 1/2 speed" are not specific enough to be useful information. Instead, you need to understand how your particular fan, it's arrangement, your material, etc, all relate to the air flow.

Using the previous strategies, try to minimize or eliminate the need for any sort of air cooling. Slowing a print down (#5) is one great way to do this. It also gives you a chance to see (#6) where any problem areas on a print might be. You can use this information to focus the right amount of air flow on the problematic areas. The tendency for many is to use as much air as possible. It is much better, more consistent, and more reliable to use as little air flow as necessary. This puts less thermal stress on the printed part.

When you do determine you have a problem that only a fan can solve, start conservatively. I also recommend using a duct of some sort to focus the air flow where you need it. Ideally, the fan would have the ability to follow the print nozzle and direct a small stream of air to the filament right after it is laid down. That is a difficult problem to solve, so most of us direct the air to area around and under the nozzle. But, by directing the air (duct) you can reduce the air flow significantly since it is now focused where you need it.

I suggest doing your own experiments and observations but start conservatively. I don't use a fan during the entire part. If you find you need to turn the fan on at full blast from no air flow, do it in stages so the hot end can equilibrate properly. You can do this manually, some slicers can support it, or it is easy enough to learn the simple "fan mcodes" to manually insert them where you need them in the gcode file (this is what I do for tricky parts). 

M107 is fan off
M106 S50 turns the fan on at 50% - the S parameter is the speed from 0 to 100

Using a focused air flow, lower air flow and the step up technique I just described, you won't see a significant drop in hot end temperature. PLA has an interesting property that if you change the extrusion temp at the hot end, it has a visible effect on surface sheen of the part from matte to gloss as you raise the temperature. RichRap has written an excellent post about how he uses this phenomenon when printing decorative vases. Although he was varying the hotend temperature, a similar effect can occur with improper air cooling.

I'm also an advocate of using off-platform cooling. By this I mean strategically placed (ducted) fans that direct air to problematic areas of a print. These can be mounted to your vertical columns or simply sat on the bed if it is not too hot. With ducting, you can reduce the air flow considerably and keep the cooling right on a "hot spot". This technique does require manual adjustment, repositioning, etc. But, it you are trying to print a really tricky part, it might be the only way to do it. Frankly, the part cooling capabilities of desktop 3D printers is extremely primitive at this point. It's fine for the majority of objects you might print but as we push the envelope on what's possible, part cooling is one area that needs some more work to automate it.

Consider this, the way I maintain very tight tolerances on the rotating spindle and hub assemblies on my fly fishing reels is to use a low beam of air cooling on the spindle as it's printed. This "locks" the filament in place in a very predictable way. Once I printed a few parts and measured them to make sure there was little variation, I incorporated that into the design to get exactly the tolerance these parts required.

Another Satisfying First Layer

By Michael Hackney → Saturday, April 21, 2018

This is the first layer for all nine parts for gzumwalt's air engine using four different slicing styles and supports with KISS' Lock Paths feature. Printed in purple SnoLabs PLA on an Ultibots stock D300 printer. This is this printer's last hurrah before being upgraded to carbon fiber ball cup arms, a direct drive Bondtech BMG extruder and V6 hot end and my Tusk part cooling shroud.
This is the model for my printing Contest #2 now underway.

3D Printing Contest #2

By Michael Hackney → Thursday, April 19, 2018
3D Print Contest #2 is open to all supporters and subscribers! If you are not a subscriber yet, please subscribe to my blog (here) and YouTube channels and you will be good to enter. Prizes for first and second place (see Prizes below).


This very interesting air engine was just published by gzumwalt on Thingiverse: and is perfect as a challenging print that will let you exercise your printing chops!


The idea is to print it (including the propeller) and power it with a balloon! Entries will be judged on:

  1. 1 point for the total crowd scored score (see below) for aesthetics of the printed model - colors, print quality, etc 
  2. 20 points for "does it work powered with a balloon?"
  3. 10 points for each completed 30 seconds of run time on a single inflated balloon - no limit on the size of the balloon and a video must be submitted
From my research and calculations, a standard inflated balloon has about 800 mm of mercury pressure inside it. This is ~15 PSI. This model can be made to work on as little as 5 PSI so we should be able to make them work off balloon pressure.

PRIZES has graceously donated the prizes for this Print Contest:
First place can choose either 1 roll of carbon fiber, or 2 rolls of other filament. 
Second place can choose 1 roll of any non-carbon fiber filament


  1. Contest ends on Friday May 18 at 12 midnight EST, Participant scoring for category 1 must be complete by midnight on Wednesday May 23. Winner announced on Friday, May 25th
  2. One entry per person
  3. Submissions must include 1 to 3 clear photos and either the video or link to the video showing the full runtime duration
  4. Contest is open to all Patreon supporters who submit their entry in the contest_submissions Slack channel
  5. Contest is open to anyone who subscribes to both my Blog AND YouTube Channel who submit their entry via email to me at and include your subscriber IDs on both the blog and YouTube, clear photos of your print (Limit to 3) and either the video or link to the video of the full duration run
  6. All entries must also participate in the scoring for category 1 (aesthetics). A photo of each entry will be posted on my blog with an identification number. Scorers pick the 3 prints they like best and email or message me with their choices ranked 1, 2 and 3. The total for each submission will be the number of points for Scoring category 1.
If you haven't subscribed to my blog and YouTube channel yet, please do so here:
Let the contest begin!

Tip: QuickPrint model

By Michael Hackney → Thursday, April 12, 2018
Here's a simple model that prints quickly and can be used to check and calibrate a number for factors. 

QuickPrint test part - 20mm x 20mm x 5mm tall so it prints quickly to check:
  • X-Y scaling - particularly for delta printers to verify delta arm length
  • Z scaling - although only 5mm tall, you can use it for a quick Z calibration test
  • perimeter print quality - with two radiuses and two sharp corners you can check a variety of perimeter issues as well as print speed, acceleration and "jerk"
  • first layer quality - simply stop the print after the first layer is complete, cool and peal to measure first layer thickness. This measurement should equal your first layer height set in your slicer
  • top layer quality - slice with 3 top shell layers to check the quality of the printed part

Slicing recommendations: 
  • 2 perimeters
  • 2-3 shells top and bottom
  • 25% infill is good for a quick test print
Get it here: QuickPrint

See Musing: How to print accurate parts for more detail on printer calibration and printing accurate parts. Also, search on "calibration" for more related posts.

Video: Delta Printer Calibration Diagnostics

By Michael Hackney → Monday, April 9, 2018
Here's a tutorial showing how I approach diagnosing delta calibration issues using a bed probing macro. You might learn a little bit about how RepRapFirmware does it's delta calibration too.

The SublimeLair!

By Michael Hackney → Saturday, April 7, 2018
I am moving into a new work space for all (well, most) of my 3D printers, equipment, filament, tools, parts, etc. I call it The SublimeLair!
I've been cramped in my small office as the number of printers, filament and piles of related hardware continued to grow over the years. Then, last year, I added in quadcopters and that took over more space. Now we've finally ousted my daughter's cat from the downstairs family room and had the carpets steam cleaned. I'm removing all of the kids' junk and replacing it with mine. So just outside my PFF (personal fabrication facility - i.e. my machine and workshop), I'll have the SublimeLair where I can produce YouTube videos undisturbed, print, ponder, have a workbench to spread out and have more orderly storage for the 100+ spools of filament I currently have (I'm running on low supplies). And I'll have a space for my two Palette+ s with dedicated four-spool filament racks for each. Exciting times, exciting times!

Musing: How to print accurate parts

By Michael Hackney → Saturday, March 3, 2018


The purpose of this post is to help you understand:
  1. what accuracy, precision and resolution actually mean
  2. what factors influence printed part dimensional accuracy and precision
  3. how to calibrate Cartesian and delta printers to achieve high dimensional accuracy
  4. how to use RepRapFirmware's M579 Scale Cartesian Axes command to compensate for X-Y dimensional issues on a delta printer
As you read this, keep in mind I am a Duet controller and RepRapFirmware (RRF) convert and have been since the dc42 release with David Crocker's superb delta auto-calibration least-squares fit for the important delta calibration parameters. I use Duets (all models from the original 0.6 to the 0.8.5 and now the Duet 2 Wifi and Ethernet controllers) on all of my machines, currently 6 deltas, 1 CoreXY and 1 Cartesian printer. But I've built and sold or helped many others build their delta, CoreXY and Cartesian printers with Duets and RRF. Although some of what I describe is unique to RRF (the LSF auto-calibration and M579) the overall process for calibrating your printer to get dimensionally accurate parts still applies.

A Little Reality Check

Before we embark, have realistic expectations about what to expect from Fused Filament Fabrication (FFF) 3D printing! Think about the process – the printer is melting plastic filament and pushing it through a tiny orifice to create a thin layer – a really thin layer - of plastic as it moves. These thin layers are stacked one on top of another to create a 3D part. What could possibly go wrong?

All part-making technologies from blow and injection molding plastics to high-end CNC machining metals have limitations, tradeoffs and part design constraints. Let's look at injection molding a little closer since it uses similar materials to our FFF printers. Molten plastic changes dimension and shape as it is cooled – typically it shrinks. High precision injection molding takes this into consideration and molds are designed and painstakingly machined (i.e. $$$) to accommodate this shrinkage. But the actual part accuracy is highly dependent on the plastic formulation and purity, melt temperature, environment (humidity, ambient temperature, etc), molding pressure, mold residence time, mold temperature, and many other parameters including the part geometry itself. It is very complex and varying any one of these parameters can significantly affect the dimensions (accuracy) of the molded parts. Consider that these are million dollar machines in clean room, controlled environments using highly purified feedstock plastic and churning out thousands of identical parts. What chance do we have with a $1000 home-built 3D printer, printing inexpensive plastic filament in a home environment (i.e. big fluctuations in temperature and humidity) printing one part and then moving on to the next?

Consider that injection molded part tolerances for typical 75mm to 150mm cubic parts (in other words, the size of parts we typically 3D print) on dedicated commercial injection molding machines with highly engineered molds ($$) is around 0.23mm to 0.30mm for standard commercial moldings and 0.15 mm to 0.20mm for fine precision modlings (at much greater cost) in ABS. Think about that for a moment. Even in highly precise molding shops, the upper limit is only about an order of magnitude better (.015mm to .020mm).

You should not expect ± 0.01mm precision from your 3D printer. By the way, that's 0.0004" - a precision that even high-end CNC milling centers must work hard to maintain. If you've built or purchased a very geometrically accurate 3D printer and are meticulous and consistent in your approach to printing, you can attain ±0.05mm precision with experience and practice from a 0.4mm nozzle. But results within ±0.10mm precision are more typical and certainly PDG (pretty darned good) for most structural and ornamental prints.

Accuracy, Precision and Resolution - Oh My

Have you ever wondered what "accuracy" and "precision" and "resolution" mean? These confuse many people. I cringe every time I read a post that talks about "accuracy" when they actually mean "precision". Let me give simple definitions for each and then a drawing that should put it all into perspective:

accuracy – is a description of repeatable errors (how close the size of the actual printed item is to the true size)

precision – is a description of random errors (if you print that item multiple times, how much does it vary for each print or, in other words, how repeatable it is)

resolution – is the smallest increment you can measure (applied to your printer it is the smallest increment it can move precisely and/or the smallest feature it can print)

Resolution is related to precision but is NOT the same thing and often mistaken for precision. Resolution dictates the upper limit of precision. So, if your printer is not able to resolve movements of 0.05mm then your printed precision can never be better than that.

Another complication arises with resolution and that is attributed to the resolution of the STL model you are printing. If the model was tesselated with a low polygon count such that the resulting sliced line segments are longer than your printer's mechanical resolution, your prints will likely not be accurate. This is a subtle issue that most 3D printing enthusiasts don't realize – now you are armed with that knowledge.

Now take a look at the figure below. A target and bullseye is the classic way to show accuracy and precision. I've added a third dimension, resolution, to the picture.

The top row shows the difference between accuracy and precision at low resolution – the grid used to measure the position of each red star is very large. The stars in the bullseye can't be distinguished from each other since they are all in the same grid square – the resolution of measurement for the top row of targets.

The bottom row shows the same accuracy and precision as the top row but at high resolution. Here you can see the grid is much finer so you can distinguish the difference between stars even if they are all in the bullseye.
Click image for larger view
Think about this... high accuracy and high precision is, of course, best and the goal. But what can we say about low accuracy and high precision? In this case, a simple fudge factor could be used to compensate for the low accuracy. Once you know what this fudge factor – or compensation – is, you can apply it to each star and the results would be high accuracy and high precision! This is not true for the two cases on the right. There is no simple fudge factor that can fix low precision. So given the choice, always choose high precision over high accuracy. Accuracy is easy to adjust, precision is not.

Look at the definitions above again – precision is random, accuracy is repeatable. Hopefully this makes more sense now. Let's see how all this applies to your printed parts, that's why you are reading this right?

What Affects Printed Part Accuracy?

Realize that dimensionally accuracy and precision is dependent on a lot of factors including:
  1. the mechanical resolution and precision of the printer itself
    1. with Cartesian printers, the resolution for Z is usually different than the resolution in X and Y
    2. with delta printers, the resolution for X, Y and Z is the same but the resolution decreases from the center of the bed to the perimeter
  2. the mechanical resolution and precision of the extruder
  3. nozzle orifice diameter – and don't forget about the accuracy of the diameter
  4. the type of plastic filament 
  5. the extrusion temperature AND extrusion flow rate (which is determined by print speed)
  6. the quality of the STL file (low polygon counts are course, high polygon counts are more precise)
  7. how you slice the STL file (one perimeter is suboptimal, perimeter print order, infill density)
That's a lot to take into consideration and there are other factors too – but they have a lesser impact so I'll ignore them for this discussion.

A Strategy for Accurate Parts

You've just built or purchased a 3D printer and want to print some replacements for some broken parts on one of your kid's toys. These parts need to fit properly on the toy – they can't be too large or too small. Let's assume you have a 3D model of the parts. Let's also assume you know a little bit about slicing and have watched all of my YouTube videos and read all of my blog posts on the topic. Here's how to proceed – in order...
  1. calibrate your extruder
  2. calibrate your printer (more below)
  3. create an STL file from your model
  4. slice your STL file (see my numerous videos and posts)
  5. print three or more test cubes (a 25mm "calibration cube")
  6. measure the printed test cubes
  7. adjust the printer's firmware calibration to fix any problems
  8. repeat steps 5-7 to verify
  9. use firmware compensation (if available) to fix minor discrepancies
From the measurements you should get an idea of how accurate and precise you can print this simple test part. If these are within the requirements for the replacement toy part, you are ready to go! But if your accuracy is off (say the X and Y are always larger than expected) or precision is poor, then you have some work to do.

A note about precision: determining precision is deceptively difficult. Measuring printed parts is almost an art in-and-of itself due to the variability in the sidewalls caused by the printed layers. Measuring a part's height (Z) is more precise because the bottom layer is quite flat (depending on your print surface) and the top layer is likewise flat and measurement with a simple caliper averages any unevenness. Measuring a part's length and width is a greater challenge since the layers make it difficult to find a flat surface to register against. Also, printer artifacts like blobs and strings appear on these layers, again complicating measurement. Measuring length or width in one place on the part might yield a different value than measuring even a millimeter higher or lower. In general, I like to measure across the layers as shown in the photo below. I take three measurements – one near the front, one in the center and one near the back - and average them. Make sure not to be thrown off by a burr on the first layer. Assuming that your printer has the mechanical resolution to obtain it and you are willing to work to achieve it, a precision of ±0.05mm is achievable.

Cartesian Printer Calibration

Cartesian printers are generally easier to calibrate to get good dimensional accuracy than delta printers due to their linear motion mechanics and independence of the three axes. Once you've printed and measured your parts, adjustments to improve X, Y or Z accuracy is done with the axes' steps/mm parameter in firmware. For instance, let's assume you printed a 25mm calibration cube and your average Y measurement came out to 25.10mm. Your firmware currently has 800 steps/mm configured for Y. The formula to adjust the steps/mm is:

adjusted steps/mm = steps/mm * (true size / measured size)

For our example, this becomes:

adjusted steps/mm = 800s steps/mm * (25.0/25.1) = 796.8 steps/mm

Update your firmware and re-print the test cube and Y should be much closer to 25.0mm. Each of the three Cartesian axes are independent and can be calibrated individually in this way.

Delta Printer Calibration

Calibrating a delta printer is a much bigger challenge due to the math involved in the kinematics (it is based on trigonometry) and the inter-dependance of the three delta axes. I'm not going to go into detailed delta kinematics discussion here but I will touch on the basics you'll need to calibrate your printer.

The first thing to recognize is that the delta firmware calculates the position of the nozzle from the Cartesian coordinates fed to it in g-code. The g-code for a delta printer is – and should be – almost indistinguishable from the g-code used to print on a Cartesian printer (if the home position on the Cartesian is defined as the center of the print bed, otherwise the X-Y offset to home needs to be considered). The delta firmware calculates positions of the carriages that run up and down on the three towers. All movement in the X, Y or Z Cartesian space requires moving all three tower carriages. Confusingly, these towers are sometimes labeled X, Y and Z – but understand that they are not X, Y, Z Cartesian coordinates. It would have been nice if alpha, beta and gamma or some other label were used to reference the three towers on a delta printer.

Delta calibration depends on a lot of attributes but I'll focus on the main ones here. Some of the others really should be addressed in the mechanical build (i.e. tower lean and tower location errors, arm length variation, etc). The effects of these can be minimized with sophisticated firmware features like delta auto-calibration (RepRapFirmware) and grid compensation or the M579 compensation discussed later. The main parameters are:
  • delta radius
  • diagonal rod length (arm length)
  • the three tower steps/mm
See for the classic delta calibration guide. Note, that I left off homed height - that affects the first layer height and not the absolute X, Y, Z positioning.

The approach to calibrating a delta printer is:
  1. Adjust the steps/mm for all three towers to get the correct Z movement. This can be calculated based on the stepper motor step angle, driver microstepping, number of pulley tooth count and belt pitch. For pure movements in Z, all three carriages move the same amount. This is exactly like a Cartesian printer. The Prusa steps per mm calculator for belt systems can be used to calculate this.
  2. Measure or estimate the delta radius and arm length. It is best to actually measure these or use the manufacturer's recommendations. At the very least, roughly measure them. Plug these starting values for delta radius and arm length into the config.g (RepRapFirmware) M665 command. You can take a rough measurement for home height (the distance from the homed nozzle tip to the bed in mm) and enter that too. 
  3. Bring the bed up to print temperature. I also prefer to bring the hot end up to temperature too. Allow to stabilize for at least 5 minutes once they have reached the target temperature.
  4. Make sure to delete the config-override.g file if there is one. Then run delta calibration (G32) three or more times. Each time you run it, it will print the calibration results and the deviation of the calculated fit. You want to run enough times for the deviation to converge. You can see this in the G-code Console in the Web interface. The final converged deviation should be below  0.04 for best results. If it is higher, it is best to track down the issue and fix it. If you are using FSR probing, 99% of the time the problem is the bed is constrained, resulting in more force than necessary to trigger the FSR.
  5. Run M500, which will persist the calibration results to a config-override.g file.
  6. Print three 25 mm test cubes and measure their height. This will give you some information on how precise your printer's Z motion is. If there is a lot of variability in the heights, you should try to determine the cause and fix it. Usually it is a mechanical "slop" issue – loose belts, loose pulleys, or stepper motors not mounted firmly. 
  7. If the height (Z) is off, adjust the tower steps/mm to correct the printed height. This is the same as the calculation described above in the Cartesian Printer Calibration section. Edit the M92 command in config.g using this new value – all three towers (X, Y, Z) should be the same.
  8. Repeat steps 6 and 7 until your measured height is within the range ±0.05mm of the true value. This is a very good precision for FFF printers and requires some work to achieve. You should be happy with ±0.10mm of true value for most non-critical work. 0.10 mm is only four one-thousands of an inch – or roughly twice the diameter of a human hair.
  9. Now measure the test cube's length (X) and width (Y). These should be the same (within your printer's precision, again between ±0.05 to ±0.10). The firmware diagonal rod length determines the X-Y scaling of the printed part. This is the L parameter in the M665 command. Use the measured X value to proceed, if X and Y are different, we'll address that next. You calculate the corrected value like this: corrected L = original L * (measured X / true X)
  10. Print another test cube and measure X and Y. If X is not within your printer's precision (between ±0.05 to ±0.10) repeat steps 9 and 10 until it is.
  11. Now turn your attention to Y. Ideally, X and Y will be nearly equal (within tolerance). If not, the best approach is to identify and correct the geometrical error that is causing the discrepancy. Culprits include tower rotation, tower lean, arm length variations, and non-circular delta "radius". If you can't fix the geometrical issue and the variation is not large (say less than 5%), you can use the RRF's M579 command to compensate for the variation. You should only use M579 as a last resort and I highly recommend calibrating Z properly and calibrating either X or Y properly, leaving M579 to compensate the other axis (Y if you calibrated X).


The most important thing you can do to print the most accurate parts possible is to make sure your printer's geometry is as close to perfect as you can get it. Time spent finding and fixing geometry issues – and this applies to both Cartesian and delta printers – is time well spent and will yield much more consistent results. The next most important thing you can do is have realistic expectations on part accuracy. After reading this post, you should have a clear idea on what that means. The third most important thing you can do is carefully calibrate your printer. And lastly, try to be as consistent as possible – including using the same filament (even color), slicing attributes, and room temperature and humidity.

For my work, I prefer to print 100mm x 100mm x 50mm test objects. This larger size reduces measurement errors and exercises more of the printer mechanics. Of course they take much longer to print but for exacting work, that shouldn't be an issue.

If you have an application where dimensional accuracy is critical and you've done all of the above and your printer prints accurate and precise calibration cubes, I'd recommend looking at the polygon count in the STL, consider how part geometry could be affecting things (thin walls for example) and if all else fails, consider tweaking the scaling of one or more dimensions in the model to compensate for the variation. Another option if you designed the part, is to design for "tolerance tolerant" –------------------ meaning consider how FFF printing tolerances can affect your parts and design accordingly. Some examples are designing parts that are an integral number of layers in Z height and an integral number of extrusion widths for thin walled features.

I wrote this post in a stream of consciousness to help a few of my supporters on my Slack channel. Please let me know if there are any errors or points that are confusing and I will update this post as needed.

Plastic Razor Blades? Oh Yeah!

By Michael Hackney → Monday, December 18, 2017
I'm always looking for ways to reduce my cycle times for printing lots of parts every day - or just to make my life a little easier. I've been using these very cool plastic razor blades for a few months and I give them the "SublimeLayers Seal of Approval" for non-destructive part removal and general print bed cleanup without fear of damaging the bed.

They look like a standard single edge razor blade - and you can even put them in a box cutter. They are not sharp like a razor blade but they are remarkably keen-edged. I got mine in a bag of 100 from Amazon and they have really simplified cleanup.

UPDATE: Several people have suggested I setup an Amazon Affiliate and link to interesting and useful products that I recommend. So here we go! Thank you for your support!

Plastic Single Edge Razor Blades

Although these are not the exact blade I show above, I purchased these last time and they are functionally equivalent. The original source has been out of stock.