User avatar
KeyboardWarrior
Posts: 478
Joined: Thu Jun 19, 2014 5:02 pm

Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 1:16 am

Printing with tolerances can be tough. There are settings in the software as well as settings in your printers firmware that may control these tolerances. If you have a prototype that needs to fit with other parts, or you want to make something fits with a certain part, it can be frustrating when your part comes out skewed. There are two different sections in todays Tip, "Off by a large margin" and "Off by a small margin". If you're printing 20 mm calibration cubes and finding that your measurements are 20.5 mm or larger in the X-Y or Z direction, I would definitely recommend starting off in the "Off by a large margin" category first!

Off by a large margin

If your print is off by a large margin, in the X-Y or even Z- axis, it points to one thing. Steps-per-mm values. When the G-Code Simplify3D makes is sent to your printers firmware, your printer uses your Steps-per-mm values to decide how much to turn the stepper motor to move one mm. If the Steps-per-mm value is off, than you will get parts that are not to scale.

If you are using a RepRap style printer, you can open the Configuration.H file of the firmware in Arduino and find the steps-per-mm values there. For MakerBot/Sailfish style printers, you will need to use a custom GPX ini file in your Simplify3D folder and reference it using the post processing script option in Simplify3D which is a bit more invovled.

My recommendation for calibrating Steps per mm if necessary is to do the following:

1) Print a 20 mm cube
2) Measure the cube with calipers
http://www.amazon.com/Inch-Digital-Cali ... 848&sr=1-1
3) Use this formula for correction for the axis you'd like to calibrate. This formula is simply for a 20 mm cube, using cross multiplication to find the Corrected Steps per mm value
CorrectedStepsPerMMValue = (20 mm*CurrentStepsPerMMValue)/(MeasuredSide)

4) Use new StepsPerMM values and reprint the 20 mm cube to validate results!



Quick and Dirty Fix: If you don't want to change your printers firmware or use a custom gpx file, and you need correct tolerances NOW for a deadline. Just use the formula below and then double click your part and scale it accordingly in the X-Y and Z-axis. (Not recommended, but it would most likely be a good enough temporary solution)

Scaling= CorrectSideLength/PrintedSideLength





Off by a small margin

Small margins can be tough! Since any number of factors may be at play.

-If your extrusion multiplier is too high, your outer perimeters could be about too thick and lead to tolerancing issues due to that
-Warping due to too much heat could cause your outer perimeters to lose their shape
-Print speed may be too high

Ensuring your extrusion multiplier isn't too high and also remembering not to print at a speed higher than your printer can handle are great starting points for small margins.

Also, if shifting is causing your parts to be off:
-If your belts are too loose, the motor could be turning and not turning the belt with it
-If your belts are too tight, the motor could be turning and once again, not turning the belt with it
-The voltage to the stepper motors may be off



To Conclude

I think changing and using the formula for Steps-per-mm values and working with those is very important. For small margins, you're really just changing general printing settings, that would affect many aspects of your print, not just size. If your extrusion multiplier is off, you'll probably see it in more spots than just the tolerancing of your part. Really calibrating and setting your Steps-per-mm value absolutely right and as close to as possible as your calipers will let you can provide amazing results and really take your printing to the next level.

From a CAD/design stand-point, Make Magazine has a good article with a section designated for this exact topic which I've pasted below.

http://makezine.com/2013/12/11/top-ten- ... -printing/

FIT TOLERANCES FOR INTERLOCKING PARTS
For objects with multiple interlocking parts, design in your fit tolerance. Getting tolerances correct can be difficult. Kacie’s tips for creating correct tolerances: use a 0.2mm offset for tight fit (press fit parts, connecters) and use a 0.4mm offset for lose fit (hinges, box lids). You will have to test it yourself with your particular model to determine what is the right tolerance for the thing you are creating.

User avatar
TenKOhms
Posts: 172
Joined: Wed May 14, 2014 3:04 pm

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 8:12 am

Great tips KBW, I'm sure they're going to help a lot of people out.

For RepRap style machines, if you use the machine control panel to send in manual commands, send in the command M503
With some firmwares, this will give you a printout of your printer's saved EEPROM values, or values that are loaded when the printer is power-cycled. If it displays your steps per mm you can use the command:

Code: Select all

M92 X?? Y?? Z?? E??
(replace ?? with respective axis steps/mm)
This will change your printer's current steps/mm, but the values will be reverted back to EEPROM values on a power cycle. After doing the M92 command you can do:

Code: Select all

M500
to save these new steps per mm to your printers EEPROM so that even with a power cycle it will be retained.


In terms of adjusting steps per mm for calibrating printed dimensions, this is usually seen as a more legacy method used back when the RepRap project were using printed pulleys that aren't as accurate as the aluminum GT pulleys we use today. Because of this, back when the pulleys were printed and difficult to print the teeth pitch correctly, the
steps per mm * desired value/measured value was used.

With our new hardware, however, with the more accurate aluminum pulleys with accurate pitches and what not, it's actually better to use a calculated steps per mm value based off of hardware, and then calibrate your print dimensions with settings such as extrusion multiplier, measuring actual filament diameter, etc. This will give you much more accurate prints in the long run when you have inner features such as screw holes or scale prints to print larger

habloIngles
Posts: 80
Joined: Wed Aug 27, 2014 6:48 pm

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 8:36 am

look forward to reading these everyday good job mate. Gonna have to check back regularly so I don't miss one before it gets lost into the forray

BaudR8
Posts: 180
Joined: Fri Aug 29, 2014 9:59 am

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 8:38 am

the dreaded and infamous steps per millimeter

dsegel
Posts: 159
Joined: Tue Sep 30, 2014 5:37 pm

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 11:02 am

One thing to consider is that while the cheap digital calipers like those your linked to have a resolution of (i.e. will READ a dimension to) 0.01mm, they are not accurate to that degree. Most are only accurate to about 0.02mm - 0.03mm. So don't go crazy chasing perfection.

To get more accuracy you need to spend hundreds of dollars more.

User avatar
KeyboardWarrior
Posts: 478
Joined: Thu Jun 19, 2014 5:02 pm

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Thu Jan 15, 2015 11:25 am

TenKOhms wrote:Great tips KBW, I'm sure they're going to help a lot of people out.

For RepRap style machines, if you use the machine control panel to send in manual commands, send in the command M503
With some firmwares, this will give you a printout of your printer's saved EEPROM values, or values that are loaded when the printer is power-cycled. If it displays your steps per mm you can use the command:

Code: Select all

M92 X?? Y?? Z?? E??
(replace ?? with respective axis steps/mm)
This will change your printer's current steps/mm, but the values will be reverted back to EEPROM values on a power cycle. After doing the M92 command you can do:

Code: Select all

M500
to save these new steps per mm to your printers EEPROM so that even with a power cycle it will be retained.


In terms of adjusting steps per mm for calibrating printed dimensions, this is usually seen as a more legacy method used back when the RepRap project were using printed pulleys that aren't as accurate as the aluminum GT pulleys we use today. Because of this, back when the pulleys were printed and difficult to print the teeth pitch correctly, the
steps per mm * desired value/measured value was used.

With our new hardware, however, with the more accurate aluminum pulleys with accurate pitches and what not, it's actually better to use a calculated steps per mm value based off of hardware, and then calibrate your print dimensions with settings such as extrusion multiplier, measuring actual filament diameter, etc. This will give you much more accurate prints in the long run when you have inner features such as screw holes or scale prints to print larger
Definitely a great idea about the G-Code commands to get the steps-per-mm values. I also 100% agree that with most printers you purchase today, the hardware will come pretty spot on. However, for many who built their own printer, modified designs, or received printers that weren't properly calibrated you're most likely going to need to modify your steps per mm values.
dsegel wrote:One thing to consider is that while the cheap digital calipers like those your linked to have a resolution of (i.e. will READ a dimension to) 0.01mm, they are not accurate to that degree. Most are only accurate to about 0.02mm - 0.03mm. So don't go crazy chasing perfection.

To get more accuracy you need to spend hundreds of dollars more.
Great point! I think if you're printing within +- .2 mm (about 10x the error of the calipers) that those are great results for current FDM printers. However, some users with more advanced prototyping needs may need to be more precise.

davidbitton
Posts: 2
Joined: Wed Feb 10, 2016 1:27 pm

Re: Tip of the Day 3- Steps Per MM, tolerances and more!

Wed Feb 10, 2016 1:29 pm

One thing to keep in mind with issuing an M92 and an M500 is that not all firmware is configured to allow EEPROM changes. I found that mine would not. Therefore, I just add my M92 line to my start-code. Thanks!

Return to “General Discussion and Tips”