dual x carriage diffferent Z0 point

Avatar

By Michel000 20 March 2017 09:06

Member · 4 comments

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.

Avatar

By dc42 20 March 2017 09:25

Administrator · 2,256 comments

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
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By Michel000 20 March 2017 09:43

Member · 4 comments

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 .

Avatar

By dc42 20 March 2017 10:15

Administrator · 2,256 comments

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
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By Michel000 20 March 2017 11:22

Member · 4 comments

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