Does M574 S4 work ?
I have 3 Z axis steppers, CoreXY, I have stallguard working as an endstop - well I thought I did - on initialization to ensure steppers are in synch I drive the bed all the way to the bottom of the frame where each stepper has a hard stop and where the bed is mechanically as level as I can get it.
The problem arises when I deliberately put the steppers out of synch - to tilt the bed basically.
When I drive the steppers to the bottom all three motors stop on the first motor that contacts the hard stop - this is not the behaviour I require - I need the other two to keep going until they themselves stall.
To this end I used M574 Z2 S4, Z2 because the stall is at the prints highest point (as in 330mm not 0), s4 is supposed to stall each motor individually.
M574 docu states
- New endstop type S4 means use motor stall detection (like S3) but if there are multiple motors, stop each one individually as it stalls.
It does not do this - it stops all three motors when the first stalls.
I read a section referred to that describes splitting up the Z steppers into single channels but that doc states that it does not apply to RRF3 in the introduction
somebody care to verify the definition for this
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.4 on Mon Dec 30 2019 11:11:59 GMT+0000 (Greenwich Mean Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 3" ; set printer name M669 K1 ; select CoreXY mode ; Drives M569 P0.0 S0 ; physical drive 0.0 goes forwards X M569 P0.1 S0 ; physical drive 0.1 goes forwards Y M569 P0.2 S1 ; physical drive 0.2 goes forwards E M569 P0.3 S1 ; physical drive 0.3 goes Forwards Z1 M569 P0.4 S1 ; physical drive 0.4 goes Forwards Z2 M569 P0.5 S1 ; physical drive 0.5 goes Forwards Z3 M584 X0 Y1 Z3:4:5 E2 P3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z1600.00 E409.00 ; set steps per mm M566 X90.00 Y90.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X4800.00 Y4800.00 Z1480.00 E120.00 ; set maximum speeds (mm/min) M201 X100.00 Y100.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X1680 Y1680 Z1330 E1330 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-157:162 Y-157:149 Z0:3330 ; set axis Min / Max M671 X-188.7:10:199 Y-127:199:-127 S10 ; Set Bed Pivot Locations ; Extruder / Hot end M308 S0 P"spi.cs0" Y" rtd-max31865" A"Hot End" ; configure sensor 0 as a PT100 on Port 1 of temperature daughter board M950 H0 C"out1" T0 ; create nozzle heater output on out2 and map it to sensor 1 M143 H0 S320 ; set temperature limit for heater 1 to 320C M307 H0 B0 S1.00 ; disable bang-bang mode for the nozzle heater and set PWM limit M563 P0 S"Extruder" D0 H0 F1 ; 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 M950 F0 C"out7" Q500 A"Part Cool" ; set part cooling fan output M106 P0 H-1 ; Thermostatic control is turned off M950 F1 C"out8" Q500 A"Extruder" ; set hot end cooling fan output M106 P1 H0 T45 ; Thermostatic control is turned on, enables at 45C ; Bed M308 S1 P"temp0" Y"thermistor" A"Bed" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp0 M950 H1 C"out2" T1 Q10 ; create bed heater output on out1 and map it to sensor 1 M143 H1 S120 ; set temperature limit for heater 0 to 120C M307 H1 B0 S0.5 ; disable bang-bang mode for the bed heater and set PWM limit M140 H1 ; map heated bed to heater 0 ; MCU M308 S2 Y"mcu-temp" A"CPU" M950 F2 C"!out4" A"MCU" Q25000 L.07 M106 P2 T40:44 H2 ; set Duet cooling fan ; Pinda Probe M308 S3 P"temp1" Y"thermistor" T100000 A"Pinda" B4725 C7.06e-8 ; configure sensor as thermistor on pin temp1 M558 P5 C"!io6.in" H2 A3 F120 T2000 ; set Z probe type to switch filtered G31 P1 X-39 Y-31.5 Z2.0 C0.2 S40 H2 ; set Z probe trigger, offset, trigger height, temperature compensation ; Spare Sensor ; M308 S4 P"spi.cs1" Y" rtd-max31865" A"Spare" ; configure sensor 4 as a PT100 on Port 2 of temperature daughter board ; Filament Detection M591 D0 P3 C"io5.in" S1 R70:130 L24.8 E3.0 ;Duet3D rotating magnet sensor for extruder drive 0 is connected to I/O 5 input, ; enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length ; Endstops M574 X1 S1 P"!io0.in" ; configure active-hi endstop for low end on X via pin io0.in M574 Y1 S1 P"!io1.in" ; configure active-hi endstop for low end on Y via pin io1.in M574 Z2 S4 ; configure stall current detect endstop for Z M915 P3:4:5 S3 F0 H400 R0 ; M915 P3 S3 F0 H400 R0 ; M915 P4 S3 F0 H400 R0 ; M915 P5 S3 F0 H400 R0 ; define mesh grid ; LED Enable Relay M950 F3 C"out9" A"Led Relay" ; set its name ; PINDA - Z-Probe G31 X-20 Y0 ; Miscellaneous M501 ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
Version of RRF3?
Current version is RC2
After trying numerous different ways to define my Z axis and in the absence of other input I can only conclude that the S4 when applied to a single axis with multiple motors doesn't work.
Currently I have no choice but to manually drive the Z axis manually and disable stall detection on it.