Stepper motors grinding, banging and layers shifting
-
I'm using a Duet 3 Mini 5+ board with firmware and DWC version: 3.5.0-rc.2 and Duet WiFi Server: 2.1beta4 on a cartesian frame.
The problem I'm having is my stepper motors are grinding and banging and I'm having probelems with layers shifting. I think it's related to my Creality stepper motor settings. So I was going to start there. They're all Nema 17s. I'm using 2 x 42-40s on my X and Y axis, 1 x 42-40 on my extruder and 2 x 42-34 on my Z axis. I'd link to the datasheet if I knew where to look. I've found so many and there's so much contradiction between them that I didn't know which are applicable and which aren't. So, sorry for that. My printer was originally a CR-10S and that's where the stepper motors came from.
I've spent the last couple of days trying to figure out exactly how to set the values for these motors for Stealthchop, etc. I've hit a wall and have given up sorting it out. On the tuning page, it seems like you need to know what you're looking for already to put the values in. I have no idea what to test for or how to test. I looked at the EMF calculator page but I couldn't tell you what to do with those values or what they represent.
I have to be honest. I really like not having to flash the firmware everytime I'd like to make a change, but I'm hitting so many walls when it comes to configuring this board that it's beyond frustrating. The major problem I have is that most of the guides/instructions/discussions I can find are full of non-standard terms, acronyms, slang and written with an assumption of a very high level of knowledge. I'm finding it impossible to sort out things out without a herculean effort. The basic instructions are great, but I found I was out of my depth really quickly.
Here's my config.g:
; Configuration file for RepRapFirmware on Duet 3 Mini 5+ WiFi ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.2+1 on Fri Jan 05 2024 09:31:31 GMT-0600 (Central Standard Time) ; General M550 P"CR-10S Duet 3 Mini 5+" ; set hostname ; Accessories M575 P1 S0 B57600 ; configure PanelDue support ; Network M552 S1 ; configure WiFi adapter M586 P0 S1 ; configure HTTP ; Smart Drivers M569 P0.0 S1 D3 V91 ; driver 0.0 goes forwards (X axis) M569 P0.1 S0 D3 V91 ; driver 0.1 goes backwards (Y axis) M569 P0.2 S1 D3 V18 ; driver 0.2 goes forwards (Z axis) M569 P0.3 S1 D3 V18 ; driver 0.3 goes forwards (Z axis) M569 P0.4 S0 D3 V75 ; driver 0.4 goes backwards (extruder 0) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes M584 X0.0 Y0.1 Z0.2:0.3 ; set axis mapping M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X800 Y800 Z800 ; set axis driver currents M92 X80.91 Y80 Z403 ; configure steps per mm M208 X0:303 Y0:300 Z0:370 ; set minimum and maximum axis limits M566 X480 Y480 Z144 ; set maximum instantaneous speed changes (mm/min) M203 X12000 Y12000 Z1200 ; set maximum speeds (mm/min) M201 X1000 Y1000 Z100 ; set accelerations (mm/s^2) ; Extruders M584 E0.4 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E800 ; set extruder driver currents M92 E403.841 ; configure steps per mm M566 E300 ; set maximum instantaneous speed changes (mm/min) M203 E3000 ; set maximum speeds (mm/min) M201 E5000 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Probes M558 K0 P9 C"io3.in" H5 F1500:60 T6000 R0.1 A30 S0.01 ; configure BLTouch probe via slot #0 M950 S0 C"io3.out" ; create servo #0 for BLtouch G31 K0 P25 X46.3 Y7.8 Z2.027 ; Z probe parameters ; Endstops M574 X1 P"io5.in" S1 ; configure X axis endstop M574 Y1 P"io6.in" S1 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop ; Mesh Bed Compensation ; These coordinates are the probe locations. Not the hotend. Just tell it where you want it to probe M557 X46.5:302 Y7.68:299 P8:8 ; Sensors M308 S0 P"temp0" Y"thermistor" A"Bed Temp" T91785 B4571 ; configure sensor 0 as thermistor on pin temp0 M308 S1 P"temp1" Y"thermistor" A"Hotend Temp" T90904 B4505 C5.391309e-9 ; configure sensor #1 ; Heaters M950 H0 C"out0" T0 ; create Bed Heater #0 M143 H0 P0 T0 C0 S120 A0 ; configure monitor #0 for Bed Heater #0 M307 H0 R0.101 K0.178:0.000 D0.46 E1.35 S1.00 B0 ; configure model of Bed Heater #0 M950 H1 C"out1" T1 ; create Hotend Heater #1 M143 H1 P0 T1 C0 S280 A0 ; configure monitor #0 for Hotend Heater #1 M307 H1 R1.181 K0.290:0.005 D6.74 E1.35 S1.00 B0 V11.6 ; configure model of Hotend Heater #1 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Fans M950 F0 C"out3" Q100 ; create Part Cooling Fan on pin out3 and set its frequency M106 P0 C"Part Cooling Fan" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off M950 F1 C"out4" ; create Hotend Fan on pin out4 and set its frequency M106 P1 C"Hotend Fan" S1 H1:0 T45 ; set Hotend Fan name and value. Thermostatic control is turned on M950 F2 C"out5" ; create Case Fan on pin out5 and set its frequency M106 P2 C"Case Fan" S1 H-1 ; set Case Fan name and value. Thermostatic control is turned off ; Tools M563 P0 S"V6 Volcano" D0 H1 F0 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous G29 S1 ; load heightmap.csv M501 ; load saved parameters from non-volatile memory T0 ; select first tool ; Custom settings M280 P0 S160 ; Alarm Release and Push-Pin UP```
And here's my config-override.g:
; config-override.g file generated in response to M500 at 2024-01-27 13:57 ; This is a system-generated file - do not edit ; Heater model parameters M307 H0 R0.101 K0.178:0.000 D0.46 E1.35 S1.00 B0 M307 H1 R1.181 K0.290:0.005 D6.74 E1.35 S1.00 B0 V11.6 ; Z probe parameters G31 K0 P25 X46.3 Y7.8 Z2.027 ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00
Any help you can offer would be greatly appreciated.
-
@Phrayzur Is there a particular point in a print where you hear the grinding and banging?
I think the banging is to do with your changeover speed, set by the V parameter in M569. If I set my Mini 5+ using the same motor settings as you, and then check the settings using M569 P[driver number]:
M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 91 (101.9 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.1 Drive 1 runs in reverse, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 91 (103.0 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.2 Drive 2 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 18 (103.4 mm/sec), pwmScaleSum 9, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.3 Drive 3 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 18 (103.2 mm/sec), pwmScaleSum 4, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.4 Drive 4 runs in reverse, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 75 (24.8 mm/sec), pwmScaleSum 9, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
The variable to look at here is the 'tpwmthrs' and the speed setting after it. This is the speed it changes from stealthChop to spreadCycle. You have most of these set at 100mm/second. You have top speed (M203) for X and Y set at 12000mm/min, which is 200mm/second. Do you run at this speed, maybe for travel moves? At these speeds, you will get a 'bang' as it changes from stealthChop to spreadCycle, which can cause layer shifting.
Our general advice is to run in spreadCycle all the time; you will experience fewer missed steps, particularly at high speed, though the motors will be noisier. You can set the motors to stealthChop when stationary so they are quieter, by setting the changeover speed to be lower than the 'jerk' speed (maximum instantaneous speed changes) in M566; yours are set to 480mm/minute, or 8mm/second.
For this, set M569 with a high V value, eg:M569 P0.0 S1 D3 V4000 M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 4000 (2.3 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
Now the changeover is at 2.3mm/sec. So when stationary they will be in stealthchop, and when moving in spreadcycle.
Alternatively, if you want to run stealthchop all the time, for quieter operation at the expense of top speed and less torque, set V to zero, eg:
M569 P0.0 S1 D3 V0 M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 0 (inf mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
inf = infinite mm/sec means it will never change over to spreadcycle.
It would be good to find the motor specification. As far as I can tell, Creality use the same stepper motors for all their printers, at least people selling spare motors show this: https://www.3djake.uk/creality-3d-printers-spare-parts/stepper-motor
However, there's not much info on the motor specifications. If you can see any other part number on your motors, apart form 42-40 and 42-34, that may be useful. About the only thing I can find is that the 42-40 appears to be a 1A motor, and the 42-34 is a 0.8A motor. I would imagine they are quite high inductance motors, which limits their speed and may make them noisier; see https://docs.duet3d.com/en/User_manual/Connecting_hardware/Motors_choosing#inductance
In summary, I think your motors have high inductance, so will not run well at high speed, and will produce more noise. That, coupled with a high changeover speed between stealthchop and spreadcycle, are probably causing most of the noise, bangs and layer shifting.
Ian
-
How does it run without the stealthchop parameters?
-
@Phrayzur Is there a particular point in a print where you hear the grinding and banging?
I think the banging is to do with your changeover speed, set by the V parameter in M569. If I set my Mini 5+ using the same motor settings as you, and then check the settings using M569 P[driver number]:
M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 91 (101.9 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.1 Drive 1 runs in reverse, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 91 (103.0 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.2 Drive 2 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 18 (103.4 mm/sec), pwmScaleSum 9, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.3 Drive 3 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 18 (103.2 mm/sec), pwmScaleSum 4, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8 M569 P0.4 Drive 4 runs in reverse, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 75 (24.8 mm/sec), pwmScaleSum 9, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
The variable to look at here is the 'tpwmthrs' and the speed setting after it. This is the speed it changes from stealthChop to spreadCycle. You have most of these set at 100mm/second. You have top speed (M203) for X and Y set at 12000mm/min, which is 200mm/second. Do you run at this speed, maybe for travel moves? At these speeds, you will get a 'bang' as it changes from stealthChop to spreadCycle, which can cause layer shifting.
Our general advice is to run in spreadCycle all the time; you will experience fewer missed steps, particularly at high speed, though the motors will be noisier. You can set the motors to stealthChop when stationary so they are quieter, by setting the changeover speed to be lower than the 'jerk' speed (maximum instantaneous speed changes) in M566; yours are set to 480mm/minute, or 8mm/second.
For this, set M569 with a high V value, eg:M569 P0.0 S1 D3 V4000 M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 4000 (2.3 mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
Now the changeover is at 2.3mm/sec. So when stationary they will be in stealthchop, and when moving in spreadcycle.
Alternatively, if you want to run stealthchop all the time, for quieter operation at the expense of top speed and less torque, set V to zero, eg:
M569 P0.0 S1 D3 V0 M569 P0.0 Drive 0 runs forwards, active low enable, timing fast, mode stealthChop, ccr 0x00053, toff 3, tblank 0, tpwmthrs 0 (inf mm/sec), pwmScaleSum 11, pwmScaleAuto 0, pwmOfsAuto 36, pwmGradAuto 14, pos 8
inf = infinite mm/sec means it will never change over to spreadcycle.
It would be good to find the motor specification. As far as I can tell, Creality use the same stepper motors for all their printers, at least people selling spare motors show this: https://www.3djake.uk/creality-3d-printers-spare-parts/stepper-motor
However, there's not much info on the motor specifications. If you can see any other part number on your motors, apart form 42-40 and 42-34, that may be useful. About the only thing I can find is that the 42-40 appears to be a 1A motor, and the 42-34 is a 0.8A motor. I would imagine they are quite high inductance motors, which limits their speed and may make them noisier; see https://docs.duet3d.com/en/User_manual/Connecting_hardware/Motors_choosing#inductance
In summary, I think your motors have high inductance, so will not run well at high speed, and will produce more noise. That, coupled with a high changeover speed between stealthchop and spreadcycle, are probably causing most of the noise, bangs and layer shifting.
Ian
-
@Phaedrux They sound like they've got sand in them.
-
@droftarts I think I understand. That's huge help. I'm going to look into some new motors with lower inductance. Thanks for explaining it!
-
-
-
-
-
@Phrayzur try the settings I suggested before buying motors. And keep the speed down.
Ian