Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.15k stars 2.07k forks source link

[Adaptive layer height] Wrong 'step size' may cause non-integer motor steps value (it depends by leadscrew pitch, motor steps, etc) #3324

Open noisemaker00 opened 6 years ago

noisemaker00 commented 6 years ago

Please add a validation to the step size into the Adaptive Layer Height feature because not all layer height can be achieved by the printer. This value is strictly related to:

If the layer height is wrong, the number of motor steps won't be an integer value. You can check it using Prusa Calculator layer height (https://www.prusaprinters.org/calculator/).

You can insert a section in the Printer Configuration to insert these information the perform a check when user insert the 'step size' suggesting the closest value.

eg. My printer configuration is:

Let assume to use this configuration for Cura

This cause wrong layer height, for example: 0.2 - 0.01 = 1.99mm (BAD, number of steps is not integer value)

According with the Prusa Calculator, on my printer configuration a 'step size' of 0.0125 is better, because: 0.2 - 0.0125 = 1.9875mm (OK)

smartavionics commented 6 years ago

There is also the other problem of the layer height being inappropriate for a given printer due to the extruder performance limitations.

If the layer height is very small, the amounts of filament to be extruded for each line can be less than the resolution (steps/mm) of the extruder and depending on whether absolute or relative extrusion mode is in use can cause either blobs or missing filament to occur.

On the other hand, if the layer height is too large, the amount of filament to be extruded could exceed the extruders capacity and so that will cause under-extrusion/skipping/stripping, etc.

What is required is the means to be able to specify the min and max extrusion rates and then the layer heights should be constrained so that the extrusion rates commanded are within the allowed bounds.

ghost commented 6 years ago

I think I have a working example of this issue.

First curaprofile has Adaptive layer height enabled and in the photo the first marking I see gaps/under extrusion and the second marks as the head moves across it hits the part and has broken off one side before tried printing a number of times same results. adlayer

UM2_Stand_Alt_1.curaproject.zip

Second curaprofile has Adaptive layer height Disabled, Layer height set to 0.25mm zero issues printed perfect. UM2_Stand_Alt_2.curaproject.zip

Ghostkeeper commented 6 years ago

How would this work with delta printers?

smartavionics commented 6 years ago

I can't give a definitive answer but I have 2 delta printers and I have never had any issues like the above that are related to layer thickness.

What is the problem of the number of steps not being an integer value? The firmware will just use the nearest integer, don't you think? If that leads to an error of +/- 1 step, what does that equate to in terms of Z distance?

Ghostkeeper commented 6 years ago

Thinking about it again, I guess delta printers are out of the question anyway because even normal horizontal layers are not on one Z step. There is no Z step in fact.

What is the problem of the number of steps not being an integer value? The firmware will just use the nearest integer, don't you think? If that leads to an error of +/- 1 step, what does that equate to in terms of Z distance?

The problem of this is that on some layers it will round up and on other layers it will round down. This means that some layers are thicker than others, even in areas where the thickness is uniform according to Cura. You get dithering. Also, the extrusion indicated by Cura will be oblivious to this rounding so you'll get over- or underextrusion.

Ghostkeeper commented 6 years ago

Our project manager put this off for later. We won't get the time to implement this soon.

andrew-davie commented 6 years ago

Stepper motors (at least some) also do microstepping, so the "step size" is usually much finer. On the Creality machines, with a stepper resolution of 1.8° and 16 microsteps, the actual Z resolution is 0.04 mm for whole-steps, but if you consider micro-stepping then it's 0.0025 mm (although with some inaccuracy due to the way microstepping works). The point I'm making is that the OP does not appear to be considering microstepping as also being important when discussing adaptive layer height. IMHO.

Ghostkeeper commented 6 years ago

For some printers there is apparently the concern that the motor is not strong enough to hold the build plate in a certain microstep position for a longer period of time.