Mesh Bed Compensation and the "zero" datum ...
-
I'm scratching my head here. I've noticed this before, but something went wonky on my printer this week and I've been trying to figure out why my first layers are all screwed up. So I noticed it again, and it was weird enough to ask about ...
What in the world is considered "zero" height on the printer, with regards to the mesh compensation and heightmap probing?
My printer z-probes at the center of the bed, which establishes the "default", using a capacitive sensor. (I used to use a BLTouch, which has only slightly more reproducibility than a dice roll, so this issue wasn't as obvious until I switched it out.) When I run the mesh compensation to generate the heightmap, I would expect that point to be zero by definition, and anything any lower would be negative, and anything higher would be positive.
That isn't the case. For example, my last run had it at 0.055mm. (In fact, the entire bed was positive, if slightly!?)
Now what I find especially concerning about that, is if that "prime" probe point isn't reading zero in the mesh, it means Z-homing will deliver a different height from the bed depending if the mesh compensation is enabled or not. That then throws off the entire map. Z-home->enable mesh->print will result in a different output, as far as I can tell, than enable mesh->z-home->print.
I can't find any documentation that explains how everything is supposed to properly work. Like should we be disabling the mesh compensation in the homing files? And where should the zero point be on the map?
Does mesh compensation actually turn off the mesh compensation when it runs? (ie, does G29 S2 -> G29 result in the identical output as G29 S1 -> G29?)
-
@dotorg said in Mesh Bed Compensation and the "zero" datum ...:
Do you set the Z=0 Datum with a single G30 at the center of the bed...
- before you create the height map?
- before you load the height map?
Do you insure that baby stepping is disabled when you are not printing?
Do you insure that mesh compensation is disabled when you are not printing?
When you create the height map it should disable mesh compensation unless you have uncovered a bug in the firmware.
If you were to create a 3x3 height map and the M557 was such that the center point was at the center of the bed then that point should report as 0 assuming the Z=0 Datum is being set correctly.
I only enable mesh compensation in my print start code and disable it in my print end code. The same for baby stepping. This way I don't have to worry about any side effects when I am not printing.
Frederick
-
Re: G30, yes. That's what Z-homing is. Printer won't do anything without being homed, so yes, its Z-homed before creating the height map.
No baby stepping.
Printer running as it boots up. Should have no mesh compensation.To be clear, I can make lots of guesses as to what its doing and why. I'm asking how it works. I could go digging into the code, but the odds are there's people familiar with the code who can explain exactly how it works.
-
@dotorg said in Mesh Bed Compensation and the "zero" datum ...:
Re: G30, yes. That's what Z-homing is. Printer won't do anything without being homed, so yes, its Z-homed before creating the height map.
Well strictly speaking homing Z and setting the Z=0 Datum are two separate things but it is possible to home Z with a Z probe and, as a side effect so to speak, end up with the Z=0 Datum being set.
exactly how it works.
How what works?
Frederick
-
It would help to see your actual gcode files to understand what is happening and why it may be giving a z datum warning.
Loading the heightmap before setting Z0 with the probe will give the warning message that mentions the Z datum.
Ideally the probe point should line up with a point in the mesh, otherwise it lines up with an interpolated point.