Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why is probing surface necessary for z calibration #34

Closed
pfn opened this issue Feb 6, 2022 · 12 comments
Closed

Why is probing surface necessary for z calibration #34

pfn opened this issue Feb 6, 2022 · 12 comments

Comments

@pfn
Copy link

pfn commented Feb 6, 2022

Determine the height of the print surface by probing one point with the mag-probe.

Reading this part is not clear as it appears entirely superfluous. Z endstop probe followed by clicky body probe gives offset already. An additional surface probe doesn't add anything, unless it is intended to calibrate the offset of the Z endstop, which shouldn't be used for homing anyway...

@zellneralex
Copy link

zellneralex commented Feb 12, 2022

Many of use have more than one flexplate aka print surface, furthermore there is thermal expansion of your bed. To get these 2 factors in the measurement you need to probe the surface.

The whole process is done to find the optimal gcode offset for the current situation before you lay down the first layer.

@pfn
Copy link
Author

pfn commented Feb 12, 2022

Many of use have more than one flexplate aka print surface, furthermore there is thermal expansion of your bed. To get these 2 factors in the measurement you need to probe the surface.

The whole process is done to find the optimal gcode offset for the current situation before you lay down the first layer.

@zellneralex this is rote repeating what others have said and is not grounded in geometry. The nozzle offset from clicky switch is constant regardless of build surface in use (you can switch build plates from 1mm to 5mm or any other difference and it has no bearing on Z offset of clicky). There is a factor of thermal expansion of the nozzle, but it is also constant (assuming printing at a consistent temperature, otherwise it varies about a babystep going from PLA to ABS). Swapping build plates, bed thermal expansion and heat soak does not affect Z offset.

In general, my variance using auto is about 0.015mm, which is enough to be off by a babystep if used every print; I would prefer to lock in a stable setting and not auto-Z every print and potentially be off a babystep. Perhaps it is a little more valuable when printing at temperature extremes (PLA to PC)

@zellneralex
Copy link

What has the klicky offset to do with that? The offset between the external endstop and the print surface is variable if you have 2 flex plates where one is eg 1 mm and the other is 1.2 mm. To compensate for differences like that you need to probe all 3 points
1 Endstop
2 microswitch body to get an offset between your endstop_pos and klicky
3 surface to get the gcode offset for the current situation

@pfn
Copy link
Author

pfn commented Feb 12, 2022

Clicky offset is the only probe that matters. Any homing probe should be done with clicky, IMO, not the Z endstop. Deriving a Z offset for the Z endstop superfluous as the number can only ever be calculated by the use of clicky while the clicky is used for all probing moves.

@zech
Copy link

zech commented Feb 17, 2022

I think @pfn has a point here.

But that would require to define [probe] as a virtual Z endstop.
That way the endstop would only be used to find the offset between nozzle and switch but still including the tunable switch offset to define the squish you want.

The different build plates would be handled by probing the surface directly to find our 0 because it's defined as a virtual Z endstop.

Unless there's something he's missing (or I am) I'd think that's correct and it would eliminate one step and maybe some variance as well.

And we only need to find this offset once per hotend/nozzle change and maybe temperature change if we'd consider thermal expansion of the nozzle (that maybe a reason for the current procedure alone).

It's also possible that defining the probe as a virtual Z endstop could disable the physical Z endstop. I guess that would require some more "modding" in Klipper to get both the virtual Z endstop and the physical one as a measuring device.

@TitusLabs
Copy link
Member

Yes, I think you're right. Instead of the Z-Endstop, it would be possible to use the probe as virtual endstop. So, probing bed is Z=0 and then probe the nozzle and the probe in relation to this to get the nozzle's offset. This solution maybe much more tricky with Klipper. And what is your benefit? Do you want to drop the third probing on the bed?

  • I would still probe/home the bed before Z calibrating because the offset value changes a lot over time in my closed printer printing ABS.
  • And using the probe for homing is more difficult. The probe must be mounted to the Gantry. It would be impossible to home Z with the probe mounted to the bed.
  • And in any case it needs the switch for probing the nozzle (and the switch) - then, why not use it for homing too?
  • Changing this would lead to a breaking change...

Is there a good reason to do so what I'm not aware of?

@pfn
Copy link
Author

pfn commented Feb 18, 2022

I mostly want to understand why the third probe is necessary, but difficulty with klipper would explain the reasoning. I have my own implementation of this that doesn't require the last bed probe, but it's not on klipper.

I wanted to make sure I wasn't missing anything with regard to what opportunities I would miss without the last bed check. It seems like there isn't anything for my configuration.

@TitusLabs
Copy link
Member

The most reason is that a homing is not so accurate as a probing. And the homed Z=0 may have changed since then. In this routine it doesn't matter since I probe the nozzle again in step 1 (and it's even relative to Z=0). But I would also repeat the probing on the bed since this could have slightly changed too... this is the beauty - it is always perfect! It doesn't rely on old probing/homing values. And as I already wrote, some points may not be so important if your printer does not get so hot...

What is your implementation? Is it public?

@pfn
Copy link
Author

pfn commented Feb 19, 2022

What is your implementation? Is it public?

@TitusLabs my implementation is https://github.com/pfn/voron2-rrf-config/blob/master/macros/Calibration/Calibrate%20Z%20Offset -- plain and straightforward.

@TitusLabs
Copy link
Member

Oh nice, an other implementation for RRF 👌 It seems to be so much easier ... but it's so unreadable 🤯

@pfn
Copy link
Author

pfn commented Feb 21, 2022

Oh nice, an other implementation for RRF 👌 It seems to be so much easier ... but it's so unreadable 🤯

I get what you're saying. I read gcode fluently as a result of using rrf. Sucks for anyone that doesn't though.

@TitusLabs
Copy link
Member

I think, I need to play with RRF again on my next printer. RRF2 and DuetWifi2 times are long ago..
I will close this now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants