Linking Retraction to Linear/Non Linear Extrusion Correction?
-
My understanding of linear/non linear extrusion is that a measure of it is to correct for the effect of the filament compressing or buckling under load between the extruder and hotend. Higher speeds = higher nozzle back pressure = higher filament load = higher compression.
The purpose of retraction is two part. Firstly to completely unload the filament and secondly to pull the melt back slightly.
With this in mind when using firmware retracts shouldn't we be specifying unload the filament + a specified extra amount? Perhaps this thinking has an effect on unretract too because as soon as you have advanced the filament the 'extra amount' there will be nozzle pressure.
I'm thinking where people have specified extrusion correction and use firmware retraction this could be sn interesting test.
-
I think I could set up a test to demonstrate need. Generic two tower retraction test piece build with retraction increasing from 0 to 3 (hot end specific) at a set low speed, then increase the speed a little then repeat the build with stepped speed increases until you hit max processing speed.
Edit: alas testing won't be until Monday!
-
In running a 3 way diamond hot end along side standard E3D V6 and a non-quickset RepRapPro hotend it would initially appear that larger melt zones reduce the need for linear/non linear extrusion corrections and therefore I'm not expecting people running larger melt zones to consider this as much of an issue.
-
@doctrucker No that's not what non linear extrusion us for. My understanding is that it is to compensate for extruder slippage if and when it might exist. Pressure advance is what you should use to compensate for the filament acting as a spring inside the Bowden tubes ( if you buy into that theory). The two can work against each other. If you use non linear extrusion, then you increase the rate of extrusion. This could increase the pressure so you then might need to use more pressure advance to compensate.
Edit. The reason why you might need non linear extrusion on a V6 but not on a Diamond may be due to better melt rate but also, if you use mixing then each extruder will run at a slower speed than a single extruder.
-
@deckingman My understanding of pressure advance is that it adjusts absolute extrusion by an amount relative to the rate of change in extrusion a set time ahead ahead.
The purpose of retraction is two fold. To decompress the loaded filament, and then to back the melt a little further to cut the fine hairs as much as possible.
The filament will compress (and buckle in the tubes) under load. Give or take some non-newtonian and or sheer thinning weirdness as extrusion rate increases back pressure does too. The increased load will increase the compression on the filament and therefore increase the unloaded length of filament that is between the extruder and hot end at any given time.
You are right to bring pressure advance into this. I am however uncomfortable with the increased infill / perimeter overlap that it requires. It's on my todo list to look at the various pressure advance calibration routines that are kicking about on these forums.
My route issue is not the difference between the diamond and v6/reprap hot end systems but issues on the latter that lead to blobbing after travels or layer layer changes that require adjusting additional retracts, which in turn then untroduce gaps elsewhere.
Edit: Give us a shout if you want a coffee at TCT again! We'll sync days.
-
@doctrucker Well pressure advance is to compensate for pressure - in fact pressure compensation would be a better term for it IMO. Non-linear extrusion is to compensate for extruder slippage which is different. But both have a sort of similar effect.
The actual mechanism behind why pressure builds up is largely irrelevant. I know that David proposes the theory that it is due to the filament acting as a coil spring inside the Bowden tube and there may well be some truth in this, but I don't think it's the whole story. From the extensive testing that I have done, I think there is something else at work too. My theory is that if you heat something it will expand (well most things will). If that "something" is inside a sealed chamber, then it will have nowhere to expand into and so pressure will build up. If that chamber isn't sealed but has a small hole in it, then pressure can still build up if the hole is small enough and the expansion rate of the "something" is fast enough. I may be completely wrong but this theory does explain why a Diamond hot end with multiple melt chambers needs much higher pressure advance compensation than a single melt chamber hot end. In my case, I need to use 0.5 pressure advance even though the combined length of all 3 of my Bowden tubes is only around 300mm.
As I said before, the mechanism behind why pressure builds up is largely irrelevant. So what happens? Well it takes time for the pressure to build up. It's a gradual rise throughout a print move rather than a sudden pulse. Towards the end of a move, the print head starts to decelerate as indeed does the extruder. But because of the latent pressure that has built up during the move, the rate of flow of the filament being forced out the nozzle does not slow down at the same rate, despite the fact the extruder is slowing down. This results in over extrusion at the end of a move. From the test work I have done, with no retraction this pressure induced over extrusion persists well into the next move, whether that be a print or a non print move.
So pressure advance compensates by slowing down the extruder at the end of a move at a faster rate than the carriage. This is why I don't like the term "pressure advance" because in this situation it is actually retarding the extruder. At the beginning of a print move, the opposite happens. The print head accelerates quickly but because it takes time to melt the incoming filament, then the flow rate at the nozzle tip can't accelerate at the same rate so under extrusion happens. In this case, pressure advance does truly advance the pressure by accelerating the extruder at a faster rate than the print head.
The net result, once you get it right, is that the nozzle pressure will remain near constant. Because the nozzle pressure at the end of move is much reduced, so is the need to retract the filament so lower retraction is needed.
Non linear extrusion is somewhat different. It came about when someone extruded 100mm of filament without a hot end fitted, then did the same test with the hot end fitted. The actual measured amount of filament was lower in the second case and the only logical explanation is that there must have been some slippage of the extruder gripping the filament. I believe that this slippage was found to be proportional to extruder speed. So, my understanding is that non-linear extrusion will increase the extruder speed by an amount which itself is proportional to that speed. So in some respects, it would have a similar effect as pressure advance. That is to say, it would increase the extruder speed during the middle part of a print move in relation to the extruder speed at the start and end. BUT it will only increase the extruder speed. It won't reduce the extruder speed which is what is required to negate the effect of pressure at the end of a move.
So if you introduce non-linear extrusion to increase the extruder speed in the middle part of a move, then it may increase the need for pressure compensation at the start and end of that move.
I actually had a bit of a problem with non-linear extrusion when it was first introduced, mainly because I thought it was a bit of a gut reaction based on the findings of only 2 or 3 users. Given that an extruder move is maybe in the order of 5% of a carriage move (0.5mm nozzle and 0.3mm layer height) then a 100mm long extrude move would equate to an carriage move of about 5 metres so I didn't think the test method bore much relation to what really happens when we print. Despite that, I did try it on my printer but didn't find any difference between with and without hot end fitted. I suspect it may have been due to me using a 0.5mm nozzle and the other users were all using a 0.4mm nozzle so maybe there was less back pressure on the filament.
Anyway, I suggest you set non-linear extrusion by checking to see if there is a difference between measured filament extrusion at normal extruder flow rates and at normal extruder move length, with and without a hot end. Then once you have that set, check and adjust pressure advance. Then when you have set, check and adjust the retraction speed and amount.
The biggest thing that will affect all of this is the nozzle size. Next to that is the filament type and temperature - basically anything that affects the viscosity of the filament will have an impact.
P.S. Ref TCT show - it's a long way off but I plan to be there in one way or another, with or without my printer, so for sure we can grab a coffee.
-
Yes a long way off. Just had the invite to register so it was on my mind!
Plenty going on in the extrusion for sure. On the hotend side of the system there are three different 'springs' relating to the filament. Melt zone spring, filament coiling up, and finally filament compressing along its length.
I'm going to need to read through your message more carefully later and see about getting together a few estimates on the compressions etc.
I think my thoughts need sketches/scribblings to explain best!
-
@deckingman
I'm the guy that asked your help a bit earlier regarding my custom printer.
I have a 6 Input custom hotend design and when going up to higher feed rates with 6 inputs the pressure increases so drastic that indeed it gets more difficult to push the filament through, causing some degree of slip. When the design was adjusted for direct extrution (4cm bowden tubes) with a 20:1 ratio it seems I could get more pressure and thus more slip than with the bowden which would make me believe that buckling in a bowden tube is a real thing. Maybe your short tubes are still to long and have too much buckle compared to direct drive and thus the extruder doesn't slip as easy?
So I don't think non linear extrution is misplaced. But it is only needed in specific cases.thinking back to the video you made regarding nozzle pressure wasn't the amount of pressure advance needed at high speeds greater than at low speeds? ( I believe 0.5 was good on the 300mm/s and 0.2 had better result on the lower speeds?)
At the lower speeds having a travel move would still have filament oozing out while on the higher speeds this was almost rectified without the use of retraction with a 0.5 pressure advance.
That would lead me to believe that we also need a non linear pressure advance to be effective on all feed rates. I would think this graph would show the same trend as the non linear one?
That would effectively rule out any need for retraction as well since both your feed rate and pressure advance are calibrated over a range of speeds. Laying down the layers as requested by the gcode?
Just a thought
Jeff
-
Linking various variables together with varying factors is what we've been doing so far. I think pressure management is what we need. The printer needs to know head chamber size, nozzle size, viscosity/ooze rate and then out of this it can compute that at low speeds it doesn't need to feed any filament, since the ooze might be enough to print. When moving from low speed to high speed it must fill the chamber to build pressure again.
This is totally simplified, but you get the idea. Maybe we can already do this with current tools, but at this point in complexity I'd say move to a whole new type of printer like SLA...
-
Yup, all of what jas been said so far makes sense and we are essentially patching a open loop system to close the performance gap as far as possible to that of the closed loop.
The thing that occurred to me was that the linear travel of the filament is the only thing we can really measure well and it will get better with the magnetic filament sensor. 'slip' - be it a little missleading - is more than likely directly (not necessarily linearly) related to back pressure, which is key to the variable bit to retraction and pressure advance.
-
@twigz said in Linking Retraction to Linear/Non Linear Extrusion Correction?:
thinking back to the video you made regarding nozzle pressure wasn't the amount of pressure advance needed at high speeds greater than at low speeds? ( I believe 0.5 was good on the 300mm/s and 0.2 had better result on the lower speeds?)
At the lower speeds having a travel move would still have filament oozing out while on the higher speeds this was almost rectified without the use of retraction with a 0.5 pressure advance.
That would lead me to believe that we also need a non linear pressure advance to be effective on all feed rates. I would think this graph would show the same trend as the non linear one?
That would effectively rule out any need for retraction as well since both your feed rate and pressure advance are calibrated over a range of speeds. Laying down the layers as requested by the gcode?
Just a thought
Jeff
No that wasn't the case. I once thought it was - i.e. that different values of pressure advance were needed at different speeds but testing showed that once a value had been found that worked at high speed, then that same value worked well at lower speed.
I also suspected at one time that asymmetric pressure advance would be needed - i.e. that pressure would need to be relieved more at the end of a move than it would need to be increased at the start of a move. Again, my suspicions were proven to be unfounded by the results of the tests I did.
So based on the work that I have done, there isn't a case for either non linear or assymetric pressure advance. Of course, although I have done extensive testing that is solely based on my particular hot end and printer configuration.
In a nutshell, I have no evidence that I could present which would stand up to any sort of scrutiny, that would show there is a need for non-linear pressure advance. If David implemented it in firmware, I woudn't use it because I have no need for it.
-
@edgars-batna said in Linking Retraction to Linear/Non Linear Extrusion Correction?:
Linking various variables together with varying factors is what we've been doing so far. I think pressure management is what we need. The printer needs to know head chamber size, nozzle size, viscosity/ooze rate and then out of this it can compute that at low speeds it doesn't need to feed any filament, since the ooze might be enough to print. When moving from low speed to high speed it must fill the chamber to build pressure again.
This is totally simplified, but you get the idea. Maybe we can already do this with current tools, but at this point in complexity I'd say move to a whole new type of printer like SLA...
Rather than complicated algorithms fed with numerous parameters, I think a simpler approach would be a mechanical solution. A variable volume melt chamber would do the job. Something akin to an expansion chamber with a diaphragm and spring. So as pressure builds up on one side of the diaphragm, it deflects against the spring. That way, it ought to be possible to maintain the pressure close to the nozzle at a more or less constant value. Leave that with me..........................
-
I wasn't completely sure on how the k factor was applied so I searched and found this:
actual_extrusion_speed = requested_extrusion_speed + (K * current_extruder_acceleration)
If you apply non linear extrution, the acceleration would ramp up slowly to accommodate for the multiplier and stay at the requested feed rate when hitting the maximum speed. (requested x multiplier from non linear extrution). If setting up the pressure advance before the non linear multiplier it would mean the result of the formula above is increasing with the multiplier and the advance would turn out to high.
Therefor I would think the non linear extrution needs to be set up first. To create an accurate extrution at all nozzle pressures.
Then set up the pressure advance to control the nozzle pressure when starting and stopping.
In theory you would then only need a tiny bit of retraction to pull the filament out of the melt chamber to stop oozing.Any thoughts?
Jeff
-
Linear and non linear extrusion essentially correct for the same thing. A difference between the actual length of filament and that was requested, and that difference is linked to the speed by either a simple linear correction or with a non-linear component. What it required for a specific machine will be related to hotend design, material, nozzle diameter, and temperature setting.
I'd definitely look to set that up before pressure advance but after finding a temperature setting.
-
@twigz said in Linking Retraction to Linear/Non Linear Extrusion Correction?:
Therefor I would think the non linear extrution needs to be set up first. To create an accurate extrution at all nozzle pressures.
Then set up the pressure advance to control the nozzle pressure when starting and stopping.
In theory you would then only need a tiny bit of retraction to pull the filament out of the melt chamber to stop oozing.Any thoughts?
Jeff
That's pretty well what I said towards the end of my post above. Quote from that post....:
"Anyway, I suggest you set non-linear extrusion by checking to see if there is a difference between measured filament extrusion at normal extruder flow rates and at normal extruder move length, with and without a hot end. Then once you have that set, check and adjust pressure advance. Then when you have set, check and adjust the retraction speed and amount."
-
I landed here after trying pressure advance calibration , successfully printed the test but saw no change at all due to changing pressure advance values in the print , a comment made by Rcarlyle ( https://forum.duet3d.com/topic/6698/pressure-advance-calibration/44# ) led me here trying to work out why it didn't work.
Reading posts both here and elsewhere and doing some other searchs , I did not see any conversations on why filament feed rate is not PID controlled . Any reason why ( besides not looking hard enough :)) ? It looks to me like the control strategy for feeding filament is just proportional ( linear ) with the change in speeds while printing I would have thought that filament speed would increase to overcome the offset error to just proportional control from what ever the ideal speed is ?
For me I visualize the nozzle traveling over a smooth surface with a constant gap and that gap being filled by plastic and acting as a valve to plastic behind it , the result is it gets pushed wide at slow speeds as new plastic emerges and stretched out thinner at high speed with the new plastic emerging keeping up, the speed of movement is like a valve opening , fast wide open valve , slow almost closed .
-
The filament is not PID controlled because on the majority of systems there is no feedback.
The laser monitor appeared to be a bit fussy on filament type to be usable for that. I had hoped that the magnetic based filament monitor would be able to tune the Extruder drive and would potentially be able to cope with the effect of the different back pressures that you allude to caused by different layer thicknesses, track widths, temperatures, and whether the deposited material is bridge, low density infill, etc. In truth there is too many variables to account for to do a full dead reconing correction style calibration. Decent filament monitoring is essential, and I suspect what will eventually drive me needing to unpgrade my d0.6 / 0.8.5 systems to Duet 2.
Edit: The magnetic filament monitor may or may not do that. It's only just been released and I've been too absorbed in machine builds to check it out.
Edit 2: link to blurb follows. On a flash read it doesn't appear to be linked to extrusion correction. Hopefully that will change soon if possible.
-
Do we need feedback ?
Filament demand isn't varied due to another downstream process or disturbance like cooling ( changing ambient air temp) with the hotend or heatbed. The printer just pushes it out linearly ( Proportionally) based on print speed which we know and control before hand , that is a type of feedforward system . The gain of the system as a whole and just proportional control would be acceptable for a usual speed you print at . Once you go out side that ideal speed you get filament feed speed offset errors , that is where the I and D come in to get it back to the ideal extrusion speed to get correct width at a particular speed.
Maybe I should have asked straight off . Is Linear extrusion correction Feed forward?
Are the A and B variables the I and D from PID control?From that Extrusion Advance test I get at 20mm/sec 1.4mm and at 100 .5mm line widths using a .3mm nozzle I don't think a small change in filament diameter will have much effect on those widths as much as the change in speed.
-
@digid thought you needed feedback for a PID loop yes, or you'd have no idea of how far from target you are.
-
"A proportional–integral–derivative controller (PID controller. or three-term controller) is a control loop mechanism employing feedback that is widely used in industrial control systems"