Help needed with Duet 3 6hc TMC5160 StealthChop config
-
Hello I´m trying to switch the board from a SKR Pro 1.1 with TMC5160 (X&Y) used with klipper.
with klipper stealthChop works fine with 100mm/sec.
When I now try to use the Duet 3 with stealthChop it looks like stealthChop work only up to 119 mm/min
when I use a move command like G0 X100 F119, it is verry slow but nothing to hear like on the SKR with klipper.
when I use a move command like G0 X100 F120, i have a strange noise/klicker and over F121 it looks like the drivers goes to spreadcycle.can some one point me in the right direction what I´m doing wrong or what I have overlooked?
Stepper Motors:
X/Y: Moons MS17HA6P4200-06, 0.9deg 56Ncm 2A
Z1/Z2: 42BYGHW811, 1.8deg 48Ncm 2.5A
E: 17HD40005-228, 1.8deg ??Ncm 1,5Aat the moment I use the board standalone.
my System Informations:
Board: Duet 3 MB6HC (MB6HC)
Firmware: RepRapFirmware for Duet 3 MB6HC 3.01-RC12 (2020-05-06b1)
Duet Web Control 2.1.7my running config:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun Feb 09 2020 01:08:02 GMT+0100 (Mitteleuropäische Normalzeit) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"duet3" ; set printer name M667 S1 ; select CoreXY mode ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S1 ; enable Telnet ; Drives M584 X0.0 Y0.1 Z0.2:0.3 E0.4 ; Driver 0 For X, 1 for Y, Z=2:3 U=4, Extruder 4 M569 P0.0 S0 D3 V34 ; physical drive 0 goes forwards D2=Spread cycle (x-achses) M569 P0.1 S0 D3 V34 ; physical drive 1 goes forwards D2=Spread cycle (y-achses) M569 P0.2 S0 D3 V34 ; physical drive 2 goes backwards D2=Spread cycle (Z1) M569 P0.3 S0 D3 V34 ; physical drive 3 goes backwards D2=Spread cycle (Z2) M569 P0.4 S1 D3 V34 ; physical drive 4 goes backwards D2=Spread cycle (extruder) M569 P0.5 S1 D3 V34 ; physical drive 4 goes backwards D2=Spread cycle (empty) M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation - working M92 X200.00 Y200.00 Z400 E412.00 ; set steps per mm M566 X600.00 Y600.00 Z24.00 E300.00 ; set maximum instantaneous speed changes (mm/min) from config file thingiverse ;M203 X14500.00 Y14500.00 Z2500.00 E7000.00 ; set maximum speeds (mm/min) new test Z800 old M203 X12000 Y12000 Z1500 E7000 ; set maximum speeds (mm/min) new test Z800 old M201 X1500 Y1500 Z1400.00 E5000 ; set accelerations (mm/s^2) from config file thingiverse M906 X1600 Y1600 Z650 E800 I50 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M671 X-70:355 Y153:153 S2.5 ; leadscrews at left (connected to Z) and right ; Axis Limits M208 X-31.5 Y-12 Z0 S1 ; set axis minima M208 X315 Y327 Z350 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io0.in" ; configure active-high endstop for low end on X via pin xstop M574 Y2 S1 P"io1.in" ; configure active-high endstop for high end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P9 C"io7.in" H3 F700 T7800 ; BLTouch connected to Z probe IN pin was F600=feedrate T6000=travelspeed M950 S0 C"io7.out" ; create servo/gpio 0 on heater 3 pin on expansion connector G31 P2.55 X26.9 Y-4.4 Z2.975 ; set Z probe trigger value, offset and trigger height M557 X10:290 Y10:290 S40 ; define mesh grid ; Heaters M308 S0 P"TEMP_0" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"OUT0" T0 ; create bed heater output on bedheat and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 100C M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M308 S1 P"TEMP_1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"OUT1" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S285 ; set temperature limit for heater 1 to 260C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"OUT4" Q50 ; create fan 0 on pin fan0 and set its frequency - 12v Partcooling M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"OUT7" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"OUT8" Q500 ; create fan 2 on pin fan1 and set its frequency M106 P2 S1 H1 T45 ; set fan 2 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 ; Custom settings are not defined
the output of M569:
m569 P0 Drive 0 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 56, tpwmthrs 34 (110.3 mm/sec), thigh 200 (18.8 mm/sec) ok m569 P1 Drive 1 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 56, tpwmthrs 34 (110.3 mm/sec), thigh 200 (18.8 mm/sec) ok m569 P2 Drive 2 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 8, tpwmthrs 34 (55.1 mm/sec), thigh 200 (9.4 mm/sec) ok m569 P3 Drive 3 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 8, tpwmthrs 34 (55.1 mm/sec), thigh 200 (9.4 mm/sec) ok m569 P4 Drive 4 runs forwards, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 8, tpwmthrs 34 (53.5 mm/sec), thigh 200 (9.1 mm/sec) ok m569 P5 Drive 5 runs forwards, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 8, tpwmthrs 34 (275.7 mm/sec), thigh 200 (46.9 mm/sec) ok
-
My klipper config:
[mcu] serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_340041000B504D3256313820-if00 [printer] kinematics: corexy max_velocity: 200 max_accel: 1500 #2800 max_z_velocity: 25 max_z_accel: 1400 [stepper_x] step_pin: PE9 dir_pin: PF1 enable_pin: !PF2 step_distance: .005 endstop_pin: PB10 position_endstop: -33 position_max: 310 homing_speed: 50 position_min: -33 [stepper_y] step_pin: PE11 dir_pin: PE8 enable_pin: !PD7 step_distance: .005 endstop_pin: PE12 position_endstop: 338 position_max: 338 homing_speed: 50 position_min: -25 [stepper_z] step_pin: PE13 dir_pin: PC2 enable_pin: !PC0 step_distance: .0025 #endstop_pin: !PG8 endstop_pin: probe:z_virtual_endstop position_endstop: 0.5 position_max: 300 homing_speed: 15 [stepper_z1] step_pin: !PD13 dir_pin: PG9 enable_pin: !PF0 step_distance: .0025 [extruder] step_pin: PE14 dir_pin: PA0 enable_pin: !PC3 step_distance: .002428571428571428 nozzle_diameter: 0.400 filament_diameter: 1.750 heater_pin: PB1 # Heat0 sensor_pin: PF4 # T0 Header sensor_type: ATC Semitec 104GT-2 min_temp: 0 max_temp: 290 #control: pid [tmc5160 extruder] cs_pin: PB3 spi_bus: spi3a #diag1_pin: PE15 microsteps: 16 run_current: 0.800 hold_current: 0.500 stealthchop_threshold: 70 [heater_bed] heater_pin: PD12 sensor_pin: PF3 # Bed sensor_type: EPCOS 100K B57560G104F #control: pid min_temp: 0 max_temp: 130 [fan] pin: PE5 max_power: .7 kick_start_time: 0.100 off_below: 0.1 [heater_fan fan1] pin: PC8 heater_temp: 60.0 [bltouch] sensor_pin: PG8 control_pin: PA1 z_offset: 3.0 #2.55 x_offset: 26.9 y_offset: -4.4 pin_up_touch_mode_reports_triggered: False # 0 = no high-speed # 1 = simultaneous stow and toolhead raise # 2 = no intermediate deploy and stow + (1) high_speed_mode: 2 # you can specify an absolute minimum cmd time min_cmd_time: 0.150 # set this to false if probe does not support it test_sensor_before_use: True # use SW Mode if you want instead of normal mode use_sw_mode: True stow_on_each_sample: False [safe_z_home] home_xy_position: 128.1,159.4 # Change coordinates to the center of your print bed speed: 50 z_hop: 10 # Move up 10mm z_hop_speed: 15 [z_tilt] z_positions: -70,153 355,153 points: -23,153 270,153 speed: 60 horizontal_move_z: 10 retries: 5 retry_tolerance: 0.005 [bed_screws] screw1: 35,35 screw1_name: front left screw2: 275,35 screw2_name: front right screw3: 275,275 screw3_name: rear right screw4: 35,275 screw4_name: rear left horizontal_move_z: 10 probe_height: 0 speed: 60 probe_speed: 15 [screws_tilt_adjust] screw1: 8.1,39.4 screw1_name: front left screw screw2: 248.1,39.4 screw2_name: front right screw screw3: 248.1,279.4 screw3_name: rear right screw screw4: 8.1,279.4 screw4_name: rear left screw horizontal_move_z: 10.0 speed: 60 screw_thread: CW-M4 [bed_mesh] speed: 60 horizontal_move_z: 5 mesh_min: 10,10 mesh_max: 300,300 probe_count: 5,5 algorithm: bicubic [gcode_macro G32] gcode: G28 Z_TILT_ADJUST G28 G0 X-16.9 Y14.4 F3000 BED_MESH_CALIBRATE G0 X-30 Y-10 Z50 F3000 ###### Standard ##### [tmc5160 stepper_x] cs_pin: PA15 spi_bus: spi3a microsteps: 16 run_current: 1.600 hold_current: 0.800 stealthchop_threshold: 110 #70 sense_resistor: 0.075 ######### New Testing #driver_pwm_freq: 2 # try 2 here orig 1 #driver_tpfd: 4 # try to increase that from 4 #driver_SGT: 4 # try to play with theese. It enables coolstep too, which helps with noise driver_PWM_OFS: 30 # regarding 0.9 Stepper motors driver_TOFF: 4 ##################### ###### Standard ##### [tmc5160 stepper_y] cs_pin: PB8 spi_bus: spi3a microsteps: 16 run_current: 1.600 hold_current: 0.800 stealthchop_threshold: 110 #70 sense_resistor: 0.075 ######### New Testing #driver_pwm_freq: 2 # try 2 here orig 1 #driver_tpfd: 4 # try to increase that that from 4 #driver_SGT: 4 # try to play with theese. It enables coolstep too, which helps with noise driver_PWM_OFS: 30 # regarding 0.9 Stepper motors driver_TOFF: 4 ##################### [tmc2208 stepper_z] uart_pin: PE1 microsteps: 16 run_current: 0.650 hold_current: 0.450 stealthchop_threshold: 30 [tmc2208 stepper_z1] uart_pin: PD6 microsteps: 16 run_current: 0.650 hold_current: 0.450 stealthchop_threshold: 30 [safe_z_home] home_xy_position: 128.1,159.4 # Change coordinates to the center of your print bed speed: 50 z_hop: 10 # Move up 10mm z_hop_speed: 15 ###################################################################### # Fysetc Mini 12864Panel v2.1 (with neopixel backlight leds) ###################################################################### [display] lcd_type: uc1701 cs_pin: EXP1_3 a0_pin: EXP1_4 rst_pin: EXP1_5 contrast: 60 encoder_pins: ^EXP2_5, ^EXP2_3 click_pin: ^!EXP1_2 [output_pin beeper] pin: EXP1_1 [neopixel fysetc_mini12864] pin: EXP1_6 chain_count: 3 color_order_GRB: False initial_RED: 0.4 initial_GREEN: 0.4 initial_BLUE: 0.4 ######################################## # EXP1 / EXP2 (display) pins ######################################## [board_pins] aliases: # EXP1 header EXP1_1=PG4, EXP1_3=PD11, EXP1_5=PG2, EXP1_7=PG6, EXP1_9=<GND>, EXP1_2=PA8, EXP1_4=PD10, EXP1_6=PG3, EXP1_8=PG7, EXP1_10=<5V>, # EXP2 header EXP2_1=PB14, EXP2_3=PG10, EXP2_5=PF11, EXP2_7=PF12, EXP2_9=<GND>, EXP2_2=PB13, EXP2_4=PB12, EXP2_6=PB15, EXP2_8=<RST>, EXP2_10=PF13 # Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "spi2" # See the sample-lcd.cfg file for definitions of common LCD displays. #*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [extruder] #*# pid_kp = 19.938 #*# pid_ki = 0.923 #*# pid_kd = 107.667 #*# control = pid #*# #*# [heater_bed] #*# pid_kp = 47.433 #*# pid_ki = 0.303 #*# pid_kd = 1855.210 #*# control = pid
the driver output with klipper:
0:06:15.865: #DUMP_TMC STEPPER=stepper_x 0:06:15.867: // ========== Write-only registers ========== 0:06:15.867: // TPWMTHRS: 00000022 TPWMTHRS=34 0:06:15.868: // COOLCONF: 00000000 0:06:15.868: // GLOBALSCALER: 00000086 GLOBALSCALER=134 0:06:15.868: // IHOLD_IRUN: 00061f0f IHOLD=15 IRUN=31 IHOLDDELAY=6 0:06:15.869: // PWMCONF: c40d001e PWM_OFS=30 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 PWM_REG=4 PWM_LIM=12 0:06:15.870: // TPOWERDOWN: 0000000a TPOWERDOWN=10 0:06:15.870: // ========== Queried registers ========== 0:06:15.873: // GCONF: 00000004 en_pwm_mode=1 0:06:15.875: // CHOPCONF: 14410154 toff=4 hstrt=5 hend=2 tbl=2 tpfd=4 MRES=4(16usteps) intpol=1 0:06:15.876: // GSTAT: 00000000 0:06:15.878: // DRV_STATUS: 800f4000 stealth=1 CSACTUAL=15 stst=1 0:06:15.879: // FACTORY_CONF: 0000000b FACTORY_CONF=11 0:06:15.880: // IOIN: 30000052 REFR_DIR=1 DRV_ENN=1 SD_MODE=1 VERSION=0x30 0:06:15.882: // LOST_STEPS: 00000000 0:06:15.883: // MSCNT: 00000218 MSCNT=536 0:06:15.885: // MSCURACT: 010b01db CUR_A=-37 CUR_B=-245 0:06:15.886: // OTP_READ: 0000000b OTP_FCLKTRIM=11 0:06:15.888: // PWM_SCALE: 00000013 PWM_SCALE_SUM=19 0:06:15.890: // PWM_AUTO: 001b0026 PWM_OFS_AUTO=38 PWM_GRAD_AUTO=27 0:06:15.891: // TSTEP: 000fffff TSTEP=1048575 0:06:15.891: ok 0:06:19.485: #DUMP_TMC STEPPER=stepper_y 0:06:19.486: // ========== Write-only registers ========== 0:06:19.486: // TPWMTHRS: 00000022 TPWMTHRS=34 0:06:19.487: // COOLCONF: 00000000 0:06:19.487: // GLOBALSCALER: 00000086 GLOBALSCALER=134 0:06:19.487: // IHOLD_IRUN: 00061f0f IHOLD=15 IRUN=31 IHOLDDELAY=6 0:06:19.487: // PWMCONF: c40d001e PWM_OFS=30 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 PWM_REG=4 PWM_LIM=12 0:06:19.487: // TPOWERDOWN: 0000000a TPOWERDOWN=10 0:06:19.487: // ========== Queried registers ========== 0:06:19.489: // GCONF: 00000004 en_pwm_mode=1 0:06:19.490: // CHOPCONF: 14410154 toff=4 hstrt=5 hend=2 tbl=2 tpfd=4 MRES=4(16usteps) intpol=1 0:06:19.491: // GSTAT: 00000000 0:06:19.492: // DRV_STATUS: 800f4000 stealth=1 CSACTUAL=15 stst=1 0:06:19.492: // FACTORY_CONF: 0000000b FACTORY_CONF=11 0:06:19.493: // IOIN: 30000050 DRV_ENN=1 SD_MODE=1 VERSION=0x30 0:06:19.494: // LOST_STEPS: 00000000 0:06:19.495: // MSCNT: 00000398 MSCNT=920 0:06:19.496: // MSCURACT: 00c7016d CUR_A=-147 CUR_B=199 0:06:19.497: // OTP_READ: 0000000b OTP_FCLKTRIM=11 0:06:19.497: // PWM_SCALE: 00000015 PWM_SCALE_SUM=21 0:06:19.498: // PWM_AUTO: 001c002b PWM_OFS_AUTO=43 PWM_GRAD_AUTO=28 0:06:19.499: // TSTEP: 000fffff TSTEP=1048575 0:06:19.499: ok
-
Do you realize the speeds are in mm/min?
So F119 is very slow -
yes like I wrote.
all above 119mm/min goes to spreadcycle
also with V34 (110mm/s) parameter in M569.
and I can not understand why, it looks like the V parameter does not realy change the tpwmthrs.
but when I check this with m569 P0 as example it gives me
Drive 0 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 56, tpwmthrs 34 (110.3 mm/sec) , thigh 200 (18.8 mm/sec)
so it sould be on 110mm/sec and not 2mm (120mm/min) /sec
I have still not understand what the H parameter (thigh 200 (18.8 mm/sec)) means maby someone can explain it.
I have tried higher H and lover H parameter nothing changed for me.
when I search for "stealthchop" in the Forum it looks like some others has the same problem, but not found a solution for. -
has some bring StealthChop running on a Duet 3?
when I search here in the forum it looks like only problems with a maestro was fixed the issues with the duet 3 looks all
still open.
has someone the maestro running with RR 3?
@dc42 do you have some tips that I can try or what is wrong with my configuration? -
I am not aware of any bugs in this area, but have added this to my list of things to test prior to the 3.01 release of RRF.
-
@dc42 this means I have nothing wrong in my config?
I was hoping that I have done something wrong. -
I don't see anything wrong with your config, and M569 P0 says the threshold speed for changing to spreadCycle should be around 110mm/sec. That speed won't be exactly right because it depends on the accuracy of the 12MHz clock in the TMC5160.
-
@dc42 ok then I have to wait for your tests and hope we can find a solution.
let me know when I can help here with testing etc. -
From my reading of the datasheet, you should always have THIGH < TPWMTHRS. Have you tried setting THIGH to values below 34?
-
@dc42 said in Help needed with Duet 3 6hc TMC5160 StealthChop config:
THIGH
I think I had done is the H parameter right?
I will try again. -
@danym21 said in Help needed with Duet 3 6hc TMC5160 StealthChop config:
@dc42 said in Help needed with Duet 3 6hc TMC5160 StealthChop config:
THIGH
I think I had done is the H parameter right?
I will try again.Yes. Use M569 with just a P parameter to check that you have set it.
-
@dc42 I have tried with H10 for X and Y achses (P0.0 and P0.1) nothing changed, StealthChop only works below F119 all above only Spreadcycle from the noise.
M569 P0.0 Drive 0 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 548, tpwmthrs 34 (110.3 mm/sec), thigh 10 (375.0 mm/sec) M569 P0.1 Drive 1 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 884, tpwmthrs 34 (110.3 mm/sec), thigh 10 (375.0 mm/sec)
to be sure also tested :
; Drives M569 P0.0 S0 D3 V34 H50 ; physical drive 0 goes forwards D2=Spread cycle (x-achses) M569 P0.1 S0 D3 V34 H50 ; physical drive 1 goes forwards D2=Spread cycle (y-achses)
13.5.2020, 22:17:07 M569 P0.1 Drive 1 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 972, tpwmthrs 34 (110.3 mm/sec), thigh 50 (75.0 mm/sec) 13.5.2020, 22:17:01 M569 P0.0 Drive 0 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 540, tpwmthrs 34 (110.3 mm/sec), thigh 50 (75.0 mm/sec) 13.5.2020, 22:16:07 G0 X130 Y130 F90 13.5.2020, 22:15:51 G0 X135 Y135 F90
now also G0 X130 Y130 F90 runs only in SpreadCycle
-
@dc42 was you able to test?
I have also tried to change the D settings on a test print to hear some changes, but nearly nothing has changed only on D0 (constant off-time)
he goes a little bit louder but not much. D1 (random off-time) is not supported by TMC5160.
can it be that my board is faulty or that the Firmware has a Bug and only shows the corect mode but not send to the stepper drivers? -
I have seen the source code "/src/Movement/StepperDrivers/TMC51xx.cpp"
constexpr float SenseResistor = 0.050;
when I right on other firmware´s I use 0.075, can this create a difference?
Is it possible to play with over the M569 command or is it needed to compile new, have not found in the Duet documentation. -
I'm experiencing the same thing @danym21.
-
Are there any updates on this?
-
@cjackson234
still not -
I'm sorry for the delay. This is still on my list to continue investigating. As it's a noise issue not a functionality issue, it has lower priotity then some others on my list.
-
Hello! The same thing on my CoreXY using Duet3. Does anyone have found a solution?