Enhancing pressure advance
-
In regards to the topic of this thread: I'm sad to report that dramatically increased values of PA don't cure the (what seems to be) over extrusion I'm experiencing when the print speed goes from 100 mm/s to 6 mm/s.
Dramatically increased values of PA DO, however, seem required/beneficial for high resolution prints in general. This seems like it could make sense since the extruder acceleration values will be so low at high resolution that the constant needs to be higher to get similar results.
I'll continue pushing the PA value up to see if I can see any difference in this behaviour. Imagine big ugly overextruded lines where nice ones should be. On tiny top details.
-
@bot For info, with my machine I've always needed about 0.4 - 0.5 PA. I know it's a completely different beast because I run multiple extruders and mixing hot end, and I don't do the highly detailed prints that you do. But I mention it purely because I think that the low values mentioned in the wiki can be misleading because they imply that much lower values are needed.
-
@bot said in Enhancing pressure advance:
@Edgars-Batna I don't see any altered settings in your gcode files.
Explain to me what settings you have the problems at and I'll explain to you why your settings don't make sense.
The problem reproduces itself sporadically on any settings. The Duet just needs to be at enough speed and suddenly encounter enough tiny segments to slow down, except it doesn't and the printer sounds like a percussion drill. Certain settings provoke the error more than others, but they are not the root cause.
Right now I'm printing at
M566 X1200 Y1200 E400:400
M201 X1000 Y1000 E900:900
M572 D0:1 S0.75If I go over E400 then Duet destroys the print. The issue still sporadically occurs, but it's not causing major step loss at E400. Now, please, flood me with new information, I mean it honestly.
-
@Edgars-Batna Just a random(ish) thought but that combination of lowish extruder acceleration and especially that low "jerk" might be limiting the pressure advance which is why you need such a high value. What happens if you double the extruder jerk and acceleration but halve the PA? But then IRC, don't have your extruders in push-pull configuration? In which case, I'm wondering if they might get a bit out of sync when PA is applied so end up fighting each other? Can you run with just one extruder to test? Just another random thought.....
-
@deckingman said in Enhancing pressure advance:
I think that the low values mentioned in the wiki can be misleading because they imply that much lower values are needed.
The wiki no longer has just the low values. It gives a much wider range now and encourages testing up to 2.0 to find the right value.
-
@Edgars-Batna It's always bothered me that we've never been able to solve your issues to satisfaction. If you want to take another crack at it start another thread and we can get some fresh eyes on it.
-
@Phaedrux said in Enhancing pressure advance:
@deckingman said in Enhancing pressure advance:
I think that the low values mentioned in the wiki can be misleading because they imply that much lower values are needed.
The wiki no longer has just the low values. It gives a much wider range now and encourages testing up to 2.0 to find the right value.
-
@deckingman I think the E acceleration values don't have a direct impact on PA at all. It is only the E jerk value that affects PA. Typically, even with extremely low values of E acceleration, the X/Y acceleration limits the motion of the coordinated movement, and hence limits the acceleration of the extruder. However, when PA asks the extruder to jump to a position, it needs to use jerk to do this (and only jerk -- it has to be instant). So, if you need X amount of adjustment of the E axis per a given value of E acceleration (which is actually usually dependent on XY acceleration), the firmware will simply lower the XY (E) acceleration so that the move only requires an amount of adjustment equal to the E jerk value.
For this reason, I think it's only necessary to adjust the E jerk value when playing with PA.
For @Edgars-Batna, I would suggest trying a much lower E jerk value.
-
I think pressure advance needs an additional parameter to control advance/adjustment based on differences in requested extrusion speed between print moves, and not just instantaneous extruder acceleration during a move.
See this photo:
The skirt is printed at 50 mm/s, and the perimeter is printed at 6 mm/s. Notice the excess extrusion at the beginning of the perimeter when coming directly from the 50 mm/s skirt.
If supremely excessive amounts of pressure advance are used, the problem is not quite as pronounced, but still there. However, then every other place where PA is applied, there is under or overextrusion (not seen in this pic).
I would like to keep the current behaviour of pressure advance for in-move adjustment, and also add an additional function, that can be set with a different constant, to adjust the extruder position in between print moves. I think a simple one-time retraction (without the unretract move) will be enough to relieve this pressure.
I'm not able to notice any of this behaviour in the opposite sense: when moving from 6 mm/s to 50 mm/s moves, there is no major loss of extrusion at the beginning of the fast move. I have some theories as to why that is, but they're probably wrong so I will keep them to myself.[Edit: Ignore that statement. I do think there may be some mild underextrusion when moving from 6 to 50 mm/s, but it's perhaps just not as noticeable because it's buried in the solid infill or somewhere where I'm not focusing my attention. It's possible my proposed addition to PA could also be useful when going from 6 to 50 mm/s.]
Any thoughts on this matter? I find to get the best perimeters, slowing them down dramatically is the best option right now (when we have segmented curves and trapezoidal acceleration). But, to get decent print times, I want to print everything else at maximum speed.
Help!
[Edit: basically, the proposed new added function of PA would be:
adjusted_extruder_position = current_extruder_position + new_constant * (second_move_speed - first_move_speed)
This could be applied immediately before starting the second move. ]
[Another edit: also, to clarify, I don't mean that this should be applied to two moves that just happen to have different X/Y speeds, I mean to apply this only to separate G1 commands that have a change in feedrate.]
-
@bot I don't do the highly detailed prints that you do so I never use such low speeds but a semi-random thought. Might it be that the amount of PA that you are using is not quite sufficient? What I mean by that is that if PA was on the low side, you might not notice too much difference between high speed moves because of the carriage speed. But if there was still some residual pressure at the end of a high speed move this would carry over to the next move which might show up if that move was at slow speed. If you've already tried higher values of PA, then just ignore this post.
-
@deckingman I did try very high values, which were obviously too much. The corners of my print were essentially gone, while the straight acceleration sections were over extruded. At that point, yes, I think most of the pressure was relieved, but the PA was so detrimental to the rest of the print it was not useful.
The perimeter is below the jerk speed, so PA doesn't do anything while printing the perimeter except for during the first tiny spec of acceleration from 0 to perimeter speed. I can use jerk policy 1 to control that but for now I'm aiming to relieve pressure between G1 commands of differing feedrates.
If PA can't be adjusted to act like I suggested, It's possible I could inject some kind of purge move before certain types of moves, but that will waste time and capture more moves than necessary.
-
@bot Yes, I wasn't suggesting anything extreme - just a slightly higher PA than you are using. Thinking about it some more, at the low speed of 6mm/sec there may not be any pressure build up so no compensation required (which is what you are suggesting happens anyway). Therefore, the pressure effect that you are seeing can only be residual pressure from the previous 50mm/sec move, which isn't quite being compensated for. I can't think of any reason why the pressure effect of the previous high speed move would be any different if the next move is a slow speed one or a high speed one. Just that with a high speed move, the carriage accelerates faster so the over extrusion at the start of the next move isn't as noticeable as it is when the next move is a slow speed one.
But we don't really know what happens with pressure inside a hot end so any theories can only be speculative. Do you notice any difference in temperature at the transition between the high speed infill and the slow speed perimeter? Just wondering if the heater is using a higher value PWM to maintain the temperature for the flow rate require for 50mm/sec which is then too high for the flow rate at 6mm/sec, so there is a "heat soak" effect which changes the pressure before the PID algorithm re-adjusts the PWM value and brings the temperature back down. In which case, that would explain why there is a difference in pressure if a high speed move is followed by a slow speed move as opposed to another high speed move. On the other hand, this could just be the ramblings or a deranged old man.....
-
@bot said in Enhancing pressure advance:
The perimeter is below the jerk speed, so PA doesn't do anything while printing the perimeter except for during the first tiny spec of acceleration from 0 to perimeter speed. I can use jerk policy 1 to control that but for now I'm aiming to relieve pressure between G1 commands of differing feedrates.
It could well be ooze. I can imagine filament going slightly up the melt chamber with enough pressure, since it's slightly wider than filament.
Also, maybe the problem solves itself with what dc42 suggested...
Higher feedrate, higher PA. It would be interesting to conduct the test he suggested in a controlled manner which we can validate on multiple printers. My gut feeling is that he's right and that the PA tuning as we know it is just half the story. -
@Edgars-Batna said in Enhancing pressure advance:
Also, maybe the problem solves itself with what dc42 suggested... Higher feedrate, higher PA
Actually, I think it's more likely to need reducing PA as the speed increases.
-
@dc42 said in Enhancing pressure advance:
@Edgars-Batna said in Enhancing pressure advance:
Also, maybe the problem solves itself with what dc42 suggested... Higher feedrate, higher PA
Actually, I think it's more likely to need reducing PA as the speed increases.
Fixed. We shouldn't assume before testing tho.
-
Back in January 2018 I attempted to evaluate extruder pressure. At that time, there was an issue with pressure advance and multiple extruders causing (seeming random) jerky carriage movement when printing curves which meant that I couldn't use PA for actual printing. But I did manage to evaluate it by doing long (300mm), straight moves. I found that the same pressure advance setting worked well for all speeds between 40 and 300 mm/sec. It also seemed that there was a linear relationship between speed and pressure but I only tested within that range of 40 to 300 mm/sec print speed. The tests were all done using a Diamond hot end with multiple extruders feeding a single nozzle via multiple melt chambers so it might/or might not be relevant to a single extruder feeding through a single melt chamber.
Most people ignored that piece of work at the time and have continued to ignore it every since, but here is a link describing the methodology and results if anyone is interested. https://somei3deas.wordpress.com/2018/01/15/an-attempt-to-investigate-pressure-in-the-extrusion-system-with-a-diamond-hot-end/
-
@deckingman I think that the pressure required to extrude at 50 mm/s is higher than the pressure required to extrude at 6 mm/s. Even though PA is adjusting pressure at the end of the 50 mm/s move, it's not adjusting it down to the pressure required to print 6 mm/s, it's adjusting it to the pressure required to print at 50 mm/s.
So like, we need pressure advance advance! Something to correct when going in between two pressures.
Now, I know you don't like speculation about pressure, but for a given orifice, the only way to increase volumetric flow is to increase pressure (riight?) so we KNOW that the ideal pressure of the 6 mm/s move is lower than the ideal pressure of the 50 mm/s move, whatever that pressure may be.
@Edgars-Batna I agree that part of the pressure fluctuation that we're trying to eradicate is caused by the filament "back-flowing" up out of the melt chamber towards the extruder gear. This is obvious, because when you pull out the filament it has the characteristic plug shape (yes, I'm using an e3d v6). All the CAD data from e3d verifies what you said: the channel is wider than the filament. This was what I was referring to when I said:
I have some theories as to why that is, but they're probably wrong so I will keep them to myself.
It seems like the fact that the melt can flow back UP, the wrong way, could lead to an asymmetric pressure adjustment requirement. I'm not positive if this is true, and for the moment I want to assume that we are dealing with a symmetric problem.
@dc42 I think you could be right that less PA is needed at higher speeds. But, even with PA disabled completely, I get this over-extrusion when switching to a low feed rate. I mean this to say that the problem isn't entirely caused by PA being too high for the print speed.
In fact, with the print settings I'm using, there are only two speeds: 50 mm/s and 6 mm/s. Since the jerk speed (in these test cases) is higher than the commanded perimeter feedrate, PA is only being applied to the high speed moves and so a single value does capture the needed cases for this. If someone is using many different feedrates in the print, all being applicable to PA, then maybe a slower rate could be needed. I'm not sure.
But do you think the suggestion I made is possible? Do you think it is likely to help this situation? Could it hurt this situation, or others which I'm not thinking of?
One edge case which may need attention for my proposal would be moves that have no other print move after it. Does this new PA adjustment get applied? I guess not. I guess the new adjustment could be applied immediately BEFORE a new print line, if the print line before it had a different feedrate associated with it (inherited or commanded).
adjusted_extruder_position = current_extruder_position + new_constant * (second_move_speed - first_move_speed)
Also, of note, that this proposed addition to PA wouldn't need the adjustment to be made instantly, like with the current form of PA. We could choose a moment between moves to briefly pause, or do it during the travel move (even if it's microscopic).
I guess this would cause problems in the case that a single printed feature is chopped up into different feedrates, but is that a real use case? Usually, we would always have a chance to take a moment to apply adjustment between gcode lines of differing feedrates, no?
-
@bot said in Enhancing pressure advance:
@deckingman I think that the pressure required to extrude at 50 mm/s is higher than the pressure required to extrude at 6 mm/s. Even though PA is adjusting pressure at the end of the 50 mm/s move, it's not adjusting it down to the pressure required to print 6 mm/s, it's adjusting it to the pressure required to print at 50 mm/s.
I don't believe PA works like that. I believe that the amount of extruder advance and retard varies with print speed, so you will get a difference in compensation between 50 and 6 mm/sec.
Which is why I bought the test work that I did previously, to your attention. If you care to take a gander at it, you'll see that there appears to be a linear relationship between speed and pressure. Also, the same pressure advance setting worked equally well between those print speeds of 40 and 300 mm/sec. I believe that DC said that pressure advance assumes just such a linear relationship which explains why the same setting will work across a range of speeds.
What isn't known is whether that linear relationship of pressure vs speed which I saw between speeds of 40 and 300 mm/sec can be extrapolated down to speeds as low as 6mm/sec. Without testing, we can only speculate. I could test it but my printer is currently in bits. Besides, it seems that I'm wasting my time in any case as nobody takes much notice of my findings.
-
@deckingman said in Enhancing pressure advance:
What isn't known is whether that linear relationship of pressure vs speed which I saw between speeds of 40 and 300 mm/sec can be extrapolated down to speeds as low as 6mm/sec. Without testing, we can only speculate. I could test it but my printer is currently in bits. Besides, it seems that I'm wasting my time in any case as nobody takes much notice of my findings.
Unless I replace moving parts every day, the slack in push fittings destroys the linear relationship after a few high speed prints. I could obviously just keep replacing parts, but that's expensive. If I keep the worn parts then I can print for hundreds more hours, but there's tons of asymmetric slack so that PA is around 1.25 ish, plus at high speeds PA needs to get higher. We shouldn't go too narrow on this; it's not just one or the other thing at work, especially when mechanics of every printer are different.
-
@deckingman the only thing that PA depends on is extruder ACCELERATION. So, a faster move will have more PA only because it accelerates and decelerates more. Of course there is a differnece in compensation, but it doesn't compensate for that difference... get it?
50 mm/s requires pressure X
6 mm/s requires pressure Y
The delta between X and Y is never compensated for. A generalized retraction attempts to do so, but all retractions are the same so you either retract for the less-common case of X to Y or you retract for X to X or Y to Y.