Duet3D Logo

    Duet3D

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Documentation
    • Order

    Dual x carriage diffferent Z0 point

    Firmware installation
    2
    5
    771
    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.
    • Michel000
      Michel000 last edited by

      I have a printer with a dual x carriage ,
      to home the z Axis I have a endstop fixed to the bed.
      In the homing file I go the the X Y location of the endstop end use G30, the endstop sees the nozzle tip and sets Z to 0.
      This way I can change or clean nozzles without having to calibrate the correct Z height.
      This works for both extruders (X and U Axis) but it doesn’t work if I use both extruders,
      Because the second G30 command for the nozzle of the U axis will just overwrite the Z zero point of the X axis.
      Is there a way to select a different coordinate system in my homing files? Or is there a different solution ?
      I know I can just measure the difference between the 2 extruders and use G10 to compensate but for that I need to edit my system files every time.

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

        If you are using the nozzle to trigger the Z endstop, why not put endstop switches at both ends? Then position the nozzle that you want to Z home over its endstop switch, and the other one a little way from its own switch. Use NC switches and connect them in series.

        If you want to do mirrored prints, you need to get the nozzle heights the same. E3D has a prototype hot end heatsink with a screw-in collar that makes it easy to adjust the nozzle height. There is a picture at https://www.duet3d.com/forum/thread.php?id=1093.

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

          If i understand corretly youre solution only works when both nozzles are add the exact same height ?

          What im looking for is this.
          I put in any nozzle, start the machine, first nozzle connected to the X carriage goes to the endstop thats connected to the Z axis, It does a G30 and sets z to 0
          Then second nozzle on the U axis goes to the same position does a G30 and (here is my problem) sets Z to 0 but now i lost the other nozzle height, so it would be nice if i could save that value somehow and set the correct one after a tool change. (without editing my configuration files)

          If i want to print 2 objects add once i need to set them both add the exact same height, and this would not work anymore.
          Im looking for a long time for a hotend/extruder that has easy and fine z height adjustment, i think the problem i have with the prototype is that im using a Titan extruder directly on the axis so if the adjustment is in the hotend then the distance between PTFE tube and drivegear is also changed, so the adjustment should be on the extruder mount and not the hotend .

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

            I'm sorry, I didn't think it through properly. What you need is a separate Z origin for each nozzle. One option might be a variation of the G30 command that instead of setting Z=trigger height when the probe triggers, subtracts (height_when_triggered - probe_trigger_height) from the G10 Z offset of the current tool (or perhaps a specified tool). I'll give it some thought.

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

              Hi DC42
              I took a look add the code and i think it should be something like this:

              From this function:
              bool GCodes::DoSingleZProbe(GCodeBuffer& gb, StringRef& reply, bool reportOnly, float heightAdjust)

              Call :
              float m[DRIVES];
              float offs[DRIVES];
              reprap.GetMove()->GetCurrentMachinePosition(m, false);
              offs[Z_AXIS] = m[Z_AXIS]
              Tool::SetOffset(const float offs[MAX_AXES])

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