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

    Noisy motors when idle

    Scheduled Pinned Locked Moved Unsolved
    Duet Hardware and wiring
    2
    4
    1.4k
    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.
    • pytundefined
      pyt
      last edited by pyt

      My motors are fairly noisy when idle. The noise stops when I do M18. It's not noisy at all when moving.

      These are the motors: https://e3d-online.com/motors-high-torque-motor
      Datasheet: https://e3d-online.dozuki.com/Document/122/.pdf

      The machine is a delta printer running on 24V. Only the axis steppers (no extruder) and endstops are plugged in at the moment.

      I have tried this (from https://duet3d.dozuki.com/Wiki/Reducing_Stand-Still_Noise) :

      M569 Fx P0
      M569 Fx P1
      M569 Fx P2
      

      where x ranges from 1 to 15. F1 to F12 sounds like a loud noisy fan, F12 being the least noisy. Higher F-values produce a high-pitched sound.
      I've also tried M906 I0 hoping that it will shut off the motor when idle but that didn't help. The I-value doesn't seem to have much effect on volume.
      M569 C65968 P0 gives an error probably because I am on RFF >= 2.02; is there a F-value equivalent?

      Config attached below. Geometry setup is still a work-in-progress.
      Movement is extremely slow because of initial setup, but that shouldn't cause loud idle noise right?
      Is it supposed to be so noisy when idle? It's unusable as-is because the noise is loud enough to be a distraction.

      ; Configuration file for Duet WiFi (firmware version 1.21)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool on Tue Jan 01 2019 23:33:12 GMT-0800 (Pacific Standard Time)
      
      ; General preferences
      G90                                      ; Send absolute coordinates...
      M83                                      ; ...but relative extruder moves
      M555 PNaN                                ; Set firmware compatibility to look like 
      
      ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration.
      M665 R105.6 L360.24 B85 H250             ; Set delta radius, diagonal rod length, printable radius and homed height
      M666 X0 Y0 Z0                            ; Put your endstop adjustments here, or let auto calibration find them
      
      ; Network
      M550 Pfoo                                ; Set machine name
      M551 Pxxx                                ; Set password
      M552 S1                                  ; Enable network
      ;*** Access point is configured manually via M587
      M586 P0 S1                               ; Enable HTTP
      M586 P1 S0                               ; Disable FTP
      M586 P2 S0                               ; Disable Telnet
      
      ; Drives
      M569 P0 S1                               ; Drive 0 goes forwards
      M569 P1 S1                               ; Drive 1 goes forwards
      M569 P2 S1                               ; Drive 2 goes forwards
      M569 P3 S1                               ; Drive 3 goes forwards
      M350 X16 Y16 Z16 E16 I1                  ; Configure microstepping with interpolation
      M92 X160 Y160 Z160 E90.525               ; Set steps per mm
      M566 X1200 Y1200 Z1200 E1200             ; Set maximum instantaneous speed changes (mm/min)
      M203 X18000 Y18000 Z18000 E1200          ; Set maximum speeds (mm/min)
      M201 X1000 Y1000 Z1000 E1000             ; Set accelerations (mm/s^2)
      M906 X1000 Y1000 Z1000 E800 I30          ; Set motor currents (mA) and motor idle factor in per cent
      M84 S30                                  ; Set idle timeout
      
      ; Axis Limits
      M208 Z0 S1                               ; Set minimum Z
      
      ; Endstops
      M574 X2 Y2 Z2 S1                         ; Set active high endstops
      
      ; Z-Probe
      M558 P5 R0.5 H5 F120 T6000               ; Set Z probe type to effector and the dive height + speeds
      G31 P500 X0 Y0 Z2.5                      ; Set Z probe trigger value, offset and trigger height
      M557 R85 S20                             ; Define mesh grid
      
      ; Heaters
      M140 H-1                                 ; Disable heated bed
      M305 P1 T100000 B4388 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 1
      M143 H1 S240                             ; Set temperature limit for heater 1 to 240C
      
      ; Fans
      M106 P0 S0.3 I0 F500 H-1                 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
      M106 P1 S1 I0 F500 H1 T45                ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
      M106 P2 S1 I0 F500 H1 T45                ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
      
      ; Tools
      M563 P0 D0 H1                            ; 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
      
      ; Automatic saving after power loss is not enabled
      
      ; Custom settings are not configured
      
      ; Miscellaneous
      M501                                     ; Load saved parameters from non-volatile memory
      
      1 Reply Last reply Reply Quote 1
      • dc42undefined
        dc42 administrators
        last edited by

        The motors go to idle current after the idle timeout, which defaults to 30 seconds. So you should notice a distinct drop in motor noise after this time. You can reduce the idle timeout, it's the S parameter of the M84 command.

        The idle noise varies with the microstep position. So when tuning the driver settings, I find it best to send M18 to disable all motors, then send G91 G1 S2 X0.1 to enable the X driver and move the motor by a small amount. Sending G1 S2 X0.1 moves the motor on to a new position. I look for the noisiest position, then adjust the M569 settings to quieten it. Then I jog the motor a few times using that same G1 S2 command to check the noise at other positions.

        When you have found the ideal settings for the X motor, the same settings should work well on the other motors, if they are all the same type and mounted in the same way.

        On my delta I find that M569 P0 F12 Y3:3:0 or Y3:3:1 produces just a slight hiss from the motors.

        The setting M569 C65968 P0 is invalid as noted on the wiki page. so RRF 2.02 doesn't allow it.

        HTH David

        Duet WiFi hardware designer and firmware engineer
        Please do not ask me for Duet support via PM or email, use the forum
        http://www.escher3d.com, https://miscsolutions.wordpress.com

        pytundefined 1 Reply Last reply Reply Quote 1
        • pytundefined
          pyt @dc42
          last edited by pyt

          @dc42 The spreadcycle optimization documentation recommends enabling random off time (M569 P0 D1) or chopSync (not supported?), should I do that? Is stealthChop an option too? This is on Duet 2 Wifi.

          It looks like there are several parameters that affect idle noise: TOFF, HSTRT, HEND, HDEC, RNDTF, CHM, TBL. I made a macro that goes through all possible permutations. Something like:

          G91 ; relative positioning
          M906 I100 ; disable idle-current reduction
          
          M117 P"F1 Y0:0:0" ; Print message
          M569 P2 F1 Y0:0:0 ; Set register
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          M117 P"F1 Y0:0:0 END" ; Print message
          
          M117 P"F1 Y0:0:1" ; Print message
          M569 P2 F1 Y0:0:1 ; Set register
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          M117 P"F1 Y0:0:1 END" ; Print message
          
          M117 P"F1 Y0:0:2" ; Print message
          M569 P2 F1 Y0:0:2 ; Set register
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          M117 P"F1 Y0:0:2 END" ; Print message
          
          M117 P"F1 Y0:0:3" ; Print message
          M569 P2 F1 Y0:0:3 ; Set register
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          G1 S2 Z-0.1 ; Move Z a little bit
          G4 P1000 ; Wait 1000ms
          M117 P"F1 Y0:0:3 END" ; Print message
          
          and so on...
          

          First I will find the best TOFF, then the best HSTRT/HEND/HDEC value, then the best RNDTF/CHM/TBL. Moving on to the next stage if the previous doesn't work.

          It would look like this: M569 P0 F12 Y3:3:0 D1 B2 ; X, TOFF 12, HSTRT 3, HEND 3, HDEC 16, CHM rndtf, TBL 36 in the worst case scenario.

          This is assuming that the following stage is dependent on the previous stage (i.e. HSTRT/HEND/HDEC is dependent on TOFF and I don't have to find TOFF again). Does this make sense?

          1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators
            last edited by

            When I read the TMC2660 datasheet, it sounded like the RNDTF bit doesn't affect stealthChop mode, because it's only discussed in the section about constant off-time mode. So if you want to try setting it in stealthChop mode, you will have to calculate the value of the whole chopper control register that you want, and set it using the C parameter of M569.

            The TMC2660 doesn't support chopSync or stealthChop. It does support coolStep, which reduces motor noise at low and medium speeds. It's disabled by default, because (like stealthChop) it increases the likelihood of skipped steps if the nozzle hits a blob or overhang.

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Unless otherwise noted, all forum content is licensed under CC-BY-SA