teachingtechYT / teachingtechYT.github.io

Creative Commons Attribution Share Alike 4.0 International
341 stars 126 forks source link

[Feature Request] Prime Speed Tuning added to Retraction Tuning #37

Closed quarky42 closed 3 years ago

quarky42 commented 4 years ago

I've found that many slicers default to having the same Retraction Prime Speed as the Retraction Speed. This means for fast retractions the filament is going back into the nozzle area very fast.

Just reducing the prime speed by itself has greatly reduced the stringing I was getting with no further change to the the other Retraction settings.

Please consider adding a prime speed calibration to your Retraction Calibration. For PETG this helps a lot at reducing the zits and blobs during the reload extrusion move. I believe Simplify3D has a different name for the setting than Cura does, but it helps in both slicers.

I have used this setting with both Bowden and direct drive.

My Bowden has a Retraction speed of 55. A prime speed of 15

My direct drive has a Retraction speed of 20 and a prime speed of 10. (I haven't dialed in the prime speed yet, 10 seems to work better than 15 did for me. There is less slop in a direct drive regarding room for the filament to build up and store spring energy on its way to the nozzle.

vector76 commented 4 years ago

I'm curious how priming speed could affect stringing. Doesn't priming occur after the movement? In other words, stop printing one island, retract (possible z hop and wipe), move to new island, prime, begin printing next island. How would priming affect stringing?

Or is my understanding of the sequence incorrect?

quarky42 commented 4 years ago

An object or fluid in motion tends to continue in motion unless acted in by an equal and opposite force.

The filament loading back into the nozzle too fast, it's going to push more filament out of the nozzle than if you reload the nozzle area a little more slowly. Not too slow, but when we're talking about a few mm of filament it doesn't take real long to load and carry on.

So if too much filament it pushed out it the nozzle and it is then printing more, you end up building up filament on the nozzle that then gets carried around. It gets deposited randomly as zits and when it snags somewhere it can get dragged and stringed so the effects will vary with what is being printed.

Tall vertical skinny things / tall edges with open air to one side and a movement to that side will tend to string. Large flat surfaces will tend to blob and zit.

I've seen this setting help PLA but not anywhere near as much as it helps PETG.

Think of stringing as the end result of an equation of a lot of variables. You don't know your variable values ahead of time, you just know you have stringing.

So, you eliminate over extrusion, you calibrate retraction (but the slicer automatically makes the reload speed the same as the retract speed but they are two different processes and have two different effects, so this is a bad assumption), you try restart distance to compensate, you calibrate your slicer flow rate so you aren't over extruding the lines, you do all these things and each one holds a component of stringing.

Maybe you get enough variables down to where they need to be the left over error is still absorbed by tolerances on the print or you get only very few issues and it is good enough. Ok. But, then switch to a new filament and this new one really likes to string, blob, and zit far worse so you need to go further to reduce the erroneous extra bits of filament that are escaping the nozzle at the wrong times.

I hope this gives a framework to look at prime speed as yet another variable. In some cases, it may not matter much. PLA isn't aa sensitive as PETG to this behavior, but for the filaments it does help it can be wonderful (when used with all the other calibration tools.)

teachingtechYT commented 4 years ago

Just to be clear, are we talking about the extruder feedrate for the 'unretract' movement just before printing resumes?

quarky42 commented 4 years ago

In Cura it is the Retraction Prime Speed. It is the speed that the filament returns to the nozzle after a retract. So yes, it is the unretract speed but I find that term more confusing that way.

Because the default behavior of this normally hidden setting is to match the retraction speed, it is a major part of how dialing retraction in works, but at higher prime speeds it causes it's own problems. But since both are tied together by default, you don't get very good control.

By separating them and testing / controlling them independently, it is possible to maximize retraction speed based on quality without varying the prime speed and then dial in prime speed after that for even better control. There is a point where more retraction speed causes problems because the prime speed is too high. Lowering the prime speed allows for a wider range of retraction speed, if that is a better way to explain it.

Having used both direct drive and Bowden printers it seems this makes more of a difference on Bowden, but that doesn't mean it can't help a direct drive. I've seen an improvement in both when printing PETG, with a bigger improvement on the Bowden side.

quarky42 commented 4 years ago

I believe a better phrasing of this has come to me. I hope it helps, but I do realize that it has turned into another long explanation. This explanation is going to hit on a number of things that many people already know, but it is my attempt to try and place Prime Speed in context of these other settings, so I hope you will bear with me here because to me, it seems clear how many of these variables contribute to stringing, so this is my attempt to put it all in perspective.

First and most importantly: I look at stringing as an additive or subtractive process. You can make changes to settings that increase the amount of stringing or increase the likelihood of stringing, or both. Further more, I look at stringing, blobs, and zits ALL as part of the same physical effect: "Too Much Filament In the Wrong Spots". So, when I say stringing, I really mean all unwanted filament deposits. However, it is critical that everyone understands that just because these are all examples of the same physical effect, the cause of this effect are multiple, varied, and additive. So, if you can address enough of the causes you can often make your printer print in a way that is unlikely to string/blob/zit most of the time. Think of it like chipping away at the causes. Once you chip away at it enough, you're left with pretty darn good print quality. "Perfect" takes even longer to achieve, but "good enough for daily use" is often far easier and more satisfying!

There are a bunch of settings (variables) that contribute to stringing and if you change enough of them you can drastically reduce or nearly eliminate stringing. That doesn't mean that all potential sources of stringing are eliminated, just that you have lowered the likelihood of stringing down far enough to make it rare / not noticeable. If you can create conditions where stringing still happens then you can either choose to avoid those conditions or you can choose to try and find further areas where stringing may be reduced.

In fact some of the trade-offs involved will force you to have a higher likelihood of stringing because of other effects you are trying to achieve. So, in order to get to "Zero Stringing" you might have to sacrifice one of the other variables that might not always be possible depending on the purpose of what you are printing. No one ever said 3d printing was going to be easy. Okay, lots of people said that 3d printing was easy, but they were either lying or had never 3d printed before. :)

Some of the causes of "too much filament in the wrong spots" include: Overextrusion due to E-Steps / Slicer Flow Rate Calibrations - In order for your printer to not automatically spit out too much filament at various times / various printing conditions, the printer has to know how many e-steps to generate to spit out 1mm of filament. If your printer thinks 1mm of filament is X e-steps, but you actually get 1.08mm of filament extruded, that is a lot of extra filament that has to go somewhere / be deposited as blobs/zits/strings depending on how the print head is moving and depending on how the extra filament comes loose or gets snagged. Put it this way: 1.08mm of filament when 1mm is called for doesn't sound like much, but add that up over 50 or 100mm of filament. That is 8mm of extra filament that is deposited somewhere on the model when the actual print should have used 100mm of filament. 8mm of blobs, strings, junk... yuck!

But that was just e-steps. The slicer's flow rate needs to be calibrated as well. Even if the printer knows how much filament to push out to get 1mm exactly (or even a very slight underextrusion) the printer is dumb. It ONLY does what it is told and the slicer calculates how much filament to spit out to make model you are printing, so getting the slicer flow rate in line with "reality" is very important.

Slow travels - Gives too time for filament to ooze. If you slow travels down enough, you can almost always force stringing, zits, and blobs to happen. Ooze is a form of overextrusion that is time based. Plus, if filament oozes out of the melt zone in one bad location, that could mean that there is less filament available to start printing at the new travel location once it gets there so you get a combination of overextrusion (strings,blobs,zits left in one location) that ALSO causes slight underextrusion at the new location where the nozzle was going.

