topic_unsolved Help needed with Duet 3 6hc TMC5160 StealthChop config
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.
cjackson234 last edited by
I'm experiencing the same thing @danym21.
cjackson234 last edited by
Are there any updates on this?
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.
Alex_Z last edited by
Hello! The same thing on my CoreXY using Duet3. Does anyone have found a solution?
My suspicion is that the issue is not following the tuning sequence specified by Trinamic. In particular, you are supposed to energise the motors, keep them still for a short while (but less than 130ms), then execute a medium speed move such as a homing move. Here is an extract from the datasheet:
Typically, homeall.g does something like this:
G1 H2 Z5 Fxxx
G1 H1 X-400 Fxxx
The initial pause at standstill is after powering up the motors is not present. So perhaps this would be better:
G1 H2 Z0.02 Fxxx
G1 H2 Z5
G1 H2 X0.02 Fxxx
G2 H1 X-400
Similarly for Y. The 0.02mm figure should be adjusted so that it is at least one microstep, but preferably not much more than that.
it looks like it does not help, I have created the following test macro file, but I can´t hear any difference only on still stand after moves I can hear the motors a little bit when Spread cycle (D2) is enabled.
maybe I have done something wrong?
; first test with stealh enabled M18 ; disable all motors to reset the stepper drivers 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 R-1 ; physical drive 4 goes backwards D2=Spread cycle (empty) 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 M350 X32 Y32 Z16 E16 I1 ; configure microstepping with interpolation - working M92 X400.00 Y400.00 Z400 E412.00 ; set steps per mm M566 X300.00 Y300.00 Z24.00 E300.00 ; set maximum instantaneous speed changes (mm/min) from config file thingiverse M203 X14000 Y14000 Z4520 E7000 ; set maximum speeds (mm/min) new test Z800 old M201 X1000 Y1000 Z1400.00 E5000 ; set accelerations (mm/s^2) own M906 X1150 Y1150 Z850 E600 I50 ; set motor currents (mA) and motor idle factor in per cent G91 ; relative positioning G1 H2 Z0.02 F3000 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H2 Z15 F6000 ; lift Z relative to current position G1 H2 X0.02 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H2 Y0.02 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H1 X-355 Y355 F9000 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-355 ; home X axis G1 H1 Y355 ; home Y axis G1 X5 Y-5 F9000 ; go back a few mm G1 H1 X-355 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y355 ; then move slowly to Y axis endstop G90 ; absolute positioning G1 X177.713 Y144.526 F9000 ; go to first bed probe point and home Z --> own direct system G30 ; home Z by probing the bed G91 ; relative positioning G1 Z15 F6000 ; lift Z relative to current position G90 ; absolute positioning ;smal test moves G0 X0 Y0 F3000 G0 X0 Y310 F3000 G0 X310 Y310 F3000 G0 Y0 Y0 F3000 ; now again with Spread cycle M18 ; disable all motors to reset the stepper drivers M569 P0.0 S0 D2 ; physical drive 0 goes forwards D2=Spread cycle (x-achses) M569 P0.1 S0 D2 ; physical drive 1 goes forwards D2=Spread cycle (y-achses) M569 P0.2 S0 D2 ; physical drive 2 goes backwards D2=Spread cycle (Z1) M569 P0.3 S0 D2 ; physical drive 3 goes backwards D2=Spread cycle (Z2) M569 P0.4 S1 D2 ; physical drive 4 goes backwards D2=Spread cycle (extruder) M569 P0.5 R-1 ; physical drive 4 goes backwards D2=Spread cycle (empty) 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 M350 X32 Y32 Z16 E16 I1 ; configure microstepping with interpolation - working M92 X400.00 Y400.00 Z400 E412.00 ; set steps per mm M566 X300.00 Y300.00 Z24.00 E300.00 ; set maximum instantaneous speed changes (mm/min) from config file thingiverse M203 X14000 Y14000 Z4520 E7000 ; set maximum speeds (mm/min) new test Z800 old M201 X1000 Y1000 Z1400.00 E5000 ; set accelerations (mm/s^2) own M906 X1150 Y1150 Z850 E600 I50 ; set motor currents (mA) and motor idle factor in per cent G91 ; relative positioning G1 H2 Z0.02 F3000 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H2 Z15 F6000 ; lift Z relative to current position G1 H2 X0.02 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H2 Y0.02 ; enable the Motor move at least one mircostep -- Problem Stealthchop? G4 P50 ; make a 50ms pause for the drivers -- Problem Stealthchop? G1 H1 X-355 Y355 F9000 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-355 ; home X axis G1 H1 Y355 ; home Y axis G1 X5 Y-5 F9000 ; go back a few mm G1 H1 X-355 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y355 ; then move slowly to Y axis endstop G90 ; absolute positioning G1 X177.713 Y144.526 F9000 ; go to first bed probe point and home Z --> own direct system G30 ; home Z by probing the bed G91 ; relative positioning G1 Z15 F6000 ; lift Z relative to current position G90 ; absolute positioning ;smal test moves G0 X0 Y0 F3000 G0 X0 Y310 F3000 G0 X310 Y310 F3000 G0 Y0 Y0 F3000
empi00 last edited by
I have also to reply here.
I have Moon Motors.
I think even the same as you. Need to check in detail, but i think so.
I starte with a Duet Wifi clone and they were really noise in some higher speed (>70mm/s)
So i decided to go for the Duet3 and the advanced TMC5160, as noise is key for my MGN cube. (CoreXY)
In fact now, if i switch to stealthchop, it is even "noisier" than in spreadcycle.
No such a "high" noise, but louder....
I am lost now...
empi00 last edited by empi00
i am having also the Problem, that I am not able to bring my stepper noise down, and I do not find any way to solve this.
Tried mechanicly already a lot of things, 3 different stepper Motor types, but all with more or less the same noise.
The are damn loud.
Was your issue solved?
I also find in the documentation this:
Vnnn (firmware 2.02RC1 and later) tpwmthrs parameter for those stepper driver chips that support it. This is the interval in clock cycles between 1/256 microsteps below which the drivers will switch from stealthChop to to spreadCycle mode. Only applies when the driver is configured in stealthChop mode. Typical value are from 100 (high speed) to 4000 (low speed). Send M569 P# (where # is the driver number) with no additional parameters to see how this translates into mm/sec.
Values below 100, are not a Problem and get correct configured?
Have you seen this thread https://forum.duet3d.com/topic/18010/duet-3-stealthchop-2-tuning-for-nema23 ? The author of that thread was able to use stealthChop to quieten the motors, until the speed reached the value at which there was insufficient drive voltage for the motors.
fractalengineer last edited by fractalengineer
Hey man I just noticed I had this lines in my config.g here for my sensorless homing;
it seems like Stealthchop would not engage unless these are in place
; Stealthchop parameters M915 P0 S3 F1 H134 T1 R0 M915 P1 S3 F1 H134 T1 R0
I do not not why, but my guess would be around T parameter that controls the coolstep register according to https://duet3d.dozuki.com/Wiki/Gcode#Section_M915_Configure_motor_stall_detection
Edit: Also the Hmin parameter; for which I made a calculator here:
empi00 last edited by
Can you post your full motor related config.
My motors are extremly noisy on my MGN Cube.
I DIsassembled everything the last 2 days, and reassembled the full frame, and it is still 100% the same.
When i switch beteen spreadcycle and stealthchop, i can not hear any difference, and i dont know why...
danym21 last edited by danym21
you mean I have to configure motor stall detection to get Stealthchop running?
This I have never tried,
What I do not understand what T1 means
is this TCOOLTHRS?
TCOOLTHRS ≥ TSTEP ≥ THIGH:
- CoolStep is enabled, if configured
- StealthChop voltage PWM mode is disabled
@empi00 I think the problem is that the vibration comes from the motors for a temporary solution I have add some Stepper damper to the X/Y Motors that has helped a lot. But you can still feel the vibration on the Motors with the hand, this will not fix the vibration problem it is only a "not so nice" work around.
and I was hoping that @dc42 will find the problem. My feeling was that stealthchoop is enabled but only up to F119 (that is verry slow) on F120 I had strange noices like it is jumping between steahltchop and spreadcycle. and F121 is noisy like only spreadcycle. When no motors are moving all is fine then spreadcycle (D2) is more noisy as steahltchop (D3).
Any M569 V and H parameters does nothing here for me.
The funny thing is when I use a other board with TMC5160 and klipper it was working, so I´m pretty sure it is not a hardware issue.
When I have time I and I have understand what the T parameter is doing on M915 I will play with.
empi00 last edited by empi00
i will post my story tommorow.
I was building a BLV MGN Cube.
Duet2 Wifi clone with Moon motors.
Terrible loud noise.
Running with 27 Volts.
- tried different current. Lower current are "better" but still very loud.
- I bought than the Ferrari, a Duet3 original with TMC 5660.
--> Not improvement, but i am not sure of stealchop is running well
- I bough in total 4 different stepper types with different cables. Different noise frequencies but still very loud (Stepper Online 1,8 + 0,9, Sunsomething 1,8 degree, Moon 0,9 degree)
- Dampers made it dead silent, but the steppers were bending. The design has also a bearing to help the stepper shafts on staibility and they are not possible anymore. This would be my last wished solution. (Expecially as this built was made by many people, and other seems to have this not problem.)
- Disassembled the full frame the last 4 days. Filled the profiles with sand and epoxy, to improve the vibration damping.
Though that i made maybe something wring.
You can shake now the profile (without electronics) and you hear nothing. (no "lost" nut or anything)
Still the same noise....
Ordered just right now a SKR 1.4 Turbo with TMC2209 and see how this goes.
I really like the Duet in general, especially from the usability.
But honestly, I would expect from the software a "easier" enabeling from Stealthchop, as it seem that something is not easy here.
I am still searching for the "guilty" think in my case.
- Steppers, closed, as all 4 types have the same problem
- "Electronic noise". closed, as dampers are helping
- Defect TMCs, shitty Duet2 Clone,... closed, as I have now a Duet 3 with the same Problem
First of all, I just want to figure that "guilites" out.
So I want a way, just to enable stealchop for 100% and nothing else, to see if it helps.
But even that seems not to be so easy.
I am somehow lost....
Got it; ok so there are a few things I've learned:
-The default M569 V parameter is pretty high; it controls from what speed the driver switches from StealchC to SpreadC. Like 15mm/s iirc. Lowering it will enable SleathC to run at higher speeds. Check my config down below.
-You must also implement a proper calibration sequence in your homing files; it's detailed in the datasheet but @dc42 broke it down well some posts above
-Then if you still can't hear a difference try that M915 line I included above; which seems to enable it but for the life of me I can't understand how lol
-By now you can try running it at low speed and switching between M569 D2 and D3 (I made macros that include both lines for both X/Y steppers) to hear whether it's working
And it should be rather noticeable; StealthC sounds more like a humm rather than the Bzzz in SpreadC lol
Last thing, when switching from D2 to D3 there is a jump that is expected; it's in the datasheet
That's it I just dumped about all I know on this occult topic haha; it's still not running exactly as I wish and that's the thread Dc was referring to, but this made me progress a lot
; General Setup - RailCore RRF on a SBC for Duet3 G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Debugging M111 S0 ; Debug (S0 is off; S1 is on) M929 P"eventlog.txt" S1 ; start logging to file eventlog.txt M915 X Y S10 F0 R1 ; log motor stalls (added 5/4/2019) ; Stepper configuration M569 P0 S1 D3 ; Drive 0 X / Rear M569 P1 S0 D3 ; Drive 1 Y / Front M569 P2 S1 D3 ; Drive 2 Z Front Left M569 P3 S1 D3 ; Drive 3 Z Rear Left M569 P4 S1 D3 ; Drive 4 Z Right M569 P5 S0 D3 ; Drive 5 Extruder ; Trinamic Drive Tuning ; Tune tpwmthrs (V) so stealthchop runs at appropriate speeds ; and tune thigh (H) to avoid shifting into fullstep mode M569 P0 V30 H23 ; X - Set tpwmthrs so StealthChop runs up to 70mm/sec (try V47) M569 P1 V30 H23 ; Y - Set tpwmthrs so StealthChop runs up to 70mm/sec M569 P2 V15 H5 ; Z Right - Set tpwmthrs so StealthChop runs up to 15.6mm/sec M569 P3 V15 H5 ; Z Left Rear - Set tpwmthrs so StealthChop runs up to 15.6mm/sec M569 P4 V15 H5 ; Z Left Front - Set tpwmthrs so StealthChop runs up to 15.6mm/sec M569 P5 V125 H5 ; E - Set tpwmthrs so StealthChop runs up to 7.2mm/sec ; Stealthchop parameters M915 P0 S3 F1 H153 T1 R0 M915 P1 S3 F1 H153 T1 R0 ; Axis configuration M669 K1 ; Corexy mode M584 X0 Y1 Z2:3:4 E5 ; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to drive 5 ; Leadscrew locations M671 X-10:-10:333 Y22.5:277.5:150 S7.5 ; Steppers Settings M350 X16 Y16 Z16 I1 ; Set 16x microstepping for axes with interpolation M350 Z16 I1 M350 E16 I0 ; Set 8x microstepping for Flex3Drive extruder interpolation OFF M906 X1820 Y1820 Z1008 E420 I35 ; Set motor currents (mA) and motor idle factor (%) // X/Y 65% of rated 2800mA M84 S30 ; Idle timeout 30s M201 X1600 Y1600 Z100 E120 ; Accelerations (mm/s^2) (Was 2500) M203 X24000 Y24000 Z900 E2400 ; Maximum speeds (mm/min) M566 X800 Y800 Z100 E6 ; Maximum jerk speeds mm/minute M208 X290 Y303 Z325 ; Set axis maxima and high homing switch positions (adjust to suit your machine) M208 X-27 Y0 Z0 S1 ; Set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed) M92 X160 Y160 Z1600 E4130 ; Steps/mm ; End Stops M574 X1 S1 P"io0.in" ; Map the X endstop to io1.in M574 Y1 S1 P"io3.in" ; May the Y endstop to io2.in ; Define Bed M140 H0 M557 X5:290 Y30:300 P8:8 ; Probe from X=5 to 290, Y=30 to 300mm with 8x8 points ; Thermistors M308 S0 P"temp0" Y"thermistor" A"Keenovo" T100000 B4240 H0 L0 ; Bed thermistor - connected to temp0 M308 S1 P"temp1" Y"thermistor" A"Mosquito" T4606017 B5848 C5.548428e-8 H0 L0 ; Dyze 500c thermistor - connected to e0_heat ; Define Heaters M950 H0 C"out0" T0 ; Bed heater is on out0 M950 H1 C"out1" T1 ; Hotend heater is on out1 ; Heater model parameters M307 H0 A158.5 C366.7 D2.1 S1.0 V24.0 B0 ; Keenovo duet 3 configuration M307 H1 A324.0 C114.3 D4.4 S1.0 V23.9 B0 ; Heating process parameters for 24V a system ; Heater Fault Parameters M570 H1 P10 T15 S180 ; Hotend allows 10sec for anomaly, permits 15deg excursion, abandons print after 180s M143 S350 ; Set max hotend temperature ; Fans M950 F0 C"out5" ; Hotend fan on "out5" connector M106 P0 S1.0 H1 T75 ; Enable thermostatic mode for hotend fan (S225) M950 F1 C"out4" ; Layer fan on "out4" connector M106 P1 S0 ; Layer Fan ; Tool definitions M563 P0 D0 H1 F1 ; Define tool 0 G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures ; BLTouch M558 P9 C"io7.in" H5 R1 F120 T6000 A5 S0.02 B1 ; Define the bltouch input on io7.in M950 S0 C"io7.out" ; Define the bltouch servo on io7.out G31 X Y25 Z1.95 P25 ; Set the offsets for the bltouch ; Duet3 Cooling M308 S2 Y"drivers" A"DRIVERS" ; Configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet M308 S3 Y"mcu-temp" A"MCU" ; Configure sensor 3 as thermistor on pin e1temp for left stepper M950 F2 C"out6" Q100 ; Create fan 2 on pin fan2 and set its frequency M106 P2 C"ElectroBox" H1 L0.0 X1.0 B0.3 T70:160 ; Set fan 2 value ; Filament Sensor M591 D0 P7 C"io6.in" S0 E50 L1.25 R25:175 A1 T0 ; Select first hot end ; Mesh Bed Compensation G29 S1 ; Load height map from SD card M376 H3 ; Set taper height 3mm ; Dynamic Acceleration Adjustment M593 F52 ; Logging M929 P"eventlog.txt" S1 ; start logging to file eventlog.txt
Touchthebitum last edited by Touchthebitum
So it means that Stealthchop is active on x/y till 70mm/sec ?
So it means that Stealthchop is active on x/y till 70mm/sec ?
Depends on your config; steps/mm, microstepping.
You're supposed to enter a V value then check it in the console by entering
M569 Pxwithout anything else. It will return the complete config with actual belt speeds
V value is the speed at which the mode switches from Stealthchop to SpreadC
H value is the speed at which it switches to Full step
Touchthebitum last edited by
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 0, tpwmthrs 130 (28.8 mm/sec), thigh 50 (75.0 mm/sec)
I have this result, does it seem correct ?
Ok so what you can see here is "tpwmthrs 130" means your M569 V parameter is 130, meaning is will only run Stealthchop up to 28.8mm/sec
Touchthebitum last edited by
your storry is particle also my Storry
I have started with a Tevo Tornado Gold, steppers are loud, this machine has a MKS Gen L V1.0 Board so I replaced the drivers with TMC2800, installed Klipper and used Repetier Server as frontend on the raspberry.
I was amazed, the steppers you can not hear anymore when the machine is printing, on quick moves the drivers use SpreadCycle and you can hear the differnces.
So I was really happy with the machine, but I would have more speed.
Then I started to build the BLV with the new BTT SKR Pro 1.1 with TMC5160 sound was ok but regarding the new Type of printer it was louder as the Tevo, this is clear regarding the MGN Hiwin Rails.
But I had sometimes the problem that I lost a stepper after a while of printing (now I know it is a Hardware defect on the board, first driver sockel gets disconnect when the machine gets warm so I think it is a solder problem).
So I decided to try a Duet Wifi clone, but I had not read the full documentation so I missed that stealthchop is not availabe.
I was chocked how loud the machine can be with the 2660 drivers, but the machine was stable.
Then the Duet 3 comes out with TMC5160 and direct connection to a raspberry.
So I was hoping I can get all my wisches now.
But the noise of the printer is nearly the same, only when the steppers are not moving you can hear a difference
I have tested the motors alone, not build in to the printer and you can feel the vibration of the motors when a duet board is
When I connect a different board like the SKR Pro or now the GTR with TMC5160 and Klipper installed the motors are smoother on the same speed etc.
I have two ideas what can be behind.
As first Klipper/Marlin etc. use for the SenseResistor 0.075 and the duet Firmware use 0.050 this means that you can use motors with higher current on a duetboard but I think this change also the wave so that the sound that the motors creating
are different and maybe louder is normal and it can be changed only when we get a option in the firmware to select as example 0.075 with the correct wave like all other firmware does. But I have not enough knowledge and measuring devices
for checking and testing. So it can be that I´m on the wrong way at all here.
As second what I do not understand is why is there a big noice change between the speed 119mm/min and 121mm/min on 0.9° motors.
When you check my first post you can see that M569 say´s the change should be at 110.3 mm/sec
and @dc42 had confirmed that my settings are correct.
I have tried many different homing scripts but nothing changed.
at the moment I´m a little bit frustrated at all.
what I would wish for the best Board and firmware:
- the gui from Repetierserver on a local touchscreen (sorry but the gui from the duet does not really work for a touchscreen, but is not so bad on the browser. The preview of the print model is missing at all on the duet)
- a mix of the config from Klipper and reprep (the settings for the TMC´s are to complicated like the threshold for stealthchop, the firmware has all information to calculate it from stepper speed like klipper and marlin does)
- the hardware from duet 3 with the direct connection between Raspberry and the board. I like when I stop / pause a print it does directly. On Klipper the printer has a buffer so it pause and cancel when the buffer is empty and not directly.
Sorry for the long text but I have the feeling it goes not forward since month. I understand that Duet3d must look for business and creating new things but it would be helpfull to have all functions that are promised are also correct working
before new things are started.
Touchthebitum last edited by Touchthebitum
I think many people mainly buyed this Duet3 for this Stealthchop feature. It is a pity we can't use because it is a great improvement on noise.
I saw some videos and the difference is huge.