Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instantly Blown TMC5160 Chip #217

Open
mbrady4597 opened this issue Nov 25, 2024 · 0 comments
Open

Instantly Blown TMC5160 Chip #217

mbrady4597 opened this issue Nov 25, 2024 · 0 comments

Comments

@mbrady4597
Copy link

After configuring using autotune as outlined in the guide, one of my TMC5160 drivers overheated and popped on first movement. I have FYSETC TMC5160 QHV chips running at 50V, on a BTT Octopus Pro V1.0 F429 board and powering LDO 42STH48-2804AH motors. The place the chip blew seems to be a common location when used with high voltage. Searches elsewhere seem to indicate that the breakout boards used with the chips do not adequately protect the onboard voltage regulator under all circumstances. https://www.reddit.com/r/VORONDesign/comments/uakvt8/there_are_reports_stepper_drivers_popping_they/

Referring to the tmc5160 datasheet, the voltage regulator must reduce the supplied voltage down to 11.5V and overheating can be exacerbated by high PWM freq, high clock freq, and high supply voltage. I believe the settings that autotune produced caused the malfunction. A notable difference from my previous settings was pwm_freq = 2 instead of 0. I can't say this was the cause for certain, but this would put the freq toward the edge of the recommended range from the datasheet.

My previous driver settings (using 64 microsteps and same for x and y):

[tmc5160 stepper_x]
cs_pin: x_uart_pin
spi_software_mosi_pin: stepper_spi_mosi_pin
spi_software_miso_pin: stepper_spi_miso_pin
spi_software_sclk_pin: stepper_spi_sclk_pin
stealthchop_threshold: 0
interpolate: True
run_current: 2.0 #max 2.8
driver_TBL: 0
driver_TOFF: 4
driver_HEND: 0
driver_HSTRT: 4

This is the report that came up in the klippy.log:

TMC 'stepper_y' reports DRV_STATUS: ffffffff sg_result=1023 s2vsa=1(ShortToSupply_A!) s2vsb=1(ShortToSupply_B!) stealth=1 fsactive=1 cs_actual=31 stallguard=1 ot=1(OvertempError!) otpw=1(OvertempWarning!) s2ga=1(ShortToGND_A!) s2gb=1(ShortToGND_B!) ola=1(OpenLoad_A!) olb=1(OpenLoad_B!) stst=1
Transition to shutdown state: TMC 'stepper_y' reports error: DRV_STATUS: ffffffff sg_result=1023 s2vsa=1(ShortToSupply_A!) s2vsb=1(ShortToSupply_B!) stealth=1 fsactive=1 cs_actual=31 stallguard=1 ot=1(OvertempError!) otpw=1(OvertempWarning!) s2ga=1(ShortToGND_A!) s2gb=1(ShortToGND_B!) ola=1(OpenLoad_A!) olb=1(OpenLoad_B!) stst=1

The settings also caused undervoltage reports on all steppers (Z steppers are LDO 42STH48-2504AC):

TMC 'stepper_z' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_z' reports GSTAT: 00000000
TMC 'stepper_z1' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_z1' reports GSTAT: 00000000
TMC 'stepper_z2' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_z2' reports GSTAT: 00000000
TMC 'stepper_x' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_x' reports GSTAT: 00000000
TMC 'stepper_x1' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_y' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_x1' reports GSTAT: 00000000
TMC 'stepper_y' reports GSTAT: 00000000
TMC 'stepper_y1' reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC 'stepper_y1' reports GSTAT: 00000000

The following are the full settings from klippy.log:

autotune_tmc set stepper_x pwm_freq=2
autotune_tmc stepper_x ncycles=219 pfdcycles=73
autotune_tmc set stepper_x tpfd=1
autotune_tmc set stepper_x tbl=1
autotune_tmc set stepper_x toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.166667, dcoilsd = 0.019661
hysteresis = 33, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_x hstrt=7
autotune_tmc set stepper_x hend=9
autotune_tmc using max PWM speed 440.177100
autotune_tmc set stepper_x pwm_autoscale=True
autotune_tmc set stepper_x pwm_autograd=True
autotune_tmc set stepper_x pwm_grad=4
autotune_tmc set stepper_x pwm_ofs=13
autotune_tmc set stepper_x pwm_reg=15
autotune_tmc set stepper_x pwm_lim=4
autotune_tmc set stepper_x tpwmthrs=1048575
autotune_tmc set stepper_x en_pwm_mode=False
autotune_tmc set stepper_x tcoolthrs=313(30.0)
autotune_tmc set stepper_x sgt=1
autotune_tmc set stepper_x small_hysteresis=False
autotune_tmc set stepper_x semin=2
autotune_tmc set stepper_x semax=4
autotune_tmc set stepper_x seup=3
autotune_tmc set stepper_x sedn=2
autotune_tmc set stepper_x seimin=1
autotune_tmc set stepper_x sfilt=0
autotune_tmc set stepper_x iholddelay=12
autotune_tmc set stepper_x thigh=18(528.2125197015589)
autotune_tmc set stepper_x vhighfs=False
autotune_tmc set stepper_x vhighchm=False
autotune_tmc set stepper_x multistep_filt=True

