EDIT 7 Jan 2014: Yikes, this whole thing is hot air. Truth is, you won't see ribbing caused by non-integer layers in Z. viewtopic.php?f=21&t=5983 However, the math is interesting, and if you want to understand better how to calculate and manipulate calibration factors, read on...
There have been many posts about ribbing, and there are online articles about it too. But in this post I want to try to explain it in a way that most people with the skills to do high-school algebra will understand the mathematical roots of the discussion and be able to re-create their own calculations if they want. Understanding is always better than blind copying, no?
Basically there are three factors that are inter-related and you can only choose two out of the three to be exactly what you want arbitrarily.
1) Calibration: steps per millimeter. This affects the accuracy of the height of your objects. Most people seem to insist on the "ideal" 2267.72 number of steps, although in fact the true number would go to an infinite number of non-repeating digits. Here's what my calculator produces: 2267.7165354330708661417322834646. (In fact, I use 2260 steps per mm, an error of 0.324%, for reasons that will be clear in a moment.)
Height: Ideally we'd like to think that we can specify any arbitrary layer
height, but the fact is that the stepper motors move in certain increments of distance. We can specify any layer
height we want in Slic3r, but only certain choices will give us no ribbing. Also, it would be nice if we could specify the layer
height with an exact number, not a rounded-off number that is an approximation.
3) Absence of ribbing: The printrbot calculates in floating-point arithmetic how high the printhead should be for each layer
. Then it translates that into the number of steps required to reach that height. If the theoretical height for a single layer
is not exactly equal to a certain number of steps, then the printrbot must round off the number to get an integral number of steps. However, the errors build up layer
until you reach a layer
where the rounding routine either adds a step or subtracts a step in order to make the actual height of the printhead as close as possible to the theoretical height at that layer
. This is the cause of ribbing: every so many layers (often in the range of 6 to 10 layers) you will see a layer
that has one extra step or is missing one step. It's not a huge difference, but in many models it can be noticeable.
So what to do?
When you have 5/16 rod and use the 2267.72 calibration, then in order to have layer
heights which can be represented with perfect accuracy in a limited number of decimal digits AND result in layers which use an integral number of motor steps, then you are constrained to layer
heights which are multiples of 0.031750 mm. This series includes layer
heights like 0.190500, 0.222250, 0.254000, 0.285750, 0.317500, 0.349250, 0.381000, etc.
[On the other hand, if you are willing to accept the 0.34% error in calibration (who's really going to notice?) then you can use layer
heights of 0.2, 0.25, 0.3, 0.35, 0.4...]
[When you change to a metric rod, things get a lot easier, but I'll leave that for the reader. The principles here will apply.]
In reality, all the math behind this is fairly straightforward.
The 5/16 threaded rod has 18 turns per inch.
One inch is exactly 25.4mm
The motors have 200 steps per turn, but with 16X microstepping, it is 3200 steps per turn.
Thus to move one inch, the motor turns 18 * 3200 steps. To move one mm it turns (18 * 3200) / 25.4 steps. That's where the 2267.72 comes from.
Now here's how we maneuver it to get the 0.03175:
We want a layer
height which is BOTH an integral number of steps AND which also can be expressed exactly in a small number of decimal digits.
Height(mm) / Distance per Step(mm)] should be an integer.
Now Distance per Step is the inverse of the figure we found out earlier: it's 25.4 / (18 * 3200) mm per step.
Let's regroup numbers in the denominator:
Distance per Step = 25.4 / (18 * 3200)
= 25.4 / (18 * 4 * 800)
= 25.4 / (72 * 800)
= (25.4 / 800) / 72
= 0.03175 / 72.
heights that are multiples of 72 steps will come in integral multiples of 0.03175mm.
For example, a layer
height of 0.254mm = 576 microsteps = 8 * 72 microsteps.
Now if on the other hand we said arbitrarily that there were 2260 steps per "Jay's millimeter," then our distance per step would be
= 1/(113 * 20)
= 0.05 / 113
heights that are multiples of 113 steps will come in integral multiples of 0.05 Jay's millimeter. Convenient, no? I can specify a layer
height of 0.30 Jay's millimeters and use exactly 678 steps. (In fact the actual layer
height using the 5/16 rod will be 0.2989792 mm - pretty darn close to 0.300mm)
Congratulations if you've made it this far! Now you're an expert on the calculations behind z
-ribbing and how to avoid it.