Dual Z-axis endstops



  • I'm using Marlin 1.1.0 - RC8.

    Ah that's a shame, i was eying up the 7" Due Panel as well 🙂 I'll just have to stay with what i have until you implement it. Either that or i might change to having the z axis belt driven using a single motor, but i didn't really what to go the the hassle of changing everything again, especially when it's working well at the moment. It's a shame there aren't any 32bit controllers that'll run the latest Marlin.

    Well if you need any beta testers for it let me know.

    Charlie.


  • administrators

    If you do buy a Duet WiFi, then I can implement the change to keep the Z motors in sync within about 2 weeks. You could then run a macro to do 4-point mesh bed levelling when you power on to verify that the motors have remained in sync. The height map is displayed in the web interface, so this would be really easy to see. Supporting independent Z homing switches would take a little longer but I can try to get that in the 1.18 release too. I already know how I'd implement it, the main complication is implementing a new gcode to map endstop inputs (which someone else wanted for other reasons).



  • @dc42:

    If you do buy a Duet WiFi, then I can implement the change to keep the Z motors in sync within about 2 weeks. You could then run a macro to do 4-point mesh bed levelling when you power on to verify that the motors have remained in sync. The height map is displayed in the web interface, so this would be really easy to see. Supporting independent Z homing switches would take a little longer but I can try to get that in the 1.18 release too. I already know how I'd implement it, the main complication is implementing a new gcode to map endstop inputs (which someone else wanted for other reasons).

    Go for it 🙂 I've got a FT-5 sat here so I can help test it out.

    A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.



  • @baballuci:

    I'm using Marlin 1.1.0 - RC8.

    Ah that's a shame, i was eying up the 7" Due Panel as well 🙂 I'll just have to stay with what i have until you implement it. Either that or i might change to having the z axis belt driven using a single motor, but i didn't really what to go the the hassle of changing everything again, especially when it's working well at the moment. It's a shame there aren't any 32bit controllers that'll run the latest Marlin.

    Well if you need any beta testers for it let me know.

    Charlie.

    You should buy one without hesitation. If dc42 commits to a feature you know it's gonna get done 🙂



  • OK, i've convinced myself to take the plunge.

    I see there is no stock available till the 13th. Is stock still limited or will there be plenty on hand if order later in the week?

    Charlie.


  • administrators

    There should be plenty of stock around that time because a new batch has been manufactured, but there might be a backlog of orders to work through.



  • Haven't ordered my board yet (still working on other parts of my D-Bot build) but I'm heavily leaning towards it.

    Has this ability been implemented yet?



  • Yes please. I would also see something like this. My reason for being able to sync the two Z-axis is because I can never know if one of my kids haven't been turning one of the Z axis 😮 Then how this is implemented, with dual Z-endstops (max/min) or using the Z-probe is not that important. I'll be ready to test this feature this week 🙂

    I have this setup my self and both Marlin (>=RC8) and Repetier development has this ability. I had mixed results, probably because of a combination of user error or bugs or both.

    At the moment I have two IR slot switches at Z max that can easily be made to trigger at Z min as well. And then I have a IR probe by you David.



  • My Duet is in the mail 🙂

    Any update on this?


  • administrators

    I expect to implement multiple Z homing switches in firmware 1.19. In the meantime I think you can achieve the same thing as follows:

    1. Put this command in config.g:

    M584 X0 Y1 Z2:3 U3 E4

    This assigns your second Z motor (connected to the E0 motor output) to both the Z and U axes.

    2. In your homez.g file, do this:

    M584 Z2
    G1 S1 Zxxx Uxxx
    G92 Zxxx
    M584 Z2:3

    This splits Z into the Z and U axes, homes them simultaneously, and then restores normal Z movement. Fill in the xxx values to suit your machine - see https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_Cartesian_printer#Homing_files.

    3. Change the Z homing section of homeall.g to do the same.

    4. Connect the second Z endstop switch (the one you use for the U motor) to the E0 endstop input.

    Test the above carefully, with low motor current and a hand on the power switch, in case I have forgotten something.



  • Nice, will try if I can source another 12V step-down for my fans 😄 Then I'm ready to assemble the Bigbox.



  • Awesome! Should have my board on Monday. Once I've got it all working normally I'll give this a shot and report back.

    Thank you!



  • @iDevelo:

    A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.

    I love Atlassian tools, Jira makes it extremely easy to track bugs and features I have also used Confluence, Trello, and Hipchat. Great stuff for dev and test teams.



  • my board will be here today , I had to order express shipping so I can have it for the weekend 🙂



  • @FailsafeJim:

    @iDevelo:

    A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.

    I love Atlassian tools, Jira makes it extremely easy to track bugs and features I have also used Confluence, Trello, and Hipchat. Great stuff for dev and test teams.

    🙂 wouldn't it be great to see a sprint for each release!



  • It works!

    Disclaimer: I haven't printed with this yet. Still waiting on my bed.

    Took some tweaking though.

    I may or may not have had to make some of the changes I made. Someone else can confirm.

    Added the following to config.g:

    ;DUAL Z
    M584 X0 Y1 Z2:3 U3 E4

    Wherever something for Z was defined, I added the same for U. (I'm unsure if this was necessary, as I did this during troubleshooting.)
    Example:
    This: M350 X128 Y128 Z128 E16 I1 ; Configure microstepping with interpolation
    Became: M350 X128 Y128 Z128 U128 E16 I1 ; Configure microstepping with interpolation

    Added, as it was missing:
    M569 P4 S1 ; Drive 4 goes forwards

    Commented out the entirety of homez.g and added:
    M584 Z2
    G1 S1 Zxxx Uxxx
    G92 Zxxx
    M584 Z2:3

    Pretty sure that was everything!



  • This me TWO days to figure out why my machine was grinding when homing. Then I realized on EVERY home move the right endstop hit before the left. If I moved the bed down 30MM or more this would happen.

    While in this configuration, the motor hooked up to the original Z plug moves faster than the one in the U plug.

    Any ideas on why this is happening?

    Note: When tested with both motors in Z plug, homes and moves normally. I DID put the jumpers on as for a 1 Z motor hookup.

    [[language]]
    ; Configuration file for Duet WiFi (firmware version 1.17)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Mar 18 2017 20:32:40 GMT-0400 (Eastern Daylight Time)
    
    ; General preferences
    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    
    ;DUAL Z
    M584 X0 Y1 Z2:3 U3 E4
    
    M667 S1 ; Select CoreXY mode
    M208 X0 Y0 Z0 U0S1 ; Set axis minima
    M208 X300 Y300 Z320 U320 S0 ; Set axis maxima
    
    ; Endstops
    M574 X1 Y2 Z1 U1 S1 ; Define active high microswitches
    ;M558 P1 X0 Y0 Z0 H5 F120 T9000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds
    ;G31 P600 X0 Y0 Z0 ; Set Z probe trigger value, offset and trigger height
    ;M557 X15:285 Y15:285 S20 ; Define mesh grid
    
    ; Drives
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S0 ; Drive 1 goes forwards
    M569 P2 S1 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 goes forwards
    M569 P4 S1 ; Drive 4 goes forwards
    
    M350 X128 Y128 Z128 E16 I1 ; Configure microstepping with interpolation
    M92 X800 Y800 Z3200 U3200 E138.4336 ; Set steps per mm
    M566 X600 Y600 Z24 U24 E300 ; Set maximum instantaneous speed changes (mm/min)
    M203 X30000 Y30000 Z300 U300 E1500 ; Set maximum speeds (mm/min)
    M201 X2000 Y2000 Z100 U100 E4000 ; Set accelerations (mm/s^2)
    M906 X800 Y800 Z800 U800 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout
    
    ; Heaters
    M143 S260 ; Set maximum heater temperature to 260C
    M305 P0 T100000 B4388 R4700 H0 L0 ; Set thermistor + ADC parameters for heater 0
    M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1
    
    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 Z0 U0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
    
    ; Network
    M550 PBlack Widow ; Set machine name
    M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP
    
    ; Fans
    M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
    
    ; Custom settings are not configured
    
    

  • administrators

    What do you have in your homez.g and homeall.g files? Perhaps you still have driver 3 assigned to Z as well as U when you are Z homing.

    Edit: i just spotted that your M350 command doesn't set microstepping for the U axis.



  • I'm pretty sure I had it in there before I switched back to 1 Z for testing but I'll add back and test again tonight, just in case.

    Here is homez.g. Homeall.g hasn't been updated yet.

    [[language]]
    ;DUAL Z
    M584 Z2
    M854 U3
    G1 S1 Z-320 U-320
    G92 Z.04
    M584 Z2:3
    
    

  • administrators

    M854 in your homez.g file is not a valid gcode, I presume you meant M584.


Log in to reply