RRF 3.5.0-rc1: shaking/rattling in Stealthchop
-
The Snapmaker printer I just finished with replacing the original controller with a Duet 3 6HC has "Mocotech" steppers - a 42HD2428 for the X and the U axis, and a 42HD4428 on the Y axis.
The X and Y motor (but, as it seems, not the U stepper - might have something to do with my last finding, see below) have a strange issue with Stealthchop: the moment the stepper driver switches mode, the motor... well, makes strange noises.
First, I checked the mechanics and found nothing.
Second attempt: since I have two identical motors on X and U, I swapped those. Result: the issue stays with the X motor
- if I replace the X motor with an unused one and
- if I switch the driver between X and U (both in config.g and flipping the connectors)
Third attempt: if I run the stepper drivers in Spreadcycle mode, the issue is gone! I then played around with the values of tcoolthrs, thigh und tpwmhrs which had set to 100mm/s (value taken from what I could extract from the original Marlin source code - the original board had TMC2209 stepper drivers), and I could find that the issue occurs at the speed when the driver switches between Spreadcycle and Stealthchop. Depending on the motor speed, you either get a rattling noise (as if the motor would skip some steps) at lower speeds - or a... - hm, "squawking" fits probably best - noise at higher speeds (might also steps being skipped or such, but faster...)
I also found that I can temporarily "cure" the issue if I let the XY carriage slowly move around for an extended period of time (verified twice by now). As soon as I do a test print at higher speeds, the issue returns however. This might also explain the seemingly unaffected U stepper - I simply did not start print tests with the second hotend yet.
Any ideas what might cause this and how it might be cured...?
In case it helps:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.5.0-rc.1 (2023-08-31 16:19:24) running on Duet 3 MB6HC v1.02 or later (standalone mode) Board ID: 08DJM-956BA-NA3TN-6JTDL-3SN6L-998UU Used output buffers: 5 of 40 (40 max) === RTOS === Static ram: 154852 Dynamic ram: 123592 of which 0 recycled Never used RAM 64332, free system stack 136 words Tasks: NETWORK(2,nWait,14.8%,228) HEAT(3,nWait,0.0%,323) Move(4,nWait,0.0%,214) CanReceiv(6,nWait,0.0%,941) CanSender(5,nWait,0.0%,335) CanClock(7,delaying,0.0%,343) TMC(4,nWait,8.7%,61) MAIN(1,running,76.4%,137) IDLE(0,ready,0.0%,30), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 02:05:35 ago, cause: software Last software reset at 2023-10-04 19:48, reason: User, Gcodes spinning, available RAM 63708, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x04 Aux0 errors 0,0,0 MCU temperature: min 45.2, current 45.5, max 45.8 Supply voltage: min 23.8, current 23.9, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.5, max 12.8, under voltage events: 0 Heap OK, handles allocated/used 99/5, heap memory allocated/used/recyclable 2048/1532/1432, gc cycles 24 Events: 0 queued, 0 completed Driver 0: standstill, SG min n/a, mspos 280, reads 8957, writes 0 timeouts 0 Driver 1: standstill, SG min n/a, mspos 232, reads 8957, writes 0 timeouts 0 Driver 2: standstill, SG min n/a, mspos 904, reads 8957, writes 0 timeouts 0 Driver 3: standstill, SG min 0, mspos 8, reads 8952, writes 6 timeouts 0 Driver 4: standstill, SG min n/a, mspos 2, reads 8958, writes 0 timeouts 0 Driver 5: standstill, SG min n/a, mspos 2, reads 8958, writes 0 timeouts 0 Date/time: 2023-10-04 21:53:46 Slowest loop: 4.90ms; fastest: 0.08ms === Storage === Free file entries: 20 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 2.4ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 15, maxWait 2018145ms, bed compensation in use: none, height map offset 0.000, ebfmin 0.00, ebfmax 0.00 no step interrupt scheduled Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0 === DDARing 0 === Scheduled moves 7652, completed 7652, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 1], CDDA state -1 === DDARing 1 === 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 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, 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 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 0, axes/extruders owned 0x80000003 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === Filament sensors === Extruder 0 sensor: no data received Extruder 1 sensor: no data received === CAN === Messages queued 18675, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 10375/0/0 Tx timeouts 0,0,10375,0,0,8300 last cancelled message type 30 dest 127 === Network === Slowest loop: 20.62ms; fastest: 0.07ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 2 of 8 = Ethernet = Interface state: disabled Error counts: 0 0 0 0 0 0 Socket states: 0 0 0 0 0 0 0 0 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.1beta4 MAC address 70:04:1d:be:ad:b8 Module reset reason: Power up, Vcc 0.00, flash size 4194304, free heap 225020 WiFi IP address 192.168.178.31 Signal strength -55dBm, channel 2, mode 802.11n, reconnections 0 Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0 === Multicast handler === Responder is inactive, messages received 0, responses 0
Initially I had Input Shaping and Pressure Advance on, but turned that off since I found here some users have issues their steppers with these active.
-
-
@NeoDue It is almost always a bad idea to have the drivers switch from stealthchop to spreadcycle, you pretty much always get the results you are hearing/seeing. Operate them all of the time in either one mode or the other.
-
@gloomyandy just to make sure I understand correctly: I don't actively switch them, the TMC driver does that itself at a predefined speed, which is controlled by the tpwmthrs value, at least as far as I understand the data sheet...
Thus, do I understand you correctly that I should simply set that value so high that the driver always stays in StealthChop?
-
@NeoDue You have three choices really...
- Set D3 and the V value so high (actually I think you set it to a low value, running M569 P<drive no> will show you the actual switch over speed) that the driveer stays in stealthchop mode all of the time.
- Set D3 and set V so that the switchover point is at a very low speed (pretty much the moment it moves), so that all of the moves are in effect using spreadcycle, but the driver will be in stealthchop when not moving. This can help stop motors from "hissing" when stationary.
- Set D2 so that the driver is always in spreadcycle.
Take a look at this page: https://docs.duet3d.com/User_manual/Connecting_hardware/Motors_tuning and maybe search the forum for other posts on spreadcycle and stealthchop to get a feel for the advantages of both.
-
@gloomyandy Thanks, I know that one - I was just unsure if I understood you correctly
Okay, then I will try that, thanks. My intention was to use StealthChop where it would be useful, i.e. more silent than SpreadCycle (which is somewhere around 100mm/s for my printer). But it feels as if that automatic tuning mechanism of the TMC does some stuff it should not do...
-
@NeoDue If you see the page I linked to there is an explanation of what happens when you switch at a high speed.
-
@gloomyandy thanks for pointing that out - I did not keep that sentence in mind when I read this page.
Then I consider this question answered for now... the only open question is: why does it work as it should after the slow-motion exercise?
Edit: in case someone stumbles upon this: this thread here (https://forum.duet3d.com/topic/18010/duet-3-stealthchop-2-tuning-for-nema23/27) describes the problem in more detail (sadly, no real solution there as well from what I can see, just a nice video where @fractalengineer got his stepper to croak the Star Wars melody )
2nd Edit: Instead of following the advice "all three values equal" on https://docs.duet3d.com/User_manual/Connecting_hardware/Motors_tuning I used the following values:
M569 P0.0 D3 H5 V25 ; H set to a low value to keep microstepping active (5 simply worked fine for me...), V set to a value *above* the maximum printer speed (check with M569 P0.0) M915 P0.0 T1 ; T set to a low value to disable CoolStep
-
-
-