Pressure advance causing underextrusion/motor madness



  • So I cleared the hotend out to make sure there was nothing blocking it, limited the max E speed to 8000 and tried a retraction tower. This is what I got from increasing the retraction distance from 0 to 10 mm (in 0.5 mm increments, feedrate 2000 mm/min).

    alt text

    The towers aren't all that round, which suggests that the extrusion amount is not consistent. There are parts where it's thinner, then the large blobs where it adds up. This is odd as every layer should be exactly the same, so if it's a situation of partial jamming as @deckingman suggests, I don't know what would cause it to unjam on those layers.

    @Phaedrux presumably this should in theory print fine with PA on?



  • @Dezdoghound Looks like you have some sort of problem with your extruder. Maybe the hobbed bolt slipping on the shaft. Or the drive gear slipping. Or the motor skipping steps. Or some other defect. That being the case, pressure advance isn't going to fix it.



  • @deckingman The thing is, here's exactly the same tower printed just afterwards with PA off, and it's fine (minus the stringing!)

    alt text



  • @Dezdoghound The stringing is caused by a lack of retraction - when the extruder goes into reverse and decelerates then accelerates fast (depending on your retraction settings). PA works in a similar fashion and will cause the extruder to accelerate faster at the start of a move and decelerate (and even run backwards) at the end of a move. So if there is a fundamental mechanical problem with the extruder, PA will exacerbate that problem.

    I'd start by checking all the grub screws on the extruder gears and making sure everything is tight on the shafts. Is it a genuine BMG or a clone?



  • Interestingly I also save some gripes with PA in my machine (Delta with flying extruder).

    I'm seeing people using 3k jerk on E but if I do that I get almost the same problems as the OP.

    • Genuine BMG (also tested with a TL clone)
    • Moons' 1.8deg Pancake (same behaviour with the 35mm stock motor that came with the machine)
    • 10cm Bowden @ 0.15 PA / 30cm Bowden @ 0.36 PA
    • retraction down to 0.75mm@45mms (zero stringing with the PA values mentioned above)
    • E3D Volcano, 0.4mm Nozzle

    I get good extrusion with 300 E jerk up to 120mms, okay-ish at 600 E jerk if I don't print above 60mms and massive underextrusion and blobbing at 3k E jerk no matter the speed (I get holes on the first layer at 15mms..).

    Extrusion looks fine when I turn PA off (yeah, I get over extrusion at layer changed and corners, but no underextrusion)

    I had a strange problem a while ago with PA where it stopped extruding completely (filament went back and forth, but not enough to actually extrude). Turns out: this happens with E Jerk 3k, XY Jerk 3k, 9k accel, > 140mms print speed and > 0.3PA, Retraction was at 2mm or so.. I gave up on finding the exact reason after burning through almost half a spool of filament and countless hours, but it went away as soon as I started to either: print slow (< 100mms) or turn XY and E jerk down to 300ish - or turn down acceleration to ridiculously low numbers (< 1k). In the end I think it boils down to cornering speed or E jerk (which also limits cornering speed wenn low enough).

    From what I understand is: shouldn't PA do less instead of more when cornering speed increases? I would understand it at high accel and low jerk, but 9k acc/3k jerk on XY at 100mms shouldn't end up in retracting more than extruding with PA on - should it?

    Is it somehow possible to keep PA from retracting at all or at least set a limit?

    I also don't understand how people can run 3k jerk on E with a BMG. Neither my original, nor my TL clone can handle more than around 1.5k without leaving gaps 😕

    RRF 3.01 RC15 (? latest, but it's been like this at least all of RC 3.01, didn't use PA when I was on 2.x).

    I'll post some pics tomorrow.

    @NexxCat you're the only one besides me that I know of that uses PA with a similar setup and similar values and also uses a rather low E jerk of 600. Is this due to the same reason I mentioned above?



  • @bberger said in Pressure advance causing underextrusion/motor madness:

    I'm seeing people using 3k jerk on E but if I do that I get almost the same problems as the OP.

    I get good extrusion with 300 E jerk up to 120mms, okay-ish at 600 E jerk if I don't print above 60mms and massive underextrusion and blobbing at 3k E jerk no matter the speed (I get holes on the first layer at 15mms..).

    Extrusion looks fine when I turn PA off (yeah, I get over extrusion at layer changed and corners, but no underextrusion)

    Is it somehow possible to keep PA from retracting at all or at least set a limit?

    I also don't understand how people can run 3k jerk on E with a BMG. Neither my original, nor my TL clone can handle more than around 1.5k without leaving gaps 😕

    Those statements are all interrelated. There is an interaction between extruder instantaneous speed change threshold (jerk) and pressure advance. If you set extruder jerk low, it effectively limits pressure advance. So if you set PA using a low extruder jerk, then increase the extruder jerk, it will effectively remove or reduce the limit that the low jerk was imposing on PA and therefore increase the amount of PA. So you should set extruder jerk high before trying to tune pressure advance. Given that the only time extruder jerk is applied is during pressure advance or perhaps extruder only moves like retraction, you might as well set it ridiculously high. At any given time, the print speed will be the lowest of XY or E and as extrusion amounts are typically single digit percentages of carriage travel, it is highly unlikely that extruder jerk would ever be applied to a print move (unless it was so low as to override XY carriage speed which would slow down the entire print).

    Edit. I use 6 Bondtech BMGs feeding a mixing hot end and have extruder jerk set to 3600 and use between 0.4 and 0.5 PA.



  • Yeah, all valid points.

    However: I was trying to tune PA for 3k E jerk. My PA cube (2 perimeters, no bottom or top, outside first) looks like this:

    0: blobs
    0.05: blobs
    0.1 - 0.3 blobs
    0.35 - massive holes and underextrusion
    0.4 - not extruding anymore (jerking between extrusion and retraction)
    0.5 - clog

    I verified those results with 3 different filaments, 2 different BMG extruders, 2 different motors and different hotend assemblies (e3d volcano, hb and 0.4 nozzle and the same stuff from TL).

    Only when I go down to low E-jerk values (300-600) I can see a fluid difference:
    0: blobs
    0.05: less blobs, still bulges at corners
    0.1: even less blobs
    0.15: perfect z seam, no gaps, sharp corners
    0.2: perfect z seam, slightly rounded corners
    0.25: minor gap at the z seam, bulged corners
    0.3: noticable gap at the z seam, more bulged corners
    ...
    0.5: underextrusion noticable on the walls

    Both those cubes were printed with the same 120mms, same temp (195c extrudr NX2 pla) 0.2mm LH, 0.4 LW, XY jerk of 1500, acc 9k, DA@47Hz).

    If I can find them in my (PLA) trash-pile I'll upload some pictures.

    I'm really a bit lost here.

    Is it possible that Dynamic acceleration throws the whole thing off? Haven't tried it without DA enabled tbh as it really limits my accelerations otherwise.



  • @bberger How big is your test cube? Where do you see the blobs? Without PA, do you get under extrusion at the start of a move and over extrusion at the end of a move? Do you have retraction enabled or disabled? IMO, the best way to evaluate hot end pressure and tune compensation is to do long fast moves with retraction disabled. That way you are only evaluating the effect of pressure build up. Blobs on a hollow test cube could be the result of any number of different things. So you could be trying to cure some other artefact that itself is not a function of hot end pressure. Also, once you have found the best PA value, then you need to re-visit your retraction settings.



  • @deckingman 50x50mm cube. With my acceleration settings this is more than enough to get to the top speed, even with ridiculously low jerk.

    Also there are no retractions on the test cube, except for the very top. (supermill fork of slic3r), so rectraction on or off makes no difference (tried both to verify).

    With PA off I have thicker walls near the edges (around .84mm about 2-3mm from the edge) and 3 perfect 0.8mm walls.

    The wall with the seam usually has about .83 mm before the seam and around .76 after the seam.

    So yes, expected behaviour with PA off. 0.4 nozzle, 0.4 line width



  • @bberger Hmm. So no retraction on layer change? Do you notice any difference in print speed with low extruder jerk and PA? This is something that other users have reported.

    Maybe, as you indicated, there is also some interaction with dynamic acceleration - I don't use it so I have no experience. It would be interesting to see a comparison of PA with and without dynamic acceleration. Or are the blobs themselves a nasty bi-product of using dynamic acceleration?



  • Yeah, sure. Print time probably is +50% with XY300 and E600 jerk.

    Will test more on the weekend. I'm a bit too busy with work right now and the baby is asleep, so no more printing before the weekend 😕

    Will experiment a bit more with DA when the time comes. Really want to keep it as it helps with print speed a lot. Without I have to go down to about 1k acceleration or even lower to avoid ringing/ghosting..



  • @bberger I meant just extruder jerk. But that made me go back and re-read your original post because I missed the fact that your were changing XY jerk as well as extruder jerk. I also overlooked that you are using 9k acceleration. With so many variables being changed at once, it's hard to make an informed judgement on what might be the cause of your problems.

    This statement stands out though

    "From what I understand is: shouldn't PA do less instead of more when cornering speed increases? I would understand it at high accel and low jerk, but 9k acc/3k jerk on XY at 100mms shouldn't end up in retracting more than extruding with PA on - should it?"

    For any given move, the amount of extrusion should always be the same with or without PA. What PA does is advance the extruder at the start of a move (accelerate it faster) but retard the extruder by an equivalent amount at the end of a move (decelerate it faster).

    Also this statement caught my eye

    "Is it somehow possible to keep PA from retracting at all or at least set a limit?"

    This is related to the above. That is to say, if the acceleration is high at the beginning of a move and/or the PA value is high, then the amount of retardation necessary at the end of a move to maintain the required quantity of extruded filament for that move, may be such that the extruder has to run backwards. By way of illustration, assume that a move consists of 1mm of extruded filament during both the acceleration and deceleration phases and 10 mm of filament during the steady state phase, so 12mm in total. If the amount of pressure compensation is such that the extruder advance leads to 2.5mm of filament being extruded during the acceleration phase, the steady state phase remains unchanged at 10mm giving a total of 12.5mm so the amount of retardation needed at the end of the move during the deceleration phase has to be minus 0.5mm to bring the overall extrusion amount back to the 12mm.

    So if you limit the amount or retardation, then you would end up with over extrusion. Unless you also limit the advance by the same amount (i.e. use a lower value PA).



  • Thank you for revisiting my post. I think we are on the same page here. I think I understand how PA should work (exactly as you described).

    My special issue that I was relating to was that scenario:

    50mm wall. What happened was: it ended up extruding and retracting so much that it basically tried to extrude 25mm and then directly rectracted the same 25mm so on and so forth. In the end nothing came out of the nozzle anymore and all that was happening was constant extruding/retracting.

    That happened (repeatable and verifyable at the time) with:

    • 9k XY accel with DA on around 48Hz (don't know about DA off yet)
    • 3k XY jerk
    • 3K E-Jerk
    • at about 0.30 PA (+/- 0.05) on a 25cm bowden (flying extruder)
    • 120 mms print speed
    • 2 walls, no retraction on layer change and also in vase mode on another object (the one that's typically used for dynamic acc. tuning)

    When I turned down the E-Jerk to 300 and left all the other variables as-is - the results is that the print of course slowed down - but the PA results were as expected (gradually becoming better before becoming worse over 0.35PA).

    My take was: why would PA try to compensate more if there should actually be less pressure buildup. (Faster cornering speed should equal less pressure buildup as it has less speed difference and less acceleration and deceleration stretches, right?). Looking at the status page it's still consistently reaching 120mms on the 50mm walls, even with 300XY jerk and/or 300 E-Jerk. Lowering E-Jerk to about 2000 actually was enough to not have that "constantly extruding and retracting the same amount", but the quality results still were questionable at best as and described above (not really getting better until it suddenly massively underextrudes).

    As I said: I will try to recreate what I mentioned above this weekend.

    PS: on the point of limiting the rectraction on PA: I could live with small blobs in most cases as they can be postprocessed. But underextrusion and missing/open walls is a lot more problematic.

    I never had such phenomenons with Linear Advance on Marlin (I don't think LA 1.5 ever retracts, but only slows down the extruder to minimize pressure, however it's been quite some time since I last used Marlin and I also never want to go back). LA was just more easy to tune with (in my case) excellent results. With PA I've been struggling now for the better of a month and I just can't find the solution 😕

    PPS: sorry about some missing words and hard to understand English in the paragraphs above, typing on the phone is a pain..



  • @bberger That is indeed very strange behaviour. Especially this:

    "...............it basically tried to extrude 25mm and then directly rectracted the same 25mm so on and so forth. In the end nothing came out of the nozzle anymore and all that was happening was constant extruding/retracting."

    I've never witnessed that sort of behaviour but then again, because of my exceedingly high moving mass, I don't use anything like 9K acceleration. Unfortunately I don't have any more ideas (I'm just an end user like you). If it is repeatable as you say it is, then hopefully DC42 or one of the other Duet team members may come up with something. The only thing I could suggest is that you try without dynamic acceleration. If it makes a difference, then at least we might be able to narrow the problem down, which will help the firmware developers come up with a fix if that is what is required.



  • @deckingman It's a clone, but the extruder works fine by hand and I've checked the grub screws are good.

    I found my pressure advance value by doing this ringing print https://www.thingiverse.com/thing:4169896 and found that somewhere between 0.3 and 0.4 was my good value. You can see that the ringing is reduced on the Xs, but at 0.4 and 0.5 the corners start to go inconsistent.

    alt text

    So you're suggesting that setting extruder jerk low is just mitigating the problem and isn't actually solving it, as extruder jerk shouldn't be the limiting factor?

    At extruder jerk of 300 I still can't get it to be consistent, it's only at 100 that I get better results, but that is extremely slow.

    @bberger said in Pressure advance causing underextrusion/motor madness:

    50mm wall. What happened was: it ended up extruding and retracting so much that it basically tried to extrude 25mm and then directly rectracted the same 25mm so on and so forth. In the end nothing came out of the nozzle anymore and all that was happening was constant extruding/retracting.

    This is similar to the issue I'm ending up with. At a point where it is underextruding, it's as if it's ended up doing more retractions than it has unretractions, as the filament is no longer at the end of the nozzle. It then feels like it "catches up" and produces a blob. I have had issues with this in the past even with PA off, but I thought I'd fixed that. PA seems to make it far worse.
    At the point where it produces a big blob, I can hear the "pop" sound you get when the filament first comes out of the nozzle.

    I'll try using a Titan extruder instead and see if that makes any difference.

    (I'm also running with DAA off)



  • @bberger I've had a thought. It's just a theory. Could it be with your high accelerations that you are hitting the step pulse frequency limit with the extruders (they have high steps per mm compared to axes)? Maybe what happens is that with PA enabled, during the acceleration phase the extruder speeds up to the point where it misses steps so you don't get the extra extrusion at the start of a move, but the steady state and deceleration phases are below the step pulse frequency limit so you do get the retardation?

    It's just a wild guess. But you could test it by using your high acceleration and jerk, then sending M122 and looking at the hiccup count. If it's high then reduce the acceleration or jerk, run it again then see if the hiccup count comes down.



  • @Dezdoghound said in Pressure advance causing underextrusion/motor madness:

    So you're suggesting that setting extruder jerk low is just mitigating the problem and isn't actually solving it, as extruder jerk shouldn't be the limiting factor?

    That was my original hypothesis but having read @bbergers' post, now I'm not so sure.



  • @deckingman I've just done a run of a print where it's been doing the blobbing, and didn't get any hiccups recorded 😕

    Just a shot in the dark really, what setting do you have the thumbscrew on for your BMGs with PLA? The instructions said to tighten all the way and undo 1.5 turns, but that seems far too tight?



  • @Dezdoghound said in Pressure advance causing underextrusion/motor madness:

    Just a shot in the dark really, what setting do you have the thumbscrew on for your BMGs with PLA? The instructions said to tighten all the way and undo 1.5 turns, but that seems far too tight?

    It doesn't seem to make much difference. Unlike say an E3D Titan where too much tension combined with multiple retractions will grind through the filament, the distance between the two hobbed bolts on a BMG is pretty much fixed. So tension is far less important.

    I did an extreme retraction torture test back in 2018 https://somei3deas.wordpress.com/2018/05/11/bondtech-bmg-vs-e3d-titan-extreme-retraction-torture-test/
    The Titan completely ground though the filament after about 7,000 cycles but the BMGs showed hardly any sign of filament "grinding" after 26,000 cycles.



  • @deckingman said in Pressure advance causing underextrusion/motor madness:

    @bberger I've had a thought. It's just a theory. Could it be with your high accelerations that you are hitting the step pulse frequency limit with the extruders (they have high steps per mm compared to axes)? Maybe what happens is that with PA enabled, during the acceleration phase the extruder speeds up to the point where it misses steps so you don't get the extra extrusion at the start of a move, but the steady state and deceleration phases are below the step pulse frequency limit so you do get the retardation?

    It's just a wild guess. But you could test it by using your high acceleration and jerk, then sending M122 and looking at the hiccup count. If it's high then reduce the acceleration or jerk, run it again then see if the hiccup count comes down.

    It's an interesting idea, but I don't think at that shape and speeds it's near the limit of what the Duet can handle.

    Afaik it should be able to handle up to 150kHz, so assuming the following:
    160 steps / mm on XYZ @ say an average of 120mm/s over all 3 axes (we're pretty much in the middle of the printbed, so not too much movement at all): 160 * 120 * 3 = 57.3kHz
    415 esteps/mm at it's absolute limit (100mms): 41.5kHz

    Even in that absolute worst case scenario I'm not even above 100kHz, so I'd say it's unlikely. I'm also not seeing any hiccups in movement that would support that.

    That being said: I'll keep an eye on it and report back.



  • Sorry, can't edit the formatting of the post above - Akismet is acting up..



  • @bberger Yes - and no. It was the extruders hitting the step pulse frequency limit that I was wondering about. The steps per mm are much higher than axes, For "normal" printing it's never a problem because extrusion amounts are typically single digit percentages of axes travel, so extruders run much slower. BUT, when you do extruder only moves such as retractions, they do move a lot faster. So I was wondering if the extruder advance that PA uses pushes the extruder speed up to the limit. If you observe what the extruders do with PA enabled and fairly high value, they make some pretty alarming moves.

    With a mixing hot end, it is necessary to run high extruder micro-stepping to get the desired resolution, because one or more extruders might only be single digit percentages of the entire amount of material to be extruded. With earlier firmwares, I could run micro stepping at 128x and still use 60mm/sec retraction, but this is much less now because the step pulse frequency has been reduced significantly (although nobody will tell me what it actually is now).

    But doing the maths, my wild theory is probably wrong. With 415 steps per mm and assuming the step pulse frequency limit is as low as 100k, then extruders would still be able to hit 241 mm/sec and I doubt that PA is causing them to get anywhere near that.

    But it might be interesting just for the hell of it, to change the micro-stepping for the extruder to (say) 8X and see what happens?



  • IMO your E jerk is way too high.

    I run a bowden extruder, sometimes with PA as high as 1.4. My E jerk has to be down in the area of 4 (mm/s), but I can run the acceleration high at 4000 (mm/s/s). This is a custom design, geared stepper using Bondtech gears.



  • @CCS86 doesn't a jerk setting that low really slow down your print? I see lots of other people using 3000 jerk on the same extruder is the thing too.



  • @Dezdoghound there is a balance to be found between stepper jerk and real-world capability. IE stepper motors attached to extruders can't accurately "jerk" as fast as some people wish them to. So, if speed is your main concern, and slightly inaccurate movement is acceptable to you, go for higher jerk. The inaccuracy of the movement is quite low -- it's still gonna be pretty damn close to what you asked for, perhaps just a bit noisy and sloppy.

    If accuracy is your main concern, then slow the jerk down to the point that you are guaranteed accurate movement every time, with little noise.


Log in to reply