• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

RRF 3.5.0-rc1: shaking/rattling in Stealthchop

Scheduled Pinned Locked Moved Solved
Beta Firmware
2
7
347
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    NeoDue
    last edited by 4 Oct 2023, 21:16

    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.

    undefined 1 Reply Last reply 4 Oct 2023, 21:50 Reply Quote 0
    • undefined NeoDue marked this topic as a question 4 Oct 2023, 21:16
    • undefined
      gloomyandy @NeoDue
      last edited by 4 Oct 2023, 21:50

      @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.

      undefined 1 Reply Last reply 4 Oct 2023, 22:09 Reply Quote 0
      • undefined
        NeoDue @gloomyandy
        last edited by NeoDue 10 Apr 2023, 22:09 4 Oct 2023, 22:09

        @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?

        undefined 1 Reply Last reply 4 Oct 2023, 22:23 Reply Quote 0
        • undefined
          gloomyandy @NeoDue
          last edited by gloomyandy 10 Apr 2023, 22:24 4 Oct 2023, 22:23

          @NeoDue You have three choices really...

          1. 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.
          2. 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.
          3. 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.

          undefined 1 Reply Last reply 4 Oct 2023, 22:34 Reply Quote 0
          • undefined
            NeoDue @gloomyandy
            last edited by 4 Oct 2023, 22:34

            @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...

            undefined 1 Reply Last reply 4 Oct 2023, 22:47 Reply Quote 0
            • undefined
              gloomyandy @NeoDue
              last edited by 4 Oct 2023, 22:47

              @NeoDue If you see the page I linked to there is an explanation of what happens when you switch at a high speed.

              undefined 1 Reply Last reply 4 Oct 2023, 22:53 Reply Quote 0
              • undefined
                NeoDue @gloomyandy
                last edited by NeoDue 10 May 2023, 01:17 4 Oct 2023, 22:53

                @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
                1 Reply Last reply Reply Quote 0
                • undefined NeoDue has marked this topic as solved 4 Oct 2023, 22:53
                • undefined NeoDue referenced this topic 20 Jan 2024, 21:25
                • undefined NeoDue referenced this topic 8 Feb 2024, 17:20
                6 out of 7
                • First post
                  6/7
                  Last post
                Unless otherwise noted, all forum content is licensed under CC-BY-SA