How to use different print speeds with different tools?
-
I guess this is a question for people using tool changers.
I've just received a package of assorted filaments (grateful thanks to Luke Taylor of Polymaker) to try out with my 6 in 1 out multi-material hot end. Polymaker give recommended print speeds and I note that some such as Polyflex TPU-95 HF can be printed at 40-100mm/sec, while others such as PolyDissolve S1 have a recommended speed of 30-40mm/sec. My slicer doesn't have the capability of generating gcode files to use different speeds with different parts and by default, I tend to use 60-80mm/sec print speed (with appropriate adjustments depending on move type/layer number) and 350mm/sec travel speed for most things.
So the question is, how best to change the speed setting for other tools (filaments) when doing multi-material prints. The best I can think of is to set the maximum carriage speed for non-print moves using M203 in config.g, slice the part at (say 80mm/sec) and then use M220 in the various tpost macros to modify that speed as appropriate for each tool (filament). I seem to recall that a change was made such that M220 only affects print moves- not travel moves or did I dream that? It isn't reflected in the documentation so may I dreamt it. Ideally, I'd like to keep the travel move speed the same.
Is there a better way? The idea of using M220 seems a bit messy as I'd have to calculate the percentage speed modifier to use for each tpost.g to get to the print speed that I want, based on the speed that it was sliced. And if I sliced the file at a different speed, then I'd need to modify all those tpost files. It's a pity that we can't have different max speeds for print and travel like we can with accelerations, then I could simply change that value. But then again, bridges and small perimeters might need to be printed at proportionally lower/higher speeds than other moves so an overall speed modifier might be the way to go.
What do people with tool changers do in this situation? Have I overlooked the obvious?
-
@deckingman, the problem I see is that you are extruding from six tools at the same time. With Cura, most of the parameters are configured per particular extruder so it's easy to set different speeds. Maybe I misunderstand the question though because I see no reason to mix different materials (and therefore speed).
-
@jens55 said in How to use different print speeds with different tools?:
@deckingman, the problem I see is that you are extruding from six tools at the same time. With Cura, most of the parameters are configured per particular extruder so it's easy to set different speeds. Maybe I misunderstand the question though because I see no reason to mix different materials (and therefore speed).
Although the hot end can be used in mixing mode, as I have it configured for multi-material printing, each tool is dedicated to a single filament. So each tool will only ever use one filament at a time. The only thing that's slightly different is that each tool is configured to use all 6 extruders but the mixing ratio is such that only one extruder will move forward when printing. e.g.....
M563 P1 S"ABS" D0:1:2:3:4:5 H1:2 M567 P1 E0.00:1.00:0.00:0.00:0.00:0.00
So each individual tool acts just like a single extruder tool with the exception that firmware retraction will retract all 6 filaments, even though only one will be moving forward as the print progresses. Maybe at some time in the future I might experiment with combining different materials but that's another matter altogether.
So the issue really is that my version of Slic3R (Prusa edition) doesn't support different speeds for different tools (which are referred to as extruders). I can have different nozzle diameters, XY offsets etc, and retraction settings but not different speeds.
Scratch that - there is a way (but it's a PITA) . After loading a part, I can go to Object- settings- pick the extruder - the click a little "+" button , select speed, then select move type (e.g. external perimeter), then enter a value. But there isn't a way to save those settings that I can see. So it's doable in the slicer but a real pain to do as each time I slice a multi-part object, I'd have to enter speed values for every move type and for every part which makes up the object.
Methinks my idea of using of using M220 to change the speed modifier in tpost(n).g will be easier (unless someone comes up with a better idea).
-
@deckingman said in How to use different print speeds with different tools?:
Methinks my idea of using of using M220 to change the speed modifier in tpost(n).g will be easier (unless someone comes up with a better idea).
While I can see setting the speed in the macro's, wouldn't that get awfully complicated as well? You'd basically need a custom macro to replace the parameters from config.g for each material. Would there be additional complications with things such as wall speed, infill speed etc etc ? In Cura those are all specified in the slicer for each extruder but I am not sure how Prusa Slicer handles all those different speeds.
It might just be easier to try out Cura .....
-
Do you use the filaments functionality?
If you put a print speed factor in each filament config.g it might work
Something like slice at 100mm/sec
Then in each filament assign the speed as a percentage to achieve the desired print speed.
e.g M220 S40
Set all your other speeds such as infill, bridges etc as percentages in the slicer so they're relative to the base.
Call M703 in your tool change to load your settings.
I don't have a tool changing system but I change retraction etc this way.
With TPE I pretty much have to turn off PA and retraction. -
@deckingman one possible workaround with PrusaSlicer would be to use the max volumetric flow rate to limit things? You can apply that per filament, and can set which filament each object is printed with (I think?).
Definitely agree that the multi tool functionality isn't great in PS. I have the same issue when running tools with different nozzle diameters...
Edit: thinking about it more, you can add custom Gcode to each of the filaments in PS. Maybe you could add the M220 in there? Depends how much you like to put that stuff in the slicer vs in the Duet
-
@jens55 said in How to use different print speeds with different tools?:
@deckingman said in How to use different print speeds with different tools?:
Methinks my idea of using of using M220 to change the speed modifier in tpost(n).g will be easier (unless someone comes up with a better idea).
While I can see setting the speed in the macro's, wouldn't that get awfully complicated as well? You'd basically need a custom macro to replace the parameters from config.g for each material. Would there be additional complications with things such as wall speed, infill speed etc etc ?
No not really. Say I sliced the object using 80mm/sec, 75% for external perimeters and top and bottom layers, 40mm/sec small perimeters etc. Then for a filament which needed half of those speeds, all I'd need to do would be to use M220 and a value of 50% in tpost.g for that filament and it'll slow everything down. Of course, I'd need to use M220 in the other tpost files to restore the speed factor override.
-
@owend said in How to use different print speeds with different tools?:
Do you use the filaments functionality?
If you put a print speed factor in each filament config.g it might work
Something like slice at 100mm/sec
Then in each filament assign the speed as a percentage to achieve the desired print speed.
e.g M220 S40
Set all your other speeds such as infill, bridges etc as percentages in the slicer so they're relative to the base.
Call M703 in your tool change to load your settings.
I don't have a tool changing system but I change retraction etc this way.
With TPE I pretty much have to turn off PA and retraction.I'll look into that but if I'm going to use M703 in tpost, why not use M220 instead and cut out the middle man as it were? With 6 tools, each one will be pretty much dedicated to a particular filament type so I'm unlikely to be editing the tool change files once I get everything dialed in. But you are right, I'll likely end with different retraction and PA settings so the filaments feature might be a better way to handle it.
-
@deckingman said in How to use different print speeds with different tools?:
I'll look into that but if I'm going to use M703 in tpost, why not use M220 instead and cut out the middle man as it were?
My thinking was to try to avoid locking a filament to a tool.
Your slicer can pass the filament name at tool change.
You'd probably use filament_type[next_extruder] from memory
I use that to set a global variable so I can load a filament config without necessarily doing a filament change (as in all the moves) -
@owend I'm being thick here but looking at M703 its says quote .....
"After assigning a filament to a tool, this command may be used to run /filaments/<filament name>/config.g to set parameters like temperatures, extrusion factor, retract distance. If no filament is loaded, the code completes without a warning." .....
But I can't figure out how to assign a filament to a tool. Is it by using M701 "load filament". If so the I think I'm going to run foul of this.....quote from the wiki for M701
"This code may be used to load a material for the active tool, however be aware that this code will work only for tools that have exactly one extruder assigned"..........
I have a feeling that's why I've never used the filaments feature (because I have to assign all extruders to each tool and use the mixing ratio to limit the tool to use only one filament in order for firmware retraction to retract them all).
-
@deckingman
I wasn't aware of that limitation.
I'm not skilled enough in C++ to be sure, but looking at the code, I don't think calling M701 would do any harm in your case.
At worst I think it will say that it's not supported on this tool.
M702 & M701 are going to call the respective load.g and unload.g files in the filaments directory, but they need not contain anything.
But you'd have to do it before the use of each filament and it would definitely NOT if you were actually mixing.Seems like the filaments.csv file usage locks us into one filament per tool despite having the ability to use multiple extruders per tool.
I guess the thinking is that a mixing extruder is still one tool and wouldn't be mixing different filament types. -
@owend I'll have a play around and see what happens. There is chance that I might be able to configure retraction to work with just the active filament, rather than all 6. The diamond mixing hot end certainly needs all filaments to be retracted but this design of mine behaves very differently in some respects. But I'm still learning about it. If I can get retraction to work on just one filament, then I can configure each tool to only use one extruder, then the filaments feature should be viable.