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

    Auto lift dual extruder Z offset problem

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    2
    4
    711
    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.
    • NitroFreakundefined
      NitroFreak
      last edited by NitroFreak

      Hi,
      I have built a dual extruder that can lift the second (support) hotend via solenoids, and that is working fine.
      For a explanation see this video and the two pics.
      My Z axis positive direction moves down.
      https://www.youtube.com/watch?v=fYOE01SzS9Q
      2_1553965141190_IMG_2894.JPG 1_1553965141190_IMG_2893.JPG !
      0_1553966079519_IMG_2895.JPG

      My problem is the Gcode offsets and the direction of them.
      My second extruder sits 2mm lower than the left one when actuated, and 3mm higher than the left one when not.
      When i want to actuate the right extruder, i want the Z axis to first go down 5mm, actuate the solenoid, and then go 3mm back up.
      herein lies the problem; when i define a T1 Z offset of 2mm like this in my config.g

      • ; Tools
        M563 P0 S"Model" 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
        M563 P1 S"Support" D1 H2 ; Define tool 1
        G10 P1 X24.5 Y0 Z2.0 ; Set tool 1 axis offsets
        G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C

      But define my tpre0.g

      • M42 P6 S255 ; activates solenoid 0 of heater output 6 to pull tool 1 up
        G4 P300 ; dwell 1000 milliseconds
        M42 P6 S0 ; deactivates solenoid 0 of heater output 6
        G4 P300 ; dwell 1000 milliseconds to disperse residual electricity

      tpre1.g

      • G91 ; relative positioning
        G1 Z5 F6000 S2 ; lower Z relative to current position
        G90 ; absolute positioning
        M42 P7 S255 ; activates solenoid 1 of heater output 7 to pull tool 1 down
        G4 P300 ; dwell 1000 milliseconds
        M42 P7 S0 ; deactivates solenoid 1 of heater output 7
        ;G4 P300 ; dwell 1000 milliseconds to disperse residual electricity

      tpost0.g

      • M116 P0

      G91 ; relative positioning
      ;G1 Z-7 F6000 ;S2 ; raise Z relative to current position
      G90 ; absolute positioning

      tpost1.g

      • M116 P1

      G91 ; relative positioning
      ;G1 Z-3 F6000 ;S2 ; raise Z relative to current position
      G90 ; absolute positioning

      This is as far as i have gotten.
      My problem is that if i

      1. raise Z by 5mm again in tpost1.g after tool 1 has been selected, it only then applies the 2mm offset after it has moved 5mm back up. So theoretically it first crashes the tool into the bed before applying the tool offset.

      2. if i dont apply a Z offset in config.g and only have the X and Y offset, but then raise the Z axis again by 3mm in tpost1.g, it moves right back to the same level as the first extruder after switching.

      Maybe someone can help me?
      This thread is the closest thing i found to my problem, he also lifts a second extruder above/below the first, unfortunately he did not post his Z offsets in config.g
      https://forum.duet3d.com/topic/4414/bi-directional-dc-motor-control/4

      I basically want this ( in pseudo code)
      If i select tool 0 (left tool):

        1. M42 P6 S255 to pull tool 1 up (right tool)
      1. Apply the config.g tool offset to lift Z (by the 2mm) back up to the level for tool 0

      if i select tool 1 (right tool)

        1. G91 ; relative positioning
          G1 Z5 F6000 ; ; lower Z relative to current position for tool 1 lowering clearance
          G90 ; absolute positioning
        2. M42 P7 S255 ; Pull tool 1 down (by 2mm below the left tool)
        3. G4 P300 ; wait 300ms
        4. M42 P7 S0 ; turn solenoid off
        5. G4 P300 ; wait 300ms
        6. Raise Z again to the level defined in config.g (2mm below the left tool, height for the tool1)

      Thanks
      Max

      1 Reply Last reply Reply Quote 0
      • NitroFreakundefined
        NitroFreak
        last edited by

        Ok a different way of describing the problem:
        When i first home while having T0 active,
        then i activate T1 and it applies the offsets. The problem is, that now since the T1 is below the bed, the Z axis offset should read -2. But since it does not accept that, it writes it as 0 as well.
        Now, when i activate T0 again, it applies that 2mm offset and now it reads Z 2, without having moved the bed.
        How can I work around that?

        1 Reply Last reply Reply Quote 0
        • NitroFreakundefined
          NitroFreak
          last edited by

          Ok so I think I´ve got it. I tinkered around and it seems that if i do the Z Offset as negative in the config.g file, it works. Which is weird, because the offset should really be positive.
          I will post the config.g, as well as the tool change codes tomorrow (if my DWC decides to work again) for future people who have a similar problem to find.

          Cheers
          Max

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

            Some things that may help you:

            • Tool offsets are never applied within tpre#.g
            • In firmware 2.02, tool offsets are not applied in tfree#.h or tpost#.g either. In firmware 2.03beta3 they are applied in both of those files.

            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