Feature request - Change flow rate during printing

It would be nice to change the flow rate during printing. When you use a random type of filament, with no exact parameters set, you could tweak the flow rate during the first layer on-the-fly.

This enables you to quickly toss in an unbranded spool of filament without finding out the exact flow rate parameters first. Speed and temperature can already be changed during print, flow rate adjustment would be a welcome addition to that.

5 Likes

I don’t think that would be possible. Flow rate calculations are done in the slicer. While printing the flow rate changes all the time and is never constant. Since that information is not available after the model has been sliced the only way would be to boost the speed of the motors by some percentage. This would totally mess up retractions and pressure advance. Maybe more.

should be possible as all other decent printer ( have a Duet RRF Voron) can do this…changing speed by %…change flow rate and so on.
But the Autocalculation of the X1C isnt that bad and otherwise i dial in new filaments that i use often with the orca slicer calibrations, so i never wanted to change flow mid print

Flow rate is set in the slicer based on speed, line width and line height. It is never set directly.
The max volumetric flow rate in the filament profile is used to limit speed to make sure there is no under-extrusion.

If you want to tweak for better prints then use Orca Slicer and run the calibration tests. You can also download models for calibration that you can use with Bambu Studio.

1 Like

This has still some side effects since all the printers (including voron) can do is apply a scale factor to motor speeds. The printers never know what they are actually printing, nor that the extruder actually lays plastic down. The extruder is just another stepper, which is turned based on a list of instructions. When one command is executed, it mostly does not care about what came before and what comes next, apart from maybe a few lines. It does not even know how wide the lines are that it’s supposed to print. Changing extrusion speed without x/y movement speed messes up all calculations that the slicer does and your model wil simply turn out worse.

I would love to see this, as well as the ability to change temps/fan settings and have them persist as well. It would help go a long way to dialing in prints on the fly, being able to change fan speeds and temps for different materials as they print rather than needing to cancel the entire job and start over.

Fans and temp can be changed on the fly.

you are right with the temps…bur afaik the fan speeds can change next layer or next overhang and your manual input is gone

1 Like

Sovol SV06+ plus Klipper offers a change of flow rate whilst printing

That is absolutely correct, because fan speeds are changed via gcode in the sliced file.
And they are changed very often, so you would have to babysit the printer.
Changes may occur for example when one layer is finished but the minimum layer time is still not reached. Or when the slicer has settings set for part cooling at a specific layer height or even gradual change. Or when an overhang is printed. Or when a travel move is performed (to reduce stringing). And on many other occasions.

These could make it impossible to keep up.

Same goes for nozzle temperatures.

It may have some approximation, but it would still be physically impossible to do it perfectly, without any negative side effects, because Klipper does not slice the file either (or even have the original model to work with it). Therefore it can’t know what to do to increase flow rate without oversizing the print or negatively affect tolerances.

Hmm. You must new to FDM 3D printing? :-)_

Actually, almost ALL printers except BambuLabs already allow this. Marlin and ReRap firmware has had it since the very beginning. See M221. The popular OctoPrint user interface for example (and all others I know of except BambuLab) allow one to make this adjustment during printing.

Specifically, the M221 flow rate command can be sent to the printer during printing at any time. Most printers have an item on their control panel to allow this setting to be changed at any time during printing also.

The M221 flow rate factor is applied by the printer firmware to all positive extruding movements. That is, movements where both X/Y and E movement is commanded and extrusion is in the positive direction, thus exempting retract/detract/wipre-while-retracting etc movements. Actually, pretty simple.

Obviously, we cannot be sending M221’s but the user control interface could put this useful feature back. IMHO, that we even meed to request the feature be PUT BACK is disappointing.

imagine you’re 10 hours in to a 30 hour print and you notice the filament diameter has changed, causing over-extrusion. Do you abort the entire print, toss out the filament roll and start over? If you’re a current BambuLab user, then yes. What else can you do? EVERY OTHER DIY printer in existence though, you just reduce the flow rate a little and continue on.

There are other reason to make changes on the fly as well. The most obvious being to calibrate exotic filament without having to run entire prints to see the difference extrusion factor versus temperature makes.

3 Likes

No, I’m not new to 3D printing at all. In fact i am into it for many years now and as a software developer, I also know the firmware-functions on a deep level.

