For all who want level on glass

Sorry that I was out of the office yesterday.

Our CAE(computer-aided engineering) engineer and the test team have made a lot of tests. One of the advice is that we need to heat the bed to a certain temperature before the calibration starts. The software team will add the feature, which allows users to select if they want to heat up the bed before calibration.

We really take your thoughts into consideration.

Sorry for the inconvenience.
Best regards

4 Likes

@winjet1 I have been doing some tests and taking 5, 5x5 calibrations at bed at a staring temp of 60c the standard deviation from the mean in each run was less than 0.005mm. The greatest difference of any point from the average was less than 0.01mm. Not quite as good as you can do with a 0.001mm micrometer but good enough for leveling and at worse 5 times the resolution you have when leveling the bed through the console.
It also works super well with my Octoprint leveling macro and since the print head to sensor relationship stays the same and I know I know to within 0.005mm how far the sensor is from the bed I never need to do manual leveling even after changing the bed or the head.

So I’ve been looking into this and found someone that is making borosilicate glass plates and they have ones specifically for the Snapmaker 2.0, all 3 sizes.

Also FiFix is unfortunately gone from thingiverse, any idea where I can get the files?

Just ordered from them on Friday, it will be here tomorrow!

I just ordered mine! Now to figure out how to get it to work with auto leveling, and possibly find a better way to attach to the bed

1 Like

You could probably use something like this high temperature adhesive magnetic sheet and stick it to the back of the glass. It might make the heat dissipation a little worse since it’s only 235mm, but the SM doesn’t seem to be close to perfect anyways, you’ll be getting the heat evenness by the glass normalizing more than by the bed heater actually evenly heating everything.

My problem is the heated bed is very bent so when I used clips or anything that clamps the glass to the bottom of the bed flexed the glass and removed part of the point.
Didn’t like the idea of another magnetic bed as I only get 55c at the center of the bed when set at 60c and 45c at the edges.
I used silicone thermal pad for a bit, stickiest side to the glass and the other side to the bed. Took up some of the bed unevenness but more importantly it sticks so hard I didn’t need any clips also helped with heat transfer.
This is what I used.

Currently using some bits of blue tape - seems to work fine but bed is so dialed with new infrared sensor it’s not been hard tested. Currently using clean glass for PLA, dont even need any coating.

When are you posting your instructions for the new sensor? :stuck_out_tongue:

Soon, within a day or so. Just sorting out some photos (had to take head apart again to take them), STLs and drawing for wiring. Also been sorting leveling macro so I dont need to use the console and that enabled me to do the stats referred to above. Will post this also. Can post a gcode for Snapmaker 2 350 with tree supports if that would be useful. The shape of the sensor support which incorporates the hot end cooling fan box needs support.

1 Like

@stewl Awesome! My (probably) bed causes too close of a z-offset immediately left of center just enough to cause very thin first layers, yet right of center it’s absolutely perfect. Did a flatness test side to side, corner to corner every which way possible. Never got a gap under the level machinists tool I used, not even enough to let the smallest amount of light through. I’m now going to tram the X-axis with precision 123 blocks and see if that helps.

@Artezio the traming the Z axis is just good housekeeping on any printer that has two steppers. I do it on all my printers. On the SM2 I think it can be done quite effectively by pushing both sides of the X axis up to the top of the pillars before switching the machine on in accordance with the build instructions. I have also used 123 blocks to level on the Y axis but have not seen any improvement,

1 Like

Yeah, I have both a Shapeoko and X-Carve, tramming is just good preventative maintenance like changing wiper blades on a car. Does pulling up the x-axis work well enough? Even in 123 blocks there’s an expected accuracy discrepancy

I find it OK. It’s all relative, the 123 blocks may be accurate but you put them on the Y axis frame which has an unknown relationship to the actual bed. Never actually tried putting them on the bed, just always followed @Brent113’s advice. Now I have a good probe and a flat bed I will have a go and measure rail pushed to the top, leveled with 123 blocks on the Y axis rail and levelled with 123 blocks on each side of the bed when the bed with the Y axis bed supports directly below the X axis.

While you’re doing tests, would you mind exploring the sensitivity of this? The reason I suggested the linear modules is because it’s invariant to downward pressure and Y positioning of the bed as well as any bed tilt front/back, resulting in repeatable positioning of the X module.

Could you try explore the following scenarios with the 123 blocks on the bed:

  • Light down pressure directly above bed supports, as well as heavy pressure to see if the bed mounts are sensitive to pressure
  • Light and heavy pressure a few inches away from the bed mounts and near the edge of the bed to get a feel for how much the bed defects.

I made some assumptions about these scenarios but never tested. If you’re taking measurements already would be nice to get some quantitative data.

I’ve actually wondered about using an ultra sensitive laser leveling tilt sensor on the modules to see how the Y rails are in relation to each other.

