Noisy motors when idle



  • 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
    

  • administrators

    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



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


  • administrators

    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.


Log in to reply