The Concept of Bed Leveling
-
I've been doing this 3D printing thing for a while. I've bought a few, I've built some from scratch, Marlin, RepRap, Delta, CoreXY, 1.75mm, 2.85mm, etc, etc... so I'm not a newbie.
But there's one super basic concept that still confuses me, and every time I look for an answer, I find conflicting answers. So I'd love it if someone could explain to me the concept of bed leveling (more like bed-distance-to-nozzle-calibrating), as it applies to the first layer.
The old-school way of leveling the bed involves using a sheet of paper to get the nozzle about 0.1mm from the bed and calling that "zero"... but is it 0? Or is it 0.1mm? When I start a print that has a 0.3mm thick first layer, does this mean the nozzle is actually 0.4mm from the bed? I always assumed so, and I just used "baby-stepping" to compensate for any visible issues when the print started.
With the Smart Effector, we're instructed to find the "Z trigger height" based on the reading of G30 S-1 after having the nozzle grab a piece of paper (which is considered the new 0). Again, does this imply that 0 is at 0.1 (or the thickness of the paper) and our initial layer is really 0.1mm thicker than what we set in the slicer unless we use baby-stepping to compensate for it?
What happens if I just set the actual bed print surface as 0, and remove the negative Z trigger height?
-
@GoremanX said in The Concept of Bed Leveling:
calling that "zero"... but is it 0? Or is it 0.1mm?
It's 0.1mm. Your paper is acting like a feeler gauge. So the nozzle isn't at 0. It's got the feeler gauge between it.
Using G30 S-1 is trying to find how far away the nozzle is from the bed surface when the probe triggers. To do this we first need an accurate idea of where the bed Z0 actually is. Hence the paper test.
For the smart effector you're pushing into the surface of the bed to trigger, so it's going to be slightly negative.
Now with that all said, the first layer is actually a lot more complex than just the distance between the nozzle and the bed. You've also got the surface of the bed not being perfectly flat and the plane of the bed not being perfectly perpendicular to the XY movement of the nozzle. Using G29 mesh compensation to map out the bed surface relative to the nozzle position and adjusting Z to keep the nozzle a set distance away from the bed helps here.
There's also the flow rate of the plastic. The slicer assumes your flow rate is calibrated and the distance between nozzle and bed is perfect. If one is off, you could compensate by adjusting the other.
But if you calibrate the trigger height (so that the nozzle is an accurate distance away from the bed) and you map out the bed surface, and you calibrate the extruder, then your first layer should be pretty good. If it's still a tad off, you can adjust using baby steps and then use that baby step value to adjust your G31 Z trigger height to correct for the real world.
-
@Phaedrux said in The Concept of Bed Leveling:
@GoremanX said in The Concept of Bed Leveling:
calling that "zero"... but is it 0? Or is it 0.1mm?
It's 0.1mm. Your paper is acting like a feeler gauge. So the nozzle isn't at 0. It's got the feeler gauge between it.
See that's exactly where I get confused. It's 0.1, but we're telling the printer it's actually 0.
I mean I get the whole uneven bed thing, and mesh compensation, but I'm not really taking it to that step here. I'm referring more to the core basics and trying to understand the theory behind it.
Nowhere in the Delta calibration instructions does it say "remove the Z trigger height from your config". That setting is assumed to always be there once I've determined it, and it's based on the thickness of a sheet of paper (which, incidentally, was 0.137mm thick in my case). So anytime the bed gets probed, the software assumes the surface is actually 0.137mm higher than it really is at that point because my Z trigger height is a negative number. I understand why the sheet of paper was used in the past, and I get that it was a necessary compromise. But in the case of something like the Smart Effector or piezo bed probes, and more recent firmware development, it doesn't seem like there's any need for that kludge and I should be able to just have the bed surface actually be 0, both in reality and in the printer settings.
Unless there's something I'm missing...
-
@GoremanX said in The Concept of Bed Leveling:
See that's exactly where I get confused. It's 0.1, but we're telling the printer it's actually 0.
if it helps, its the actual z-height for the nozzle tip at which to lay down the desired layer height for z=0 when printing. i.e. the top of the freshly laid filament will be at layer height, but the tip of the nozzle will be at layer height + 0.1mm.
given we're concerned with the bottom of the layer, laid down at the correct layer height, and not so much of the tip of the nozzle we use the paper or thereabouts offset.
-
@GoremanX said in The Concept of Bed Leveling:
It's 0.1, but we're telling the printer it's actually 0.
Stop telling it it's 0 then. Tell it it's at 0.137 instead.
-
@Phaedrux I just did, and I ended up with possibly the best first layer I've ever gotten, with no bapy-stepping required
-
@bearer See that's exactly what I mean. If the printer is told that 0.1mm is actually zero, then when the slicer commands it to lay down the initial layer at 0.2mm (which is the case when requesting an initial 0.2mm layer height), then the nozzle is actually at 0.3mm and we then use Z-offset to bring the nozzle back down to the right height, typically by the amount of the thickness of the paper that we used to determine nozzle height in the first place. This is a necessary compromise because we need something to act as a feeler gauge under the nozzle, and the build surface itself is designed to be non-moving.
Compounding this is the fact that most materials like to have extra squish for the first layer to ensure bed adhesion, so we're often over-adjusting the Z offset to be lower than the actual bed surface (so if the slicer is asking for 0.2mm initial layer, the printer is actually 0.15mm or so above the surface).
However the strain gauge on the Smart Effector doesn't care about all that. It registers a probe as soon as it touches the actual surface with enough force. This might be a tiny bit below the actual surface since there's a little flexing involved to get to the required force to register a probe, but that flex seems to add up to a good "squish" amount for that first layer. There's also the fact that I probe the surface with a nozzle temperature of 170c to prevent any damage to the build surface, while actual printing temperature is typically much higher, so the nozzle probably expands a tiny bit more which adds a little bit more squash to the initial layer.
I just tried a few experiments, and results seem to corroborate these thoughts. My first layer results with no Z-offset and a 0 trigger height are much more consistent than they've been in the past. At least in my case, it seems the paper + z-trigger height method of calibrating bed height is completely unnecessary and mostly exists as a result of legacy methods.
-
I assume that the Z height is 0 when it is gripping the paper with a significant amount of force. The hot end mounting is elastic to some extent, so the actual height is certainly less than the thickness of the paper. It works for me.
When I want a more accurate trigger height, I use feeler gauges.
-
I just eyeball it. My printer bed is high enough that I can sit eye level with the bed and with a light behind the nozzle you can carefully lower the gap between nozzle and bed until the gap is visibly gone. Works pretty well for me.
-
@dc42 yeah, except the directions in the
Delta Calibration Instructions state that the nozzle should be "lightly gripping the paper", which I take to mean that there should be the merest contact. I've always found that these types of guidelines are highly subjective and open to interpretation, which just adds to the confusion. -
@GoremanX said in The Concept of Bed Leveling:
I've always found that these types of guidelines are highly subjective and open to interpretation, which just adds to the confusion.
That's 3D printing in a nut shell. Add the fact that much of the received wisdom and rules of thumb originated in an era when the mendel printer was cutting edge and filament quality was as good as grass trimmer line.
The reason for suggesting using baby stepping as the final adjustment is that it takes the place of perfect accuracy in measuring the probe trigger height, which is subjective and nearly impossible to really get. Instead you can use an obvious empirical result like visual first layer quality and a live adjustment to fine tune.
-
@GoremanX said in The Concept of Bed Leveling:
@dc42 yeah, except the directions in the
Delta Calibration Instructions state that the nozzle should be "lightly gripping the paper", which I take to mean that there should be the merest contact. I've always found that these types of guidelines are highly subjective and open to interpretation, which just adds to the confusion.Yes it's open to interpretation. But I find it's not really critical anyway. For fine turning, you can use baby stepping to get the first layer the way you want it, then subtract the baby step amount from the trigger height.
-
I have a Macro on my duet. Once my nozzle touch a 0.4mm feeler gauge, I just execute the macro
"G92 Z0.4"Always get perfect first layers depending on the filament type. For petg I normally have to babystep +0.05mm but thats the only example I can think of.