autotune_tmc set stepper_x1 pwm_freq=2
autotune_tmc stepper_x1 ncycles=219 pfdcycles=73
autotune_tmc set stepper_x1 tpfd=1
autotune_tmc set stepper_x1 tbl=1
autotune_tmc set stepper_x1 toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.166667, dcoilsd = 0.019661
hysteresis = 33, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_x1 hstrt=7
autotune_tmc set stepper_x1 hend=9
autotune_tmc using max PWM speed 440.177100
autotune_tmc set stepper_x1 pwm_autoscale=True
autotune_tmc set stepper_x1 pwm_autograd=True
autotune_tmc set stepper_x1 pwm_grad=4
autotune_tmc set stepper_x1 pwm_ofs=13
autotune_tmc set stepper_x1 pwm_reg=15
autotune_tmc set stepper_x1 pwm_lim=4
autotune_tmc set stepper_x1 tpwmthrs=1048575
autotune_tmc set stepper_x1 en_pwm_mode=False
autotune_tmc set stepper_x1 tcoolthrs=313(30.0)
autotune_tmc set stepper_x1 sgt=1
autotune_tmc set stepper_x1 small_hysteresis=False
autotune_tmc set stepper_x1 semin=2
autotune_tmc set stepper_x1 semax=4
autotune_tmc set stepper_x1 seup=3
autotune_tmc set stepper_x1 sedn=2
autotune_tmc set stepper_x1 seimin=1
autotune_tmc set stepper_x1 sfilt=0
autotune_tmc set stepper_x1 iholddelay=12
autotune_tmc set stepper_x1 thigh=18(528.2125197015589)
autotune_tmc set stepper_x1 vhighfs=False
autotune_tmc set stepper_x1 vhighchm=False
autotune_tmc set stepper_x1 multistep_filt=True
autotune_tmc set stepper_y pwm_freq=2
autotune_tmc stepper_y ncycles=219 pfdcycles=73
autotune_tmc set stepper_y tpfd=1
autotune_tmc set stepper_y tbl=1
autotune_tmc set stepper_y toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.166667, dcoilsd = 0.019661
hysteresis = 33, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_y hstrt=7
autotune_tmc set stepper_y hend=9
autotune_tmc using max PWM speed 440.177100
autotune_tmc set stepper_y pwm_autoscale=True
autotune_tmc set stepper_y pwm_autograd=True
autotune_tmc set stepper_y pwm_grad=4
autotune_tmc set stepper_y pwm_ofs=13
autotune_tmc set stepper_y pwm_reg=15
autotune_tmc set stepper_y pwm_lim=4
autotune_tmc set stepper_y tpwmthrs=1048575
autotune_tmc set stepper_y en_pwm_mode=False
autotune_tmc set stepper_y tcoolthrs=313(30.0)
autotune_tmc set stepper_y sgt=1
autotune_tmc set stepper_y small_hysteresis=False
autotune_tmc set stepper_y semin=2
autotune_tmc set stepper_y semax=4
autotune_tmc set stepper_y seup=3
autotune_tmc set stepper_y sedn=2
autotune_tmc set stepper_y seimin=1
autotune_tmc set stepper_y sfilt=0
autotune_tmc set stepper_y iholddelay=12
autotune_tmc set stepper_y thigh=18(528.2125197015589)
autotune_tmc set stepper_y vhighfs=False
autotune_tmc set stepper_y vhighchm=False
autotune_tmc set stepper_y multistep_filt=True
autotune_tmc set stepper_y1 pwm_freq=2
autotune_tmc stepper_y1 ncycles=219 pfdcycles=73
autotune_tmc set stepper_y1 tpfd=1
autotune_tmc set stepper_y1 tbl=1
autotune_tmc set stepper_y1 toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.166667, dcoilsd = 0.019661
hysteresis = 33, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_y1 hstrt=7
autotune_tmc set stepper_y1 hend=9
autotune_tmc using max PWM speed 440.177100
autotune_tmc set stepper_y1 pwm_autoscale=True
autotune_tmc set stepper_y1 pwm_autograd=True
autotune_tmc set stepper_y1 pwm_grad=4
autotune_tmc set stepper_y1 pwm_ofs=13
autotune_tmc set stepper_y1 pwm_reg=15
autotune_tmc set stepper_y1 pwm_lim=4
autotune_tmc set stepper_y1 tpwmthrs=1048575
autotune_tmc set stepper_y1 en_pwm_mode=False
autotune_tmc set stepper_y1 tcoolthrs=313(30.0)
autotune_tmc set stepper_y1 sgt=1
autotune_tmc set stepper_y1 small_hysteresis=False
autotune_tmc set stepper_y1 semin=2
autotune_tmc set stepper_y1 semax=4
autotune_tmc set stepper_y1 seup=3
autotune_tmc set stepper_y1 sedn=2
autotune_tmc set stepper_y1 seimin=1
autotune_tmc set stepper_y1 sfilt=0
autotune_tmc set stepper_y1 iholddelay=12
autotune_tmc set stepper_y1 thigh=18(528.2125197015589)
autotune_tmc set stepper_y1 vhighfs=False
autotune_tmc set stepper_y1 vhighchm=False
autotune_tmc set stepper_y1 multistep_filt=True
autotune_tmc set stepper_z pwm_freq=2
autotune_tmc stepper_z ncycles=219 pfdcycles=73
autotune_tmc set stepper_z tpfd=1
autotune_tmc set stepper_z tbl=1
autotune_tmc set stepper_z toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.066667, dcoilsd = 0.007654
hysteresis = 21, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_z hstrt=7
autotune_tmc set stepper_z hend=9
autotune_tmc using max PWM speed 28.127019
autotune_tmc set stepper_z pwm_autoscale=True
autotune_tmc set stepper_z pwm_autograd=True
autotune_tmc set stepper_z pwm_grad=5
autotune_tmc set stepper_z pwm_ofs=12
autotune_tmc set stepper_z pwm_reg=15
autotune_tmc set stepper_z pwm_lim=4
autotune_tmc set stepper_z tpwmthrs=0
autotune_tmc set stepper_z en_pwm_mode=True
autotune_tmc set stepper_z tcoolthrs=313(3.0)
autotune_tmc set stepper_z sgt=1
autotune_tmc set stepper_z small_hysteresis=False
autotune_tmc set stepper_z semin=2
autotune_tmc set stepper_z semax=4
autotune_tmc set stepper_z seup=3
autotune_tmc set stepper_z sedn=2
autotune_tmc set stepper_z seimin=1
autotune_tmc set stepper_z sfilt=0
autotune_tmc set stepper_z iholddelay=12
autotune_tmc set stepper_z thigh=28(33.75242284043395)
autotune_tmc set stepper_z vhighfs=False
autotune_tmc set stepper_z vhighchm=False
autotune_tmc set stepper_z multistep_filt=True
autotune_tmc set stepper_z1 pwm_freq=2
autotune_tmc stepper_z1 ncycles=219 pfdcycles=73
autotune_tmc set stepper_z1 tpfd=1
autotune_tmc set stepper_z1 tbl=1
autotune_tmc set stepper_z1 toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.066667, dcoilsd = 0.007654
hysteresis = 21, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_z1 hstrt=7
autotune_tmc set stepper_z1 hend=9
autotune_tmc using max PWM speed 28.127019
autotune_tmc set stepper_z1 pwm_autoscale=True
autotune_tmc set stepper_z1 pwm_autograd=True
autotune_tmc set stepper_z1 pwm_grad=5
autotune_tmc set stepper_z1 pwm_ofs=12
autotune_tmc set stepper_z1 pwm_reg=15
autotune_tmc set stepper_z1 pwm_lim=4
autotune_tmc set stepper_z1 tpwmthrs=0
autotune_tmc set stepper_z1 en_pwm_mode=True
autotune_tmc set stepper_z1 tcoolthrs=313(3.0)
autotune_tmc set stepper_z1 sgt=1
autotune_tmc set stepper_z1 small_hysteresis=False
autotune_tmc set stepper_z1 semin=2
autotune_tmc set stepper_z1 semax=4
autotune_tmc set stepper_z1 seup=3
autotune_tmc set stepper_z1 sedn=2
autotune_tmc set stepper_z1 seimin=1
autotune_tmc set stepper_z1 sfilt=0
autotune_tmc set stepper_z1 iholddelay=12
autotune_tmc set stepper_z1 thigh=28(33.75242284043395)
autotune_tmc set stepper_z1 vhighfs=False
autotune_tmc set stepper_z1 vhighchm=False
autotune_tmc set stepper_z1 multistep_filt=True
autotune_tmc set stepper_z2 pwm_freq=2
autotune_tmc stepper_z2 ncycles=219 pfdcycles=73
autotune_tmc set stepper_z2 tpfd=1
autotune_tmc set stepper_z2 tbl=1
autotune_tmc set stepper_z2 toff=1
autotune_tmc seting hysteresis based on 50.0 V
dcoilblank = 0.066667, dcoilsd = 0.007654
hysteresis = 21, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set stepper_z2 hstrt=7
autotune_tmc set stepper_z2 hend=9
autotune_tmc using max PWM speed 28.127019
autotune_tmc set stepper_z2 pwm_autoscale=True
autotune_tmc set stepper_z2 pwm_autograd=True
autotune_tmc set stepper_z2 pwm_grad=5
autotune_tmc set stepper_z2 pwm_ofs=12
autotune_tmc set stepper_z2 pwm_reg=15
autotune_tmc set stepper_z2 pwm_lim=4
autotune_tmc set stepper_z2 tpwmthrs=0
autotune_tmc set stepper_z2 en_pwm_mode=True
autotune_tmc set stepper_z2 tcoolthrs=313(3.0)
autotune_tmc set stepper_z2 sgt=1
autotune_tmc set stepper_z2 small_hysteresis=False
autotune_tmc set stepper_z2 semin=2
autotune_tmc set stepper_z2 semax=4
autotune_tmc set stepper_z2 seup=3
autotune_tmc set stepper_z2 sedn=2
autotune_tmc set stepper_z2 seimin=1
autotune_tmc set stepper_z2 sfilt=0
autotune_tmc set stepper_z2 iholddelay=12
autotune_tmc set stepper_z2 thigh=28(33.75242284043395)
autotune_tmc set stepper_z2 vhighfs=False
autotune_tmc set stepper_z2 vhighchm=False
autotune_tmc set stepper_z2 multistep_filt=True
autotune_tmc set extruder pwm_freq=2
autotune_tmc extruder ncycles=219 pfdcycles=73
autotune_tmc set extruder tbl=1
autotune_tmc set extruder toff=1
autotune_tmc seting hysteresis based on 24.0 V
dcoilblank = 0.030000, dcoilsd = 0.005301
hysteresis = 25, htotal = 14, hstrt = 8, hend = 6
autotune_tmc set extruder hstrt=7
autotune_tmc set extruder hend=9
autotune_tmc set extruder sgthrs=40
autotune_tmc using max PWM speed 330.532986
autotune_tmc set extruder pwm_autoscale=True
autotune_tmc set extruder pwm_autograd=True
autotune_tmc set extruder pwm_grad=5
autotune_tmc set extruder pwm_ofs=19
autotune_tmc set extruder pwm_reg=15
autotune_tmc set extruder pwm_lim=4
autotune_tmc set extruder tpwmthrs=0
autotune_tmc set extruder en_spreadcycle=False
autotune_tmc set extruder tcoolthrs=63(16.5)
autotune_tmc set extruder semin=2
autotune_tmc set extruder semax=4
autotune_tmc set extruder seup=3
autotune_tmc set extruder sedn=2
autotune_tmc set extruder seimin=1
autotune_tmc set extruder iholddelay=12
autotune_tmc set extruder multistep_filt=True

I have since disabled autotune, instead copying and pasting some selected settings into my config file with a change to pwm_freq = 0. I also reduced the drive voltage to 41.6V which is the minimum the power supply can be set to to give an extra margin of safety. Steppers have since run fine. Given that this is a problem common to most of the HV 5160 boards out there (has been reported on the BTT tmc5160 pro, FYSETC tmc5160 QHV and Watertott boards), I recommend reviewing the autotune program or soliciting more hardware testing before publishing code that could cause damage or fires. Again, I can't say for sure that the pwm_freq setting caused my failure, but evidence and documentation points to that possibility, and my settings which worked previously prove that I had a functional driver.

New driver settings (same for x and y):

[tmc5160 stepper_x]
cs_pin: x_uart_pin
spi_software_mosi_pin: stepper_spi_mosi_pin
spi_software_miso_pin: stepper_spi_miso_pin
spi_software_sclk_pin: stepper_spi_sclk_pin
stealthchop_threshold: 0
interpolate: True
run_current: 2.0 #max 2.8
driver_TBL: 1
driver_TOFF: 1
driver_HEND: 9
driver_HSTRT: 7
driver_TPFD: 1
driver_PWM_FREQ: 0
driver_PWM_GRAD: 4
driver_PWM_OFS: 13
driver_PWM_REG: 15
driver_PWM_LIM: 4
driver_SEMIN: 2
driver_SEUP: 3
driver_SEMAX: 4
driver_SEDN: 2
driver_SEIMIN: 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant