On achieving a perfect level

SM has been looking into it, they believe the heat being on affects the accuracy of the Z sensor and that’s why they turn it off. They are running lots of experiments. I’m sure the heat being on affects the Z distance of the bed because I have measured it with a Dial Indicator. Aside from that, the leveling matrix still comes up off and my experiments are showing me part of that is due to backlash and part due to the print head moving in the Z direction due to X-axis movement. I can see it on the Dial Indicator.

Here’s a profile of how the Z changes with heat. This was done with a Dial Indicator at the center grid point of an A250. Points out on the edge of the bed are likely different. Z units are in millimeters.
Z-Temp Curve

I have the same problem with the leveling on my A350, the auto leveling should be a great tool to compensate misalignment but this firmware introduces misalignment. One part is to low, ene part is to high, one part on the bed is oke, very frustrating.
Anxious waiting for a SM solution

I have one theory why to auto leveling isn’t working perfectly. Because the sensor is located away from the nozzle there is going to be a Z difference between that point and where the nozzle is. It’s going to be a different amount for every grid point. It’s only the same if you have a perfectly flat and perpendicular bed.

I believe there is programming in the Marlin code to specify how much the sensor is located in the X & Y direction away from the nozzle as well as an offset for the Z direction which they account for. But I don’t think they can account for the Z difference between those two points on the bed. Does that make sense to anyone else besides me?

Maybe if you measure the distance with the card to the nozzle and then move the proximity sensor over to that same location and measure, that would calibrate the distance difference between the nozzle and the sensor. Although I think that little move at the end of the auto level is supposed to do just that.

That are entitled questions.- From my base, i think, your solution to program it out, would be nice for you and the machine.- To know every time where you are.

But in this case, the whole leveling-issue seems to not programmed as much.
I haven´t looked so deep in the firmware that i had found the leveling process.

I think there is just a trigger set, when the leveling-sensor comes at position for example Z0.5mm set the cal. to Z0. ±Offset

Maybe I need to offset the grid points I’m measuring in my Chk Lev HOT.gcode file??? I’m going to have to dig into the source code to see how they are doing it.

Hey @Tone
The grid size is defined in:
\SnapmakerMarlin-1.7.0.0\buildroot\share\scripts\g29_auto.py
line 30: probing_points = 3 # points x points
line 37: last_z = 0.001
I think line 37 could cause the pushing into buildplate problem.

grid calculation is in following file:
SnapmakerMarlin-1.7.0.0\buildroot\share\scripts\marlinMesh.scad
line 24 + down:
measured_z = [
[ -1.20, -1.13, -1.09, -1.03, -1.19 ],
[ -1.16, -1.25, -1.27, -1.25, -1.08 ],
[ -1.13, -1.26, -1.39, -1.31, -1.18 ],
[ -1.09, -1.20, -1.26, -1.21, -1.18 ],
[ -1.13, -0.99, -1.03, -1.06, -1.32 ]
];
Maybe pushing because of this points at calibration for the first time?- EDIT: i think this is just a graphical-tool.

EDIT:
I have found more :slight_smile:
SnapmakerMarlin-1.7.0.0\Marlin\configuration.h
Line 925-927:
//#define PROBING_HEATERS_OFF // Turn heaters off when probing its uncommented, i think also the comment OFF is false, if activated
#if ENABLED(PROBING_HEATERS_OFF)
//#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy)

Maybe you’ve already found out, but if you start manual calibration and then sent code ( or type preffered temp in luban and send, did both at the same time) it will reheat during calibration. so the bed stays hot for the entire calibration

3 Likes

No, I didn’t think of that. Great Idea.

i’m looking for a way to just type in the value i want for a specific point. i now have it to a deviation of less then 0,05 but feel that if i could just change a single points value, i could level it way quicker than just running the manual calibration over and over again. have you found something?

Just use this command:
M421 In Jn Zn.nn

Where the n’s for I & J are 0,1,or 2
And Z is the Z offset value.
You can also use Q.nn in place of Z where Q is an increment to the Z offset.

Example: M421 I0J0 Q-.05
I0J0 Is the front left grid point, increment the Z offset -.05

2 Likes

alright thanks! i’v got most of them between ± 0,01mm! i use the digital dail indicator you have ordered. it’s a really nice and precise tool ! i have drawn a holder that positions its tip in the same spot the nozzle will be.
klok houder~.stl (422.7 KB)

4 Likes

I made my mount to replace the right side cover.
I haven’t posted it the Thingiverse yet, but I will.
It’s located X+36 from the nozzle.


It’s not visible but the Indicator is at a slight angle so it doesn’t block off the flow of air.

2 Likes

it’s nice to have the possibility of leaving it on, only negative is that it won’t measure the exact point the nozzle is at.

one thing i’ve also noticed: when homing the Z axis, it will stop whenever One of the Two limitswitches is pushed. so if something happens to the z axis when the machine is of, it won’t correct this. when using fast calibration, it will correct any difference in the Z-axis, but when trusting manual calibration, any difference in the Z-axis alignment will screw up the bed-clearance left to right. i have shimmed one of the two rail-endcaps so when i pull both sides to their max, the are perfectly parallel to the machines base plate

My “Check Level Ind. gcode” file clear at the top of this post offsets the grid points by the Indicator offset. BUT, I find the amount the indicator can fluctuate due to backlash and play in the modules to be significant and it’s hard to account for it. I find it easier to just use the Check Level Hot.gcode” and the test card to get feedback on moving the Z offset for each grid point.

yes i also take in consideration the backlash. if i go to low, i add 2 tenths and start to go down again, this way results should be accurate. i modified the Check level ind. gcode so the offsets are gone because in my setup, i don’t need it.

Of course every time you remove and replace the print module you have to redo the Overall Z offset.

I have the same issue and until today I am still struggling with the inconsistency of the distances between the nozzle and the bed.

Explain what you have tried so far.

I’ll be watching this thread. I have a 250. It just arrived this week and I am having some bed leveling issues.

Looking at it I seem to be lucky with only one corner that is consistently low. However, I’d like to use my full print bed…

I was wondering if there was an effective way to thermally isolate the frame from the hot bed. Would a sheet of Kapton tape would be enough? Or if there was a better material to consider? Would adding something like this be bad? how much extra thickness is too much before the printer head would collide? I guess its possible to add spacers to the Z attachment that is the same thickness as any reinforcement added to the bed.

I was also wondering if any of this is from air trapped between the magnetic attached section and the heating PCB?
Is lifting the bed an option?