Yes it is possible to let the printers extrude more plastic, but that’s not actually the flowrate. This is only flow percentage and not flow rate. Changing flow percentage is easy, but that is usually not achieving good results, nor is it accurate. It is just changing speeds of the extruder in comparison to x/y movement.
But flow rate is much more than that: It needs to account for layer height as well, which is not exported into the gcode, nor is it read or interpreted by any firmware.
What other printers call flow rate change, is actually just changing the ratio between x/y movement against the extruders movement, this is not what flow rate really is. Flow rates can only be calculated by the slicer, because the needed information is missing outside of that. The firmware might try to estimate it, but this is not reliable, due to missing variables after exporting to gcode.

The firmware only reads gcode in the end and if they read something like a g1 x… y… e… command, it can add a multiplier to x, y and e, but that’s still not the flow rate, it doesn’t even know what feature of the model it’s currently printing, as it’s just following a set of instructions without asking questions.

Furthermore the flowrate is not constant over the course of a print, nor does the layer height need to be constant, so there is no way for the firmware to estimate layer height relieably and z hops mess up any estimations and therefore real flowrate calculations can not be done in the firmware.

Btw. M221 is not about exact flow rate. It is a percentage multiplicator to filament flow, not flow rate.

I’ve had this on other firmware, and it’s quite useful to be able to tweak flow rate on the fly based on observed print quality. It doesn’t recalculate the flow calculations, it just scales the flow rate up or down based on user controls, e.g. if you say you want the flow rate to be 1.05x the calculated rate, you dial it up by 5%. Works great, quite useful when dialing in new filament, much faster than re-printing with different settings repeatedly until you get a good print. And if you don’t want this feature, you just ignore it, and everything is the same as it is now.

What you refer to, is flow percentage. Flow rate is not a percentage and expresses the exact amount of extruded plastic in a given time (volume per second). Any firmware can set the flow percentage and affect flow rate directly with it, but no firmware can actually set the specific flow rate.
If you see a setting on a printer that says “flow rate” then what it actually means to say is just “flow” or “flow percentage”. If you look up the marlin gcode documentation for M221 it does not say “flow rate”.

This seems to be something that is mixed up a lot. It might even be that this thread actually meant flow instead of flow rate, by just referring to the wrong term.

And sure tweaking flow might be useful in rare occasions, but that’s mostly guesswork, mid-print. It might go so far that it fails the current print. To me it is quite logical, why I it is not possible to change on a Bambu Lab printer on the fly. I think filaments should be calibrated beforehands and not in the middle of the print, which would achieve better results anyway. Changing flow % would also mess up the results of the auto-caliration in the x1c, which is probably the main reason why it wasn’t put into the interface (although i’m sure the firmware supports it internally).

Right, what I clearly asked for was to be able to adjust the flow rate from the slicer up or down by a percentage on the fly in the printer (i.e. in the firmware). I’m not sure what you’re trying to confuse, it’s a pretty simple concept. It’s a pretty common feature that’s been in printers for over a decade (Makerbot, Ultimaker, etc.) and it’s quite useful for dialing in new filaments.

Well that wasn’t clear to me. Flow percentage and flow rate are two completely different things. It was only after further conversation where I noticed, the terms have been mixed up. Flow rate has a unit attached to it (mm³/s) and flow percentage does not.

I too would like to see this option. I find that I can eyeball a slight change I can make better for the rest of the print.

Why are you being so pedantic?

What people commonly refer to as “adjusting flow rate” is a multiplier on the calculated flow rate. Just like “jerk” on 3D printers isn’t actually jerk. It’s just the common terminology.

You are way over-complicating this in your head, and no adjusting the flow rate multiplier does not make quality worse. It’s very easy to look at a print and see if it is under or over extruding. Being able to add or remove 1% - 4% is very useful and essentially every printer besides Bambus can do so.

1 Like

This is a feature request and as a professional software developer i can tell you that precision is key, when it comes to explaining what you want, because unprecise or incorrect wording are the number one reason for software not being implemented as people expect it to be.

I’m not being pedantic because it is not a minor detail at all and caused me to completely misunderstand the initial request until much later.

Further, I don’t get why you bring up jerk here. Just because people do the same mistake there, doesn’t justify it and doesn’t mean it should be done here, either.

It’s not hard to care about correct wording when you ask people to do something. No one needs confusion.
Not to know better is one thing and it happens a lot, but in that case it better to accept when being corrected. In the end the purpose was not to offend or attack anybody. I was only to correct publicly available information.