Volumetric temp change
-
I am wondering if there would be an easy way to get the nozzle temp to change based on volumetric flow rate. I made this suggestion in the Prusa requests because the slicer seems like the most logical place to implement it but it got no response.
I print a lot of production TPU where speed is important and where you can gain a good bit of speed if you turn the temp up a bit but when it gets to low volumetric flow areas it overheats the filament.
To implement in the slicer I was imagining something basically like defining a low and a high. So say at 4mm3/s temp=210 and at 10mm3/s temp=250
Then ideally I was thinking something like a ten second advance and smoothing. So say the temp is the average for volumetric flow over 10 seconds and if the flow changes enough to warrant a temp change it triggers that change 10 seconds in advance so that the nozzle has some time to change temps.I'm not sure how far Duet looks ahead in the code or how much of this might be possible through the board but I am curious to know what might be possible. If it was possible for me to manually or in custom Gcode tell the firmware something like 4mm3/s temp=210 and at 10mm3/s temp=250. This would work for my production parts.
And or I would be curious if there would be something similar like the ability to activate a mode that read the gcode temp and then just added some kind of modifier like say a nominal flow rate of 6mm3/s and a +-15% temp change over +-15% volumetric flow change or something like that? -
@yoshimitsuspeed I think the problem with what you are suggesting is that the thermal mass of the nozzle and the heater block or heater assembly is to great to make fast change sin temperature possible. When switching between fast and slow extrusion, there would be several seconds during which the nozzle would be at the wrong temperature.
RRF does already support heater feedforward, so you may find that helps. See https://docs.duet3d.com/User_manual/Reference/Gcodes#m309-set-or-report-heater-feedforward.
-
@dc42
It has been so long since I ran normal heaters I don't remember how they compare but I run Maxiwatt cylindrical heaters and I am confident they change temp fast enough to make this work.
One thing to recognize is that there is a decent bit of give to most the parameters. The acceptable temp window is pretty big so moving to stay within that window gives a lot of range to float. But being able to move that window could allow faster printing with better low speed quality.
Also things take a bit of time to cause a problem. For example if I'm running TPU at 250 and it gets really slow it will print fine for 10 more seconds or more before it starts popping or bubbling. So if there is a spot that slowed down for less than 10 seconds it could just not do a temp change, or signal a temp change but would be fine if the temp didn't change much.
Similarly if it then went back to max volumetric flow rate and was at say 215 it would take a few seconds before it started under extruding. Even if it under extruded for a couple seconds it wouldn't be the end of the world. Especially since my external perimeters are at a slightly lower volumetric flow rate so any under extrusion would be momentary on internal paths.Doing a quick test changing temp from 200C to 210 my setup took about 5 seconds to get to 205 and 8-9 to get to 210. And then 210-200 about 8 seconds to get to 205 and 15 to get to 200. Filament going through it should cool and drop faster.
If we could add a 10 or even 5 second look ahead I think the temp could easily stay within an acceptable window over a wide range of speeds pretty much all the time. Any potential deviation unacceptably outside that window probably at most for a couple seconds and only in places with more extreme rapid volumetric changes which would likely be something like infill. -
@dc42
I am a little unclear on how the feed forward functions. It is designed to predict temp drop or rise when rapid flow changes happen but will ultimately aim for the target temp ultimately correct?
Or is it or could it be used to add an adjustment real time to heat more at higher flow rates and less at lower? -
@yoshimitsuspeed See this post for a description of how feedforward works https://forum.duet3d.com/post/191577
The link to the Gcode dictionary explains how to set it:Heat the nozzle and let the temperature stabilise. Then commence extrusion at a fast rate (as fast as the extruder can reasonable manage without skipping) and watch the temperature. If there is an initial drop, then increase the feedforward. What you are looking for is either the temperature remaining steady, or rising by a small amount followed by a drop below target of a similar amount. When extrusion stops the reverse will happen, i.e. with no feedforward the temperature will rise and then gradually return to target.
https://docs.duet3d.com/User_manual/Reference/Gcodes#m309-set-or-report-heater-feedforward
So no, it doesn't allow you to set a different temperature when printing slow or fast; it better maintains the current set temperature.
I'd think the best way to do what you want is to write a slicer post processing script to identify fast and slow printing, and change the temperature accordingly. You can even write it with look ahead to change temperature in advance; RRF is unlikely to be able to look far enough ahead to do this.
Ian
-
@droftarts I would love to do or be involved with something like that.
I am at the level of coding where I can oftentimes do what I want to do with instructions. I am a little more advanced when it comes to things like firmware code, gcode, Linux, and a couple other things but still not advanced. I feel like it would take more time than I feel like I could afford to spend trying to work that out completely on my own.
Do you know of any resources that might point me in the right direction and make it relatively easy for me to do?I have wondered the same thing about trying to code something straight into Prusa Slicer but again I am a little too unfamiliar with the territory to try to dig into it on my own. I feel like it would probably be pretty easy to do but I have yet to find any interest in doing it. I also feel like within Prusa most of the code is probably already there considering it already monitors and controls volumetric speed. It seems like you could probably almost steal something like the Dynamic overhang speed code and just change overlap to volumetric flow and the enterable parameters to desired change in temp. Or something like that.
But again I feel like I'd be getting in a little over my head on my own. I guess if I got bored I could at least get the PS or Super Slicer source code and start poking around. Hasn't made it that high up the priority list though. -
@yoshimitsuspeed, I think that what @droftarts suggested is to write a program that reads the gcode file (e,g, line by line), look for the movement commands and insert temperature setting commands at the right places. Logistically this is easier to do than modifying the the slicer or RRF, for example with a python script, or any other programming languages that you prefer.
If you go with this approach, I would suggest to first create a simple gcode file, and insert temperature commands manually with an editor. This will provide you insight and will act as a proof of concept.
As for extracting the flow rate from the gcode file, I believe that this is a simple function of the extruder speed, which you can find in the extruder gcode commands.
-
It's kind of mind boggling to me that people keep talking about trying to prove the concept.
Like am I really the only one who changes temp manually during printing to maximize performance? I mean not on a regular basis but in special situations.
Like if you have a big model that you want to print fast you can set it to print nice and hot and fast.
Then if there are a couple detail areas that are getting too hot you just turn the temp and if needed feed down in those areas.It works really well. It would just be nice to be able to automate it and if it was then it would add a lot of capability to printing. It's weird to me this concept seems so foreign or unheard of.
-
@yoshimitsuspeed, in my mind there is a difference between changing the temperature a few times during a print and changing hundreds or thousands times during the print. Temperature changes are slow in nature.
-
@yoshimitsuspeed if you build the firmware yourself, you could adapt the code that implements heater feedforward to adjust the target temperature as well as the heater power.
-
@yoshimitsuspeed I think a bigger problem than feed forward heating, is feed forward cooling. What I mean by that is, assuming you have a large print area that you want to print fast (and for which your hot end has a limited melt rate capability thus requiring elevated temperatures) and you then change to smaller detail that you have to print slower and cooler, then you have to rapidly cool the hot end which realistically would require a fan blowing cold air over the heater block. Even so, thermal inertia will always limit how fast you can switch between high and low filament temperatures, whether heating or cooling and regardless of how powerful the heating element.
-