6
$\begingroup$

I have some flexible PLA filament (https://www.amazon.com/dp/B00VKSSA4E/, presumably a mix of PLA with some platicizer) that's supposed to be easy to print with settings similar to regular PLA. I've seen recommendations to disable retraction, and indeed I get huge failures to extrude at all for a while after retraction if it's enabled. But with retraction disabled, I get stringing all over the place, and since the material isn't brittle, it's really difficult to remove.

I'm using a bed temp of 60 and print temp of 220, increased from 210 for normal PLA since I had trouble getting it to adhere at lower temp. Printer is Creality Ender 3. Using CuraEngine for slicing. The extruder is feeding the material fine; there's no kinking going on or anything.

Where should I start trying to improve this? Might retraction work with a really really slow print speed or greatly reduced retraction distance? Or are there other ways to avoid stringing?

$\endgroup$
5
$\begingroup$

You could enable combing in the slicer. Combing not only prevents retracts, it also uses already laid down paths for movement from one to the other location and as such reduces the amount of stringing.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thanks! I wasn't thinking combing had any effect with retraction disabled, but of course it makes sense that it does, and I have combing disabled because it significantly lowers quality compared to use of retraction (for materials where retraction works). I'll try switching it back on and see if it helps. $\endgroup$ – R.. GitHub STOP HELPING ICE Mar 21 '19 at 11:35
  • $\begingroup$ Along with combing, you could enable coasting which will stop extruding slightly before it would otherwise in an attempt to prevent blobs and stringing. $\endgroup$ – Perplexed Dipole Mar 21 '19 at 15:38
  • $\begingroup$ @PerplexedDipole Yes, indeed coasting could help too, nice addition. But personally my experience with coasting is that a visible line along the height of the print becomes visible (regardless of the coasting length). This is caused by the sudden change in filament flow as a result of the pressure difference. If you don't mind that, coasting is indeed something the OP could check out. $\endgroup$ – 0scar Mar 21 '19 at 19:51
  • $\begingroup$ @0scar: I'm not getting a noticable effect like that, probably because the material is so flexible - it doesn't notice a sudden change in filament flow. Perhaps what I need is a way to limit the acceleration of the extruder so that when it wants to stop extruding it slows down very gradually rather than expecting a quick response. $\endgroup$ – R.. GitHub STOP HELPING ICE Mar 21 '19 at 20:53
  • $\begingroup$ @PerplexedDipole: Now that I've solved the fundamental problem here, coasting looks like it might be a really attractive feature to use, to further mitigate problems from the possibility of pressure building up. $\endgroup$ – R.. GitHub STOP HELPING ICE May 18 '19 at 1:11
3
$\begingroup$

OK, this turned out to be really idiotic. The main source of the problem was Cura's custom start gcode for my printer (Ender 3), maybe duplicated for other printers too: it crams a massive amount of filament through the extruder to prime it. With flexible filament, this doesn't actually extrude most of it; rather, it just builds up as pressure in the bowden, which makes the first few [tens of] layers ooze like crazy, and then the hot nozzle picks up the ooze and drags it all over the place, and yay, stringing everywhere!

A previous version of this answer (see edit history) described a lot of options I was using to try to improve things, some of them rather dubious. Really, the core of the matter, which can manifest in lots of ways, is that if pressure builds up in the extruder due compression of the material being easier than forcing it through the nozzle, it will ooze during travel, or as a glob prior to travel during ineffective retraction, and either way it will eventually lead to catastrophic stringing. So to solve this, I needed to address all the ways it could happen.

  • First was the start gcode. I dropped the extruded material amount over 200mm for the priming from 15mm to 9mm (about 90% nominal material needed rather than 150%) and edited the custom end gcode to revert all but 1mm of the retraction it does, after homing. This reduces the need for wacky over-priming at print start, and makes the state after printing roughly match the state after loading filament, so that print results are independent of whether filament was just loaded or not.

  • Second, pressure can build up again if the extrusion rate is too high for the material, nozzle size, and temperature. At 30 mm/s print rate and 0.3 mm layers, I found I need a ridiculously high temperature like 235 °C to keep it flowing. This in turn produced a lot of sagging of overhangs, so really 0.3 mm layers seem to need significantly slower printing, defeating the purpose. 0.2-0.25 mm seems to flow marginally ok at 30 mm/s and 215°C, which is better behaved with regard to overhangs, and fine at 225 °C.

  • I'd noticed previously (in the previous version of this answer) a problem with layer adhesion with temperatures lower than 225 °C. This was not actually a layer adhesion problem but rather an underextrusion problem, the same one causing stringing.

  • The retraction amount still needs to be sufficient to account for the compression of the material in the bowden, plus enough to get it backed out of the hotend. I seem to need at least 15 mm, compared to 5 mm for plain PLA. Note that retraction min travel needs to be disabled (set to 0) to prevent skipping retraction for short moves, where stringing will be the worst.

  • Higher retraction speeds seem to work better, and without them the 15 mm retraction is miserably slow. However, I found that my printer's default limits on extruder feedrate and jerk were very low. Adding M203 E200 and M205 E25 to the custom start gcode made it honor my requests for faster retraction, and doesn't seem to have any ill effects.

In summary, the settings that work for me are:

  • All print speed settings: 30 mm/s or less
  • Travel speed: 250 mm/s
  • Retraction amount 15 mm
  • Retraction speed: 150 mm/s
  • Retraction combing: all
  • Retraction hop: disabled
  • Retraction min travel: 0 mm
  • Temperature: 235 for 0.3 mm layers, 215 for 0.2 mm layers

And the results:

test print with no stringing

frog with support, no stringing

frog with support removed

| improve this answer | |
$\endgroup$
0
$\begingroup$

The right path seems to be enabling retraction, but tuning the retraction and print speed settings. I started out by dropping all speed settings to 30. With retraction disabled, this turned the stringing into solid walls between paths, with only a tiny gap at the very start of the wall, right after the extruder stopped:

enter image description here

This suggested that the sudden drop in pressure at the nozzle is cutting off the string momentarily. Back to that thought in a bit.

Independently of the pressure thought, I decided to turn retraction back on, but with really slow retraction speed. This helped a lot, but probably not the way I expected; I think what it did was give the nozzle time to ooze at the point where retraction happens, rather than in the travel path. I also turned off infill_before_walls, so that the retraction and potential oozing would happen in the infill region rather than walls, and increased the travel speed way up to 200 to take best advantage of the moment where oozing is interrupted.

At this point, I'm getting almost-acceptable results with retraction_retract_speed set to 5 (vs default 25), default retraction amount, and speed_travel of 200:

enter image description here

Back to the pressure idea, I'm thinking that the right solution is probably to perform the retraction concurrently with the travel, keeping some negative pressure the whole time, and possibly jerking the extruder back further just before hitting the travel destination to prevent a string from forming there. Cura has no features to do anything like that, but it shouldn't be difficult as post-processing on the gcode. I might try prototyping it like that to see if it works.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.