On achieving a perfect level

Just so everyone can see what i’m working with, this is a 9x9 mesh of my bed in stock configuration.

Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3 4 5 6 7 8
Recv: 0 +6.584 +6.566 +6.529 +6.516 +6.463 +6.514 +6.584 +6.528 +6.673
Recv: 1 +6.485 +6.504 +6.489 +6.496 +6.385 +6.511 +6.554 +6.485 +6.709
Recv: 2 +6.464 +6.478 +6.488 +6.479 +6.410 +6.449 +6.520 +6.516 +6.681
Recv: 3 +6.409 +6.431 +6.386 +6.399 +6.279 +6.381 +6.469 +6.448 +6.648
Recv: 4 +6.365 +6.386 +6.370 +6.350 +6.275 +6.346 +6.481 +6.436 +6.580
Recv: 5 +6.273 +6.288 +6.246 +6.286 +6.168 +6.264 +6.366 +6.346 +6.449
Recv: 6 +6.199 +6.228 +6.214 +6.250 +6.194 +6.225 +6.363 +6.316 +6.384
Recv: 7 +6.141 +6.106 +6.124 +6.188 +6.080 +6.168 +6.260 +6.249 +6.323
Recv: 8 +6.080 +6.061 +6.073 +6.120 +6.076 +6.101 +6.196 +6.196 +6.266
Recv:
Recv: Subdivided with CATMULL ROM Leveling Grid:
Recv: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Recv: 0 +6.58375 +6.57866 +6.57357 +6.56625 +6.55431 +6.54014 +6.52875 +6.52426 +6.52255 +6.51625 +6.49750 +6.47417 +6.46250 +6.47111 +6.49139 +6.51375 +6.54037 +6.56908 +6.58375 +6.56690 +6.53602 +6.52750 +6.56093 +6.61671 +6.67250
Recv: 1 +6.54797 +6.54764 +6.54731 +6.54408 +6.53504 +6.52309 +6.51398 +6.51326 +6.51538 +6.50949 +6.48341 +6.44931 +6.43287 +6.44940 +6.48357 +6.51514 +6.54099 +6.56422 +6.57389 +6.55296 +6.51847 +6.51060 +6.55163 +6.61929 +6.68695
Recv: 2 +6.51218 +6.51662 +6.52106 +6.52190 +6.51577 +6.50603 +6.49921 +6.50226 +6.50822 +6.50273 +6.46932 +6.42446 +6.40324 +6.42768 +6.47576 +6.51653 +6.54160 +6.55936 +6.56403 +6.53902 +6.50092 +6.49371 +6.54234 +6.62187 +6.70139
Recv: 3 +6.48500 +6.49250 +6.50000 +6.50375 +6.50042 +6.49333 +6.48875 +6.49398 +6.50171 +6.49625 +6.45917 +6.40889 +6.38500 +6.41259 +6.46658 +6.51125 +6.53574 +6.55093 +6.55375 +6.52824 +6.49037 +6.48500 +6.53792 +6.62333 +6.70875
Recv: 4 +6.47343 +6.48084 +6.48826 +6.49306 +6.49323 +6.49080 +6.48917 +6.49362 +6.49889 +6.49255 +6.45903 +6.41392 +6.39153 +6.41293 +6.45705 +6.49505 +6.51889 +6.53661 +6.54343 +6.52445 +6.49458 +6.49366 +6.54465 +6.62459 +6.70454
Recv: 5 +6.47046 +6.47609 +6.48171 +6.48639 +6.48997 +6.49261 +6.49389 +6.49598 +6.49671 +6.48912 +6.46284 +6.42823 +6.40945 +6.41989 +6.44616 +6.47218 +6.49557 +6.51872 +6.53269 +6.52383 +6.50579 +6.51051 +6.55624 +6.62474 +6.69324
Recv: 6 +6.46375 +6.46847 +6.47320 +6.47750 +6.48181 +6.48570 +6.48750 +6.48820 +6.48681 +6.47875 +6.45630 +6.42718 +6.41000 +6.41375 +6.42945 +6.44875 +6.47287 +6.50060 +6.52000 +6.51806 +6.50778 +6.51625 +6.55875 +6.62000 +6.68125
Recv: 7 +6.44750 +6.45364 +6.45978 +6.46352 +6.46317 +6.46042 +6.45801 +6.45993 +6.46219 +6.45556 +6.42901 +6.39357 +6.37310 +6.37967 +6.40120 +6.42542 +6.45206 +6.48138 +6.50185 +6.50014 +6.48958 +6.49861 +6.54325 +6.60748 +6.67171
Recv: 8 +6.42750 +6.43595 +6.44439 +6.44732 +6.43963 +6.42641 +6.41741 +6.42151 +6.42983 +6.42542 +6.39137 +6.34459 +6.31884 +6.33248 +6.36714 +6.40153 +6.43187 +6.46193 +6.48176 +6.47708 +6.46216 +6.46986 +6.51866 +6.59007 +6.66148
Recv: 9 +6.40875 +6.41875 +6.42875 +6.43125 +6.41912 +6.39949 +6.38625 +6.39107 +6.40227 +6.39875 +6.36033 +6.30718 +6.27875 +6.29699 +6.33995 +6.38125 +6.41556 +6.44820 +6.46875 +6.46153 +6.44222 +6.44750 +6.49778 +6.57264 +6.64750
Recv: 10 +6.39514 +6.40513 +6.41512 +6.41815 +6.40803 +6.39095 +6.37852 +6.38027 +6.38668 +6.38074 +6.34506 +6.29704 +6.27190 +6.28874 +6.32845 +6.36894 +6.40806 +6.44796 +6.47292 +6.46464 +6.44141 +6.44241 +6.48875 +6.55931 +6.62986
Recv: 11 +6.38278 +6.39200 +6.40123 +6.40519 +6.39997 +6.38950 +6.38023 +6.37745 +6.37588 +6.36620 +6.33639 +6.29847 +6.27921 +6.29219 +6.32382 +6.36023 +6.40445 +6.45344 +6.48417 +6.47526 +6.44808 +6.44370 +6.48343 +6.54595 +6.60847
Recv: 12 +6.36500 +6.37347 +6.38195 +6.38625 +6.38375 +6.37709 +6.37000 +6.36565 +6.36088 +6.35000 +6.32366 +6.29120 +6.27500 +6.28556 +6.31236 +6.34625 +6.39320 +6.44722 +6.48125 +6.47259 +6.44394 +6.43625 +6.47019 +6.52509 +6.58000
Recv: 13 +6.33709 +6.34488 +6.35268 +6.35588 +6.35076 +6.34104 +6.33333 +6.33355 +6.33578 +6.32884 +6.29983 +6.26166 +6.24190 +6.25407 +6.28465 +6.32065 +6.36571 +6.41620 +6.44824 +6.44156 +6.41643 +6.40986 +6.44038 +6.48945 +6.53852
Recv: 14 +6.30375 +6.31089 +6.31802 +6.31954 +6.30960 +6.29405 +6.28472 +6.29248 +6.30648 +6.30602 +6.27195 +6.22343 +6.19727 +6.21250 +6.25009 +6.28977 +6.33057 +6.37347 +6.40107 +6.39724 +6.37811 +6.37472 +6.40265 +6.44630 +6.48995
Recv: 15 +6.27250 +6.27958 +6.28667 +6.28750 +6.27491 +6.25607 +6.24625 +6.25945 +6.28167 +6.28625 +6.25046 +6.19704 +6.16750 +6.18343 +6.22324 +6.26375 +6.30199 +6.34093 +6.36625 +6.36412 +6.34838 +6.34625 +6.37134 +6.41005 +6.44875
Recv: 16 +6.24593 +6.25503 +6.26414 +6.26690 +6.25619 +6.23913 +6.23079 +6.24441 +6.26675 +6.27310 +6.24330 +6.19751 +6.17153 +6.18260 +6.21348 +6.24829 +6.28821 +6.33205 +6.36042 +6.35737 +6.33883 +6.33320 +6.35421 +6.38813 +6.42204
Recv: 17 +6.22144 +6.23317 +6.24490 +6.25060 +6.24393 +6.23121 +6.22546 +6.23742 +6.25633 +6.26301 +6.24253 +6.20982 +6.19042 +6.19426 +6.21142 +6.23769 +6.28097 +6.33337 +6.36695 +6.36182 +6.33787 +6.32681 +6.34351 +6.37310 +6.40269
Recv: 18 +6.19875 +6.20991 +6.22107 +6.22750 +6.22422 +6.21621 +6.21375 +6.22556 +6.24292 +6.25000 +6.23486 +6.20945 +6.19375 +6.19375 +6.20347 +6.22500 +6.26977 +6.32634 +6.36250 +6.35648 +6.33005 +6.31625 +6.33033 +6.35704 +6.38375
Recv: 19 +6.17852 +6.18241 +6.18630 +6.18880 +6.18724 +6.18430 +6.18658 +6.20222 +6.22309 +6.23130 +6.21243 +6.18092 +6.16213 +6.16577 +6.18215 +6.20755 +6.24986 +6.30120 +6.33421 +6.32979 +6.30704 +6.29597 +6.31049 +6.33668 +6.36287
Recv: 20 +6.16009 +6.15351 +6.14693 +6.14329 +6.14283 +6.14531 +6.15301 +6.17403 +6.20026 +6.20968 +6.18310 +6.13971 +6.11495 +6.12562 +6.15493 +6.18801 +6.22598 +6.26771 +6.29495 +6.29331 +6.27718 +6.27153 +6.28817 +6.31529 +6.34241
Recv: 21 +6.14125 +6.12764 +6.11403 +6.10625 +6.10648 +6.11255 +6.12375 +6.14792 +6.17722 +6.18750 +6.15713 +6.10773 +6.08000 +6.09454 +6.13074 +6.16750 +6.20181 +6.23667 +6.26000 +6.26079 +6.25005 +6.24875 +6.26704 +6.29477 +6.32250
Recv: 22 +6.12111 +6.10729 +6.09346 +6.08560 +6.08608 +6.09253 +6.10380 +6.12690 +6.15482 +6.16537 +6.13906 +6.09537 +6.07060 +6.08262 +6.11354 +6.14607 +6.17848 +6.21249 +6.23588 +6.23812 +6.22974 +6.23014 +6.24870 +6.27604 +6.30338
Recv: 23 +6.10056 +6.08996 +6.07937 +6.07343 +6.07376 +6.07874 +6.08815 +6.10796 +6.13220 +6.14269 +6.12434 +6.09225 +6.07343 +6.07976 +6.09937 +6.12366 +6.15487 +6.19076 +6.21607 +6.21941 +6.21216 +6.21320 +6.23155 +6.25818 +6.28482
Recv: 24 +6.08000 +6.07264 +6.06528 +6.06125 +6.06144 +6.06495 +6.07250 +6.08903 +6.10958 +6.12000 +6.10963 +6.08912 +6.07625 +6.07690 +6.08519 +6.10125 +6.13125 +6.16903 +6.19625 +6.20070 +6.19458 +6.19625 +6.21440 +6.24033 +6.26625
Recv:

