On achieving a perfect level

Thanks Brent, I’ll have a look.

How do you confirm that the position is equal to the nozzle (concering the Z offset)? After leveling with the dial indicator you did not level again with the printhead?

I’m sure he did level again to set the z offset after putting the nozzle back on. It’s convenient to have the micrometer where the nozzle is in the XY plane just so you know that the measurements are being taken right where it will be printing so you can be assured the z measurement is accurate.

That being said, my design is close but not exact where the micrometer is where the nozzle is, and that doesn’t really affect me at all because checking the bed level with a micrometer is not going to result in numbers that I’m going to manually type in for the purpose of bed leveling, I’m mostly just double-checking how flat the bed really is for the purpose of shimming.

1 Like

I’m running out of ideas for bed leveling…

My setup is a print sheet (0.95 mm) glued on an aluminum plate (6 mm). Unfortunately The inductive sensor is not recognizing the plate. So I put aluminum foil (the kitchen one) on the plate. Autoleveling then worked, but the leveling is terrible. Maybe due to the fact I could not get the foil totally flat on the sheet?! Looking at the printhead during autoleveling I recognized, that the nozzle does not touch the printsheet, don’t know if this is normal? I also had the impression, that the nozzle has different high at the different grid points?! This is the pattern test I printed after leveling:

Some of the pattern are quite good, A lot of them are really bad. I still have problems to see if Z is too low or too high in that ones. Fact is some patter are definitely without adherence of the filament, so Z is too high.

I’ll try a manual leveling again, but it’s been said (I guess it was @Brent)that on manual leveling the backlash has to be considered. The backlash calibration test should be run with an optimal leveled bed. So I really don’t know what to do…

I really would like to use @tone 101 leveling Excel sheets, but this has to be run with autoleveling only, I guess??

Tony’s spreadsheets are a wrapper that helps generate the syntax for the M421 command. Where the data comes from is not terribly important as long as the measurements you take are at the same place the firmware thinks it is.

G42 can be used to move the head to mesh coordinates from 0…4 in I and J (firmware’s names, not mine). It you took manual measurements with a paper card, that’s great. If you took measurements with a dial indicator, that might be better.

I took measurements on my board with a dial indicator, and from the factory here’s what it looks like:

These surfaces are normalized at the center mesh value, which from ambient to 60C raised 0.05mm from thermal expansion.

In my opinion, this is beyond software leveling. Look at the deviation from one point to the next, and this is with a 10x10 grid. Watching the needle on the indicator move even from one point to the next was alarming, it could move up and down several thousandths of an inch before arriving at the next point. Even two adjacent points different by only 0.001", during the travel I saw variation as much as 0.005". The built in 5x5 grid cannot compensate for this level of variation, it would need at least a 10x10 grid, and that would have low and high spots still on my machine.

My solution is twofold: I have shim stock and I will be correcting the root cause, which is the bed webbing is not flat. Measurements will be taken directly on the threaded inserts and they will be brought in line.

After correcting that I’ll be putting a borosilicate glass build plate on top with a magnetic base and removable PEI spring steel build surface - which is similar to what the SM2 comes with and is why the inductive sensor can pick it up - the spring steel is just under the surface. I chose borosilicate glass because it does not experience the thermal expansion that aluminum build plates can exhibit.

When taking manual measurements, I prefer to have backlash compensation enabled because without it making fine adjustments has uncertainty unless you always measure from the same z direction. If you use friction on a card as your measurement instrument, and you command the nozzle to raise 0.02mm, it probably won’t. So you’ll have to go like 0.06mm, and then back down 0.04mm. With backlash compensation correctly set on my machine, commanding the nozzle to move 0.01mm will cause the nozzle to move, making the process much faster.

One more question. I did a manual calibration a few minutes ago. I used the touch panel for going down 0.5 mm 4 times, then I used the jog in luban with a custom decrease of -0.01 mm. After finishing the calibration I started a print. I did not recognize that the printhead in the heating position was much too low, as the print started the nozzle ran into my sheet :frowning:
Is it not possible to combine commands on the touchpanel and via Luban for leveling??

During calibration, I think that’s the case? I can’t recall if I’ve tested that.

