I recently started looking into my printer's calibration. I've seen a lot of web sites that say to use the mathematical steps/mm values calculated from motor ustaps/rev, pulley teeth, and belt pitch. My resulting calibration prints were always off by about -0.5%, so I cranked up the steps/mm by about 0.5% and get perfectly sized prints. I've been using the machine that way for at least a year. I started looking into why it was off by that much and thought it might be my cheapo caliper, or the extruder calibration, or belt stretch, or pulley diameter.
The weird part was, I have a belt driven X axis and a ball screw driven Y axis and both were off by -0.5%. So I checked the caliper against some machining standards, I checked the extruder calibration by printing a single walled part and measuring to make sure that when I specify a 0.5mm wall that what I get. The only other thing that was common to both axes was the ABS I was printing with. I tried printing with TPU and found it was off by -0.25% in both axes.
So it looks like material shrinkage is the culprit. How do you deal with it? You can do what I had previously done and just increase the steps/mm by 0.5%, which is fine if you only print with ABS, or you can take a more generalized approach and scale the print depending on the material you're going to use. You don't want to scale CAD drawings- they should reflect the target size/reality, so you can scale the print when you slice or at print time using host software or in the printer's firmware. I did some digging and found that Cura will allow arbitrary scale factors to be applied before generating gcode. Slic3r will only scale in whole number % increments. RepRap firmware (and no others I am aware of) supports scaling prints using the M579 command.
I brought this up at the smoothieware support google group and they didn't seem interested in it. I checked into Slic3r at Github and found that others have requested the same changes for the same reason before me. I have decided to go back to increasing the steps/mm by 0.5% in my printer configuration because when i make parts that need tight dimensional accuracy I am usually printing with ABS. When I'm using other filaments it is usually for things that don't require such accuracy, so a little error won't hurt. I think it would be very nice if Slic3r added a shrink factor to the Filament page where you specify shrinkage for whatever filament you use and then slic3r would scale the gcode appropriately.
Ultra MegaMax Dominator 3D printer: [
drmrehorst.blogspot.com]