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



  • Hi,

    is there a way to do the homing at first with the Z axis, following then X and Y?

    I have a CoreXY (under construction) with a Duet Wifi - Firmware Electronics 1.04 with Firmware Version 2.01 (RTOS), WiFi-Server 1.21 and Web-Interface 1.22.3.

    Endstops: X -> min / Y -> min / Z -> max



  • check the homeall.g config.

    There you can define the order



  • https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_files

    https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Homing_files

    Reading both those sections will take you through how to setup your homing files.

    You can home Z first, but you run into an issue of not knowing where your X and Y axis is in order to position the print head and z probe in order to home Z. This isn't an issue if you are using a simple chassis mounted endstop for the Z axis.

    What is the reason you want to home Z first?



  • Looks like he has a limit switch on the max travel (lowest) of the elevator. Moving the elevator further away from the head runs no risk of part collision.



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



  • @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"



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



  • 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.


  • administrators

    @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
    

  • administrators

    @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



  • @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.


  • administrators

    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.



  • 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



  • 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


  • administrators

    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.



  • 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 👍


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.