However, 0.01mm difference is not enough to crash the nozzle, as it should’ve been at 0.1ish anyways, something else is at play here.

It’s a good idea after a calibration to run the nozzle down to 5mm or so, and then slowly move it down to verify the calibration was good. I have a macro saved in Luban that runs a G0 X160 Y170 Z10 F3000. Then from there I go down 1mm at a time while watching the nozzle. If at the reported height of 1mm the actual nozzle doesn’t look 1mm away, I’ll go down by .1mm, etc.

Also, make sure the bed levelling is turned on by doing an M420. It should report Bed Leveling ON.

Ok, finally I realized, that far too much for me. I was actually looking for something working like out of the box.

I will try to keep this as simple as possible for me. Finally I did a manual leveling as good as I could.

Looking on that I would say mainly the right side and the backline is where the nozzle is too low (the two pattern inside the red frame are printed with changed offset Z +0.10).

My humble idea was manually tweaking with:

M421 I4J0 Q+.05
M421 I4J1 Q+.05
M421 I4J2 Q+.10
M421 I4J3 Q+.10
M421 I4J4 Q+.15

M421 I3J3 Q+.10
M421 I3J4 Q+.15

M421 I2J4 Q+.05

M421 I1J4 Q+.05

M421 I0J4 Q+.05


Would this work, or is this thought too simple? Did I forget any command, or do I have to put in a command in advance??

If everything is right and works that way, can I save the leveling on the PC and maybe later upload again??

Is there a way of initiating the calibration sequence via the g-code console? or even just form Luban via usb?

Yes, see this topic. It’s not a single command, but many commands that the screen issues, all of which need to be run in order.

Anybody knows if I can just send an M421 command for the points that I like to change, or if it’s needed to send a command for all point (with Q.00)?

@FlyByWire, Hi, sorry for the delay, I’m out of town.
Yes you can send individual M421 commands to change individual points thru the console in Luban with a USB connection. Remember that once you get to the place you want to be that you’ll need to save them with a M500 command.
You don’t need to do a G1029 S command to save, it’s only needed to terminate the Auto Level when it has been started.


For those who don’t have patience/skills - like me I found a workaround.
What I did
I found that corner/edge areas are farther from the nozzle and the extrusion is bad in those areas so marked them on the heating bed (more-less) .
Than I took the plate off the bed and used the screws that hold the bed to platform as spacer - by unscrewing those in the areas that are sunk (marked) so they stick out of the surface a bit - and lift the plate. No measurements/calculations - just try-and-adjust where needed.
There are multiple screws so you can really improve the printouts.
I hope it works for you


Do you have the platform mounted with the threaded inserts up, and that’s what you’re adjusting?

I adjust the screws mounted to the inserts as instructed in the assembly manual - so the compensation is done by unscrewing those M4x10 screws marked blue on the picture. I try to make those that are on the locations of the bed that are usually sunk to stick up above the surface slightly.
Probably no the perfect method but at least I can get the printouts that were impossible with regular automatic calibration before screw adjustments.
One more hint - I noticed less problems with 3x3 calibraton than with 5x5 which is a bit counter-intuitive.

Just for interest, I have just received a new platform for the A350 it does have a machined top, it is missing the nutserts so can’t test it at the moment, edited as the information has changed.


The 3D printing plate (that says “Dot not print directly on this surface” never used nuts. It has recessed holes and uses the beveled screws (unlikely every other part of the machine). And those holes have always been threaded (as far as I’ve seen online and with my own machine).

Sorry if I confused people, not the platform but the cradle underneath it.
Yes but the new cradle has been machined so it is flat, I just worked out the replacement has the nutserts missing, so it has 6mm threaded holes for the 4 mm screws, won’t be able to test it now.

No, you are correct, that is referred to as the platform in the assembly manual. The heated bed or laser plate or waste board screws to the platform.

The terminology choice was… Interesting. I also think it requires clarification so I’ve been calling it the webbed undercarriage.

Supposedly I have a replacement webbed undercarriage cradle platform mount base in the mail but I haven’t received tracking for it, I’m really intrigued if it’ll be the new style