blobs due to firmware stalls
-
@dc42 SD card, uploading through web interface. Yes my slicer has this feature. But these are actual slowdowns, not pauses. Any sort of pause will produce an artifact.
-
Can you take a video to show the behaviour? And some pictures of the results?
Also some details of your printer and your config.g?
-
0_1530460551039_config-override.g
0_1530460543912_config.g
0_1530460641086_FanDuctMod3.gcode
Upon further close examination, it almost seems like there is middle zone of speed where the problem happens, slower or faster than that the quality seems better. I almost wanted to blame the non-print move speed, but there is high quality in some of this print with moves across the print going on. But obviously this is a complex model. Going to have to try some prints with test objects.Quality is high in the obscured part of the image near the bottom, and that was moving 75-100mm/s
-
Turned on retractions and travel moves display. Doesn't seem to match the pattern of blobs?
-
The fact that you can see the blobs in the slicer preview would tell me it's not firmware related at all. If those are in fact the blobs you're talking about. The white filament combined with some glare in the photo makes it a little hard to make out surface features. It would help to see the slow down behavior you describe in motion.
One other question, are you using pressure advance?
It looks like you're using simplify 3d to slice? Does the behaviour occur when using a different slicer?
-
If the motion seems to pause, then it means it's waiting for something to happen or finish, and during a print, that "something" is usually a retract/unretract cycle. So I'd look at the retraction settings, especially extruder speed. Oh, and are you also using Z hop? That will also mean that the print head has to wait for the Z axis to finish it's up/down cycle so try disabling it if it is enabled.
-
@phaedrux I am not using pressure advance. I have direct extruders, do you think it will help here?
@deckingman I worked on the settings some more, and I discovered I was getting blobs at layer changes. I'd expect the Z move to be a 5 dimensional move, but it's not, it's a lone E retract, then a lone Z move, then back to XYE (no hop). No matter how fast these moves are this seems like a stall, well really it is a stall as far as the plastic flowing out of the nozzle is concerned.
It seems the only way for this to print without artifacts is to include the Z dimension in the move without retract. I guess simplify3d can't do that? I just tried switching the Cura too, which doesn't seem better.
-
At least you have an avenue of attack now. Tuning your retraction settings should let you reduce if not eliminate the blobs. Some blobbing at layer change is inevitable in FDM, but it can be mitigated.
Your max extruder retraction speed is 50mm/s. That may be a bit slow. Try upping your max speed and acceleration for the extruder and trying a faster retract (say 133mm/s) and slower unretract (say 25mm/s) and see if that has an impact.
You can also experiment with printing outer walls first, or manually selecting a location for the layer seam in Cura.
Pressure advance may help a bit as the blob is partially a result of built up pressure in the nozzle, which PA aims to reduce.
-
@r3cvr said in blobs due to firmware stalls:
@deckingman ........................... seems like a stall, well really it is a stall as far as the plastic flowing out of the nozzle is concerned.
Err, yes - that's what retraction is for. When the print head has to move to a different position in X Y or Z, then one has to stop the flow of plastic while that non-print move is being completed, otherwise it will continue to ooze out of the nozzle and get pulled into a stringy bead. Simply stopping the extruder won't work because latent pressure in the hot end and other factors will cause the filament to continue to ooze. So we have to reverse the extruder to pull that blob back up into the hot end, then do the move, then un-retract the filament. For the same reason, it can't be a "5 dimensional move" as you call it - the retraction must occur before the non-print move commences and not during it. Hence, retract-move-unretract.
The time it takes to retrcat/unretract is a function of speed and distance. So to reduce the time, you need to retract faster or reduce the retraction length. But too high a retraction speed can break the bead of filament inside the hot end, rather than stretch it. If you have a long Bowden tube, then you may not be able to reduce the retraction distance because it takes a certain amount of movement to "unbuckle" the filament inside the tube.
To tune the retraction settings, you could consider using firmware retraction which allows you to change parameters "on the fly" during a print. Not all slicers support it though. Once you've found the best setting (for that filament and print speed) then you can either continue to use firmware retraction or revert to slicer retraction but use the same numbers as firmware retraction.
-
@deckingman said in blobs due to firmware stalls:
Err, yes - that's what retraction is for. When the print head has to move to a different position in X Y or Z, then one has to stop the flow of plastic while that non-print move is being completed, otherwise it will continue to ooze out of the nozzle and get pulled into a stringy bead. Simply stopping the extruder won't work because latent pressure in the hot end and other factors will cause the filament to continue to ooze. So we have to reverse the extruder to pull that blob back up into the hot end, then do the move, then un-retract the filament. For the same reason, it can't be a "5 dimensional move" as you call it - the retraction must occur before the non-print move commences and not during it. Hence, retract-move-unretract.
The time it takes to retrcat/unretract is a function of speed and distance. So to reduce the time, you need to retract faster or reduce the retraction length. But too high a retraction speed can break the bead of filament inside the hot end, rather than stretch it. If you have a long Bowden tube, then you may not be able to reduce the retraction distance because it takes a certain amount of movement to "unbuckle" the filament inside the tube.
To tune the retraction settings, you could consider using firmware retraction which allows you to change parameters "on the fly" during a print. Not all slicers support it though. Once you've found the best setting (for that filament and print speed) then you can either continue to use firmware retraction or revert to slicer retraction but use the same numbers as firmware retraction.
Well for a Z move like Simplify3D is trying to do, retract should be combined with the Z move, in the least.
However, I have tried doing an experiment as follows: 20mm radius single wall cylinder, layer insertion points all lined up, increase from 0 retraction to 2.5mm retraction (good max value for direct extruder) every 10mm Z. Guess what looks the best? 0 retraction. Not by much however. All other values of retraction look similarly bad.
I don't know if this is a new problem, or I just never noticed it before given the quality of 8 bit printing.
This is what the slicer is producing for 0 retraction:
G1 X5.367 Y-61.649 E0.0442
; layer 44, Z = 8.750
M105
G1 X5.371 Y-61.649 F9000
G1 Z8.750 F6000
G1 X6.299 Y-61.657 E0.0388 F1890I think this is what is should be producing:
G1 X5.367 Y-61.649 E0.0442
; layer 44, Z = 8.750
M105
G1 X6.299 Y-61.657 Z8.750 E0.0388 F1890 -
What you propose would result in the machine extruding a bead of polymer between the last point of the previous layer and first of the next. In other words a line with increasing z-component.
Are you using relative extruder moves? I think absolute is favoured to reduce the influence of rounding errors.
I found a setting on Slic3r that looked like it was intending to improve surface finish but added blobs on the hull of my benchy. I'll have a look for the name of the setting shortly.
-
@doctrucker I think you have that backwards. Relative extrusion is meant to reduce the accumulation of rounding errors.
@mhackney has an excellent write-up breaking it down.
http://www.sublimelayers.com/2017/10/to-extruder-relative-or-not-to-extrude.html -
Fair enough on what is recommended:
https://duet3d.dozuki.com/Wiki/Slicing_recommendations
...but there is more scope for accumulation of error with relative than absolute. I'd have to re-read a few times with more time to see what the firmware/slicer issue relative is trying to bodge.
Eg 4 moves to make a distance from point A to B Relative: all have +/-0.00005 error due to 3 decimal place extruder move command. Total error +/- 0.00020. Absolute: individual segments may have +/-0.00005 but total distance refers back to fixed location and so can't exceed +/-0.00005.
Edit: I'm risking taking this topic off topic here. I'll write up my thoughts on absolute vs relative and post a new thread at some point in order for someone to point out what I've missed!
-
@doctrucker said in blobs due to firmware stalls:
What you propose would result in the machine extruding a bead of polymer between the last point of the previous layer and first of the next. In other words a line with increasing z-component.
Well that's right. That's actually what happens anyway, because you can't have an instantaneous movement in the real world, even though that what the gcode is coding. So, blob. Ideally XYE momentum wouldn't stall at all for a layer change. Then there is no need to mess with extrusion.
Are you using relative extruder moves? I think absolute is favoured to reduce the influence of rounding errors.
I just switched to relative, but that didn't make any difference.
I have been playing with pressure advance. Seems the most effective parameters so far, at least on a 20mm cylinder. Using 0.095, but it seems somewhat dependant on at XYZ acceleration parameters. Working way better than coast settings in Simplify3D.
-
I don't think the gcode is commanding any instantaneous moves? I've commented on your two examples below. By skipping the two travels you'd under extrude. For the sake of this example I've assumed a 0.2mm layer thickness.
@r3cvr said in blobs due to firmware stalls:
This is what the slicer is producing for 0 retraction:
G1 X5.367 Y-61.649 E0.0442 ; Extrude to (5.367, -61.649) using 0.0442mm of filament.
; layer 44, Z = 8.750
M105
G1 X5.371 Y-61.649 F9000 ; Travel to (5.371 -61.649) Feed rate changing to 9000mm/min. Moving 0.004mm.
G1 Z8.750 F6000 ; Move to z = 8.750 with feed rate changing to 6000
G1 X6.299 Y-61.657 E0.0388 F1890 ; First extrusion of 0.928mm with feedrate changing to 1890 mm/min. Extruding 0.0388mm of filament.I think this is what is should be producing:
G1 X5.367 Y-61.649 E0.0442 ; Extrude to (5.367, -61.649, 8.550) using 0.0442mm of filament.
; layer 44, Z = 8.750
M105
G1 X6.299 Y-61.657 Z8.750 E0.0388 F1890 ; Extrude to (6.299, -61.657, 8.750) moving 0.953mm with feed rate changing to 1890 mm/min over move. Extruding 0.0388mm of filament.Edit: All moves would be limited by the firmware to the settings in your config.