tealvince wrote:Rincewind wrote:As you see, in the worst case we have spikes every .6mm and the maximum difference is .007mm, which is not the sinusoidal banding that we usually see. In the (ideal) microstep case, things go much better.
Very interesting. Rincewind, your graph looks similar to mine, so I'm curious how you calculated it.
I think we were plotting two different things: you plotted the remainder in microsteps, I plotted the actual layer height in case of full steps (completely ignoring microsteps) and in case of completely ideal microsteps:
layer_height(z) = ( round(z*steps_per_mm)-round((z-0.1)*steps_per_mm) )/steps_per_mm
where steps_per_mm is 1.41/200 for full steps and 1.41/3200 in case of microsteps.
If the real case, due the non-ideality of microsteps, the actual shape will probably be something worse than the blue line but better than the red.
In mine, I graphed the microstep value m = int(Z*2268) % 16, where m varies from 0-15, and presume that if microstepping is nonlinear, that there is some unknown function dz = fn(m) that varies from 0 to .007mm that will determine the final shape of the ribbing:
So you are somehow assuming that there is no rounding error in the microstep count (which is actually very reasonable if you set 2270 instead of 2268) and the ribbing comes only from the non-ideality of microsteps? Possible, but this error is <<0.007mm (that would be a full step error), it would probably be in the order of 0.007/16 (microstep error), since we can assume that no matter how imprecise the microsteps are, microstep(i)>=microstep(i-1) (ie the motor cannot go backwards between one microstep and the next).