This is a stock bed with no heat applied before leveling. 7x7 auto mesh.


7x7 Cold Mesh

Send: M420 V
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3 4 5 6
Recv: 0 +6.558 +6.571 +6.645 +6.479 +6.621 +6.589 +6.741
Recv: 1 +6.544 +6.573 +6.668 +6.510 +6.673 +6.620 +6.794
Recv: 2 +6.533 +6.563 +6.634 +6.500 +6.624 +6.634 +6.796
Recv: 3 +6.429 +6.481 +6.540 +6.408 +6.558 +6.594 +6.714
Recv: 4 +6.333 +6.349 +6.438 +6.304 +6.425 +6.451 +6.560
Recv: 5 +6.266 +6.274 +6.380 +6.274 +6.333 +6.405 +6.444
Recv: 6 +6.048 +6.048 +6.173 +6.079 +6.116 +6.196 +6.245

Then the bed heated to 75C and alowed to stay there for 30 minutes before running the 7x7 mesh again which of course turns off bed heat entirely.


7x7 Hot and Cool Mesh

Send: M420 V
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3 4 5 6
Recv: 0 +6.789 +6.749 +6.790 +6.650 +6.785 +6.778 +6.954
Recv: 1 +6.701 +6.700 +6.781 +6.610 +6.775 +6.718 +6.941
Recv: 2 +6.650 +6.631 +6.706 +6.553 +6.678 +6.698 +6.900
Recv: 3 +6.536 +6.545 +6.593 +6.455 +6.608 +6.648 +6.808
Recv: 4 +6.459 +6.431 +6.501 +6.363 +6.488 +6.525 +6.663
Recv: 5 +6.435 +6.380 +6.476 +6.363 +6.439 +6.528 +6.606
Recv: 6 +6.329 +6.266 +6.349 +6.270 +6.331 +6.433 +6.548

