-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Limit extruder feedrate for printing and retraction #5248
Comments
This has been asked of us before but I can't find the original back right now. We would prefer to implement this in a somewhat different way: Using inheritance formulas in the front-end. You would set the maximum flow rate as a setting in mm³/s, and the setting for the print speed would be a formula such as this:
And then the printing speed would be adjusted down if you increase the layer height. What I'm not really sure about yet though is how that would look if there are also other constraints to the print speed, such as accelerations in the outer wall causing ringing, steppers losing steps when going too fast, etc. |
Sounds great! Looking forward to it :) At first sight it doesn't look like it's going to cause ringing, you're essentially just adjusting the max print speed. I would only use it to insure, that I'm not printing faster than my extruder can handle. For now I'll write myself a parser |
Hi, any news on this? this really helpfull feature |
Not really, but it depends on the printer you're using. Realistically it's hard to get this sort of thing through for Ultimaker printers, since all of Ultimaker's profiles need to be re-tested then. For other printers we're dependent on people from the community that have those printers to test, but since they don't have a setting to test with it's not going to be easy for them. A bit of a circle of dependencies going on. |
may be just add setting for "extrusion speed" in the speed tab, or material tab? and user can calibrate it themself. it's like calibrate step/mm for extruder but trough hot nozzle, command "feed" 100mm and measure is it really go 100mm through extruder with hot nozzle or just 85mm. |
If the "extrusion speed" changes, would it change the line width or the printing speed? |
It should limit printing speed. Because if I want smaller line width i can set it. But if extruder can't provide needful amount of plastic on current printing speed with current line width and layer height then printer should slowdown. |
Hmm, I think the most major concern left then is that the printing speed settings won't work any more then. Either that, or the extrusion speed setting won't work if the printing speed settings are overridden by any profile. |
in my opinion "extrusion speed" should be in charge, by default it could be as lightspeed, but if user want to calibrate "melt plastic extrusion speed" then feedrate should be limited by it. For example i don't really know is my priter able melt "this plastic" through 0.8 nozzle with layer 0.4 at speed 100mm/sec. but if there will be an option "melt plastic extrusion speed" that i checked before (like 3mm/sec) then slicer limit feedrate speed to 92mm/sec, because slicer can calculate what really speed of "melt plastic extrusion speed" will be in that setup and i'm not :) |
You mean that there should be a "maximum extruder feed rate" setting, then, but one that does not limit the retraction speeds as well. |
yes. actually i don't know when CURA calculate actual speed of extruder feedrate, i think CURA do it only when it slicing. |
I would really like this feature too, a setting for the Maximum Volumetric Flow rate of the Extruder HotEnd combination. CNC Kitchen has a video showing how at higher volumetric flows the amount extruded drops off and can be somewhat compensated for with temperature increases. This could help with keeping those volumetric flowrate inconsistencies in check . |
That is a very needed feature for me too. With 0.8 and 1.0mm nozzles extruder becomes the only limit for print speed. Looks like this feed limit should naturally behave like Minimum Layer Time. It is a dynamic limitation as Layer Height and Line Width may be variable through the print. Units for this configuration aren't that important as mm³/s and mm/s are basically the same and cant change independently for a given filament width. |
Hey. I would really love to see that feature too. Not only for the larger nozzle diameters but also for filaments like TPU this is really useful. As far as my experiences with other slicers go I would assume an implementation liket this: For PLA afaik 12-15 mm³/s is a good starting point for a regular hotend. This should limit the maximum printing speed. Or not if you assume a 0.4 nozzle because your printer can probably not go that fast so your regular printing speed applies. It's basically a max function on your volumetric speed and your print speed settings. For a 0.8 nozzle and a 0.4 layer height it would automatically calculate the maximum speed and still respect your regular speed settings otherwise. For a volcano it's more in the 30 mm³/s department so I personally don't really need it however it does make a difference for common hotends. For TPU/Flex this makes adjusting settings also much easier. You could just set your max volumetric speed to something like 1.5 mm³/s and assuming a .2 layer height and a .44 line width your print speed would cap at 1.5/(0.2*0.44). Like this I can basically print speed constrained materials without messing with print speed settings. I know what to set manually but especially more inexperienced users who would try larger nozzles on a common hotend would benefit from not messing up the prints and clogging the hotend. And I just miss this setting since it seems like a calculation that could be possible. |
For an ender 3 with a 0.4mm nozzle it’s closer to 6 or 7 cubic mm/s ... 50 mm/s with 0.5mm nozzle 0.635 mm line width and 0.24 mm layer height clicking away ... dropped down to 45%. So much easier to limit it by volumetric rate. Then if I make a mistake (Going too fast) I don’t have to slow everything down. |
+1. This is the primary thing that stops me from using Cura as much as I'd like. |
any news about Volumetric speed limits? |
Sorry, no, we haven't worked on this yet. |
Some addon to the tread. The Volumetric speed aka mm3/s is critical on all FDM printers! If you hit that limit under extrusion is a fact. I had an issue with my bowden tube and made some tests and calculations (good page for the math and how to test http://projects.ttlexceeded.com/3dprinting_calibrating_volumetric_rate.html) My results with a stock Volcano head 0.8mm nozzle on stock Flsun Q5 gave me this: Filament: PrimaValue Black PLA (bad bowden tube) (changed to unbranded one laying around) 30mm/s is the max my setup can extrude in open air. That limit should never be passed. Adding a safety margin for back pressure when extruding will have to be applied but in my case that was needed when I printed at 0.10mm layer with a 0.8mm nozzle (yes it did print just fine at 1mm line width) To control extrusion with mm/s instead of mm2/s gives you a lot of errors you have to tweek. By using mm2/s we will reduce the needed tweaking to just for each filament to for constants: Temperature: C And we will get max printing speed in mm/s by doing the math After that calculation we can start doing all the nice printout tweaks |
+1 on this |
+1 ; Would be nice to have that feature! |
+1, I really miss this option |
+1 |
+1 however I would implement it as maximum volumetric flow rate since PrusaSlicer has it and its fantastic for working out what the extruder is capable to do with different filaments. |
+1 for mm/time unit setting (mm/s or mm/min). |
I have a Prusa i3 M3KS and ... changing out the nozzle from 0.4 to 0.8 ... broke Cura completely. I started a print and ... my Octoprint setup threw a M112 message. It took me a bit to understand what had happened, that Cura instructed the printer to send filament faster then the printer could safely extrude it. Thankfully, my printed detected this as a thermal runaway event and forced a reset. I don't really see from a user perspective how this is possible, since the MVS value is the known limit. My E3D v6 hotend can only handle 15mm^3 a second. Where do I put this value into Cura? I thought adjusting the nozzle size would ... change other settings (it didn't), but ... idk if it's worth me going in and figuring out all the speeds for all the parts of the print. That seems like work software should do. https://help.prusa3d.com/en/article/max-volumetric-speed_127176
I love Cura, but this missing, hurts. |
+1 |
Any chance you could put a PR in for that... or is it wildly incompatible with Arachne (I'm sure I misspelled that) engine? |
I’m not sure why you would comment on this thread if you’re to dangle a fix, plug your own fork , but not going to submit a “trivial” PR upstream. That’s a little rude IMO. Such behavior is only normal when the upstream project is abandoned or not accepting PRs. |
I mean, I get that you have your own fork which gives you a lot more freedom and I suspect there could be politics being in the big sandbox with everyone else, but, I really hope you reconsider this position. Having your own fork is great when you want to take things a new direction and have a different vision. Having your own fork is simpler. It's also great to put your changes in there if they are denied by the main branch because of fundamental differences on the end result. If you won't even submit a PR to begin with though, Those things don't really apply. I'm glad you made the change and that you feel it's rather trivial to implement Please consider helping everyone at large who isn't using a spinoff. |
Or that doesn't have the deep familiarity with Cura or the build system... |
Oh well, he deleted his comments. Guess he took his toys and went home, but at least now we know it's possible and "trivial"; hopefully someone from the Cura team or who has a good understanding of the code can implement that so the rest of us can use this feature! |
So, I was just browsing his relevant changes, which I found buried in his branch here (he did not link to them easily for some reason): smartavionics@81a6fdd?diff=unified While I don't understand the Cura codebase at all.. it seems like based on the changes this is a slicer front-end setting in config files to somehow trigger the use of a CuraEngine feature that's buried... but I can't find any reference to it in the mainline CuraEngine code.. so i'm going to go hunting in his CuraEngine Fork for them.. |
If someone wanted to pull this in, it would seem you'd need to pull in his additions to the CuraEngine project as well, which I located here: |
@psiberfunk are those two changes (engine + cura) the only ones needed? Why don't you try and submit the PR? |
Submitted a couple of PRs for this (one for Cura #14452 , one for CuraEngine Ultimaker/CuraEngine#1814 ) that implement this, copying the code used for 4.20 above smartavionics@81a6fdd?diff=unified This works-on-my-machine(tm) (ie, keeps flow rate at or below the limit set) but it does seem simple enough so can't foresee any problems... |
@mjc-506 Anyways, I've created a PR on your repo with all necessary changes that made compilation possible on-my-machine⟨™⟩. |
Thanks @mjc-506 and @mashuptwice for your work on this! I feel like this is one of the main features missing compared.to PS and SS (besides common-sense filament management 😛) |
Did you want to linkback your pull here so we could follow the progress on this one? It might make it easier to keep track of. I just checked back in on the thread and thought it could be helpful. |
This one sat for awhile and I just noticed that Ultimaker/CuraEngine#1828 pull request was closed. It looks like Mashuptwice deleted their github account and the pull died with it. Does that mean we're back to square one on this very important request? |
(1814 meaning this PR for those confused: Ultimaker/CuraEngine#1814 ) |
D'oh, sorry, getting confused where I am... :-) |
+1, Cura getting boring. |
Would also like to be able to set flow rate in Cura. Great improvements have been made already! This one is noticeably missing still however. |
+1. I can't beliele, there is no max volumetric flow rate |
Please for the love of everything good add this to the slicer. It would be an immensely powerful feature that with a current model I am looking at would be able to cut my print time down to 1/3 if I was able to maximize the flow rate across it. The printer speed or flow rate isn't the limiting factor at all right, it's just the lack of this feature in the slicer to automate things. I appreciate your work guys! |
I cannot believe that Cura is STILL the only slicer left that does not have this very basic setting like all modern slicers. The fact that I'm still getting notifications from this post this many years later is WILD. This is a 5 year old req! And it's a bare minimum requirement necessary on any modern high-speed printer since that timeframe. |
Looking at this it would appear that the ability to make these adjustments has been present for a long time. Search and Replace could be used as @MarkMan0 first indicated. Regular Expressions (admittedly a PITA) make it possible. (These will work whether you use Relative Extrusion or Absolute Extrusion) That would result in something like this: With Firmware Retraction enabled it's slightly different: That would result in this: I have scribbled up this post processor which does the same thing. It does allow the user to input the Max Volumetric Flow and then does the simple math in the background. |
Application Version
3.6.0
Platform
Windows 10
Printer
With Marlin firmware
So I'd like to have a feature to limit the maximum speed of the extruder, while printing.
I've tried doing this by chaging the limits in firmware, but it made retraction slow too, obviously.
So what I imagine is a new setting in the speed tab, like retraction speed
Extruder max. speed [mm/s] - lets say 3mm/s. Thats 180 mm/min
And then in the gcode it would be like:
.....
M203 E180 ; set extruder speed for printing
; printing now
G1
G1
G1
...
;Now retract, reset feedrate
M203 E...
G1 ;retract
G0 ;travel
G0
G1 ; un-retract
M203 E180 ; reset feedrate
Why I think this is good?
We can easily measure the max. feedrate our printer can handle with certain filaments. For me it's 200mm/min. This value doesn't change for different layer heights, so no need to play with temperature/speed settings when increasing layer height.
The max print speed would be limited in firmware.
Edit:
I'm a hobby programmer. The way I would go implementing this, is:
stick an M203 at the beginning
before every retraction set M203
after every retraction, set M203
The text was updated successfully, but these errors were encountered: