1 (edited by ysb 2013-02-25 15:55:10)

Topic: taxonomy of Z axis artifacts

i read the first issue of reprap mazine ( http://reprapmagazine.com/  free)

and i found a really interesting article on z wooble, z banding and other Z ribbing (see yourself page 29)


Someone can tell me if the z axis screw of the S2 is a M8 (metric) or a 5/16-18 (imperial) ?

because i made the test of printing a model with a 0.1905 mm height layer instead of my usual 0.2mm as adviced in the magazine, and it seem that there is a lot less banding ( so the solidoodle seem to use a cheap 5/16-18...) but perhaps it's a placebo effect or i touched something else that removed the problem...

2

Re: taxonomy of Z axis artifacts

It's a 5/16-18.  This is the size of the jam nuts that I used to fix my original z-wobble issues.

3

Re: taxonomy of Z axis artifacts

ysb wrote:

i read the first issue of reprap mazine ( http://reprapmagazine.com/  free)

and i found a really interesting article on z wooble, z banding and other Z ribbing (see yourself page 29)


Someone can tell me if the z axis screw of the S2 is a M8 (metric) or a 5/16-18 (imperial) ?

because i made the test of printing a model with a 0.1905 mm height layer instead of my usual 0.2mm as adviced in the magazine, and it seem that there is a lot less banding ( so the solidoodle seem to use a cheap 5/16-18...) but perhaps it's a placebo effect or i touched something else that removed the problem...

It was an interesting article, but while some of its statements apply to Solidoodle, others I'm not so sure.  For instance, the article implies that stepper motors have 200 full steps per revolution, further subdivided into 16 microsteps per full step.  This agrees with the Solidoodle, whose firmware is set to 2268 steps/mm and has a z-rod thread pitch of 1.411mm.  2268 * 1.411 = 3200 = 200*16.

However, I don't get the same calculations, as .1905 is not a multiple of .0070555.  Instead, try .1976, which is.

4

Re: taxonomy of Z axis artifacts

http://www.youtube.com/watch?NR=1&v … =endscreen

Here is another possible source for some z-artifacts.

5 (edited by ysb 2013-02-25 18:01:05)

Re: taxonomy of Z axis artifacts

@telvince

they said to no take into account microstepping are they are not reliable... i don't do the math but perhaps it's the source of the difference ? but i will check at home and i'm sure that my S2 didn't use 2268 as number of step for z axis . i change that after calibration

6

Re: taxonomy of Z axis artifacts

Can't be. Let's do some math: one rotation is 1.4111111 mm: taking into account full steps, we have 200/1.41111 = 141.73 steps/mm

Let's now print at 0.3mm:

Layer Z - Motor steps - Layer height in steps (motor_steps_n - motor_steps_n-1)
0,3 - [0,3*141.73= 42.519 =] 43 - 43
0,6 - 85 - 42
0.9 - 128 - 43
1.2 - 170 - 42
1.5 - 213 - 43

As you see, there is one step difference between each layer. This would mean a difference in height of 1.41/200 = 0.007mm between one layer and the other, and this difference repeats every other layer. You would not see a sinusoidal (o pseudo-sinusoidal) banding with 1.4mm period, like you usually see. In this case, the period would be of 2 layers (and I don't think you'd notice it). And this is completely ignoring microsteps. If they are even remotely accurate, they would already manage to compensate such a "wobbling".

7 (edited by tealvince 2013-02-26 05:03:08)

Re: taxonomy of Z axis artifacts

ysb wrote:

@telvince

they said to no take into account microstepping are they are not reliable... i don't do the math but perhaps it's the source of the difference ? but i will check at home and i'm sure that my S2 didn't use 2268 as number of step for z axis . i change that after calibration

Yes, that's the whole idea.  setting a layer height of .1976 would keep the z axis from micro stepping and keep it on full step boundaries.

still, however, I did the calculations too and the article is wrong.  I wouldnt bother changing the steps per mm.  Even taking micro stepping into account, the type of z ribbing the article describes would create ridges only .6 mm apart on the solidoodle.  As others have said, nobody on this forum has reported this type of wobble afaik but instead reports wobbling with ridges 1.41mm apart.

8

Re: taxonomy of Z axis artifacts

The quantization error would not be seen as a wobble, but rather as spikes when the rounding goes to the next integer number. And we don't really care (banding-wise) if the layer height is really accurate, as long as it is the same as the layer before.

Following is a plot of actual layer height vs layer position (for 0.1mm layers) due to rounding errors, in blue considering (ideal) microsteps and in red considering only full steps.

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.

Post's attachments

layerHeight.png
layerHeight.png 8.89 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

9

Re: taxonomy of Z axis artifacts

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.  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:

Z    steps    remainder
0    0    0
0.1    226    2
0.2    453    5
0.3    680    8
0.4    907    11
0.5    1134    14
0.6    1360    0
0.7    1587    3
0.8    1814    6

10

Re: taxonomy of Z axis artifacts

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).

11

Re: taxonomy of Z axis artifacts

Rincewind wrote:

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).

I think we are on the same page.  In another thread, I had graphed the error due to roundoff (z*2268 - int(z*2268)) and found it to be negligible.  Interestingly, it repeated at a period of .5mm (since 1/(2270-2268) == .5) and peaked at .00035mm. When I read the article on microsteps being nonlinear, I wanted to plot this second error source.  I guess the total error is something like z*2268 - int(z*2268) + fn(int(z*2268)%16).

Both seem relatively small, but it's interesting that the microstep and roundoff errors have different periods. Theoretically, if the microstep error was about the same amplitude, they could combine to create an an interference wave with a period of about 1/(1/.5-1/.6) = 3mm.  Not consequential, but interesting, I thought.

Post's attachments

SD Z error due to roundoff.png
SD Z error due to roundoff.png 35.89 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

12

Re: taxonomy of Z axis artifacts

So, does all of this mean that the firmware / gcode fix is not the solution we are looking for? Or is it?

13

Re: taxonomy of Z axis artifacts

FatalDischarge wrote:

So, does all of this mean that the firmware / gcode fix is not the solution we are looking for? Or is it?

The firmware fix is not THE solution. It fixes some periodic banding due to wobbling, but does not fix other errors (nonperiodic errors, XY coupling, backlash, temperature swings...). On the other hand, it costs nothing and it's likely to help in a majority of cases.

About the discussion immediately above, we were debating if roundoff errors are a problem at all. The cocnlusion is that effect due to roundoff is around an order of magnitude lower with respect to other errors.