MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.3k stars 19.25k forks source link

[bugfix-1.1.x]Dual Extruders, TMC2208, Motor stops in middle of print. #10955

Closed doskoi closed 6 years ago

doskoi commented 6 years ago

I've 5 TMC2208 for all motors on ramps 1.5. E0 and E1 is 0.9a(was 0.7a) and rest axis is 0.7-0.8a.

The TMC2208 works when I using single extruder, but since I change to dual extruders. E0 or E1 motor is randomlly stop working in first 10-20 layers. (no matter 2 extruders or just 1 extruder is working)

  1. I have checked extruder, I'm sure the motor is didn't spin.

  2. When the motor is stop working, I've pause or cancelled print, Use G-code G91; G1 E<Positive or nagetive number> F60; The motor still not move. Even press reset button on ramps board. after that, motor may still not response. But after I power off then power on again. it's returned.

  3. I've check TMC2208 on board by multimeter, v-ref is correctly, and it's cooling.

  4. I change TMC2208 to DRV8825, motor is working.

  5. I've enable/disable HAVE_TMC2208 in configuration file, not working.

How to check or fix this?

Steps to Reproduce

  1. Slice STL file by S3d
  2. Export Gcode to octoprint or direct print via USB by S3d
  3. After few minute, only x,y,z is movement. e0 or e1 is stoppted.

Expected behavior: Extruders motor works as gcode.

Actual behavior: E0 or E1 motor has shutdown.

Additional Information

My configuration file is here: https://github.com/doskoi/Marlin/tree/bugfix-1.1.x/Marlin

brisma commented 6 years ago

Have you activated Linear Advance? Try to disable it, TMC2208 is not happy with this feature :) Or, if you wanna try, enable Junction Devation and try different settings with Linear Advance activated.

There are some interesting information about this problem here: https://github.com/KevinOConnor/klipper/issues/196

doskoi commented 6 years ago

Yes, I do have enabled Linear Advance.

I'm gonna disable it to have test it, after confirm the issue is due to LA, I will gonna try to deal with Junction Devation, I don't familiar this yet.

Thank you.

teemuatlut commented 6 years ago

If you're using serial to control the drivers, then the potentiometer currents don't apply. If you have not wired them in and are using them in standalone mode, then it doesn't matter whether or not you've enabled them in config_adv.

The driver is stopping because it is trying to protect itself from something harmful and can be restarted by a full power cycle (like you've noticed) or in software by reading a specific register to clear the condition.

crzcrz commented 6 years ago

My extruder motor was stalling randomly with TMC2208 in legacy mode (which runs in StealthChop2 if I understand correctly), regardless of the current. Connecting it with UART and enabling hybrid mode solved that, but of course the stepper is now whining during retracts. LA is enabled.

There's a reply from Trinamic in the related issue that is linked a bit above, which suggests that StealthChop2 mode does not like abrupt changes in velocity (exactly what LA may be doing). This also means that reducing the jerk value for the extruder axis may help (and explains why activating the hybrid mode appears to solves the issue).

I'm going to play with the jerk a bit in the evening and see if I can reliably drive the extruder stepper with StealthChop2.

doskoi commented 6 years ago

Thanks for your information.

I've disabled Linear Advance, and TMC2008 is working well.

Now I'm trying to enable Junction Devation instead Jerk setting.

doskoi commented 6 years ago

I've enabled Junction Devation with default 0.02 value. For few test prints, TMC2208 works with Linear Advance.

doskoi commented 6 years ago

That i print a large part with Junction Devation 0.02, TMC2208 still shutdown in mid print. but work duration much longer than use Jerk.

I need test more here.

jonasuea commented 4 years ago

Obrigado pela sua informação.

Desativei o Linear Advance e o TMC2008 está funcionando bem.

Agora, estou tentando ativar a configuração de junção em vez de Jerk.

where is this option?

github-actions[bot] commented 4 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.