Best method would be to get 2 pressure displacement sensors, attach them both to each underside of the x axis, manually pull up the x axis all the way to the top of the z rails, make sure the sensors will touch the same spot on the y rails then with the machine on do a homing then manually bring the x axis down and see when each touch the y rails and see what the difference is. Could also do this for the bed itself to create a full map of the hills of the bed. Drawback? Displacement sensors aren’t cheap. A good one is between $500-$600 each sensor, you’d need two minimum. Laser displacement sensors run about the same as pressure sensors. It really comes down to preference.

I have done some testing and the results are interesting.

Process was power machine off, do what was being tested like push x axis to top as detailed in the results sheet. Power the machine back on, home and level using my auto leveling script. I then auto leveled again just to check consistency.
Findings

  1. Trying to level using 123 blocks from the bed must be done from exactly over the Y axis bed supports. When I tried it near the front of the bed it deviated considerably though looking at the numbers it actually made the bed more level in the Y direction but that was just chance.

  2. The worst result came from pushing the x axis all the way to the top of the Y rails. Which is a shame as thats the recommended process though any discrepancy should be comfortably handled by bed leveling for printing. Not so good on Laser but bell within CNC tolerance.

  3. Leveling on the Y rail or on the bed above the Y bed supports gives the best result.

  4. Removing the blocks before or after powering on doesn’t make any difference.

The numbers represent how high up the machine thinks the bed is as calculated from the Z home of Z:326.29. less how far down it moved before stopped by the bed probe (adjusted by fixed nozzle offset and 1mm).

What I dont understand is why it looks like the bed is higher or lower depending on which method used.

Happy to be told I have misinterpreted everything!

1 Like

It looks like you’re computing Max-Min across diagonals - it might be more accurate to compute only in the tilt around the Y axis:
image

I recomputed these numbers for Run 1 and Run 2 (average of each row’s tilt) and additionally I computed Run 1 to 2 repeatability as the difference of the average run’s Z height measurement.
image

For repeatability I’m not surprised the Z axis tops were the most repeatable. I’m quite surprised the front of the bed firm overall performed the best.

I would expect light pressure to be more repeatable than firm pressure, though the opposite is showing. I think this is indicating the internals of the rails cannot be trusted as a solid reference as they will move up and down slightly in the U groove bearings, resulting in slightly different Z heights unless it’s recalibrated after each time.

Ideally, you would not want to have to recalibrate every time you check tram, so the reference must be solid, like the Y rails. Personally I turn the power on before removing the blocks so it’s less likely to introduce a bump. And it seems here to be slightly more repeatable.

May come as a result of changing the tilt of the X axis, the left or right Z end stop will hit the top first. Hitting the endstop sets the Z to a “known height”, and a tilted X axis will take fewer steps down to reach the bed as a result.


I think this adequately supports using the Y rails as the reference. There seems to be too much variability between light and firm pressure for me to be comfortable explaining to someone how much pressure to apply. Removing the blocks after power on, has very good repeatability to 0.006mm, enough that calibrating each time is not necessary.

Ideally the carriage would be shimmed so that it’s parallel to the Y rails, and also levelled front to back - but if anyone is capable of doing that level of precision then they wouldn’t need instruction on tramming.

Book1.zip (11.6 KB)

Thanks for sorting this out Brent, all makes sense. Also different end stops triggering could explain the distance difference.
The firm pressure on the front moved the bed considerably and I think it must have leveled it up. It’s not something I felt comfortable doing or will be doing again. I will be sticking to leveling using the Y rails as you originally suggested,
The variations to suggest to me that doing Z level using blocks should be done regularly and a hot calibration before you print is the best way to get a level start. It’s dead easy with this sensor and the calibration macro that I run from Octoprint. I have now added it on a button rather than using it in a start gcode.

1 Like

I have written up the process I followed to replace the existing proximity sensor with an Infrared sensor so that the print head will level on glass. I have included a wiring diagram for the new cable thats required and STL’s for the two new parts that need to be printed plus a load of pictures that should make the process more obvious for anybody else that might want to give this a try.
Happy to take any comments or clarify anything thats not clear. If somebody does look at this and sanity check it I will post on the Facebook site.

https://drive.google.com/drive/folders/1JTZ811Tx-dTD35J4a-u2fsokln20INpR?usp=sharing

6 Likes

Just to finish this off. I followed the leveling process detailed in my instructions then did an auto level from the macro and this is the result. A graph from OctoPrint Bed Visualiser , a full print test with 25 squares and a line all the way round the very edge of the print bed and the bed side of the 25 squares. Print was on clean glass no coating. Very pleased with the test, the line round the edge is very even as are the bottoms of the squares. I do need to do something about leveling the bed but auto level works very well with what is a 0.5mm difference between the lowest and highest points.


1 Like