A More Sophisticated Pressure Advance
-
I think another feature could be a feedrate/flow rate compensation where you would characterize a material at a baseline which would be very low (1mm^/s) then you find out where the feedrate and flow rate are no longer linearly related. After that you start to empirically develop an algorithm by bumping the feedrate multiplier up more to get the proper flow rate until the filament strips etc. Then these values are fed into a regerssion (maybe linear or higher order would require more empirical data points) so the firmware can calculate the proper extruder feedrate in addition to the baseline. For each material you would then feed the machine parameters that get plugged in to generate the regression.
The parameters would be something like:
max feedrate possible before the flowrate out of the nozzle no longer matches
maximum feedrate mechanically possible for that material
the additional flowrate multiplier to achieve proper flow at the max feedrateI do admit that some experimentation might show that this is not worth pursuing as you may end up just stripping filament more often, especially on long straight moves. I'm curious to get the developers opinions though.
-
What limitation are you trying to overcome with the current method?
It sounds like you're encountering filament stripping during fast moves, presumably caused by pressure advance – have you tried limiting the acceleration and/or max speed of your E axis?
-
@bot:
What limitation are you trying to overcome with the current method?
It sounds like you're encountering filament stripping during fast moves, presumably caused by pressure advance – have you tried limiting the acceleration and/or max speed of your E axis?
I'm not having stripping issues. The current method certainly makes an improvement as far as blobs and under extrusion in the middle of long runs goes but only to a point but it only goes so far. My machine is printing very reliably within the bounds that I have determined for the current method. I'm trying to overcome the barrier of maximum filament feed rate achievable while maintaining proper nozzle output for a given nozzle size.
Let's say you can mechanically feed 100mm of filament at 5mm/s without stripping it but when you try to print with (using a 0.4mm nozzle for the sake of illustration) the extruder running that fast you end up with under extrusion in the places where this filament feed rate is actually achieved. Right now, we can only print at flow rates which maintain a linear relationship between filament feedrate and nozzle output (plus a slight shift with M572). This method would allow the firmware to automatically change the filament feed rate so that the proper output is maintained when necessary.
I'm not sure if this non-linearity starts to occur because the machine is approaching a point where the filament is yielding and about to strip, again I can easily feed 100mm of filament at a feedrate beyond what I can print at with a given nozzle, therefore I think it is due to compression of the filament, and the viscoelastic effects of the materials. For direct drive systems this should allow for some higher peak flow rates which is considerable for large parts. For RDD and especially bowden the improvement should be greater as there are more places for hysteresis to occur. This is why Kisslicer recently implemented the VE Preload and calibration features but I think a FW solution is much more elegant and manageable.
-
I see. I suppose there is definitely room for improvement. Is the computational overhead, and coding time worth the (potentially minuscule) added benefit?
-
@bot:
I see. I suppose there is definitely room for improvement. Is the computational overhead, and coding time worth the (potentially minuscule) added benefit?
It would have to be tested, but I'm guessing this could potentially make a 20% improvement with my RDD. Right now I max out ABS at about 10mm3/s with a 0.4mm nozzle running at 270C on a Volcano before I start to get under extrusion but, I can manually command 5mm/s (12.4mm3/s) without worrying about stripping the filament. Not sure if I pushed the feedrate up so that the nozzle actually put out the corresponding 12mm3/s it would strip though. This could probably be tested by manually extruding and weighing the output. I'll investigate this more when I have an opportunity.
-
By RDD, I assume you mean an extruder driven by a long flexible cable?
What happens if you simply increase pressure advance now? The corners become too thin?
-
Yes.
Well, I've only ever gone up to about 0.15s but yes it seems that that is the case.
-
Perhaps allowing two values, one that defines how much pressure is "added," and one for how much pressure is "removed" from the E steps, would help.