Bed Mesh generated but not enough compensation for existing topography

Basic Information:

Printer Model: Qidi X-Max 3
MCU / Printerboard: MKS PI X-4
klippy.log

Hi all!

I’m on the hunt for a perfect first layer. Many weeks I tried all kind of things to achieve a perfect result. I even went that far and installed a custom aluminium plate with modified dampeners and NASA grade quality spec.

However it didn’t solve my problem and currently I also have a bumby magnet sheet that is creating a hump on my bed.

No problem! I have Klipper 12 with bed mesh support.
At least thats what I thought…

I print first layer tests all the time. Bed meshing, heat soaking, everything you can think of was prepared. But I have areas with nozzle too close or nozzle to far away from bed in the same print. Some squares are absolutely perfect. Some are squished. Some fall apart because layer is not bonding

I can feel the rotation of the Z-axis but the compensation is simply not enough.

I also studied the reference guide and tested many different setting regarding tension and move splitting.

I even ordered and installed a Beacon probe which is great and accurate but the problem remains identical compared to tests with BL Touch and also inductive probes.

Here you see my settings:

[bed_mesh]
speed:300
#horizontal_move_z:10
mesh_min:30,30
mesh_max:300,300
probe_count:33,33
algorithm:bicubic
bicubic_tension:2
#mesh_pps: 4, 4
zero_reference_position: 160, 160
adaptive_margin: 5
move_check_distance: 5
split_delta_z: .025
fade_start: 1
fade_end: 10
fade_target: 0

OK!
Who could help me with this and has a good idea?
Very frustrating. I really dont kow much else what and where to look for…

Maybe some of you guys have experienced something similar…

Thank you so much!

1 Like

In addition I show 2 pictures of a little 35x80mm layer test I put just over this hump. So I can see and feel the z movement when nozzle transitions between highest and pretty low spot of my print bed.

As you can see a perfect area turns into a quished one whenever we pass the hump.


Oh sorry i forgot to show the bed level test picture.

You can also see on this test that you have some perfect layer spots and other test squares are bad.


beacon has been night and day difference for me, with just the default settings they provide. definitely not perfect, i occasionally get a little rippling.

im sure someone else can answer this, but what is Kamp actually doing. is it messing with the values at all. perhaps its worth uninstalling it and returning all your bed mesh settings to stock.

I would personally disregard all the results of your experimentation prior to beacon as I’m sure you have figured out by now that a BL touch can indicate that a bed is infact flatter than it is.

im sure you have checked this also. but is your offset definatley right. it can be confusing reading the documentation i find.

mine is
[beacon]
serial:/dev/serial/by-id/usb-Beacon_Beacon_RevD_2B6C996B4E5737374D202020FF0F3515-if00
x_offset: 0 # update with offset from nozzle on your machine
y_offset: 35 # update with offset from nozzle on your machine
mesh_main_direction: y
mesh_runs: 2

my XY0 is in front left corner when stood in front of printer and the beacon sits further away from me than the nozzle does.

I seem to have the same problem with my X2 and a CR touch.
Now it became impossible to do full bedsize prints.

I also think mesh isnt compensating fast enough.

As for your config:
bicubic_tension:2
Shouldnt that normally be .2?

Thank you and excuse the insufficient information provided. I will quickly answer to the mentioned points.

Yes Beacon offset is configured the proper way according documentation. I think it’s Y0 X30
But good idea.

I actually did not install KAMP GitHub repo but relied on the nativ Klipper 12 support for adaptive bed meshing. I like it very much this feature.
Will reduce mesh time for little items.

As for the values in the mesh section I started with standard values. In case of bi-curious tension with 0.2 and later 0.1 or higher values like 0.4 0.9 or 2.0 which is the maximum. All without significant effect.

What is Bambulab doing?
The have shitty crooked beds and remarkable bed mesh compensation abilities.

I’m very disappointed to get this mesh problem not under control :frowning:

There have been quite intensive discussion and research if Klipper’s bed mesh algo does something unwanted, but in fact no indication have been found that would point towards this assumption.

