Consistent issue with M584 Duet 3+mini 5
-
if i use sensor less homing on Z the first motor listed in M584 is always the one that fails, when it does the
G1 H1 Z-2.4 F1200; move a little for cal of sensor less homing / not stalled
M584 X0.1 Y0.0 Z0.6:0.5:0.4 E0.3
so motor 0.6 will failSwap cables over from motor 0.4 and 0.6
G1 H1 Z-2.4 F1200; move a little for cal of sensor less homing / not stalled
M584 X0.1 Y0.0 Z0.4:0.5:0.6 E0.3
so motor 0.4 will fail -
@moth4017 That's interesting. Here are some random thoughts that may avoid the stall...
Is the calibration move you are making being made with the reduced current and increased stall sensitivity settings normally used in sensorless homing? I notice that DC42's toolchanger homing macros (which use stall detection) https://github.com/Duet3D/RRF-machine-config-files/blob/master/E3D_Tool_Changer/dc42-duet3-centreZero-2Titan-2Hemera/sys/homex.g. Make the calibration move before reducing the motor current and use G1 H2 moves (which does not monitor the endstops) rather than the H1 moves you are using? Having said that given that you have multiple motors on your Z axis I'm not totally sure how you use G1 H2 in that situation!
-
@moth4017 what exactly do you mean by "fail" ?
-
@dc42
hi only 2 out of the 3 stepper motors do "G1 H1 Z-2.4 F1200" either motor 0.4 or 0.6 fails to move depending which one is first in the list M584 -
@gloomyandy
hi i have seen that post too and i do this .; home_max_Z echo "start home max Z" M122 M569 P0.4 ; Check status in console M569 P0.5 M569 P0.6 G91 ; relative positioning M569 P0.4 S1 D3 V10 ; set to stelth chop M569 P0.5 S0 D3 V10 ; set to stelth chop M569 P0.6 S1 D3 V10 ; set to stelth chop M915 P0.4 S5 F0 R1 H300 ; Configure Z-Axis Stall Detection M915 P0.5 S5 F0 R1 H300 ; Configure Z-Axis Stall Detection M915 P0.6 S5 F0 R1 H300 ; Configure Z-Axis Stall Detection echo "diag before stall detection setup" G4 P400 echo "stall detection setup" M17 Z ;energise a motor for stealthChop tuning G4 P400 ; pause to allow the drivers to characterise the motor G1 H1 Z-2.4 F1200 ; move a little for cal of sensorless homing / not stalled echo "after stall detection setup" M569 P0.4 ; Check status in console M569 P0.5 M569 P0.6 echo "lower motor current" M913 Z80 ; Lower motor current % M566 Z15.00 ;jerk M201 Z50.00 ; set accelerations (mm/s^2) G4 P150 ;wait time ms M574 Z2 S4 ; Configure Z-Axis stall detection homing ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console echo "home max z" G1 H1 Z350 F3000 ; Home Z-Axis actuators independently G92 Z300 ; set a Z height ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console G90 ; absolute positioning G4 P300 ;revert back echo "after revert back" M913 Z100 ; Reset motor current M569 P0.4 S1 D2 V2000 ; reset motors back to spread cycle, M569 P0.5 S0 D2 V2000 ; reset motors back to spread cycle, M569 P0.6 S1 D2 V2000 ; reset motors back to spread cycle, M915 P0.4 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection M915 P0.5 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection M915 P0.6 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console M84 ; turn off motors echo "The bed has landed"
-
@moth4017 So it looks like you are setting the stall detection thresholds to a fairly sensitive value before you do the stealthchop tuning move. That will make it more likely that the motors will stall. As I said above you might want to consider making the tuning move with the stall detection settings in "normal" mode, hopefully this will prevent a stall during tuning.
-
@gloomyandy
Hi ive tried "S" values from 1 to 45 they all seem to work ok , but if i get "S" values over 55 they wont stall at all and the steppers make a horrible noise as they are skipping -
@moth4017 That wasn't my point. I was suggesting that you do the stealthchop tuning moves before you use M915 to set a more sensitive stall detection value. That way your tuning moves will hopefully not stall. Just to be clear those small moves you do at the beginning are to tune stealthchop, not to tune stall detection so you do not need to have set a sensitive stall detection value for them. So at the moment your home macro does this....
Set stealthchop mode Set sensitive stall detect Do stealthchop tuning Set lower current Do Homing moves Set current back to 100% Set Spreadcycle mode
What I'm suggesting is that you change this to
Set stealthchop mode Do stealthchop tuning Set sensitive stall detect Set lower current Do Homing moves Set current back to 100% Set Spreadcycle mode
You might even want to use...
Set stealthchop mode Set stall detect to least sensitive value 127 for stealthchop tuning Do stealthchop tuning Set sensitive stall detect Set lower current Do Homing moves Set current back to 100% Set Spreadcycle mode
-
@gloomyandy
Hi interesting, did a test not the result i was expecting , now motor 0.6 and 0.4 are not moving with "G1 H1 Z-2.4 F1200"tried this optio too
Set stealthchop mode
Set stall detect to least sensitive value 127 for stealthchop tuning
Do stealthchop tuning
Set sensitive stall detect
Set lower current
Do Homing moves
Set current back to 100%
Set Spreadcycle modestill looks like the same issues motor 0.6 still not moving with "G1 H1 Z-2.4 F1200"
-
@moth4017 I can't imagine why it would do that. It would probably help if you post the actual code you are using for these tests so we can be sure we are talking about the same things.
Going back to the code I posted earlier from DC42: https://github.com/Duet3D/RRF-machine-config-files/blob/master/E3D_Tool_Changer/dc42-duet3-centreZero-2Titan-2Hemera/sys/homex.g You will see that he does not use G1 H1 moves during the tuning but rather G1 H2 moves (which move individual motors and do not monitor the endstops). However I'm not sure how you do that when you have a setup with multiple Z motors, perhaps @dc42 could comment. It may be that you need to split the Z axis to allow that to be done, alternately you could just use M564 to allow movement without homing and then use a relative G1 move (with no H parameter) for the tuning move.
But when all of this is said and done, I'm not convinced that using sensorless homing is actually a good idea on a Z axis. As you are finding it is tricky to set up and I'd be worried about the potential damage if things go wrong (a Z axis usually has significantly more torque than others). Good luck!
-
@gloomyandy said in Consistent issue with M584 Duet 3+mini 5:
But when all of this is said and done, I'm not convinced that using sensorless homing is actually a good idea on a Z axis. As you are finding it is tricky to set up and I'd be worried about the potential damage if things go wrong (a Z axis usually has significantly more torque than others). Good luck!
I'd second that. Just out of interest, I did once play around with stall detection on my UV gantry which carries 6 extruders and which has a moving mass of around 3Kgs and so therefore requires some fairly hefty Nema23s in order to accelerate it at the required rate to do the non-print moves of 350mm/sec. The problem is that it requires a fair amount of torque just to move that mass and the difference between the motor load under "normal conditions" and stalling after smashing into the frame is too small. Either the motor wouldn't move, or the frame would start to bend before the motor stalled. My conclusion (rightly or wrongly) was that there needs to be a big difference in motor load between a normal move and a stall condition.
-
just to be clear im not homing Z at the nozzle height , im homing at max distance away from the nozzle.
the Z stepper motors nema 17 have a 4:1 gear box on each
-
@moth4017 said in Consistent issue with M584 Duet 3+mini 5:
just to be clear im not homing Z at the nozzle height , im homing at max distance away from the nozzle.
the Z stepper motors nema 17 have a 4:1 gear box on each
Well I wish you the very best of luck in getting that to work.
-
@deckingman @dc42
so it works most of the time and its the first motor in the M584 list that stops moving
, when it fails its not good , and always fails when the printer is first turned on as it runs the macro in the config file, if i press "emergency stop" in DWC i get a non moving stepper motor , and if i do a "pause" "cancel" while printing i get a non moving stepper motor.always the first one in the M584
PS i like the printed flags you did
-
@moth4017 I don't think what you are trying to do is ever going to work reliably for multiple reasons, but that aside can you post your entire config.g please? I might have an idea that might fix your immediate problem.
-
; Config.g G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Valkyrie 3030 V004" ; set printer name M669 K1 ; core xy ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S1 D2 ; physical drive 0 goes forwards M569 P0.1 S1 D2 ; physical drive 1 goes forwards M569 P0.2 S1 ; physical drive 2 goes forwards ( blown needs replacing) M569 P0.3 S0 ; physical drive 3 extruder M569 P0.4 S1 D2 ; physical drive 4 goes forwards D3=stealthchop M569 P0.5 S0 D2 ; physical drive 5 goes backwards M569 P0.6 S1 D2 ; physical drive 6 goes forwards M584 X0.1 Y0.0 Z0.6:0.5:0.4 E0.3 ; set drive mapping FL,FR,RC M350 X16 Y16 I1 ; configure microstepping with interpolation M350 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z320.00 E562.00 ; set steps per m M566 X800.00 Y800.00 Z10.00 E100.00 P1 ; set maximum instantaneous speed changes (mm/min) jerk M203 X24000.00 Y24000.00 Z2000.00 E400.00 ; set maximum speeds (mm/min) M201 E250.00 ; set accelerations (mm/s^2) M201.1 X2200.00 Y2200.00 Z30.00 ; set accelerations (mm/s2) M906 X1000 Y1000 Z1000 E750 I100 ; set motor currents (mA) and motor idle factor in per cent M84 X Y S20 ; Set idle timeout sec ; Axis Limits M208 S1 X-28 Y-50 Z0 ; set axis minima "Travel Area" M208 S0 X290 Y295 Z405 ; set axis maxima "Travel area" ; Endstops M574 X1 S3 ; configure sensorless endstop, 1 = low end, 2 = high end. s3 = single motor, S4 multipule motors M574 Y2 S3 ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in M574 Z2 S4 ; configure sensorless endstop for high end on Z, 1 = low end, 2 = high end.S3= single motor, S4 multipule motors M671 X-20:300:150 Y0:0:280 S25 ; leadscrews at front left,front right, rear Center s= max correction factor must be in same order as M584 M558 P8 C"!io3.in" H10 F1500 T20000 R0 A2 S0.05 ; set Z probe type to unmodulated and the dive height + speeds ;nozzel offset G31 P500 Z0.6 ; set Z probe trigger value, offset and trigger height bigger the posative number the closer to the bed G31 P500 X27 Y-15 ; set x,y trigger value, offset and trigger height M557 X10:290 Y10:285 S100 ; define mesh grid ; Heaters ;Bed M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed T °C" ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"out0" T0 Q10 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 R0.838 K0.331:0.000 D3.08 E1.35 S0.90 B0 ; PDI info for 8mm aluminium bed 700w Heater NTC 100K 3950 M140 H0 ; map heated bed to heater 0 M143 H0 S130 ; set temperature limit for heater 0 to max C ;extruder M308 S1 P"temp1" Y"pt1000" A"Extruder T °C" ; configure sensor 1 as thermistor on pin e0temp (104gt2) M950 H1 C"out1" T1 ; create nozzle heater output on e0heat and map it to sensor 1 ;M307 H1 R3.558 K0.357:0.000 D9.14 E1.35 S1.00 B0 V23.8 ; disable bang-bang mode for heater and set PWM limit M307 H1 R4.681 K1.015:0.000 D5.25 E1.35 S1.00 B0 V23.8 M143 H1 S320 ; set temperature limit for heater 1 to max C ;Chamber M308 S2 P"temp2" Y"thermistor" T100000 B4267 A"Chamber T °C" ; configure sensor 2 as thermistor on pin temp2 M950 H2 C"out5" T2 ; create chamber heater output on 1.out0 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for the chamber heater and set PWM limit M141 H2 ; map chamber to heater 2 M143 H2 S100 ; set temperature limit for heater 2 to 280C M308 S10 Y"mcu-temp" A"MCU" ; defines sensor 10 as MCU temperature sensor M308 S11 Y"drivers" A"Duet stepper drivers" ; defines sensor 11 as stepper driver temperature sensor G1 H1 Z-0.2 F1000 ; Fans M950 F0 C"out4" Q250 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 C"Part Fan" ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out3" Q250 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T35 C"Extruder Fan" ; set fan 1 value. Thermostatic control is turned on ;filter fan 12 v M950 F2 C"out6" Q250 ; create fan on output, set its frequency M106 P2 S1 T40 H1 C"Filter Fan" ; set fan value. Thermostatic control is turned on ;ROS M950 J2 C"io6.in" ;config input pin switch NO connected to io6 and Gnd M581 P2 T1 C0 S0 ;T0 = emergency stop on trigger; T1 = pause print; T{N} = runs the macro "sys/trigger{N}.g", rising edge S1 falling edge S0 ;M581 P1 T4 c0 ;run a macro trigger4.g M582 T0 ; Check External Trigger ; Tools M563 P0 D0 H1 F0 ; 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 T0 ; Custom settings are not defined M98 P"/macros/home_max_Z" ;External Buttons M950 J1 C"!io2.in" ;config input pin switch NO connected to io2 and Gnd M581 P1 T0 C0 ;T0 = emergency stop on trigger; T1 = pause print; T{N} = runs the macro "sys/trigger{N}.g", rising edge S1 falling edge S0 ;M581 P1 T4 c0 ;run a macro trigger4.g M582 T0 ; Check External Trigger
; home_max_Z echo "start home max Z" M122 M569 P0.4 ; Check status in console M569 P0.5 M569 P0.6 G91 ; relative positioning M569 P0.4 S1 D3 V10 ; set to stelth chop M569 P0.5 S0 D3 V10 ; set to stelth chop M569 P0.6 S1 D3 V10 ; set to stelth chop M915 P0.4 S127 F0 R1 H400 ; Configure Z-Axis Stall Detection M915 P0.5 S127 F0 R1 H400 ; Configure Z-Axis Stall Detection M915 P0.6 S127 F0 R1 H400 ; Configure Z-Axis Stall Detection echo "stall detection setup" M17 Z ;energise a motor for stealthChop tuning G4 P400 ; pause to allow the drivers to characterise the motor G1 H1 Z-2.4 F1200 ; move a little for cal of sensorless homing / not stalled echo "after stall detection setup" M569 P0.4 ; Check status in console M569 P0.5 M569 P0.6 M915 P0.4 S10 F0 R1 H300 ; Configure Z-Axis Stall Detection M915 P0.5 S10 F0 R1 H300 ; Configure Z-Axis Stall Detection M915 P0.6 S10 F0 R1 H300 ; Configure Z-Axis Stall Detection echo "diag before stall detection setup" G4 P400 echo "lower motor current" M913 Z80 ; Lower motor current % M566 Z15.00 ;jerk M201 Z50.00 ; set accelerations (mm/s^2) G4 P150 ;wait time ms M574 Z2 S4 ; Configure Z-Axis stall detection homing ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console echo "home max z" G1 H1 Z350 F3000 ; Home Z-Axis actuators independently G92 Z300 ; set a Z height ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console G90 ; absolute positioning G4 P300 ;revert back echo "after revert back" M913 Z100 ; Reset motor current M569 P0.4 S1 D2 V2000 ; reset motors back to spread cycle, M569 P0.5 S0 D2 V2000 ; reset motors back to spread cycle, M569 P0.6 S1 D2 V2000 ; reset motors back to spread cycle, M915 P0.4 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection M915 P0.5 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection M915 P0.6 S45 F0 R1 H500 ; Configure Z-Axis Stall Detection ;M569 P0.4 ; Check status in console ;M569 P0.5 ; Check status in console ;M569 P0.6 ; Check status in console M84 ; turn off motors echo "The bed has landed"
here is it working on a duet2 https://www.youtube.com/watch?v=I8Al3ULsmxc
-
Hi is it possible you can try out this issue it is always the first stepper motor in M584 , , if i arrange the lis to to either :-
M584 Z0.6:0.5:0.4
M584 Z0.4:0.5:0.6
M584 Z0.5:0.6:0.4Its always the first one in the list that doesnt move when i run my home max Z macro.
i have also noticed this with the X and Y access depending on which access i home first too when i first start the printer , after the first time X and Y is homed it doesnt do it againg untill the printer is switched 0ff then on again.
-
This may be a bug in sensorless homing when using multiple motors. I think there may have been a similar issue reported a while ago. It's pretty rare for people to even try Z axis stall detection let alone with multiple motors. Normally the use case would be for multiple motors on an X or Y axis in a cartesian arrangement.
Would you be able to create an issue report? https://github.com/Duet3D/RepRapFirmware/issues
-
@phaedrux bug report filed
-
@moth4017 thanks, added to my investigations list.