Middle of bed (points A, 5, C), higher than sides

I’ve had this issue for quite some time.
Balco printer, from Aldi UK a few years ago.
HE180021 but board version 5.1. I’ve used firmware ADVi3pp-Mainboard-4.0.6.hex (not the HE180021 firmware because that smashes the nozzle into the bed).
I don’t have BLTouch. I don’t have Z-Braces.

When I do a manual level, I can usually get the 4 corners (1-4) at a similar level using a feeler guage.
At points A (front middle), 5 (middle middle), and C (back middle) and usually D (right middle) the nozzle is touching the bed.

I’ve tried the things listed here:
I haven’t tried Z-braces (I also can’t print, so no Z-braces for me yet), but I’ve eyeballed with a set-square, and I think it’s square.

I’ve tried to “untwist” the x-axis rods in case that’s my issue, but it hasn’t made a difference.
I’ve tried adjusting the rods using the screws as per this: BLTouch leveling differences from left to right side of heated bed
Could my issue be that both sides are twisted in the opposite direction, and that would cause the nozzle to be consistently lower in the middle? I’ve tried to get my head around which way I need to twist things, but my attempt failed and there’s no change.

I’ve previously tried rotating the rods 180 degrees (in case they’re bent).
I’ve tried a glass bed in case my heated bed is warped - no change. I even used just 4 small pads to sit the glass on the bed, to “raise” it above any possible centre-warp. I’ve flipped the glass, in case that was warped, but no joy.

I bought a manual-deploy probe and edited ADVi3++ version 3 (I don’t remember the point version) to enable G29 automatic levelling - mesh was measured, confirmed high-points, but it didn’t help and first layers still fail.
I haven’t (yet) tried editing ADVi3++ version 4 to use the probe. *edited to add: I’m not sure I will try editing version 4 to use the probe - I think too much has changed since a guide I used for editing version 3.

I’m all out of ideas of what to try. I haven’t printed anything for over a year now, and I’d given up. I figured I’d give it once last try before chucking the printer in the bin.
Any suggestions of thoughts on what I can try (preferably stuff that doesn’t involve printing something to fix it)?

Disclaimer: I don’t have a BL-Touch and my printer is an Australian Balco Touch running ADVi3++ 4.0.6.

Are you levelling with the bed hot or cold?

My bed also seems centre high when cold. But re-levelling when hot (@100C) shows the bed is actually level and the proof is in consistently good first layers at that bed temperature over the entire bed. I also let the entire bed soak at temperature for up to 10 minutes before levelling or printing to make sure any temperature gradients are stable.

I fitted corner adjustment locks some time ago, and spent a good time making sure the bed corners were level to the frame with a micrometer. Actually I have a slight X axis left to right bias which I fix with a slight turn of one sides Z axis rod when resetting the X axis level. I also fitted a Z offset microswitch adjustment screw which allows me to shift the entire Z offset up or down as needed, without touching the bed corner adjustments.

Make sure when levelling that your nozzle is VERY clean - use a brass brush with the nozzle at extrusion temperature if needed. After changing the glass bed (I have several) or a nozzle, I re-adjust my Z offset so the corners read close to where I want their Z offset to be, then do a couple of fine tuning first layer tests using a calibration cube adjusting Z offset as needed.

After doing this I can print rolls of filament without ever needing to adjust any part of the levelling system. When cold, my bed still reads a centre high offset which I have learnt to ignore…

Most of the time, hot. I’d say rarely levelling with the bed cold.
Not usually at 100C though, usually somewhere between 50 and 70C.
I’ve just tried setting it to 100C, left it there for about 2 hours or more, and then tried levelling.
Manually adjusting points 1-4 to be the same distance using a feeler guage, the middle is still touching the bed.

I did end up editing the code to enable my manual nozzle-position probe, and it still gives similar results as before (just different figures), and the first layer still fails in the same places as before.

Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 +0.137 +0.175 +0.115 +0.083 +0.007
Recv:  1 +0.100 +0.125 +0.112 +0.175 +0.020
Recv:  2 +0.083 +0.182 +0.212 +0.172 +0.125
Recv:  3 +0.088 +0.110 +0.202 +0.105 +0.057
Recv:  4 +0.055 +0.197 +0.165 +0.160 +0.140

As you can see, the left edge and right edge of the bed are fairly “low” (aka nozzle-high) apart from row 2 and 4 on column 4, and 0 and 1 on column 0.
the middle columns (1-2) are “high” (aka nozzle-low).

The only thing I can think of is something like both bars are twisted on opposite sides.
For example, top X-Axis rod is too far back on the left side, and bottom X-Axis rod is too far forward on the right side.
However, I think that would create the opposite to what I’m seeing - the bed would be “high” (nozzle-low) on the left and right edge, and “low” (nozzle-high) in the middle.

I can’t get my head around how I fix this.

Could the Y-axis rods be the culprit? Would a twist on those cause my issue?

Thinking out loud (or talking to myself) - yes, I think it could.

image image

Front left is 0.137, back right is 0.14. Fairly close.
Front right is 0.007, and back left is 0.055.
Images above just to help illustrate that.

If the left Y-Axis (bed) rod is too high at the front, and the right Y-Axis rod is too high at the back, that might create the issue I’m seeing?

I’ve created a highly technical demonstration using my fingers/thumbs as Y-Axis rods, and a coaster as my printer bed:

I had been thinking about you problem and was just about to post something similar. I diagnosed a problem like that using a dial caliper/micrometer attached to the the Z axis frame tower, one side then the other, and ran the bed backwards and forwards. That was how I levelled the bed to the frame. You then know then that the bed is level and can address the X and Z axes as needed.

Another thing to check is that the bed is actually free to move vertically on its springs and posts and not binding. If the bed posts are binding then that could be providing a torque to the bed via the posts and could be bowing it like you see. Squeeze at adjacent corners to check for free movement. I found the bed frame quite fragile so avoid pressing down - squeeze instead. I replaced my bed frame with a 3mm aluminium slab.

I’ve just used calipers to check the Y-Axis rods to the base, and adjusted them to be as close to each other as possible. As far as I could tell, at least the front of both rods were at a similar height, and rear of the rods at a similar height to one another.

I re-checked the X-Axis rods were parallel (using pillars), manually levelled the bed, then ran automatic levelling (edited the code to 3x3 grid, for speed), and the results are just the same as before.

I do have a thicker y-carriage - I updated that some time ago, and it’s 4mm thick.
The corners seem free to move, not binding.

Send: M420 V

Recv: Bilinear Leveling Grid:
Recv:       0      1      2
Recv:  0 +0.065 +0.140 +0.030
Recv:  1 +0.123 +0.225 +0.165
Recv:  2 +0.062 +0.196 +0.149

image image

Have you checked the bed in all 8 possible warps for flatness using a straight edge and feeler gauge? X left middle right, Y front middle back, 2x diagonals?

You haven’t mentioned doing so - I thought I’d ask.

My print bed was warped from the factory. I used wooden blocks and my body weight to flatten it. In my case the center is higher when the bed heats up.