First, my Duet 3 Mini 5+ has lost two of its 2209 drivers to shorts, and I cannot identify the cause. I'm reliably getting "Phase A/B short to VIN" and unresponsive behaviors from drivers 0 and 3. I have ordered a replacement board, but I'm afraid I will ruin another driver or that the drivers were faulty.
The culprit printer is a Cartesian machine using a meanwell 24V supply (23.5V). Pictures of the wiring and the printer are attached. The motors are as follows:
X axis: Moons MS17HA2P4100 (11.2mH inductance: set to 800mA, rated for 1A)
Y axis: StepperOnline 17HS19-2004S1 (3mH inductance: set to 1200mA, rated for 2A) <axis that is shorting
Z axis: Moons unlabeled (integrated leadscrew motor from ~2014) (~9mH inductance: set to 600mA, don't know rating)
E axis: Revo Hemera XS (pancake motor I'm assuming from LDO) (? inductance: set to 500mA, don't know rating)
I printed for a while with zero issues using spreadcycle (was noisy) and stealthchop (was quietish). In the process of setting up sensorless homing/tuning stealthchop and stallguard, I shorted the first driver (3; Y axis). I don't know how I did it, but here is the gcode (y axis homing) that ran immediately before that short:
G91 ; relative motion
; Stealthchop Tuning
M18 Y ;y off
M569 P0.3 S1 D2 ;> spreadcycle
G4 P200 ;wait
M569 P0.3 S1 D3 V0 ;> stealthchop
M400 ; (clear)
M913 Y100 ;> full current
M17 Y ;y on
G4 P200 ;wait to allow driver to initialize parameters
;
G1 H2 Y-0.1 F1000 ;tiny move w report
G4 P200 ;wait 200ms (>140ms)
G1 H2 Y-18 F4800 ;medium velocity move to y-18 w report
G4 P200 ;wait
; Homing
M400
M913 Y50 ;lower current to y
M201 Y500 ;lower acceleration
M566 Y60 ;lower jerk
M915 Y S-10 F0 H200 R2 ;set high sensitivity
;
G4 P200 ;wait
G1 H1 Y180 F5000 ;move to Y axis endstop w report
G92 Y170 ;set coordinate to Y max
M400
G90 ;absolute motion
G1 H2 Y165 F1200 ;move away from max to allow X movements
; Restore Settings
M400
M913 Y100 ;% current
M201 Y9000 ;acceleration
M566 Y900 ;jerk
M915 Y S10 F1 H400 R0 ;set sensitivity & disable reports
Here is the relevant bit of my config file for motors and such:
; Drives
M569 P0.2 S0 D3 V0 ; physical drive 0.2 goes forwards
M569 P0.3 S1 D3 V0 ; physical drive 0.0 goes backwards
M569 P0.4 S0 F12 Y5:0 D3 V80 ; physical drive 0.4 goes forwards
M569 P0.1 S0 ; physical drive 0.1 goes forwards
M584 X0.2 Y0.3 Z0.4 E0.1 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X177.78 Y177.78 Z400.00 E397 ; set steps per mm
M566 X900.00 Y900.00 Z1200.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X19200.00 Y19200.00 Z2400.00 E2400.00 ; set maximum speeds (mm/min)
M201 X9000.00 Y9000.00 Z2400.00 E250.00 ; set accelerations (mm/s^2)
M906 X800 Y1200 Z600 E500 I10 ; set motor currents (mA) and motor idle factor in per cent
M84 S1 ; Set idle timeout
; Axis Limits
M208 X0 Y0 Z-3.5 S1 ; set axis minima
M208 X301 Y171 Z180 S0 ; set axis maxima
; Endstops
M574 X2 S3 ; configure sensorless endstop for high end on X
M574 Y2 S3 ; configure sensorless endstop for high end on Y
M574 Z1 S3 ; configure sensorless endstop for low end on Z
M915 X S3 F1 H400 R2 ;set sensitivity
M915 Y S10 F1 H400 R2 ;set sensitivity
M915 Z S3 F1 H400 R2 ;set sensitivity
After I started getting the "Phase B short to Vin" warning, I suspected the motor and immediately ordered a replacement motor. After getting the replacement, I set up the Y axis on driver 0.0, which was the unoccupied driver. This motor has an integrated harness, so the wires were new too, and I test each harness before connecting to the duet. Same thing happened - that homing code fried the Y axis driver after 3 or 4 runs (motor moved fine).
Second, I have figured out the hard way that the 2209's do NOT like my (relatively) high inductance moons motors on spreadcycle. They are noisy and no set of hysteresis, blanking time, or other variables has rendered them silent. For others who may read this: it is probably best to avoid high inductance motors if you want to print fast and quiet on the 2209's. I have also had a lot of trouble with stallguard with this particular printer; I'm guessing sensitivity settings vary depending on Vin. Maybe the spreadcycle-dependent stallguard on the 2660s (Duet 2) is more resilient to fluctuations induced by loads like a bed heater?
Here is the homing code for the X axis, which has the highest inductance motor: (please note the high sensitivity and low current that I have to use)
G91 ; relative motion
; Stealthchop Tuning
M18 X ;x off
M569 P0.2 S0 D2 ; > spreadcycle
G4 P200 ; wait
M569 P0.2 S0 D3 V0 ; > stealthchop
M400 ; (clear)
M913 X100 ; > full current
M17 X ; x on
G4 P200 ; wait to allow driver to initialize parameters
;
G1 H2 X-0.1 F1000 ; tiny move
G4 P200 ; wait >140ms
G1 H2 X-18 F4800 ; medium velocity move to y-20 The move needs to be >400steps made at a "medium speed", I think RPM > 10
G4 P200
; Homing
M400
M913 X10 ;lower current to x
M201 X500 ;lower acceleration
M566 X50 ;lower jerk
;M350 X16 I0
M915 X S-50 F0 H200 R2 ;set high sensitivity
;
G4 P200 ;wait
G1 H1 X330 F6000 ;home
G92 X300 ;set x coordinate to max
; Restore Settings
M400
M913 X100 ;> full current
M201 X9000 ;acceleration
M566 X900 ;jerk
M915 X S3 F1 H400 R0 ;set sensitivity and disable reports
4 questions:
-
Any ideas on what shorted the Y axis twice?
-
How can I avoid unreliable stallguard behaviors on the 2209's? (re: current & sensitivity settings in the x homing code)
-
How can I use spreadcycle quietly with a moons motor like the MS17HA2P4100? (spreadcycle is noisy)
-
Can the spreadcycle performance of the 2209 (duet 3 mini 5) not match the performance of the 2660 (duet 2) in noise?