Issue:
After powering the PSU off and on again with the board remaining powered via the RPi, when stepper movement is requested the extruder driver (at least) seems to be at full power and it becomes very hot does the stepper motor.
I’ve had driver thermal shutdowns on a non heatsink’ed driver and some stepper motors are rated well below the full power of a TMC2209 thus risking to be damaged.
The Duet 3 Mini 5+ is “different” from other boards as the enable pin is shared with all the drivers so when a X move is requested for example, the extruder driver is enabled.
Homing is not an issue to the other drivers because when asked to move, their settings are correct, only drivers that are not asked to move will wake up from the ENABLE pin and not be correct.
How to replicate:
- Have RPi and PSU connected to board
- Disconnect PSU
- Connect PSU
- Move X, home for ex
- Extruder driver will go temperature sky high
A thermistor on a heatsink on top of the extruder driver:
The peak was stopped when i asked a move of the extruder driver (0.1mm was enough)
Setup:
- Duet 3 Mini 5+ v0.9.1-759-gdcf8cb82
- Raspberry Pi 3B v0.9.1-759-gdcf8cb82
I did some DUMP_TMC STEPPER=extruder
At boot:
// ========== Write-only registers ==========
// SLAVECONF: 00000200 senddelay=2
// IHOLD_IRUN: 00080a03 ihold=3 irun=10 iholddelay=8
// TPOWERDOWN: 00000014 tpowerdown=20
// SGTHRS: 00000000
// ========== Queried registers ==========
// GCONF: 000001c4 en_spreadcycle=1 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
// GSTAT: 00000001 reset=1(Reset)
// IFCNT: 00000007 ifcnt=7
// OTP_READ: 0000000c otp_fclktrim=12
// IOIN: 21000049 enn=1 ms2=1 pdn_uart=1 version=0x21
// FACTORY_CONF: 0000000c fclktrim=12
// TSTEP: 000fffff tstep=1048575
// MSCNT: 00000008 mscnt=8
// MSCURACT: 00f7000c cur_a=12 cur_b=247
// CHOPCONF: 14030050 hstrt=5 tbl=2 vsense=1 mres=4(16usteps) intpol=1
// DRV_STATUS: 80030000 cs_actual=3 stst=1
// PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12
// PWM_SCALE: 00000004 pwm_scale_sum=4
// PWM_AUTO: 000e0024 pwm_ofs_auto=36 pwm_grad_auto=14
// SG_RESULT: 00000000
When the driver is getting hot:
// ========== Write-only registers ==========
// SLAVECONF: 00000200 senddelay=2
// IHOLD_IRUN: 00080a03 ihold=3 irun=10 iholddelay=8
// TPOWERDOWN: 00000014 tpowerdown=20
// SGTHRS: 00000000
// ========== Queried registers ==========
// GCONF: 000001c4 en_spreadcycle=1 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
// GSTAT: 00000000
// IFCNT: 00000009 ifcnt=9
// OTP_READ: 0000000c otp_fclktrim=12
// IOIN: 21000248 ms2=1 pdn_uart=1 dir=1 version=0x21
// FACTORY_CONF: 0000000c fclktrim=12
// TSTEP: 000fffff tstep=1048575
// MSCNT: 00000007 mscnt=7
// MSCURACT: 00f7000a cur_a=10 cur_b=247
// CHOPCONF: 14030053 toff=3 hstrt=5 tbl=2 vsense=1 mres=4(16usteps) intpol=1
// DRV_STATUS: 801a01c1 otpw=1(OvertempWarning!) ola=1(OpenLoad_A!) olb=1(OpenLoad_B!) t120=1 cs_actual=26 stst=1
// PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12
// PWM_SCALE: 00000071 pwm_scale_sum=113
// PWM_AUTO: 000e0086 pwm_ofs_auto=134 pwm_grad_auto=14
// SG_RESULT: 00000000
Note CS_ACTUAL or actual motor current set to 26, when normally it is 3
After moving the extruder 0.1mm:
// ========== Write-only registers ==========
// SLAVECONF: 00000200 senddelay=2
// IHOLD_IRUN: 00080a03 ihold=3 irun=10 iholddelay=8
// TPOWERDOWN: 00000014 tpowerdown=20
// SGTHRS: 00000000
// ========== Queried registers ==========
// GCONF: 000001c4 en_spreadcycle=1 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
// GSTAT: 00000000
// IFCNT: 00000009 ifcnt=9
// OTP_READ: 0000000c otp_fclktrim=12
// IOIN: 21000048 ms2=1 pdn_uart=1 version=0x21
// FACTORY_CONF: 0000000c fclktrim=12
// TSTEP: 000fffff tstep=1048575
// MSCNT: 000001d8 mscnt=472
// MSCURACT: 010f003b cur_a=59 cur_b=-241
// CHOPCONF: 14030053 toff=3 hstrt=5 tbl=2 vsense=1 mres=4(16usteps) intpol=1
// DRV_STATUS: 80030000 cs_actual=3 stst=1
// PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12
// PWM_SCALE: 00000010 pwm_scale_sum=16
// PWM_AUTO: 000e0086 pwm_ofs_auto=134 pwm_grad_auto=14
// SG_RESULT: 00000002 sg_result=2
Attached klippy.log:
klippy (18).log (654.6 KB)
I asked on Discord for other boards with shared ENABLE Pin and was told the Duet 2. I have one around and might test to see if it happens also.