What has been definitively found is that mechanical issues, e.g. twisted / skewed extrusion profiles, badly designed belt paths or eccentric roller wheels (just to name some) will lead to bad bed compensation scenarios.

The reason for this is the offset between the probe and the nozzle. This means when the nozzle is at the spot where the probe has taken its sample, the carriage is at a different position and due to the mechanical issue the effective z-values have changed.
An attempt to compensate such is made with Axis Twist Compensation, but of course this has its limitations.

1 Like

I tried the AXIS_TWIST_COMPENSATION but I don’t completely understand what it does.

As I mentioned before I have the little “Hill” area on the middle right side.
Here I did my testing to make sure the mesh compensates for the irregularity.

This is how it looks:

Then I executed

AXIS_TWIST_COMPENSATION_CALIBRATE

The wizard will not accept simply hitting the accept button without changing the Z value.
I pressed ACCEPT and printer shut down with error message. Left side looked pretty ok but however… Finally I entered the least possible value -0.05 and then the wizard moved on to the next point. 3 points because I didn’t change the default. Also I said Y=160 since its the middle of the bed.

The 3rd point I adjusted pretty heavy with -0.2
This happened to the mesh:

OK, it works I would say. This was the first attempt and not succesful but I will try again.

What is the best approch in my situation?
i don’t exactly understand the reason why 3 points would help you.
And what about the X axis? Do you have to repeat the process with X and Y in changed position?

The most puzzling thing is to measure deviation around 5,000mm all the time (in my case because I set the homing offset to 5mm). This is very impractical.
I can go into my workshop and take out my cnc milled&ground distance blocks but this is not what I want.

Maybe this tool is more something for a printer that has a skewed gantry or maybe some other geometrical/mechanical issue?

This feature is more targeted at the Ender type of printers although for selected “mechanical issues” it might have a positive effect on other printer designs as well.

I mentioned it more to highlight the fact that such issues significantly impact the ability to compensate via bed meshes.
For example an eccentric roller wheel might be causing the same effects but in no case could be compensated via the said functionality.

1 Like

In order to accurately compensate for deviations in the print surface using bed_mesh there are two pre-requisites:

  1. The printer must be able to accurately probe the bed. The relationship between the nozzle, probe, and bed surface cannot deviate when moving across the XY plane. The probe must accurately trigger at the same distance above the bed, regardless of XY location.

  2. The printer must be able to accurately move the Z-axis at the micron level. There can be no stiction, backlash, binding, skipped steps, etc. Many printers have trouble with this. Some of this is hardware/build related, but it can also be related to the configuration (ie: not enough stepper current).

With regard to #1, I notice that you are using an inductive probe. These probes are sensitive to changes in magnetism. They are also affected by changes in PEI thickness.

Maybe this tool is more something for a printer that has a skewed gantry or maybe some other geometrical/mechanical issue?

It is specifically intended to compensate for a twisted X axis. FWIW, there should be no situation where you enter ACCEPT without moving the z-axis. You are required to use the paper test to move the nozzle to the correct Z position (just above the surface) for each sample. It measures the bias between the automatic probe and the manual probe. Three samples are the default, but you can specify more. It depends on how twisted your axis is. FWIW, I don’t know that the Beacon is intended to work with it, perhaps it does.

What is Bambulab doing?
The have shitty crooked beds and remarkable bed mesh compensation abilities.

This is the advantage of targeting and testing against specific hardware that is shipped pre-assembled. Everything from the build procedure itself, configuration, BOM, etc can be throughly tested yielding consistent results.

1 Like

Thank you for the explanaition!

The Beacon is a funny piece of equipment. It’s working just like a normal inductive probe but can do a bit more. For this case it’s not relevant and I’m able to enter all values according to description.

I have two questions though. The safe distance of nozzle has to be reduced to 0 then? Mine is 5mm and obviously paper test will not work. Change back nozzle distance back later I suppose. You do it the same way?

Second thought: I set the Y value to 160. Thats the middle of my 320x320mm bed. So I measurer a line i the middle of my bed. How are areas compensated in the corner regions like Y=30 or Y=300 i.e. ? And the X axis. you apply the procedure also with inverted axis another time?
Didn’t read about that…

