Printing inner and outer walls at the same speed by default #8974
Replies: 4 comments 11 replies
-
@jmding8 could you explain why you think that increasing the speed of the molten polymer in the liquefier and die, result in an increase of pressure? |
Beta Was this translation helpful? Give feedback.
-
@THeijmans & @Sarita-Ultimaker I came across the discussion in a Facebook group and after a short chat with the author, we decided to move it here. So the material and processing team could also participate. I'm not quite sure if I agree with the conclusion Jamie Ding draws but I can't put my finger on it yet. So I was kinda hoping you guys could also take a look at it. |
Beta Was this translation helpful? Give feedback.
-
Most of Ultimaker's print profiles have a very small speed and line width difference between the inner and outer wall for this reason. It's well understood that the heat zone acts as a sort of spring between when the feeder feeds and the nozzle reacts. This is made worse too by Ultimaker's Bowden tubes which are also like a spring which adds reaction time. The default values for Outer Wall Speed vs. Inner Wall Speed in Custom FFF Printer are probably too far apart for most printers, yes. |
Beta Was this translation helpful? Give feedback.
-
The explaination for the pressure buildup during the inner wall and then resulting overpressure when starting the outer wall is a real enlightment to me. Even if it should've been obvious. But given that it "is obvious" to be the reason why the speeds should match: why is there no setting for "Inner Wall Wipe Distance"? Couldn't such a setting be used to allow using different speeds with less overpressure problems by allowing the overpressure to release in the wipe before starting the outer wall? |
Beta Was this translation helpful? Give feedback.
-
Original question
I'm having trouble with Cura and seams. The picture shows the same model sliced with Cura 4.8 on the left, and PrusaSlicer on the right. Both were sliced using the 0.20mm speed profile for the Mk3s, and printed on a stock Kingroon KP3s (direct drive model). The model is a simple, 20mm x 20mm cylinder, with 0% infill and 2 perimeters. Note, I'm using the Mk3s profile that you have to download from Prusa's website and import manually to Cura. For both slicers, I set seam position to random to emphasize the problem. As you can see from the photo (taken with aggressive lighting to emphasize the issue), the Cura print shows prominent overextrusion for ~10mm after the seam (the nozzle moves from left to right) resulting in an exaggerated layer-line artifact. While the PrusaSlicer version also has slight extrusion inconsistencies around the seam, it is significantly less prominent and the zit itself is much smaller.
I'm more trying to understand why this is happening than looking for a solution. While I could minimize the issue by reducing forcing a retraction to occur when moving from inner to outer walls, and then adding a negative retraction extra prime amount, I'm really just looking to understand the cause of this effect.
I've tried turning on retract after layer change, turning on optimize wall printing order (which makes the outer perimeter seam line up with the inner perimeter seam so there's basically no travel required when transitioning from inner to outer wall), and reducing jerk and acceleration, none of this helped. I looked into the gcode as well, thinking that maybe Cura was overextruding at the start of the line or that PrusaSlicer was underextruding at the start, but the extrusion distance per XY distance was basically constant for both. I even printed the same files on my Ender3, which has an Hermera, which is about as responsive an extrusion setup as possible, but it shows the same issue, so it doesnt seem like an extrusion hardware problem. I'm out of ideas at this point. Anyone know what's going on?
Findings
After a TON of investigation (20 test prints last night alone...) I FINALLY figured out what the cause of these lines is! You can see the original Cura print on the left, the fixed Cura print in the middle, and the PrusaSlicer print on the right. TLDR: the fix is to just print inner and outer walls at the same speed, instead of printing inner walls faster (as many profiles, and indeed the Cura defaults, often do).
If you want to understand why, including enough background to know why the fix I just mentioned above WONT always work, feel free to read on. Please forgive me for being long-winded (and a bit patronizing even?), I wanted to make this explanation thorough for all audiences (and I'm a bad writer).
The faster you extrude plastic, the more pressure you need in the hotend. Note that when I say "faster," I don't mean your nozzle speed (typically something like 50mm/s), I mean how much volume of plastic your extruder/hotend is flowing out the nozzle. For example, printing 50mm/s, with a 0.4mm line width, and a 0.2mm layer height results in 4mm^3/s of plastic flow (50mm/s * 0.4mm * 0.2mm). That is also the same volumetric flow rate as printing 100mm/s, with a 0.4mm line width, and a 0.1mm layer height (100mm/s * 0.4mm * 0.1mm). This should make some intuitive sense, if you want your toothpaste to come out of the tube faster, you have to squeeze harder.
But let's say you need to suddenly and dramatically reduce your volumetric flow rate. For example, let's say you're printing a 0.2mm layer, with a 0.4mm line width, at 100mm/s (8mm^3/s volumetric flow), and want to suddenly drop to 50mm/s without changing layer height or line width (4mm^3/s volumetric flow). That sudden halving of volumetric flow would mean you need to just as suddenly cut the pressure in your hotend by about half as well. It's not easy to do that, because all the extra pressure it took to print at a high flow rate of 8mm^3/s takes time to dissipate and causes a little bit of oozing out of the nozzle as it gradually goes away.
So hw does that apply here? Well, we tend to print the outer walls more slowly than the rest of the print in order to reduce ghosting and ringing artifacts. So if a printer goes from printing infill, or even an inner wall, at a relatively high flow rate, then suddenly goes to print an outer wall at a much slower flow rate, it needs to (almost instantaneously) drop the pressure in the nozzle which it simply cannot do. All that extra pressure results in extra material being extruded that the firmware and gcode are not accounting for. That extra material shows up as a bulging line immediately after the seam.
Why does this not happen with PrusaSlicer? It's because Cura is pretty unique among slicers in that it allows the user to set a different print speeds for the outer wall vs the inner walls. In fact the default 0.2mm "draft" profile seems to have 60mm/s inner wall speed and 30mm/s outer wall speed. This forces the printer to go from printing the inner walls at a high flow rate, to printing the outer wall at half that flow rate, with basically no time to allow the pressure in the nozzle to dissipate first. That extra pressure results in the bulging line. PrusaSlicer meanwhile doesn't have this feature, so inner and outer walls print at the same speed, and so the volumetric flow and nozzle pressure are both nice and constant and smooth when moving from the inner walls to the outer wall.
Technically actually, you can produce the same problem with PrusaSlicer, you just have to try kind of hard. You have to set the infill to print faster than the walls, set the outer wall to print before the inner walls, AND print a small object. This would force the printer to rapidly transition from high flow infill extrusion to low flow outer wall extrusion, resulting in extra pressure in the hotend. And if your object is small as well, the travel move from infill to wall would be short, and so that extra pressure wouldn't have time to dissipate and would cause a bulging line. This doesn't happen in practice very often though, because the way PrusaSlicer is set up makes it unlikely that you'd end up doing this accidentally.
So what can we, as Cura users, do about it? The most practical solution is to just print inner and outer walls at the same speed. Simple. There's a bunch of other stuff that can help too, like turning on linear advance (maybe... Marlin's implementation might not be aggressive enough for this situation, more testing needed), significantly reducing jerk and acceleration, forcing a travel between inner and outer walls to give time for the extra pressure and material to ooze out as stringing, force a retraction between inner and outer walls and use a negative retraction extra prime distance, etc etc. But most of these other solutions have major drawbacks and are only useful situationally.
Beta Was this translation helpful? Give feedback.
All reactions