Duet 3 Mini 5+ motor driver stop working
-
hi, I've tried 3 times to print a long job and all the time somewhere in the middle it fails. I've thought is something wrong with the slicer parameters but while watching the printing process I've noted on motor axis stop moving (it's a core XY printer).
I've paused the print and checked wiring, connections, possible shortcuts but nothing. all drivers work fine except one. If I try to jog the axis the motor connected to "drive 0.1" doesn't move.
here the output of the M122 comand (the printer is still in pause), the faulty driver is the "driver 1". I cannot figure out how to "re-energize" the driver... I must deliver a big print beginning next week and I'm stuck with no clue how to solve this, if someone can give me some advice... thanks
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.4.5 (2022-11-30 19:41:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: XLJ3H-7396U-D65J0-40KMA-M313Z-7GVXS Used output buffers: 1 of 40 (28 max) === RTOS === Static ram: 103652 Dynamic ram: 110420 of which 48 recycled Never used RAM 27136, free system stack 120 words Tasks: NETWORK(notifyWait,58.4%,199) HEAT(notifyWait,0.1%,336) Move(notifyWait,2.6%,258) CanReceiv(notifyWait,0.1%,772) CanSender(notifyWait,0.0%,326) CanClock(delaying,0.0%,339) TMC(notifyWait,2.8%,72) MAIN(running,32.3%,417) IDLE(ready,0.2%,30) AIN(delaying,3.4%,263), total 100.0% Owned mutexes: === Platform === Last reset 02:08:08 ago, cause: software Last software reset at 2023-10-25 08:49, reason: User, GCodes spinning, available RAM 27664, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 7689200, completed 7689199, timed out 0, errs 0 Step timer max interval 1491 MCU temperature: min 33.3, current 43.4, max 48.6 Supply voltage: min 24.0, current 24.0, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 15 queued, 15 completed Driver 0: standstill, SG min 0, read errors 0, write errors 1, ifcnt 25, reads 11406, writes 13, timeouts 1, DMA errors 0, CC errors 0, failedOp 0x71 Driver 1: standstill, SG min 0, read errors 0, write errors 1, ifcnt 26, reads 11406, writes 14, timeouts 0, DMA errors 0, CC errors 1 Driver 2: standstill, SG min 0, read errors 0, write errors 1, ifcnt 25, reads 11407, writes 13, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 1, ifcnt 19, reads 11410, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 19, reads 11411, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2023-10-25 10:57:19 Cache data hit count 4294967295 Slowest loop: 273.14ms; fastest: 0.07ms === Storage === Free file entries: 9 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 6.8ms, write time 119.4ms, max retries 0 === Move === DMs created 83, segments created 19, maxWait 450760ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 7136, completed 7136, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 60], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.2 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle 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 76132, received 153824, lost 0, boc 0 Longest wait 3ms for reply type 6053, peak Tx sync delay 275, free buffers 18 (min 13), ts 38445/38444/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 274.22ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = WiFi = Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.27 WiFi MAC address f0:08:d1:02:eb:b4 WiFi Vcc 3.38, reset reason Power up WiFi flash size 2097152, free heap 22480 WiFi IP address 192.168.1.184 WiFi signal strength -48dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
-
if I send a "M98 P"config.g" the driver come back "on", what can it be? in the middle of a printing process this is a mess!! thankss
-
@Jiarko said in Duet 3 Mini 5+ motor driver stop working:
Driver 0: standstill, SG min 0, read errors 0, write errors 1, ifcnt 25, reads 11406, writes 13, timeouts 1, DMA errors 0, CC errors 0, failedOp 0x71 Driver 1: standstill, SG min 0, read errors 0, write errors 1, ifcnt 26, reads 11406, writes 14, timeouts 0, DMA errors 0, CC errors 1
There are certainly some driver errors, but I'm not sure what could be causing them. Can you post your config.g? I've asked @dc42 to take a look at the report.
Ian
-
@droftarts thanks for answering!!
here the config file
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Tue May 02 2023 21:46:45 GMT+0200 (Ora legale dell’Europa centrale) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"ALone" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network M552 S1 ; enable network ;M552 S2 ; enable SSID M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P121.0 S1 ; physical drive 121.0 goes forwards M584 X0.0 Y0.1 Z0.2 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z640.00 E397.00 ; set steps per mm M566 X480.00 Y480.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X12000.00 Y12000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1200 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X490 Y450 Z315 S0 ; set axis maxima ; Endstops M574 X2 S1 P"121.io2.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin io0.in M574 Y2 S1 P"!io2.in" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin io1.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P8 C"121.io0.in" H5 F120 T6000 ; set Z probe type to switch and the dive height + speeds G31 P500 X54.5 Y0 Z0.625 ; set Z probe trigger value, offset and trigger height M557 X20:470 Y20:470 S50 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 ;M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M307 H0 R0.500 K0.349:0.000 D5.16 E1.35 S1.00 B0 M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"121.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 ;M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M307 H1 R3.865 K0.369:0.000 D2.12 E1.35 S1.00 B0 ;V24.1 M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"121.out1" Q500 ; create fan 0 on pin 121.out1 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"121.out2" Q500 ; create fan 1 on pin 121.out2 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C T0 ; Custom settings are not defined
-
it could be that the driver overheated and shut down as a result. Running config.g will probably have disabled and then re-enabled it, which would reset it. However, at 1200mA current I wouldn't expect a driver to overheat unless the board is very badly ventilated.
Did you have any message in the console? Usually an overheating driver triggers a driver error event, pausing the printer; a driver warning sends a message to the console.
Are your motors grounded? It's possible a build up of static is zapping the driver. We sayIt is highly recommended that the stepper motor casings be grounded, especially in belt-driven printers. Otherwise, motion of the belts causes static charge to build up, which eventually arcs over to the windings. Filament motion in extruders can cause static charge to build up on the extruder drive motor too. If the motors are screwed to a metal frame, grounding the frame is sufficient.
Apart from that, you could try turning on logging and see if there are any additional messages there when the fault occurs. See https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m111-set-debug-level
Ian
-
thanks for answering!!
the motors are directly connected to the metal frame, that is grounded.
the board has a small fan ventilating the surrounding ambient, I've thought it could be a problem for long running prints, but no error in console appeared once the motor driver shut down. the print keep working without sending out any warning (that's what puzzled me) without the motor.
the only thing I could add is that: when I've tried to home the axis (recall it is a corexy printer) one motor only worked and I've got a warning message in the console suggesting that maybe there was a bad motor connection. but i'm sure no connection issue. anyhow, once I've sent the M98 command everything turno to be up and running again.
I'll move on and "improve the cooling" of the board and let you know.
thanks again for your kind feedbacks!!
ciao, Andrea
-
@Jiarko It sounds like you have grounding and cooling covered. If you had a message about a bad motor connection, I think redoing the wiring and/or swapping out the motor might be sensible, too. If you suspect the driver may be bad, you could swap the motor connections to driver 3 and/or 4, as they appear to be free according to your config.g. I'd say it would be worth swapping anyway, to see if the fault follows the motor.
Ian
-
@droftarts very good idea!! Thanks!!!
-
@droftarts hi, i've thought to swap motor vs. driver it would be just a matter of physically connect the motor to a different driver and set it accordingly into config file. so I've moved to driver 4 and set in the config the following (driver nomenclature having "base 0")
M569 P0.3 S0
but id doesn't work... what am I missing??
thanks
ciao
Andrea -
@Jiarko is it X or Y you are moving? X (driver 0) appeared to have errors, but Y (driver 1) reported a fault. So assuming you’re moving Y, change the driver assignment in M584 to:
M584 X0.0 Y0.3 Z0.2 E121.0
You may want to move X to driver 4, too.
If the problem reoccurs, please get an M122 report before resetting or running config.g again.
Ian
-
@droftarts when I try to change the settings as you suggested the "home" command doesn't trigger any more the endstop sensor. so I cannot change the driver mapping configurations.
BTW, is there any way to record the errors even after a reset or power down for further investigating?
thanks
ciao -
@Jiarko Post your current config.g and homeall.g files.
It sounds like you may have mixed up the X and Y motors, as this is a CoreXY. Check the movement of the motors; see https://docs.duet3d.com/User_manual/Machine_configuration/Configuration_coreXY#testing-motor-movement
Ian
-
@droftarts here it is, thanks a lot!! please let me know if there is a way to store errors for future readings...
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Tue May 02 2023 21:46:45 GMT+0200 (Ora legale dell’Europa centrale) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"ALone" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network M552 S1 ; enable network ;M552 S2 ; enable SSID M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives315 M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P121.0 S1 ; physical drive 121.0 goes forwards M584 X0.0 Y0.3 Z0.2 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z640.00 E397.00 ; M566 X480.00 Y480.00 Z12.00 E300.00 ; M203 X12000.00 Y12000.00 Z180.00 E3600.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E1000.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1200 E950 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X490 Y450 Z315 S0 ; set axis maxima ; Endstops M574 X2 S1 P"121.io2.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin io0.in M574 Y2 S1 P"!io2.in" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin io1.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P8 C"121.io0.in" H5 F120 T6000 ; set Z probe type to switch and the dive height + speeds G31 P500 X54.5 Y0 Z1.860 ; set Z probe trigger value, offset and trigger height M557 X20:470 Y20:470 S50 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.500 K0.349:0.000 D5.16 E1.35 S1.00 B0 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"121.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 R3.865 K0.369:0.000 D2.12 E1.35 S1.00 B0 ;V24.1 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"121.out1" Q500 ; create fan 0 on pin 121.out1 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"121.out2" Q500 ; create fan 1 on pin 121.out2 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C T0 ; filament monitor setup M591 D0 P3 C"121.io1.in" S1 L25.3 ; filament monitor connected to E0 endstop ; Custom settings are not defined
-
@Jiarko Most likely, your Y motor is running in the wrong direction. You need to add a line for M569 for the new driver (0.3). Because S1 is the default, and you were using S0 on driver 0.1, which was the Y axis driver. So add
M569 P0.3 S0
to config.g, in the Drives section, eg:; Drives315 M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S0 ; physical drive 0.1 goes backwards M569 P121.0 S1 ; physical drive 121.0 goes forwards M584 X0.0 Y0.3 Z0.2 E121.0 ; set drive mapping
Ian