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

    Homing sequence - Z axis first, then X and Y [SOLVED]

    Scheduled Pinned Locked Moved
    General Discussion
    6
    16
    3.8k
    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.
    • thweundefined
      thwe @DocTrucker
      last edited by

      @doctrucker : correct, my z limit switch is on max, also the bed is down when the switch is activated

      Thomas

      1 Reply Last reply Reply Quote 0
      • thweundefined
        thwe @Veti
        last edited by

        @veti : in the homeall.g the z-homing procedure is on top - that works fine …

        … but, if I press after a the reset the button "Home Z" I get the error message: "Error: Must home These axes: XY before homing These: Z"

        Thomas

        T3P3Tonyundefined dc42undefined 2 Replies Last reply Reply Quote 0
        • thweundefined
          thwe @Phaedrux
          last edited by

          @phaedrux : As DocTrucker has already correctly suspected i will move the bed down before any other moves, to avoid part collision

          Thomas

          1 Reply Last reply Reply Quote 0
          • DocTruckerundefined
            DocTrucker
            last edited by DocTrucker

            If you want to bypass the warning you can force the current position to an arbitary position by doing G92 X[any number] Y[any number] Z[any number] then doing the usual drives onto limit switch commands.

            Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

            1 Reply Last reply Reply Quote 0
            • T3P3Tonyundefined
              T3P3Tony administrators @thwe
              last edited by

              @thwe Use G1 S2 Zxx to move the Z axis a bit before homing the other two axis. See:

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

              Specifically:

              G1 Xnnn Ynnn Znnn S2 Ignore endstops while moving. Also ignore if axis has not been homed. On Delta and CoreXY, axis letters refer to individual towers.

              You will see this in the documentation that was already linked:
              https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_Z

              G91 ; relative mode
              G1 S2 Z4 F200 ; raise head 4mm to ensure it is above the Z probe trigger height
              G90 ; back to absolute mode
              

              www.duet3d.com

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

                @thwe said in Homing sequence - Z axis first, then X and Y:

                @veti : in the homeall.g the z-homing procedure is on top - that works fine …

                … but, if I press after a the reset the button "Home Z" I get the error message: "Error: Must home These axes: XY before homing These: Z"

                Check that your homeall.g file is set up to home Z using a G1 S1 Z command. That message should only be produced if you are using a Z probe to home Z. https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_Z

                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

                thweundefined 1 Reply Last reply Reply Quote 0
                • thweundefined
                  thwe @dc42
                  last edited by

                  @dc42 : There is a "G1 S1 Zxxx" command in my homez.g - see my file:

                  *; homez.g
                  ; called to home the Z axis
                  ;
                  ; Drive 0 as X
                  ; Drive 1 as Y
                  ; Drive 2 as Z -> 1st Z-motor (left one, viewed from ahead) which is normal Z
                  ; Drive 3 as U -> 2nd Z-motor (right one, viewed from ahead) which is now U
                  ; Drive 4 as Extruder

                  G91 ; relative positioning

                  M584 Z2 U3 P4 ; Split Z into 2 (Z+U)

                  G1 S1 Z999 U999 F800 ; Move the bed down in the Z direction. S1 to stop if endstop is triggered
                  G1 S2 Z-3 U-3 F800 ; Move the bed up 3mm in the -Z direction, ignore if axis are not homed
                  G1 S1 Z5 U5 F200 ; Move slowly in the +Z direction again to stop exactly at the homing switch
                  M400 ; Wait for current moves to finish

                  G4 P100
                  G1 S2 Z0.00 U0.04 F200 ; Correction of a mounting suitability from the limit switches
                  G4 P100

                  M584 Z2:3 P3 ; Join U to Z again

                  G92 Z290 ; set position of Z relativ to the bed (!!must be adjusted here!!)

                  G90 ; Back to absolute mode
                  G1 Z280 F1000 ; Move bed to Z Position*

                  and here is my homeall.g

                  *M98 Phomez.g ; Z homing

                  M98 Phomex.g ; X homing

                  M98 Phomey.g ; Y homing

                  G90
                  G1 X150 Y150 Z280 F1800 ; Goto Zero-Position*

                  In my understanding (Attention: i am a beginner 😉 ) it should work so?

                  Again, if I click the button "Home all" in the DWC, it works fine - but I first click the button "Home Z" I get the already posted error message

                  OK, the difference of the buttons after a restart: "Home All" is highlighted in blue, the others in orange.

                  Thomas

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

                    I've just tested homing Z before XY on a Cartesian printer, and it's working for me if I don't try to do any XY movements in homez.g. This is with my current firmware build that I hope will soon be the 2.02RC4 release.

                    What the code implements is that if there is a Z probe configured and either the Z endstop type is set to "Z probe" or the Z endstop position is set to "none", then X and Y must be homed before Z. I don't think this has changed since the 2.01 release that you are using, but I could be wrong.

                    Please post your config.g file.

                    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
                    • thweundefined
                      thwe
                      last edited by

                      My config.g:

                      ############## Configuration file for Duet WiFi ##############
                      ; ############## executed by the firmware on start-up ##############
                      ;
                      ; Firmware Electronics: 1.04
                      ; Firmware Version: 2.01 (RTOS), 2018-07-26b2
                      ; WiFi-Server: 1.21
                      ; Web-Interface: 1.22.3
                      ;
                      ; Drive 0 as X
                      ; Drive 1 as Y
                      ; Drive 2 as Z -> 1st Z-motor (left one, viewed from ahead) which is normal Z
                      ; Drive 3 as U -> 2nd Z-motor (right one, viewd from ahead) which is now U
                      ; Drive 4 as Extruder

                      ; ############## General preferences ##############
                      M667 S1 ; Switch to CoreXY mode
                      G90 ; Send absolute coordinates...
                      M83 ; ...but relative extruder moves
                      M555 P1 ; Set firmware compatibility to look like RepRapFirmare

                      ; ############## Network - Connect to a wifinet ##############
                      M552 S0 ; Disable network
                      M550 DUTH-PULLEYX ; Set machine name
                      M552 S1 ; Enable network
                      M586 P0 S1 ; Enable HTTP
                      M586 P1 S0 ; Disable FTP
                      M586 P2 S0 ; Disable Telnet

                      ; ############## Drives ##############
                      M569 P0 S1 ; Drive 0 -> X -> goes forwards
                      M569 P1 S0 ; Drive 1 -> Y -> goes backwards
                      M569 P2 S0 ; Drive 2 -> Z1 -> goes forwards
                      M569 P3 S0 ; Drive 3 -> Z2 (U) -> goes forwards
                      M569 P4 S1 ; Drive 4 -> EXTRUDER -> goes forwards

                      ; ############## Dual Z-Drives ##############
                      M584 X0 Y1 Z2:3 U3 E4 P3 ; Driver 0=X, 1=Y, 2+3=Z, 3=U, 4=Extruder, 3 axis visible

                      ; ############## Drives setting ##############
                      M350 X16 Y16 Z16 U16 I1 ; Configure microstepping with interpolation
                      M350 E16 I1 ; Configure microstepping with interpolation

                      M92 X66.667 Y66.667 Z800 U800 ; Set axis steps per mm
                      M92 E408 ; Set extruder steps per mm

                      M566 X1200 Y1200 Z120 U120 E120 ; Set maximum instantaneous speed changes/jerk (mm/min)
                      M203 X12000 Y12000 Z4500 U4500 E1200 ; Set maximum speeds (mm/min)
                      M201 X450 Y450 Z200 U200 E200 ; Set accelerations (mm/s^2)
                      M906 X1900 Y1900 Z1900 U1900 E1500 I30 ; Set motor currents (mA) and motor idle factor in per cent
                      M84 S30 ; Set idle timeout

                      ; ############## Axis Limits ##############
                      M208 X0.00 Y-25.00 Z0 S1 ; Set axis S1 = minimum
                      M208 X295.00 Y310.00 Z290.00 S0 ; Set axis S0 = maximum

                      ; ############## Endstops ##############
                      M574 Z0 U0 X1 Y1 S1 ; 1 = low end, 0 = high end, S1 = active high (NC), S0 active low (NO)

                      ; ############## Z-Probe ##############
                      M558 P8 I1 H5 R0.3 X0 Y0 Z0 F240 T2000 ; Set Z probe type to unmodulated and the dive height + speeds
                      G31 X0 Y0 Z-0.1 P100 ; Set Z probe trigger value, offset and trigger height

                      ; ############## Define mesh grid ##############
                      M557 X10:290 Y10:290 S70 ; Define mesh grid

                      ; ############## Heaters ###
                      M307 H0 B0 S1.00 ; Disable bang-bang mode for the bed heater and set PWM limit
                      M305 P0 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 0
                      M307 H0 A145.0 C600.0 D0.85 B0 ; Set heating process parameters for heater 0
                      M143 H0 S120 ; Set temperature limit for heater 0 to 120C
                      M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1
                      M307 H1 A612.5 C241.5 D8.00 B0 ; Set heating process parameters for heater 1
                      M143 H1 S280 ; Set temperature limit for heater 1 to 280C

                      ; ############## Fans ##############
                      M106 P0 S0.8 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency, Thermostat control off
                      M106 P1 S0.5 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency, Thermostat control on
                      M106 P2 S0.5 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency, Thermostat control on

                      ; ############## Tools ##############
                      M563 P0 D0 H1 ; 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

                      ; ############## Automatic power saving ##############
                      M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss

                      ; ############## Custom settings ##############
                      M81 ; 24VDC power supply OFF at starting
                      M912 P0 S-1.9 ; Calibrating the CPU temperature

                      ; ############## Miscellaneous##############
                      M501 ; Load saved parameters from non-volatile memory

                      ; END OF FILE

                      .
                      .
                      .

                      by the way - here is a video of my printer:
                      my corexy with 2 endstops on t axis

                      Thomas

                      1 Reply Last reply Reply Quote 0
                      • thweundefined
                        thwe
                        last edited by

                        and something else - a piezo orion for bed leveling is also planned, already available but not yet installed ..

                        in a test setup he has worked with the above config.g

                        Thomas

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

                          The M574 command in your config.g file is wrong. You have it set to "no endstop", which is why the firmware is asking you to home X and Y first. See https://duet3d.dozuki.com/Wiki/Gcode#Section_M574_Set_endstop_configuration.

                          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
                          • thweundefined
                            thwe
                            last edited by

                            oh no, the article mentioned about setting up the endstops with m574, I've read several times ... and yet not correctly implemented ... 😣

                            the solution of the problem:

                            M574 Z2 U2 X1 Y1 S1

                            ; for my documentation
                            ; Xn / Yn / Zn / Un -> endstop position
                            ; ... n = 0 -> no endstop
                            ; ... n = 1 -> at low end (min endstop)
                            ; ... n = 2 -> at high end (max endstop)
                            ; Sn -> endstop type
                            ; ... n = 1 -> active high (NC), default
                            ; ... n = 0 -> active low-high (NO)

                            Thanks for your help 👍

                            Thomas

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