I did axis twist compensation yesterday, and I moved it directly to 0mm quickly, without even checking since the distance to bed was obviously way too high, and started the paper test after that. I ended up around -2.4mm for all three points, with minor deviations in the ±0.01 range between points.

I’m not sure what you are referring to and IMO this is unrelated. The AXIS_TWIST_COMPENSATION_CALIBRATE process is as follows:

  1. Call AXIS_TWIST_COMPENSATION_CALIBRATE
  2. Head will move to the first position and automatically probes this position
  3. Head will move again, placing the nozzle over exactly the same position that was probed in step 2
  4. Now you “manually probe” this spot with the nozzle, according to the paper test method

The algorithm now calculates the delta between the “automatic probing” and the “manual probing”. In an ideal case, i.e. no twist or other mechanical issue is present, then this delta is 0.

This method only determines a possible issue with the x-axis and as such is independent of the y-axis position.
If you have x and y combined issues or the mentioned roller wheel issue (or any other topic for this matter) then this method simply does not cover this.

Unfortunately I can’t advise you on how to configure the Beacon. It depends on modified Klipper source and the probe itself runs proprietary code. I don’t know if it will work correctly with Axis Twist Compensation.

What I can do is clarify how the Axis Twist Compensation works. It begins by moving the probe to the first sample. It will then probe that sample using the probe. After that, it will move the nozzle over the sample. At this point, you must do a manual probe, as described in the link provided by Sineos above. You use the TESTZ command to move the Z axis until the nozzle is in the correct position. Once you are done you enter ACCEPT and it moves to the next point.

I measured the backlash of my printer and it seems pretty high now IMO and increased to 0.14mm

IMG_2823

Is this a major concern or typically not relevant because only while printing very high speeds backlash is causing free fall of the build platform or something…?

I don’t really follow where and how you measured some backlash, but in a motion system where you aim for significantly less than 500 microns, this seems a lot.

Change fade_start to 0

And that does what?

#fade_start: 1.0
#   The gcode z position in which to start phasing out z-adjustment
#   when fade is enabled. Default is 1.0.

Below that, the nozzle follows the bed.

You won’t be able to use bed_mesh with a significant amount of backlash on Z.

Bed Mesh works by applying small adjustments to the Z axis, moving the tool up and down to fit the contours of the print surface. This involves constant change of direction on Z.

When backlash is present there is a level of “give” before the motion system engages after a change in direction. In other words, the steppers are moving, but the axis will not until the threads, teeth, etc. engage.

I don’t really follow where and how you measured some backlash, but in a motion system where you aim for significantly less than 500 microns, this seems a lot.

I believe that the Beacon has an option for “backlash compensation” and registers a gcode command that estimates backlash present on Z. That said, even if it makes the probing and/or homing procedure more accurate it would still be impossible to use bed_mesh with significant backlash.

Change fade_start to 0

I do not recommend this. When attempting to troubleshoot a mesh I recommend disabling fade entirely. It can be done my removing the fade options from the configuration, or by setting fade_end to a value lower than fade_start.

1 Like

Beacon will do the backlash measurement for you.

BEACON_ESTIMATE_BACKLASH

Indeed it’s a lot of backlash. Was much lower some month ago. Maybe flange nut should be exchanged or some zero backlash mod needs to be applied.

Some people say backlash is only relevant if very quick direction changes are required. Something like if the build plate is in free fall :smiley:

The word backlash alone suggests otherwise.
When I think about it my 2/10th mm mesh problem is possibly almost covered by the 1,4/10th mm backlash.

What do you think? Is this maybe the reason for the odd behavior?

I watch the z axis and I barely see it moving/turning. Will need to verify that it’s actually following the mesh…. Also I’ll look up backlash compensation features of beacon. Who mows if there’s some software.

Mesh fade was off 99% (outcommented) of the time. I just activated it but got rid of it for the testing.

Btw: Besides of the bad mesh and first layer problems the printer works pretty fantastic. Fast, high strength high quality prints with really good optical appearance. Layer lines are flawless etc….