[Feature idea] Flow-based mesh bed level compensation

It appears that currently the only way to compensate for bed level irregularities is to apply z-offset based on calculated mesh, but if the variations in probed bed-levels are small enough, then it seems possible to do flow-based compensation. That is when the nozzle height doesn’t change, even when printing the the first layer, but flow rate is adjusted to keep the line width the same, i.e. the closer the bed is to the nozzle at the current point, the smaller the flow, and vice versa.


1 Like

I’ve wondered about that but I’m not sure of the amount of deviation that could be compensated for. 0.1mm, I would not expect to be a problem - 0.5mm, there will be a problem.

Now, does this happen automatically if you print a raft with your model? The first couple of layers will provide a bit of wiggle room in terms of highs and lows of the bed. By the time you get to the fourth (final) layer of the raft you should have a very flat surface to print your model on.


…and think of PEI-plates with rough sandpaper surface. Here you have additional “space” to adjust additional flow. But nevertheless if printers will measure it height over the table continuously, this function makes sense to me. But as mykepredko mentioned, the effect today might be too small to make a difference.

On the other hand: surface quality of the heatbeds will also get better (I hope), so this would work “against” this implementation.

A “like” from my side…

1 Like

Sorry for playing the devils advocate but I do not think this will work.
Your flow mainly has one job: Generate a closed and mechanically stable layer. This means all individual extruded lines need to be continuous and connected to each other. Suddenly reducing the flow because my Z-offset is messed up might lead to defects in the layer.
The same goes for suddenly increasing the flow: How do you want to avoid visible aberration, especially on outer walls or even an impact on dimensional accuracy?

And one step back: I think the challenge is not a Z-correction. The challenge is to measure and record the needed correction. And this will remain the same for this concept as it is today.

Agreed. Interesting in theory, but in practice, I think it would just compound first-layer adhesion problems and make troubleshooting more difficult.

Thanks for the feedback, everyone! Wanted to respond to some of the points made.
First of all, yes, I initially mentioned that I only see this applicable when bed level variations are small. If we’re dealing with large variations, then it will be impossible, or at least very problematic, to lay down a very thick line where the bed is too far from the nozzle that isn’t z-compensated. Perhaps, just this factor alone is enough to discard this idea because of its very limited application.
Regarding the layer defects, unless calculating the changes in flow is more complex and/or is less accurate than z-offset calculations (I think, perhaps, something related to pressure advance), wouldn’t these defects be somewhat similar regardless which compensation is applied, since they all are a direct result of differences between calculated mesh and actual bed level at each point?

The problem is: an approach like yours would finally result in a compensation like the drawing below (lower part). The compensation has to be effective to more than one layer. Else you could do it like today (upper part). Of course, the (theoretical) advantages are there: You may print any surface, the quality of the surface could be “any” but you have to pay this with a lot of boundary conditions (besides: this is not doable with today’s standard printers) like overtaking the slicer and so on.

Finally, your approach would lead to a 5-axis-printer having no “table” just a “starting geometry” wich will be printed on. This is how we did it with our gluing robots for autobodys. And we did exacetly, as you proposed, using a continuous distance measurement with inductive/tactile probes. But we had just one layer to apply (maybe some side by side) and the layer had to have a constant (or “defined”) thickness.

1 Like

@Berggipfel, I’m confused and have a weird feeling that we’re not talking about the same things.
Let’s try to figure that out, if you will.
I’m assuming that on your picture black represents not-so-perfectly-flat bed and the different shades of grey represent different layers.
The lower part of the picture you posted (not the upper) is what I understand is being done today, i.e. using the probed/calculated mesh, z-compensation is applied at multiple layers and is gradually reduced down to 0 by default height of 10mm.
The approach I’m talking about is the top part of your picture, i.e. we keep the nozzle at the same height even at the very first layer and at each point we extrude just the right amount of plastic to reach the surface of the bed and widen to desired line width. The resulting line will have constant width, flat top, and bottom surface contour following the contour of the bed surface.

OK, maybe I did not understand the todays compensaton! Good to talk about it! I learn every day… Because measuring a first layer, I did not get the idea, that the lower picture was printed…

Yeah, it is not explicitly explained, but this kinda gives the idea: Bed Mesh - Klipper documentation.

Mesh Fade

When “fade” is enabled Z adjustment is phased out over a distance defined by the configuration. This is accomplished by applying small adjustments to the layer height, either increasing or decreasing depending on the shape of the bed. When fade has completed, Z adjustment is no longer applied, allowing the top of the print to be flat rather than mirror the shape of the bed.