Extruder motors skip steps with pressure advance enabled
-
First of all, I'm not sure if this is my or Duet's fault. I've been calibrating pressure advance using the python script from these forums. I've now paid a lot of attention to some of the problems my printer had regarding extrusion ever since I bought the DuetWifi. The amounts of material extruded varied from slightly to strongly per layer, per print, per perimeter.
I can't say for sure since when this problem started, it's as if it was always there. I only started investigating around 2.02 release and have upgraded my extruders to be skip-free mechanically since then. Now I found out it wasn't the root cause after all. Sometimes the printer would under- or overextrude for no reason. It is seemingly sporadic, but actually repeatable per print. I can take a GCode file and it will get same problems at the same spots, regardless of speed, filament etc as long as pressure advance is enabled (even at low value like 0.1). I tried to track it down for a very long time now. I have the feeling 2.02 made it worse, but I have no proof. I'm using mixing at 0.5:0.5 to run two motors on a single 1.75 filament. The motors are aligned at a 90 deg to eachother - it works way better than expected. No more filament grinding, which was rampant before. I also tried running a single motor and disabling mixing, but same thing happens.
So I calibrated pressure advance to 0.6 (from 0.15) and, thus, unknowingly opened the Pandora's Box. While the prints seemed to get better on straight segments and corners, it actually entirely "broke" "complex" perimeters, such as, but not limited to, successions of small perimters, cogs. The extruders violently miss steps under some conditions, regardless of jerk or acceleration. Reducing these parameters does not help. The missed steps are so bad that the extruder motors either keep ramming the hotend (producing huge blobs) or keep retracting (so that it appears as underextrusion or whole perimeters are just missing), all while making loud and clear skip noises. As I said, straight segments are fine, be it 30mm/s or 300mm/s, but as soon as multiple corners, extrusion, travel etc come into play - tack tack tack...
I can vouch by my head that there are no clogs or anything. I even bought Nema 23 motors to rule out torque problems, but they exhibit the same behavior as the previous Nema 17, even though they've got nearly 3-fold max torque under similar conditions (23HS8430D8P1-5).
If I disable pressure advance, all is fine. I can print at something like 240mm/s on straight segments without underextrusion.
Perhaps there's a configuration issue? Help would be much appreciated O.o
Config:
PA 0 (prints fine): 0_1548192660561_config_edit.g
PA 0.5 (bah): 0_1548265575858_config_edit.g
setting PA to 0.5 (optimum for my printer) or any other value causes extruders skip steps at any PA with varying severity.
For way greater effect, disable Dynamic Acceleration Adjustment: M593 F0
For way, way greater effect, reduce E microstepping at line 30.Example GCodes:
1_1547835913760_Bottom+Eyelid.zip.txt
0_1547835913760_cableclip larger v2.zip.txt
0_1548189274357_Top+Lid+2.gcode
Not sure if related, but this one gets overextruded significantly: 0_1551289662656_icicles pa test more retraction.gcodeWorst case video (last file above, first layer): https://youtu.be/6T6nCv26wXk
Same spot, but without filament: https://www.youtube.com/watch?v=oXsFLG7AMug&feature=youtu.beSomething that also triggers skips and might be easier to work with on other printers: 0_1548426626869_EccentricGearTest 0 0.gcode
These are the places with worst behavior (Top+Lid+2.gcode in original post) from that video:
-
You don't mention if your extruder is direct drive or bowden tube. So it's hard to say if the PA value of 0.1 is low or not. For a direct drive a value of 0.1 is quite large. And 0.6 is huge. For a bowden maybe not as crazy, but still on the high end.
It's also not clear what your extruder is actually like. You're using two motors as a single extruder?
On my direct drive titan aero a value of 0.03 to 0.05 is ideal.
I'm not really a fan of the tuning script you mention. It seems to indicate that people should use very high pressure advance values, but when such high values are used in real prints it seems to behave very strangely as you've found.
What are your results if you use a more conservative value like 0.05?
-
M92 X80 Y80 Z2126,73195730232 E88.208871:88.208871 ; Set steps per mm
The digits after the comma will be ignored, so try instead: M92 X80 Y80 Z2126.732 E88.208871:88.208871
M906 X2500 Y2500 Z2500 E2500:2500 I40 ; Set motor currents (mA) and motor idle factor in per cent
Maximum motor current is 2400mA, however if you ask for 2500mA I am fairly sure that you get 2400mA.
I don't see anything else wrong with your config.g file. I'll try your prints on my delta when I have time. It uses 0.3sec pressure advance.
-
Thanks for looking at this.
I'm using a ~75cm of the blue Capricorn Bowden tube. There's some slack in one of the connections (+/- 1mm) and I'll be rectifying that, but otherwise nothing crazy.
Two extruder motors on separate drivers are feeding a single filament.
I knew it's 2.4A max and been running with this config for half a year, so I never bothered to change it, but will do now. I've got good cooling, so I assumed it'll be fine.
Now, I wanted to run more tests today and it turns out one of the new Nema 23s has a short between the poles. First time I see a short-to-ground error. It reads 0.3 Ohms between poles. I'll put the Nema 17 back there and run the tests again. This motor death is peculiar, as Nema 17s ran for half a year without problems there and this Nema 23 dies, I assume during power-up. Can this death be related to a driver problem?
Old motor specs:
New motor specs:
This is how the extruder motors are set up:
Apart from the motor sort of dying, the setup is extremely gentle to the filament. There's no spring in the upper motor as I'm replacing that motor now.
In case it matters, the machine (including extruder motors) is grounded.
-
Just replaced the faulty Nema 23 and still get same results.
@phaedrux said in Extruder motors skip steps with pressure advance enabled:
I'm not really a fan of the tuning script you mention. It seems to indicate that people should use very high pressure advance values, but when such high values are used in real prints it seems to behave very strangely as you've found.
It did help me, but now with this 90 deg setup it's of much less use. I'll need to use lower value, I suppose, but I can't use any value above 0.05 at all now. Below that it has no effect on the print other than occasional step skip.
What are your results if you use a more conservative value like 0.05?
Skipping is still there, but obviously less. I don't really understand how come the extruder skip steps even when I set them to really low jerk and acceleration values. There must be something wrong with pressure advance in combination with my config...
-
Triple post... but I'm onto something. I've been running more tests on an ever lower extruder speed (50-200 mm/min). It seems my printer doesn't need a high extrusion speed, but rather a high retraction speed when using pressure advance. I mean the "pressure release speed", not the actual retraction speed before travel (which is already configurable). The fact that it's impossible to configure both separately for pressure advance must be causing my extruder to be either too slow on release, causing blobs on corners, or too fast on build-up, causing skips on multiple successive corners where it needs to slow down significantly. This gets even worse when there are retractions, as the filament cools down even more and the extruder should slow down even further. As already stated, it can print straight segments at something like 240mm/s, but a complex succession of segments bogs it down.
Pressure advance might need granular configuration all for itself, including extrusion and retraction jerk, top speeds. Slap some additional filament melt considerations on top for travel between extrusions, their frequency - basically the fact the filament doesn't have the same melt rate all the time.
-
@edgars-batna Just take a quick gander at your config.g and I'd say the reason it's getting bogged down on arcs is because of the very low instantaneous speed values (jerk) that you have set. There is a significant interaction between pressure advance and jerk values. Try increasing jerk for X Y and E. My printer is a completely different beast to yours but for info, my X and Y jerk are set to 1500 (your is is 500) and my extruders are set to 3600 (yours are 1000).
-
@deckingman I only lowered the values due to these problems as described. With "bogged down" I mean missed steps by extruders, not the speed of XY.
I'll try installing the Volcano hotend now to see how the behavior changes... I used the usual V6 till now.
-
@edgars-batna said in Extruder motors skip steps with pressure advance enabled:
@deckingman I only lowered the values due to these problems as described. With "bogged down" I mean missed steps by extruders, not the speed of XY.
I'll try installing the Volcano hotend now to see how the behavior changes... I used the usual V6 till now.
Just re-read your first post "............ I can print at something like 240mm/s on straight segments without underextrusion"
With a standard E3D V6! Sorry, but I have a really hard time believing that. At best, you've hit the melt rate of what the hot end can do and maybe forcing the filament in at high enough pressure is making something come out of the nozzle. So by enabling pressure advance, you are relieving that pressure at the end of each move which is why you are seeing problems. IMO you are simply trying to print faster than you can melt filament and no amount of pressure compensation is going to fix that.
Take a look at what it really takes to print at 240mm/sec https://somei3deas.wordpress.com/2018/10/14/real-3d-printing-at-high-speeds-and-even-higher-melt-rates-with-a-large-nozzle/
-
@deckingman Obviously, 240mm/s only works if you increase the temperature to insanity at very low layer heights. It's 0.1-0.2mm layer at 0.4 nozzle. By straight segments I really mean long, straight segments only. The flowrate can be reached, but I guess not in combination with the rest of the movements. It could be that my nozzle got somehow clogged, we'll see how the Volcano does.
I'm well aware of your setup and you've done good work there, but I'm exploring the limits with a comparatively tiny print head here.
-
I'm confused, I assumed that I'll need pressure advance in order to reduce slight blobbing on corners when running on low XY jerk for slow, high quality prints to avoid ringing. If the print doesn't require high quality I just crank XY jerk all the way up. I use same max speeds for high and low quality prints.
It appears that it simply doesn't work as I intended to use it - it fails to equalize pressure in the low jerk scenario. Did I misunderstand this feature? The Volcano does work better, but extruders are still skipping when pressure advance is enabled at 0.05 or more, unless I set the extruder jerk and accel to incredibly low values of 100mm/min.
-
@edgars-batna
You probably need to understand how and why pressure builds up, then you'll understand what the compensation can do for you. Pressure builds up relatively slowly (compared to axis travel). So the effect is more noticeable the longer a move. Or in the case of small segmented arc moves, it takes a number of these short moves to happen consecutively for pressure to build up. A single arc segment on it's own will be too short a time for pressure to build up. Pressure compensation therefore does not get applied to short individual arc moves - only at the end of an arc.The effect of the pressure build up is that, at the end of a move when the extruder stops, or as the axes slow down, filament is still forced out of nozzle at higher rate. Retracting the filament at the end of these moves becomes less and less effective as print speed and/or move length are increased. The net result is that blobs can form at the end of a move where say layer change occurs. Or if the next move is a non- print move, some stringing can happen (just as if insufficient retraction was used). Conversely at high print speeds, the axes accelerate faster than the rate at which filament can be forced out of the nozzle. The extruder may accelerate fast but the pool of molten filament acts like a sponge so what you get is a sudden build up of pressure as more filament is rammed in (because it takes time to melt the incoming filament), before the rate of change of extruded filament catches up with the axes. The net result of that is that there will be under extrusion at the start of a move. So in summary, without pressure compensation once you reach a certain speed, you get under extrusion at the start of a move but over extrusion at the end of a move. If one move rapidly follows another, you may not see the under extrusion at the start because it will be masked by the over extrusion from the previous move. So it follows that the effect on print quality due to pressure build up is very much dependent on what happens between moves, as well as the length and speed of those moves. There really isn't a way of saying that you need pressure compensation to (quote) "reduce slight blobbing on corners when running low XY jerk" . It might help - it might not. You really need to tune everything else first. Then, once you are sure that you've optimised all other parameters, try pressure compensation to see if it gives you any further improvement.
To calibrate pressure advance, one way that works well for me is to print the largest cuboid that will fit on my bed, then print that at the highest speed I can with 100% infill. While it is printing, observe the start and end portions of the long infill moves. Actually I've found that a finger tip is more sensitive than the eye - one can feel the roughness. Then gradually increase pressure advance and observes the improvement in roughness at the start and end points. Keep increasing pressure advance until it feels smooth. Be aware that a layer can be affected by the previous layer so you may have to print a few layers. Once you found the optimum value, it will work at any print speed.
-
@deckingman Thanks for the detailed explanation. I do not observe visible under or overextrusion (except for smallish blobs on corners due to low XY jerk) ever since I switched to the Volcano today. It now appears to print fine without pressure advance at 120mm/s and this is considering a longish Bowden tube. Maybe I don't need it after all...
Regarding calibrating the pressure advance, the Python script did work for me during the calibration itself. The straight lines got very consistent, even considering it slowed the prints down, but I knew it would happen and thought all is well. Then I tried to print with more than a single straight segment and that's where extruders started attempting impossible speed changes, skipping steps...
I've been working on calibrating the thing for the past 6 months as time allowed it. I've reduced Extrusion-related slack significantly and it is then that the pressure advance "stopped working".
-
@edgars-batna said in Extruder motors skip steps with pressure advance enabled:
................ and that's where extruders started attempting impossible speed changes, skipping steps...
I really don't understand what you mean by that. How do you evaluate that the extruder is attempting impossible speed change? Do you see any step errors or hiccups when you run M122? The rate of change of speed is called acceleration. So given that any move will take place at the lowest acceleration of X, Y or E, then the extruders should easily keep up with whatever the hot end carriage is trying to do, because the extruders have a much lower mass to move and also E moves are in the order of single digit percentages of the distance of any given X or Y move.
I just think that you are simply trying to cram filament into the hot end, faster than you can melt it. Very few people can print much above 100mm/sec - certainly not with a standard E3d V6. Yet you are trying to get to 300 mm/sec. You've had filament being ground away (due to the resistance). You've been down the road of using two extruders in a push-pull arrangement to try and cram it in. Then you've upped the motor specs to give you 3 times more torque. Doesn't all that tell you something?
Maybe those motors and double extruder arrangement can force filament out of the nozzle at print speeds of 300mm/sec but I'll bet the filament isn't melted through to the core and the pressure build up must be horrendous.
For sure with pressure advance enabled, the extruders will accelerate faster than the axes at the start of a move, but not by much. Maybe it's enough to cause skipped steps? But the root cause isn't any fault with the pressure advance algorithm - you are just trying to push filament through the hot end faster than it can be melted.
Edit. If the cause of the filament being ground down is the "normal" blockage caused by molten filament being drawn into the heat break and solidifying, then enabling pressure advance without also reducing retraction, or setting the pressure advance too high, might make the problem worse because more molten filament will be drawn back into the heat break area.
-
@deckingman I don't need 300mm/s. There was severe filament grinding prior to using double extruders even at 60mm/s and I simply experimented with higher speeds from there, all while using the pressure advance (at various values from 0.15 to 0.7). You were right that I should have calibrated the machine without pressure advance first, as it just totally diluted my findings with these sporadic step skips. This is my typical error of doing many things at once, as I'm just impatient.
30-120mm/s are the speeds that I print at. It somehow struggled even at low speeds, at 40mm/s during the first layers in the gcode files I uploaded. This confused me further. If I took the filament and pushed by hand, it would work fine. If I printed, it would skip so hard that it sometimes would basically retract 10 cm of filament. I'm saying retract, which implies no resistance, so the steps must've been generated wrong. These "wrong" steps would persist unless I reduce E jerk to 100mm/min. It's reproducible on my machine. With so many parameters it's hard to pinpoint the fault exactly, thus I started this topic.
Anyway, the Volcano is now much better. Less oozing, less stringing, less pressure. It's great. If only I could somehow reduce blobbing on low XY jerk...
I'll do another test and check M122 soon. Maybe I even make a video, but it's late Sunday, so it'll take a bit.
-
@edgars-batna If you were getting filament being ground away even at 60mm/sec, then something is wrong with your hot end. It means there is a restriction somewhere and filament can't come out of the nozzle as fast as you are trying to cram it in. Maybe yo have a partial blockage. Maybe your thermistor is reading the wrong temperature. There are numerous reasons why you might have a problem but IMO, doubling up on extruders or fitting bigger motors is only masking that problem - you need to fix it not find ways around it.
I'm really struggling to understand what your symptoms are. Maybe I'm just being thick but what does this mean?
Quote.......
"If I printed, it would skip so hard that it sometimes would basically retract 10 cm of filament. I'm saying retract, which implies no resistance, so the steps must've been generated wrong.........."
.......end of quoteThat implies that when you printed 100mm (10cm) of filament came back out of the hot end, rather than being fed into it. That's what retraction is. Is that what really happened?
-
Mmmm...
Pressure in advance, it is not well tuned. Can cause under extrusion?
Since a days ago.... I start printing, and after some lines, aprox 300mm.... The extruder motor start skiping steps....
I clean nozzle, and with DWC, extrude manual, and works.... But if I try to print... The same.
PLA at 210 degrees
-
@peirof See my reply in the other thread that you started.
@Edgars-Batna I've edited my post of 20 Jan 2019, 19:36 and added some information at the end.
-
@deckingman said in Extruder motors skip steps with pressure advance enabled:
That implies that when you printed 100mm (10cm) of filament came back out of the hot end, rather than being fed into it. That's what retraction is. Is that what really happened?
This is exactly what happened. The skips were that hard. It would make an impression of a successful print start, then at some point it would yell "NOW" to itself and start skipping like terrible music. Then it would come back, then it would start again. Retrying the print always yielded exactly the same results.
@deckingman said in Extruder motors skip steps with pressure advance enabled:
@peirof See my reply in the other thread that you started.
@Edgars-Batna I've edited my post of 20 Jan 2019, 19:36 and added some information at the end.
Retraction is at 3mm, tried setting to 2mm but it didn't affect it. If the filament was retracted by that much (e.g. 10cm) randomly, obviously it would clog itself up.
-
@edgars-batna said in Extruder motors skip steps with pressure advance enabled:
This is exactly what happened. The skips were that hard. It would make an impression of a successful print start, then at some point it would yell "NOW" to itself and start skipping like terrible music. Then it would come back, then it would start again. Retrying the print always yielded exactly the same results.
......................>Then there is something seriously wrong. For 100mm of filament to come back out of the hot end as you describe, the extruder must run backwards. Could you make a video of it by any chance?
Are you using relative or absolute extrusion in your slicer and is the Duet board configured to use the same as your slicer? Has the gcode file got corrupted? Look through and see if there are any negative E moves. The only negative moves should be the 3mm retractions you are using. For the extruder to run backwards by 100 mm, there must be a G1 E-100 command, or series of negative E commands that add up to 100 mm. Do you get any driver errors when you run M122? Are there any erroneous M569 commands anywhere - especially any Pn Sn which could reverse the motor direction?
I've never heard of it myself, but could the driver chip fail in such as way as to reverse the step direction?