Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Does M574 S4 work ?

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    6
    19
    664
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Garfieldundefined
      Garfield
      last edited by

      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
      
      
      
      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by

        Version of RRF3?

        Z-Bot CoreXY Build | Thingiverse Profile

        1 Reply Last reply Reply Quote 0
        • Garfieldundefined
          Garfield
          last edited by

          Current version is RC2

          1 Reply Last reply Reply Quote 0
          • Garfieldundefined
            Garfield
            last edited by

            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.

            1 Reply Last reply Reply Quote 0
            • astrnundefined
              astrn
              last edited by

              I wonder if this one works now? I encountered a similar problem with S4 command on my triple motor Z axis bed.

              dc42undefined 2 Replies Last reply Reply Quote 0
              • dc42undefined
                dc42 administrators @astrn
                last edited by

                @astrn said in Does M574 S4 work ?:

                I wonder if this one works now? I encountered a similar problem with S4 command on my triple motor Z axis bed.

                What firmware version are you running?

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                1 Reply Last reply Reply Quote 0
                • dhusoloundefined
                  dhusolo
                  last edited by

                  What board do you have? It's labeled as Duet 3 but you're still running RRF2? Regardless you should upgrade to at least the stable branch of RRF 3.1.1

                  1 Reply Last reply Reply Quote 0
                  • Garfieldundefined
                    Garfield
                    last edited by Garfield

                    I'd forgotten about this one entirely - well almost entirely- I've never had to mechanically zero things since so it has become something of a none issue. The three axis bed leveling works extremely well, so much so that I've never needed to.

                    I'm reluctant to list my config because my machine and yours may have very little in common but it is here config.g

                    What I would like is a live Z similar to Prusa because I'm really fighting with 1st layers at the moment - but only with PETG ... I'm still trying to figure this out - I can print PETG flawlessly on the MK3S my coreXY won't play ball.

                    dc42undefined 1 Reply Last reply Reply Quote 0
                    • dc42undefined
                      dc42 administrators @Garfield
                      last edited by

                      @Garfield said in Does M574 S4 work ?:

                      What I would like is a live Z similar to Prusa

                      Do you mean babystepping?

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

                      1 Reply Last reply Reply Quote 0
                      • Garfieldundefined
                        Garfield
                        last edited by

                        Not entirely, we have the babysteps but once it is established some way to commit the adjustment to permanent storage - a permanent Z offset so that I don't need to mess around in the slicer and can send to either printer. I currently have a Fusion360 drawing I use that is essentially just a series of lines, I have one that is a series of squares all 1 layer in height, partly visual and also measured.

                        Problem with materials like PET-G is avoiding nozzle pickup / contamination and getting a good lay down of the 1st layer. If you apply an offset as recommended with PETG i.e. -.2mm 'printing in air' the first layer flat out doesn't work, if you lay down at the prescribed layer height i.e. 0.15 the filament builds up on the nozzle. if you babystep in 0.02 increments you can prevent the filament build up but then a 0.2mm layer becomes 0.26.

                        Once I've baby stepped to a level that works I'd like to store it as a permanent offset in the machine against the currently loaded filament so that I don't need to mess around in the slicer.

                        1 Reply Last reply Reply Quote 0
                        • Vetiundefined
                          Veti
                          last edited by

                          but you can just add
                          G31 Z<new offset>
                          to your filament config.

                          is that not what you want?

                          1 Reply Last reply Reply Quote 0
                          • Garfieldundefined
                            Garfield
                            last edited by Garfield

                            No that isn't what I require. I do not want to interfere with the trigger height.

                            I want to add a permanent offset to printed Z co-ordinates, basically if I print a layer height of 0.15 I need the head to be at 0.23. Yes I can set this in the slicer, no I don't want to so that I have a minimum number of adjustment needed to send to any of my printers.

                            My trigger height and the machine are 100% accurate, verified with feeler gauges, I do not want to mess with those, I could theoretically adjust the trigger height but then it isn't as intuitive as simply applying an offset + or -

                            1 Reply Last reply Reply Quote 0
                            • Vetiundefined
                              Veti
                              last edited by

                              ok then just set the babystepping in the filament config

                              https://duet3d.dozuki.com/Wiki/Gcode#Section_M290_Baby_stepping

                              1 Reply Last reply Reply Quote 0
                              • Garfieldundefined
                                Garfield
                                last edited by Garfield

                                This isn't the same thing - I don't want to adjust the babystep increment - if I run a test where I use babysteps to get things to where I need them I then need an option via 'M500' or something to set the established co-ordinate offset - this needs to happen with the printer running.

                                Run test print, babystep until settings are where you require 'save' - this is no different to setting a zero point on a lathe or CNC with an edge finder - you don't need to mess with the machines base configuration and it becomes 'per filament' without the need to manually edit files. It could be done as an adjustment to the trigger height but I think it more intuitive if it just offsets the Z co-ordinate.

                                Vetiundefined 1 Reply Last reply Reply Quote 0
                                • Vetiundefined
                                  Veti @Garfield
                                  last edited by

                                  @Garfield said in Does M574 S4 work ?:

                                  becomes 'per filament'

                                  yes use the filament config as i said.
                                  https://duet3d.dozuki.com/Wiki/Filaments

                                  1 Reply Last reply Reply Quote 0
                                  • Garfieldundefined
                                    Garfield
                                    last edited by

                                    Aware of but that isn't what I'm asking for ..

                                    Consider

                                    G31 P1 X-21 Y0 Z0.868 C0.002 S29 H3

                                    This shows the trigger height for 'normal' - and it is really the trigger height, if I move Z -0.868 the nozzle tip touches the bed 'just'. Thus Z0 really is 0.

                                    To use G31 P1 X-21 Y0 Z0.768 C0.002 S29 H3 will provide a +0.1 offset - but it is a fake and any baby stepping isn't really working around 0 it is based off a fake zero and Z0 is actually 0.1 which is fine.

                                    If I set this to G31 P1 X-21 Y0 Z0.968 C0.002 S29 H3 then Z0 is actually -0.1 which is below the bed surface - the machine will be able to violate the bed surface - I've no intention of destroying any more beds because of this. My Z0 because of the machine architecture cannot be a 'hard' stop.

                                    Just hypothetical of course - trying to explain why I want an offset from Z - I don't want to confuse the machine with regards where absolute 0 really is 'Z0' will be below the bed surface with the last G31 line. If I screw around with babystepping with a false trigger point I could create the same problem.

                                    My Z0 needs to remain a rigid boundary to protect the machine from my stupidity. I need an offset that maintains Z0 integrity.

                                    1 Reply Last reply Reply Quote 0
                                    • Vetiundefined
                                      Veti
                                      last edited by

                                      so additionally set the M208 Z0.1 S1 in this case.

                                      1 Reply Last reply Reply Quote 0
                                      • Garfieldundefined
                                        Garfield
                                        last edited by

                                        Agreed but do you see where this is going - now you have two settings to deal with.

                                        None of which can be updated with a simple command post babystepping - there is no OK I'm happy with that save the results and apply permanently - M500 type stuff. M500 stores in the config-override and not against the currently loaded filament.

                                        1 Reply Last reply Reply Quote 0
                                        • dc42undefined
                                          dc42 administrators @astrn
                                          last edited by

                                          @astrn said in Does M574 S4 work ?:

                                          I wonder if this one works now? I encountered a similar problem with S4 command on my triple motor Z axis bed.

                                          I have tested M574 X1 S4 on a Duet WiFi with 3 X motors connected, and it is working as intended.

                                          Duet WiFi hardware designer and firmware engineer
                                          Please do not ask me for Duet support via PM or email, use the forum
                                          http://www.escher3d.com, https://miscsolutions.wordpress.com

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA