Extruder driver always stops/resets at same location
-
Hi,
I have a very strange problem. I'm trying to print a Benchy but somehow the extruder motor always stops working at the exact same location. tried with both Cura and PrusaSlicer. Same problem, just different location. So when the motor stops, I can't even make it turn anymore via the Web Control. No error message, nothing. The print continues as normal, heater works fine too but the motor won't turn anymore. I have to reset the Duet 3. And then it works fine again. No clogging or anything. I assume the driver decided to reset mid print.
But first a few information about the printer:
- Duet 3 6HC
- RRF 3.2
- IDEX with Markforged kinematics (like the Haq XY)
- Bondtech BMG Extruder
- Hotend Copperhead
- Extruder Motor Nema 17 42x42x20
- PSU Mean Well RSP-500-24
- config.g
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.2 on Fri Jan 22 2021 17:41:49 GMT+0100 (Central European Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"MyPrinter" ; set printer name ;M669 K1 ; select CoreXY mode M669 X1:1:0:1 ; M669 Y0:-1:0:0 ; M669 Z0:0:1:0 ; M669 A0:0:0:1 ; ; Drives M569 P0.0 S1 ; physical drive 0.0 goes forwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S0 ; physical drive 0.2 goes forwards M569 P0.3 S0 ; physical drive 0.3 goes forwards M569 P0.4 S0 ; physical drive 0.4 goes forwards M569 P0.5 S1 ; physical drive 0.5 goes forwards M584 X0.0 Y0.1 Z0.2 A0.3 E0.4:0.5 ; set drive mapping M915 X Y Z A S5 R2 ; Motor stall detection M350 X16 Y16 Z16 A16 E16:16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z1066.67 A80.00 E415.00:415.00 ; set steps per mm M566 X300.00 Y300.00 Z120.00 A300.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X8400.00 Y8400.00 Z750.00 A8400.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z40.00 A1000.00 E250.00:250.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1400 A1000 E1000:1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-283 Y-198 Z0 A-256.2 S1 ; set axis minima M208 X222 Y251 Z390 A194 S0 ; set axis maxima ; Endstops M574 X2 S1 P"!io0.in" ; Endstop X-Axis high end microswitch-type M574 Y2 S1 P"!io1.in" ; Endstop Y-Axis high end microswitch-type M574 Z1 S2 ; Endstop Z-Axis low end M574 A1 S1 P"!io3.in" ; Endstop A-Axis low end microswitch-type ; Z-Probe M558 A5 S0.03 P8 C"io2.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X2 Y-22 Z1.5 ; set Z probe trigger value, offset and trigger height M557 X-150:150 Y-190:190 S60:76 ; define mesh grid ; Heaters M308 S1 P"temp1" Y"pt1000" R2200 ; configure sensor 1 as PT1000 on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 R2.325 C143.1 D11.28 S1.00 V23.9 B0 ; disable bang-bang mode for heater 1 and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C M308 S2 P"temp2" Y"pt1000" R2200 ; configure sensor 2 as PT1000 on pin temp2 M950 H2 C"out2" T2 ; create nozzle heater output on out2 and map it to sensor 2 M307 H2 R2.444 C136.0 D8.23 S1.00 V23.9 B0 ; disable bang-bang mode for heater 2 and set PWM limit M143 H2 S280 ; set temperature limit for heater 2 to 280C ; Fans ; Blowers M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out8" Q500 ; create fan 0 on pin out7 and set its frequency M106 P1 S0 H-1 ; set fan 0 value. Thermostatic control is turned off ; Heatsink fans M950 F4 C"out4" Q500 ; create fan 1 on pin out4 and set its frequency M106 P4 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F5 C"out5" Q500 ; create fan 3 on pin out5 and set its frequency M106 P5 S1 H2 T45 ; set fan 3 value. Thermostatic control is turned on ; LEDs M950 F8 C"out3" Q500 ; create LED on pin out3 and set its pwm frequency M106 P8 S0 H-1 ; set LED value. Thermostatic control is turned off ; Tools M563 P0 S"PH 1" D0 H1 F0 ; define tool 0 (Print Head 1) G10 P0 X0 Y0 Z0 R0 S0 ; set tool 0 axis offsets M563 P1 S"PH 4" D1 H2 Y3 F1 ; define tool 1 (Print Head 4) G10 P1 X0.2 Z0 A0 R0 S0 ; set tool 1 axis offsets M563 P2 S"PH 1+4 D" D0:1 H1:2 Y1:3 F0:1 ; define tool 2 (Duplicate) G10 P2 X0 Y0 A200 S0 R0 ; set tool offsets and temperatures M567 P2 E1:1 ; set mix ratio 100% on both extruders M563 P3 S"PH 1+4 M" D0:1 H1:2 Y1:3 F0:1 ; define tool 3 (Mirror) G10 P3 X0 Y0 A0 S0 R0 ; set tool offsets and temperatures M567 P3 E1:1 ; set mix ratio 100% on both extruders ; Custom settings are not defined ; Miscellaneous ;M575 P1 S1 B57600 ; enable support for PanelDue T0 P0 ; select first tool
Both print heads are identical and strangely, the other print head has no problems printing the exact same G-code.
Things I have already tried but didn't solve the problem:
- Change the slicer (tested both Cura and PrusaSlicer)
- Set retraction to 0.0
- Connect extruder motor to different stepper driver
- Changed the motor (identical one)
- Increase the motor current from 1A to 1.2A
- Run the print job without filament
- Increased acceleration from 250 to 400 m/s^2
- Touching the motor during print in order to do an electrostatic discharge (due to a similar problem reported here which reset the driver (kinda what I am experiencing))
- Tried both absolute and relative extrusion
- Tried different location on print bed (assuming there might be some sort of loose contact which resets the driver and which would be triggered at a different time then)
- Disassembled whole print head checking for clogs or defects
Here's the diagnostic (M122) both shortly before (a few sec) and after the incident. As you can see, the motion drivers (0-3) are still working but the extruder motor driver (DRIVER 4 or 5, dont remember which one since I swapped them at some point) already called it a day.
BEFORE:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.2 running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956BA-NA3TJ-6JTDD-3SS6J-KUB2V Used output buffers: 1 of 40 (12 max) === RTOS === Static ram: 149788 Dynamic ram: 63836 of which 64 recycled Never used RAM 145144, free system stack 124 words Tasks: Linux(ready,101) HEAT(blocked,296) CanReceiv(blocked,927) CanSender(blocked,352) CanClock(blocked,352) TMC(blocked,19) MAIN(running,1189) IDLE(ready,19) Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:04:36 ago, cause: power up Last software reset at 2021-02-01 20:51, reason: User, none spinning, available RAM 144936, slot 0 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task Linu Freestk 0 n/a Error status: 0x00 Aux0 errors 3,3,3 Aux1 errors 0,0,0 MCU temperature: min 7.9, current 15.9, max 17.0 Supply voltage: min 23.8, current 23.9, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0 Driver 0: position 1642, standstill, reads 32301, writes 22 timeouts 0, SG min/max 0/1023 Driver 1: position -18438, standstill, reads 32302, writes 22 timeouts 0, SG min/max 0/1023 Driver 2: position 747, standstill, reads 32302, writes 22 timeouts 0, SG min/max 0/1023 Driver 3: position -7345, ok, reads 32302, writes 22 timeouts 0, SG min/max 0/1023 Driver 4: position 0, ok, reads 32307, writes 17 timeouts 0, SG min/max 0/107 Driver 5: position 0, standstill, reads 32310, writes 14 timeouts 0, SG min/max 0/0 Date/time: 2021-02-01 20:21:24 Slowest loop: 160.84ms; fastest: 0.05ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, maxWait 113316ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 2149, completed moves 2101, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 2 is on, I-accum = 0.7 === GCodes === Segments left: 1 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is doing "G1 X28.612000 Y-115.767998 E0.007980" in state(s) 0 USB is idle in state(s) 0 Aux is assembling a command in state(s) 0 Trigger* is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === CAN === Messages queued 1032, send timeouts 2414, received 0, lost 0, longest wait 0ms for reply type 0, free buffers 48 === SBC interface === State: 4, failed transfers: 0 Last transfer: 1ms ago RX/TX seq numbers: 10239/10239 SPI underruns 0, overruns 0 Number of disconnects: 0, IAP RAM available 0x2c8a8 Buffer RX/TX: 240/1752-0 === Duet Control Server === Duet Control Server v3.2.0 File: Buffered code: G1 X29.052 Y-115.920 E0.01170 Buffered code: G1 X29.248 Y-115.912 E0.00828 Buffered code: G1 X29.419 Y-115.853 E0.00759 Buffered code: G1 X29.572 Y-115.764 E0.00748 Buffered code: G1 X29.703 Y-115.637 E0.00768 Buffered code: G1 X29.813 Y-115.489 E0.00778 Buffered code: G1 X29.907 Y-115.295 E0.00907 Buffered code: G1 X29.998 Y-114.955 E0.01484 Buffered code: G1 X30.115 Y-114.723 E0.01096 Buffered code: G1 X30.223 Y-114.991 E0.01219 Buffered code: G1 X30.352 Y-114.905 E0.00651 Buffered code: G1 X30.464 Y-115.337 E0.01880 Buffered code: G1 X30.583 Y-115.547 E0.01015 Buffered code: G1 X30.845 Y-115.794 E0.01520 Buffered code: G1 X31.096 Y-115.908 E0.01160 Buffered code: G1 X31.372 Y-115.903 E0.01164 Buffered code: G1 X31.545 Y-115.836 E0.00781 Buffered code: G1 X31.696 Y-115.738 E0.00760 Buffered code: G1 X31.919 Y-115.499 E0.01374 Buffered code: G1 X32.000 Y-115.142 E0.01545 Buffered code: G1 X31.955 Y-114.710 E0.01828 Buffered code: G1 X31.638 Y-114.122 E0.02816 Buffered code: G1 X31.267 Y-113.510 E0.03014 Buffered code: G1 X31.194 Y-113.290 E0.00978 Buffered code: G1 X31.230 Y-113.148 E0.00619 Buffered code: G1 X31.955 Y-111.937 E0.05947 Buffered code: G1 X32.086 Y-111.577 E0.01616 Buffered code: G1 X32.103 Y-111.274 E0.01277 Buffered code: G1 X32.036 Y-110.986 E0.01247 Buffered code: G1 X31.878 Y-110.750 E0.01198 ==> 1412 bytes Pending code: G1 X31.655 Y-110.589 E0.01157 Pending code: G1 X31.386 Y-110.504 E0.01191 Code buffer space: 2344 Configured SPI speed: 8000000 Hz Full transfers per second: 39.76 Maximum length of RX/TX data transfers: 3104/1316 File /opt/dsf/sd/gcodes/HSM_3DBenchy_T1_PS.gcode is selected, processing
AFTER:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.2 running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956BA-NA3TJ-6JTDD-3SS6J-KUB2V Used output buffers: 1 of 40 (12 max) === RTOS === Static ram: 149788 Dynamic ram: 63836 of which 64 recycled Never used RAM 145144, free system stack 124 words Tasks: Linux(ready,101) HEAT(blocked,296) CanReceiv(blocked,927) CanSender(blocked,352) CanClock(blocked,352) TMC(blocked,19) MAIN(running,1077) IDLE(ready,19) Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:05:24 ago, cause: power up Last software reset at 2021-02-01 20:51, reason: User, none spinning, available RAM 144936, slot 0 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task Linu Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Aux1 errors 0,0,0 MCU temperature: min 15.7, current 15.8, max 16.1 Supply voltage: min 23.9, current 23.9, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0 Driver 0: position 2312, ok, reads 62866, writes 0 timeouts 0, SG min/max 25/1023 Driver 1: position -17768, ok, reads 62865, writes 0 timeouts 0, SG min/max 25/1023 Driver 2: position 960, standstill, reads 62865, writes 0 timeouts 0, SG min/max 41/1023 Driver 3: position -6196, ok, reads 62866, writes 0 timeouts 0, SG min/max 7/1023 Driver 4: position 0, standstill, reads 62866, writes 0 timeouts 0, SG min/max 0/916 Driver 5: position 0, standstill, reads 62866, writes 0 timeouts 0, SG min/max not available Date/time: 2021-02-01 20:22:12 Slowest loop: 0.54ms; fastest: 0.05ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 2987, completed moves 2951, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 2 is on, I-accum = 0.7 === GCodes === Segments left: 1 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is doing "G1 X42.049999 Y-111.849998 E0.022950" in state(s) 0 USB is idle in state(s) 0 Aux is assembling a command in state(s) 0 Trigger* is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === CAN === Messages queued 189, send timeouts 425, received 0, lost 0, longest wait 0ms for reply type 0, free buffers 48 === SBC interface === State: 4, failed transfers: 0 Last transfer: 1ms ago RX/TX seq numbers: 12285/12285 SPI underruns 0, overruns 0 Number of disconnects: 0, IAP RAM available 0x2c8a8 Buffer RX/TX: 192/1648-0 === Duet Control Server === Duet Control Server v3.2.0 File: Buffered code: G1 X42.050 Y-111.850 E0.02295 Buffered code: G1 X41.634 Y-111.330 E0.02140 Buffered code: G1 X41.232 Y-110.868 E0.01971 Buffered code: G1 X40.759 Y-110.369 E0.02208 Buffered code: G1 X40.213 Y-109.845 E0.02434 Buffered code: G1 X39.739 Y-109.431 E0.02025 Buffered code: G1 X39.247 Y-109.037 E0.02027 Buffered code: G1 X38.633 Y-108.589 E0.02443 Buffered code: G1 X37.994 Y-108.172 E0.02455 Buffered code: G1 X37.444 Y-107.848 E0.02053 Buffered code: G1 X36.509 Y-107.364 E0.03385 Buffered code: G1 X35.564 Y-106.955 E0.03311 Buffered code: G1 X34.672 Y-106.637 E0.03045 Buffered code: G1 X33.712 Y-106.363 E0.03212 Buffered code: G1 X32.742 Y-106.153 E0.03190 Buffered code: G1 X31.798 Y-106.012 E0.03069 Buffered code: G1 X30.903 Y-105.934 E0.02889 Buffered code: G1 X29.960 Y-105.910 E0.03033 Buffered code: G1 X29.078 Y-105.940 E0.02838 Buffered code: G1 X5.654 Y-107.415 E0.75472 Buffered code: G1 X5.312 Y-107.471 E0.01116 Buffered code: G1 X5.113 Y-107.539 E0.00674 Buffered code: G1 X4.931 Y-107.631 E0.00659 Buffered code: G1 X4.678 Y-107.823 E0.01019 Buffered code: G1 X4.543 Y-107.972 E0.00645 Buffered code: G1 X4.427 Y-108.144 E0.00669 Buffered code: G1 X4.334 Y-108.335 E0.00683 Buffered code: G1 X4.266 Y-108.542 E0.00701 Buffered code: G1 X4.213 Y-108.942 E0.01297 Buffered code: G1 X4.543 Y-109.222 F6900.000 Buffered code: G1 X10.573 Y-108.774 ==> 1468 bytes Code buffer space: 2448 Configured SPI speed: 8000000 Hz Full transfers per second: 43.44 Maximum length of RX/TX data transfers: 3104/1316 File /opt/dsf/sd/gcodes/HSM_3DBenchy_T1_PS.gcode is selected, processing
The strange thing is there is no error message in the console at all. The good thing is the error happens quite early in the G-Code, so I can test a lot of things easily. The bad thing is, I am kinda running out of options.
So I hoped that you guys might have a few ideas what else I could try.
-
Also note that the faulty print head worked fine before and I already printed Benchy's with it. The problems arised after the hotend clogged a while ago (due to too high retraction settings) and I had to disassemble the print head.
Here's also the G-Code for the Benchy. Since the problem always appears in the first layer (after the skirt), I shorted it a bit.
-
Most likely it's either a bad crimp on the extruder cable, or a bad output from the Duet. Try swapping the extruder motor connections where they plug into the Duet, and swap them in M584 too. Then see whether the fault stays with the extruder or with the driver.
-
@dc42 said in Extruder driver always stops/resets at same location:
Try swapping the extruder motor connections where they plug into the Duet, and swap them in M584 too. Then see whether the fault stays with the extruder or with the driver.
Thanks for the quick answer! I already tested the motor with both driver 4 and 5. And the other print head is also connected to one of these drivers but works fine. So I think we can rule out a faulty driver.
But I will check the crimps again (already did a quick continuity test and they all seemed to work).
-
Try sending M84 E0 E1 to the extruders when stucj and see if they start responding after? Long shot but I had a stubborn E drive after doing a dynamic swap and that is the bodge fix for my problem!
-
Can you update to 3.2.2 by uploading this zip file to the system tab in DWC?
https://github.com/Duet3D/RepRapFirmware/releases/download/3.2.2/Duet2and3Firmware-3.2.2.zip
-
I checked the crimps, switched the drivers again, tried M84 (executes without error message but motor still doesnt respond after that) and also updated the firmware. Nothing. Problem still persisted.
Fortunately, I think I have found the problem and seems like it's the G-code which would be logical since the reset always happens at the exact same location in the G-code. And the reason for the "bad" G-code is an .stl file with a bad mesh. Funnily enough, it is one of the most downloaded files on thingiverse: the Benchy. After I fixed the mesh in PrusaSlicer, the Benchy printed just fine. The reason why this also happened in Cura is because I am not sure if Cura fixes the mesh sufficiently.
May it be possible that this is also a firmware problem? Considering how often the Benchy is printed with a faulty mesh and without mesh fixing, most firmwares probably still somehow manage to deal with this.