High temperature - Filament is being heated hotter than is necessary for good layer adhesion (This is a tricky one because you are trying to balance physical strength and durability with aesthetics. In some projects the aesthetics don't matter, only the strength, others still you have to find a balance, and in some projects you just need it to hold itself together nicely, and be as beautiful as possible with strength not mattering at all as long as you have minimal good layer adhesion.) Again this form of overextrusion can certainly contribute to under extrusion if the melt zone of the nozzle has lost filament. The first extrusion move after this has happened will be slightly underextruded, but the rest of the print move / extrusion move after is has caught back up might be fine or at least closer to fine.

Retraction - Retract too slowly and filament has time to leak out that might not have leaked if you retracted a little faster. Retract too fast and the filament pulls away from the softer filament in the melt zone and the end result is more filament in the melt zone. There is a happy medium here. At some point during retraction length experimenting, you can retract "far enough" by which any further retraction doesn't achieve anything except add time. At some point during retraction speed experimenting, you can retract at "just the right speed" for your particular filament type / temperature combination. The right speed will pull the most filament out of the melt zone. You can't "see" these two ideal situations, but you can look for reductions in stringing to tell you when you are close.

Retract too slowly, and more filament melts and oozes out than was intended. Again this could create slight under extrusion at the very edge of a new line, but shouldn't last.

Retraction Prime Speed - If you have really fast retraction speed (Bowden setups often do) Cura defaults to loading the filament back into the nozzle after a retraction at the same speed. The "shock" or sudden push of the filament back into the melt zone can and will dislodge a tiny bit of filament. I've observed this effect when I see blobs and zits at the end of a move. So calling this "stringing" isn't always true, but if at the end of a travel you end up with a little bit of extra filament pushed out of the nozzle AND when that filament builds up on the nozzle instead of being deposited, there is a chance that the build-up contributes to stringing more so than blobs and zits. This is why I try to look at stringing, blobs, and zits as all part of the same problem because often times where this extra unwanted filament gets deposited can be random or heavily influenced by the shape being printed.

In fact, I have noticed that I can vary my Retraction Speed over a much wider range when I limit the Retraction Prime Speed. So, it appears to me that at some level of increasing retraction speed, the default behavior of the prime speed being increased as well starts to work against you when trying to dial out unwanted filament. When you limit the prime speed to something reasonable (10 to 15mm/s for example) now increases to your retraction speed aren't causing increases to the prime speed. IF I just barely touch the top of the surface of water and I do it gently, no splash is created. If I slam something into the very top of the water but I stop right at the surface, it will still generate a big splash because of all that energy contacting the surface tension of the water. Think of it as a little mini shockwave being propagated through the molten filament in the nozzle. The shockwave starts at where the filament touches the top of the melt zone rapidly and it has no choice but to move through the molten filament and out the nozzle where the shockwave pressure can be relieved. It carries a tiny bit of filament with it and where that filament ends up really depends on where the nozzle is and in what direction it is about to start moving. (I've noticed that moves right after this that are in a straight line tend to build up on the nozzle and if there is a travel move soon after that, you'll get a higher chance of stringing. If the move is in a arc or into an area where there will be infill, you could just as easily get stringing in the infill OR blobs/zits at any point along the way. The arc tends to allow the filament to come off the nozzle more to one side or the other.)

Now, let's temper that shockwave analogy just a little bit with some physical look at the fluid dynamics here: Molten filament is NOT as thin as water and it is NOT a solid. So it will propagate a shockwave, certainly, but not as well as some other fluids because it is viscus. On the other hand, like water, molten filament is not compressible. So as soon as that solid filament scrapes, builds up, or pushes molten filament from the walls into the melt zone there is an impact there. If that impact is relatively slow (or at least just not super sudden) then the molten filament has time to move around the edge of the solid filament, the molten filament has time to start to soften or even slightly melt the solid filament.... there is time for an equilibrium to be reached that reduces the amount of "pressure relief" coming out of the end of the nozzle. We are talking very small amounts of pressure. So, in the grand scheme of things: you START with E-Steps / Slicer Flow Rate, you continue on to dialing in the retraction speed and retraction distance, but as you are getting closer to good print results this would be a VERY good time to limit the prime speed so that you aren't fighting two variables at once.

Have you ever seen filament that has been drawn out of a hot nozzle? You know how it has a long skinny tail? Imagine for a second that you punch that tail into the nozzle where there is always already a little bit of molten filament there. That hard tail doesn't melt instantly. (Look up the Leidenfrost Effect.) So that tail rapidly going into the filament, that molten filament has to go somewhere, right? Well it pushes up and around the skinny tail of the filament, but it also pushes down out the nozzle at the bottom as well. (Equal and Opposite Forces) Now, image you gently dip that tail into the molten filament. That tail displaces the molten filament more gently, less filament comes out of the nozzle end, and the filament has more time to melt the tail of the solid filament into the pool of growing filament. There is time for the air to displace itself up through the Bowden tube...the whole process has far less kinetic energy applied to it. That, fundamentally, is it: Reducing the Kinetic Energy being pushed into the melt zone, so that there is less energy to dissipate and more time for the whole system to absorb it.

I do NOT want to overstate the effect that prime speed has. It is absolutely not the "primary" source of unwanted filament, but it is a source among many. I have had a few people try this setting change for me when they were having problems getting their retraction dialed in it helped them get that last little bit of stringing that they were struggling with. They were all using Ender series Bowden style printers. I myself have used this setting on a direct drive printer and seen a positive effect, though not as strong of an effect as on the Bowden printers I've used it on. I have seen it help PLA print quality through others, but my personal experience is with PETG, and on PETG it helps a lot once you've tackled the other primary sources, this one is next in line.

I hope this discussion here helps give some perspective on Prime Speed and provides some good food for thought, and even better food for testing. When I first started working with this setting, I read something about it on Reddit and some other people were discussing it. So, armed with this idea, I punted. I've played with prime speed between 10 and 15mm/s and found that it helps. But, I haven't done the multi-variant testing that could help people fish out an ideal prime speed using the same methodology as printing temperature towers and retraction towers. I really hope that TeachingTechYT who has helped so many people with his videos, will do some experimentation with the prime speed and ultimately consider making a prime speed variable column so that we can try varying that as well. Default the prime speed to 15mm/s (if you want to use a good medium number) so that when the other variables are dialed in, it is done so without varying this one. Once those are done, this variable could be changed across a range from 10 to 30mm/s.

drmulligan commented 4 years ago

If possible a different test model which isolates and demonstrates the effects of prime length and speed would be ideal.

quarky42 commented 4 years ago

The effects of prime speed don't exist in isolation. I do not believe a dedicated model is necessary, but rather a stringing torture test that is already being used would be a good place to start.

Maybe once tested more, someone even smarter than me could figure out something that might highlight prime speed further. My initial theory is that multiple tower models are already a good place to start, but the setting for prime speed would need to be limited to 15mm/s during the retraction testing and if someone was inclined to test further, they could then repeat the same tests with variations to the prime speed.

There will be some printers or filament combinations where prime speed may not be contributing enough to really matter. I didn't notice much prime speed effect when printing PETG Carbon Fiber or Nylon Carbon Fiber. Both were very thick and not prone to oozing at the temperatures I was printing.

I like the idea of a least starting with a well known model, do some testing, and then see if any of the results warrant a deeper look or not. My initial feeling is that just setting the prime speed at a reasonable level and doing the retraction testing will in itself have a significant benefit. The prime speed would need to be copied over to the slicer at that point. If someone wanted to go the next step and adjust prime speed up or down, that could be valuable for some.

teachingtechYT commented 4 years ago

Thanks for the good discussion. Prompted me to add a note about travel speed on the retraction page. Prime speed is close, it will be implemented in the coming days.

teachingtechYT commented 3 years ago

Implemented!