Extruder motors skip steps with pressure advance enabled
-
Late to the party here....
My printer has a single 40mm NEMA-17 motor running at <1.5A and it pushes the filament much harder than necessary to extrude for printing even at 200 mm/sec print speed. A recent operator error jammed the hot-end and the extruder pushed the filament so hard that it pushed out the Bowden tube- I lowered the current so the motor would skip if that happens again. It runs smoothly and quietly and the motor doesn't get hot enough to need a heatsink, even in a 50C chamber.
Forgive me if my analysis is too simple, but I noticed you've got two NEMA-23 motors running at 2.4A each, pushing on a single piece of filament, and they are covered with heat sinks. Are they getting that hot? The config files you posted at the top of the thread set motor current to 2.5A (all motors) and the spec sheet you posted a little later says the motor is rated for 2.1A. A more recent post has the XYZ motors down to 2.1A, but the extruders are at 2.4A, the limit of the firmware/board.
In my limited experience, running steppers above their rated current leads to rough motion and excessive heat. Have you tried lowering the motor currents? Is there a fan blowing on the controller board? It's probably getting pretty hot. Hot driver chips might cause rough motion and strange behavior, too.
-
@mrehorstdmd I'm aware of the problems regarding overheating. With cooling fans and heatsinks the motors stay acceptable to the touch, even at higher amps. The board is cooled from both sides. I've actually lowered XY and Z current to 2.1 and 2.0 respectively since then. I've tried lowering E current to 1.5 and it had no impact and, since I'm diagnosing lost steps on E, I'd rather have them in overdrive to rule out torque problems. Right now I've got a Nema 23 and Nema 17 in push-pull arrangement respectively. The Nema 23 is rated at 3A and is getting hotter than the 2.1A Nema 17, which indicates inefficient operation like lost steps etc. If the motors are faulty, I'd rather have them blow up immediately.
I've actually narrowed down a few things in code since yesterday and there seems to be multiple "issues" at play here:
- The accumulated rounding error correction causes a snowball effect on very tiny segments when jerk is high.
- Pressure advance is applied to these tiny segments when the pressure is not actually changing or is changing just marginally (less or equal than 0.0001 mm/s), causing lost steps.
Now, I'm totally new to programming 3d printers, so pardon if I'm getting some things wrong. As soon as I've got something tangible in the code, I'll make pull request on github or a patch, or I'll disassemble my printer and eat it.
-
@edgars-batna OK, I was trying the short Gcode segment you posted together with the settings you listed and I can now reproduce skipped steps on my machine with 100 steps/mm@x16. Even if I reduce the speed factor to just 1% the behavior will stay the same.
@dc42: the instructions and code snippet in this post can reproduce this error also for me. So this seems to be either a firmware bug or a physical limitation with low-steps/mm-extruders.
-
@wilriker It'll be a while until I get anything meaningful as there are a ton of computations and I don't know how to debug this CPU over USB or even if it's possible. I assume it's possible as there are drivers in the github repo, but what tools are used, I've got no idea... except that it must be a flavor of gdb and I might need Atmel Studio.
Any pointers from anyone?
-
@wilriker said in Extruder motors skip steps with pressure advance enabled:
@edgars-batna OK, I was trying the short Gcode segment you posted together with the settings you listed and I can now reproduce skipped steps on my machine with 100 steps/mm@x16. Even if I reduce the speed factor to just 1% the behavior will stay the same.
@dc42: the instructions and code snippet in this post can reproduce this error also for me. So this seems to be either a firmware bug or a physical limitation with low-steps/mm-extruders.
Thanks for reproducing it. I have added this to my list of pending investigations. As you say, it may be an issue triggered by low steps/mm extruders and short segments.
-
@wilriker @dc42 As discussed, I've been experimenting with source code:
https://github.com/mdealer/RepRapFirmware/commits/pressure-advance-skips
Expect blatant errors... it would be interesting to hear any thoughts. Nevertheless, the implementation works way better for my printer, but it obviously prints slower now. On the bright side, no longer any lost layers or extruder skips on any print I've run. Lots of retractions are also not a problem anymore. It now obeys extruder InstantDv more.
The longest test so far was 8 hours on my CoreXY. I'd upload a binary, but I do not want any unsuspecting souls trashing their printer without the devs looking at this first. The logic by which it slows down on high extrusion compensation is a dirty hack somewhere between DriveMovement and DDA and that rounding error bug check override right there is sketchy at best. Oh, and it uses a bit more memory and CPU...
Anyways, maybe this helps anyone. Is it alright if I post a binary of this?
-
Just a heads-up. There are a few things I do not understand yet, but I've found the same issue again or another, potentially related, issue.
GCode for big printers: 0_1551297623857_icicles pa test more retraction big.gcode
GCode for smaller printers: 0_1551297617481_icicles pa test more retraction.gcodeResults:
On the left - 2.02 and 2.03beta2
On the right: my modified branch where I basically switched to doubles and dropped "extrusionPending" in PrepareExtruder and a few other speed or rounding related things. The layers are WAY more even, but I can't get the underextrusion at the start of the move under control.I'd like to assume that the uneven layers experienced by some users could be caused by something from here. I'm getting this uneven layer thing on all prints and it's always the same. If I juggle the maths a bit the pattern also changes and stays predictably the same.
-
Dear
I was also trying to tune Pressure advance, I also noticed steps being skipped , I did many testing with many different configurations , My conclusion is that PA is skipping steps due to a much to high acceleration on short segments , on a cube of 50x50x50 for exemple I saw no skipping steps but as soon as I use a different model with circular and a grove “ for example 6mm in diameter with a grove intersecting with the circle” I start to get losses in steps if I increase my jerk by a lot I get a much reduce loses of steps , but then the other models get under extruded at some places.
I hope it can help, cause it would be nice to have it working optimally, the shape corners get a much nicer with PA
Best Regards
Manuel -
@mrt said in Extruder motors skip steps with pressure advance enabled:
I start to get losses in steps if I increase my jerk by a lot I get a much reduce loses of steps , but then the other models get under extruded at some places.
Which jerk setting? XY jerk has a completely different effect to extruder jerk:
-
Increasing XY jerk will allow curves to be printed at higher speeds. This can avoid the printer speeding up and slowing down on each line segment in the curve, so pressure advance is not needed during the curve. Increasing XY jerk too high can lead to the XY motors skipping steps.
-
Increasing extruder jerk has the side effect of allowing higher extruder acceleration, although the M201 extruder acceleration limit will still be honoured. If your extruder is skipping steps then this may be a sign that your E jerk is set too high.
So you might want to try increasing XY jerk and reducing E jerk.
-
-
Dear DC42
in my mgs I was referring to E jerk, I use E400 with pa enabled and it is skipping steps but not in an extreme way, if I disable it no skipping steps. I normally use E1000 a E1500 without pa and working well but with pa I get extreme step skipping
my Xy Jerk are tuned to have almost no ringing "X900 Y900" I can go to 1200 but then very small ringing start appearing .
Best Regards
Manuel