As you can see there is a slight difference but no amount of selective screw tightening or screw sequence alleviates my wavy bed. I have spent countless hours on this issue with no resolution fro the SM team as of yet. I even measured the temp change on the bed frame part in three seperate locations. When the bed is heated there is a 5-6C temp difference between the center and the outer corners of the bed frame.

I did a remix of @Tone dial indicator to accept my unit that has a direct serial out put. I used that and ran the Check bed hot gcode and recorded all 49 points offsets and then applied that information via a gcode macro and saved.



The resultant test print after was dismal to say the least with some areas of NO extrusion to areas that were well above the print surface.

I am a patient guy and don’t like when things can’t be fixed properly but at this point I am giving up! Snapmaker you win! I will just tuck it under the desk until such time as Snapmaker decides to fix this issue. Since I am already running a 7x7 mesh, the pending firmware update with a 5x5 mesh will not solve this issue. I will send all this info to support and see what they say.

1 Like

Just for my benefit, what tweaking were you doing after an Autolevel?

If you mean my adjustment macro as read then here it is
M421 I0J0 Q-0.14
M421 I0J1 Q-0.15
M421 I0J2 Q-0.20
M421 I0J3 Q-0.15
M421 I0J4 Q-0.12
M421 I0J5 Q-0.16
M421 I0J6 Q-0.13
M421 I1J0 Q-0.16
M421 I1J1 Q-0.07
M421 I1J2 Q0.04
M421 I1J3 Q0.04
M421 I1J4 Q-0.05
M421 I1J5 Q0.01
M421 I1J6 Q-0.02
M421 I2J0 Q-0.01
M421 I2J1 Q0.03
M421 I2J2 Q0.00
M421 I2J3 Q0.06
M421 I2J4 Q0.07
M421 I2J5 Q-0.05
M421 I2J6 Q-0.10
M421 I3J0 Q-0.03
M421 I3J1 Q-0.01
M421 I3J2 Q0.14
M421 I3J3 Q0.11
M421 I3J4 Q0.05
M421 I3J5 Q0.08
M421 I3J6 Q0.03
M421 I4J0 Q-0.01
M421 I4J1 Q0.05
M421 I4J2 Q0.07
M421 I4J3 Q0.09
M421 I4J4 Q0.13
M421 I4J5 Q0.00
M421 I4J6 Q0.00
M421 I5J0 Q-0.04
M421 I5J1 Q-0.02
M421 I5J2 Q0.15
M421 I5J3 Q0.03
M421 I5J4 Q0.07
M421 I5J5 Q0.07
M421 I5J6 Q-0.03
M421 I6J0 Q-0.12
M421 I6J1 Q-0.01
M421 I6J2 Q0.01
M421 I6J3 Q-0.03
M421 I6J4 Q0.06
M421 I6J5 Q-0.07
M421 I6J6 Q-0.08
M500
M420 V

