Welcome! Log In Create A New Profile


Problem with bilinear bed leveling ...

Posted by softfoot 
Problem with bilinear bed leveling ...
October 17, 2020 12:28PM
Hi, I have a Geetech Pruse I3 Pro C (Acrylic) with a BLTouch sensor and a plate glass bed - I know the bed is not level (it is low on the right - x axis).

I am using Marlin 2.0.5 and it is configured to use "bilinear" leveling with a 3x3 probing matrix and "extrapolate_beyond_grid" defined.
I also have PIDTEMP and PIDTEMPBED defined.

The problem I am seeing is that the extruder is not being lowered enough as it traverses the x axis from left to right. It is very
noticable in the first layer as the lines do not touch as it approaches he right hand edge for a large job.

Watching the z axis screws it is clear that the firmware is lowering the extruder --- but apparently just not enough.

In all other respects the printer is working well.

I could level the bed, but that rather goes against having the probe.

Any ideas? Am I missing something here ??

Re: Problem with bilinear bed leveling ...
October 21, 2020 07:25PM
This is a classic symptom of a twisted X axis which is a very common occurrence in Prusa-style double rod X axis designs. Unless your Y probe offset is 0, any twist in the X axis (i.e. the rods are not exactly parallel) will cause the distance between the nozzle tip and the sensor trigger point to change as you move across X.

Imagine the following with the standard 2-rod X axis (this is what my AM8 used to have):

On the left side of the bed the lower rod is slightly more towards the back of the printer than the upper rod (in my case this was about 0.5mm)
On the right side of the bed, the upper and lower rods are exactly aligned (as they should be).
The rods are around 38mm apart - this makes the amount of twist asin(0.5 / 38) = 0.75 degrees.
This results in a twisted X axis. The nozzle on most i3-style machines is a few cm in front of the plane of the rods - in my case around 30mm. This means that the nozzle will be around sin(0.75) * 30mm = 0.4mm closer to the bed on the left side than on the right, assuming the bed is actually perfectly flat.

Now in my case my sensor has a Y probe offset of -40. So the probe is 40mm in front of the nozzle, or 70mm in front of the plane of the rods. Let's pretend the X probe offset is 0. Then on the left side of the bed the sensor will be sin(0.75) * 70mm = 0.91mm closer to the bed - a difference of 0.5mm between the amount the nozzle changed vs the amount the sensor changed. So the bed leveling system thinks the bed is 0.5mm higher on the left side than the right side.

The bigger your Y offset the more pronounced this effect. There's really nothing Marlin can do about this, since it doesn't know about the twist. The only solutions are to eliminate the twist, mount the sensor so its Y offset is 0 (X offset will also have an effect but it's much smaller and can be safely ignored), or manually edit the mesh.
Re: Problem with bilinear bed leveling ...
October 21, 2020 09:20PM
Many thanks for that!!

Strewth, someone obviously spent a lot of time on this issue :-)

Getting the x-axis rods exactly parrallel will be a challenge!

At the moment my bltouch is mounted behind the nozzle at about 50mm, so any twist will cause a significant error :-(

I guess making sure the bed is level wont help very much since the twist is still there?

It sounds like the best solution for me is to work out/measure the twist and apply a correction in the firmware, unless I can find a way to
mount the sensor with a y offset of 0.

Re: Problem with bilinear bed leveling ...
October 21, 2020 09:40PM
There is no firmware fix for twisted axis... the firmware can only do so much to account for rubbish hardware.
Sorry, only registered users may post in this forum.

Click here to login