Dual x carriage diffferent Z0 point



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


  • administrators

    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.



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


  • administrators

    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.



  • 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])


Log in to reply