Have you also calibrated your nozzle flow?
After all the tweaking, do you also run the Check Level Hot.gcode just using the test card?

Yes flow was one of the first things I did. I do not use the test card but I do use a 0.10mm feeler gauge. I ran the check level hot to obtain the readings with my dial indicator and applied them. I know you put a lot of work into all of the leveling stuff and I sure do appreciate it but at this point I am out of time and patience to get a large print off of this thing. I have pets and can’t use the Laser or CNC until my enclosure arrives so I’m stuck with the 3D printer until then. I would have thought that a printer with the SM2’s price tag would not require so much work just to get a print out of it. Will it print a Benchy in certain select spots on the bed, sure but why have a large build volume if you’re only going to print Benchys. I have a dozen other other printers to print smaller items with so I was hoping to print larger items on the SM2.

Do you get satisfactory results when using the feeler gauge & Check Level Hot.gcode?

I notice your dial indicator has a serial connection to it. Mine has a port but didn’t come with a cable. Do you know where to get a cable?
How are you getting your readings into your computer? I’m just asking so maybe I can do likewise.

I had two sheets of glass made to size but it still is not level enough. I gave up on the o-rings (entirely too tedious) and put it back to stock.

I ordered the cable adapter separately and it appears to the PC as a keyboard. Press a button and it sends the reading and a CR. I nodded your sheet to put all the readings in a single column and I just start at the first point and push the button during each pause over a test point.

