Best way to implement bed level adjustment/nozzle offset?
-
There are several of us working on building a new-design CoreXY printer, the Voron 2. It makes use of a totally stationary bed, and moving gantry.
In operation, it has an inductive probe for probing the bed itself, and a mechanical switch to calculate nozzle offset. Once bed probing is completed, it uses it's Z motors to adjust the gantry to bring it level. You can see how this is done using a RAMPS board in the following video.
https://www.youtube.com/watch?v=wRdF0ZTIliY&t=30s
(It's running the probe/gantry level sequence multiple times in this video)
I've poked at this in RRF, and there hasn't been a good way I've determined as of yet. We can use the inductive probe for determining bed level, and homing, but that doesn't calculate nozzle offset.
Is there something I'm missing here on how to implement this?
-
Looking good!
Did you read this item in the wiki?
https://www.duet3d.com/wiki/Bed_levelling_using_multiple_independent_Z_motors -
Looking good!
Did you read this item in the wiki?
https://www.duet3d.com/wiki/Bed_levelling_using_multiple_independent_Z_motorsI did, and the leveling aspect as described in the Wiki works perfectly. What I'm wanting to incorporate is the nozzle offset switch. This would allow for nozzle offset to be done automatically, no matter the temperature the nozzle is set at, or even if you swapped from a V6 to a Volcano…
-
Ah I see,
I use a piezo sensor setup (under bed construction) so whatever nozzle/surface I use, the height is always correct.
I used inductive probes on my P3Steel with marginal success, but since I went to piezo, I have perfect 1st layers.
I will try to post a small video of the the printer in action… -
Can you use the inductive sensor to level the bed using the Z motors, then use the switch to see an accurate Z=0 level? You can switch between different Z probes using M558.
-
Can you use the inductive sensor to level the bed using the Z motors, then use the switch to see an accurate Z=0 level? You can switch between different Z probes using M558.
That could be just the trick. Would it be able to be automated in the bed.g file, or would we really need to drive this via macro? I'm unsure how much shifting we can get away with in the ancillary files versus the config.g.
What I'd envision is have the inductive probe declared in the config.g, and then the nozzle offset probe in the bed.g. When the bed compensation routine is run (thus invoking bed.g), it uses the declared inductive probe from config.g to probe the bed, and then level the gantry. Once this is done, while still in the bed.g, m558 is run to switch to the nozzle probe, trigger it, and set the nozzle offset.
If this is possible, would you have a suggested layout for setting that up? If I'm going about it in my head incorrectly, would you mind setting me straight?
-
The only special thing about the bed.g file is that it gets run in response to the G32 command. Otherwise it's just like any other macro file. So you can do whatever you like in it.
-
I just had another thought…
HomeAll.g stores the configuration for the inductive probe (as does config.g, just for safety sake). Homez.g stores the configuration for the nozzle offset switch.
Then, using bed.g
[[language]] M561 ; clear any bed transform ; Probe the bed at 4 points G28 G30 P0 X10 Y10 H0.33 Z-99999 G30 P1 X10 Y290 H0.33 Z-99999 G30 P2 X290 Y290 H0.33 Z-99999 G30 P3 X290 Y10 H0.33 Z-99999 S4 ; Nozzle offset home G28 Z