Dial Indicator readings:
So I think there is a problem with using a Dial Indicator.
Here is my thinking and you all can tell me if I’m wrong.
So in a perfect world you would have the Dial Indicator take readings just immediately under the nozzle. That’s not exactly physically possible.
So, you have to move the print head over by the offset of the Dial Indicator.
(Which presents problems for readings on the left side, the head won’t move that far)
Now your measuring in the spot you want to know the value of.
BUT, now that you have moved to a different X,Y location the leveling code will move your Z to where it thinks it should be. So you’re now off by the delta Z between those two spots in the leveling matrix. So to get an accurate Z reading you should probably apply a Z difference for that point. Every point will have a different delta unless your bed is flat and perpendicular.

Maybe if you turn off leveling just for that offset move in X & Y the Z will remain in the same place. (You have to be careful here because with leveling off you don’t want to be making any Z moves)

I’m pretty sure I was running into this problem when trying to use the Dial Indicator to get my tweak values. I reverted to just using the test card.

Do you have a link to that?

I think you are correct but unless SM releases the schematics so we can replace the Z probe with a direct touch unit or switch then I don’t know a way around it.

@DroneOn We’re working this issue for a very long time.

I will update the latest info with you and offer you the help that we can.

We are working on this issue for a long time and will gradually expand the usable areas in the print sheet. Before the end of April, we will release a 5*5 levelling method, which can ensure that a larger area is fixed.

Meanwhile, we are constantly optimizing algorithms and will release the new levelling method in order.

Sorry for the inconvenience.

@Tone here you go

This is very annoying, i asked till the campaign for more printing video´s and we didn´t got them,- its like you have known before,- because there is no possibilty to oversee this huge bug.
BTW, i am looking forward to a 5x5 calibration but i think this wouldn´t work either.
I think for A350 the minimum would be a 7x7.
Why don´t you develop a bigger matrix than 5x5 now?

Rome is not built in a day. We have noticed this issue for a long time and it was caused by multiple dimensions. On the current period, we are trying to find some solutions and expand the usable area gradually by releasing a serial of firmware. The mechanical designs are under the testing and modification is on progress.

2 Likes

@Edwin why not give this issue more visibility? for example a sticky thread that covers the current big problems that are being worked on.

A lack of transparency leads to a lack of trust for many customers. I see many posts on the Facebook Group with the same issues around levelling. However, any pain point questions are typically ignored by the SM developers.

If you provide visibility, show you are owning the problem and actively working towards a resolution that will go along way to improving customer relationships and many will offer to help with feedback etc

3 Likes

Great idea and we are actually working on this. I will strongly consider sharing our works on this issue with all the guys who have same problem around levelling and other issues.

The issues that have happened are recorded and researched by us. We will try to be more transparent about the issues, problems and provide more visibility to our users.

3 Likes

I just realized that @jeroent 's dial indicator mount solves the offset problem.

It may have the problem that the weight of the printing module isn’t there and would change the reading but It should give you an accurate read on the matrix/mesh. I’m going to try it.

@DroneOn,
What are you looking for in your mesh plots (that I presume your getting from OctoPrint)?