Suggestion for a simpler, less error prone, way of bed levelling
-
@deckingman I agree with your point of simplicity to the defining the plane. I do not agree with the suppposition that the lines connecting the points of adjustment have to be parallel to the axis of motion. Look at Delta printer's for example.
Appliction of least squares is done when you have an over-defined system mathematically. It's a mathematical method that can be used to fit a curve, or a line, or a plane to a bunch of data points.
With 3 points and 3 degrees of freedom, it reduces to 1 exact solution. Your intersecting lines is an appropriate analogy and can proably be constructed to prove it.
I think the bigger issue is that most people don't understand/don't remember/can't visialize the geometric discussion we are trying to make. Just blindly throwing in some coordinates will not make for a corrected plane.
My point is the ideal probing locations should mimic the relative positions of the adjusting elements. Think similar triangles.
-
@fcwilt said in My supplier of tool plate specs it as flat with 0.015" which works out to 0.381mm - not very flat. Another supplier has flatter stuff if you get 0.5" thick or better but even then it is spec'd at 0.005" which works out to 0.127mm - better but still varying by more than one layer height for 0.1mm layer height printing.
I have checked mine on a surface plate and its out 0.2 over 500mm in one direction. It looks like segment of a cylinder. The surface plate is 3' square and AA grade.
-
Thank you for that link about your bed material.
I never thought about printing a thicker first layer just to get things started.
Frederick
-
@deckingman I agree that your suggested method would work.
However, if you probe 3 points on a bed with 3 attachment points, then the least squares calculation gives exactly the same result as your suggested method. You method requires the attachment points (or at least, the spacing between them) to be known, so I don't see that it is any simpler. The calculation is certainly simpler, however RRF includes a least-squares solver for delta printer calibration anyway.
The use of a least-squares solver gives you the chance to probe more points then attachment points, which for those of us who don't have a bad as flat as yours (or who have a gantry that sags a little) allows least-squares "averaging" to be done, so that the result is less sensitive to deviations from flatness at particular points.
-
@sinned6915 said in Suggestion for a simpler, less error prone, way of bed levelling:
I have checked mine on a surface plate and its out 0.2 over 500mm in one direction. It looks like segment of a cylinder. The surface plate is 3' square and AA grade.
My granite surface plate is only 300mm by 300mm - not really big enough for any but my smallest bed.
I just checked my heightmaps and they all show mostly a gentle curve from "left to right" but basically flat from "front to back".
So you observation about a "cylinder" is consistent with what I see here.
Thanks.
Frederick
-
@dc42 said in Suggestion for a simpler, less error prone, way of bed levelling:
@deckingman I agree that your suggested method would work.
However, if you probe 3 points on a bed with 3 attachment points, then the least squares calculation gives exactly the same result as your suggested method. You method requires the attachment points (or at least, the spacing between them) to be known, so I don't see that it is any simpler. The calculation is certainly simpler, however RRF includes a least-squares solver for delta printer calibration anyway.
The use of a least-squares solver gives you the chance to probe more points then attachment points, which for those of us who don't have a bad as flat as yours (or who have a gantry that sags a little) allows least-squares "averaging" to be done, so that the result is less sensitive to deviations from flatness at particular points.
I think that's the nub of it. If you probe more than two points in one direction (which ideally should be close to the extremities of the bed), then you are no longer looking at whether the plate is level, but also trying to compensate for some unknown curvature or flatness. In simple terms, a saucer is level if one can fill it with a fluid and that fluid will not spill over the rim at any one point. For the purpose of levelling (as opposed to flatness compensation), the shape of the indentation and the position of the indentation within the rim, is irrelevant. If the rim is the same height all around, then it's level. Once it's level, then you can worry about whether it's flat but to try and do both at the same time is bound to lead to problems. But I can see I'm flogging a dead horse here so I'll just bugger off.
-
@deckingman said in Suggestion for a simpler, less error prone, way of bed levelling:
In simple terms, a saucer is level if one can fill it with a fluid and that fluid will not spill over the rim at any one point. For the purpose of levelling (as opposed to flatness compensation), the shape of the indentation and the position of the indentation within the rim, is irrelevant. If the rim is the same height all around, then it's level. Once it's level, then you can worry about whether it's flat but to try and do both at the same time is bound to lead to problems.
Two comments:
- There would be nothing to stop you probing several points around the rim, and ignoring the interior.
- I think the more realistic case for us is that the rim isn't level. As we're not actually trying to contain a liquid, I think it's reasonable to probe several points uniformly distributed around the rim, and do a least-squares fit to define a plane that deviates from the probed points on the rim as little as possible.
It's fair to say that if RRF did not already have a least-squares solver in it, I would have implemented a simpler system that constrains you to probe the same number of points as you have bed mounting points. Having the least squares solver already allowed me to implement a more general scheme, that is equivalent to the simpler scheme when you have that number of probe points.
Do you find the present scheme unsatisfactory, and if so, in what way? Your title suggests that the current method is error-prone: in what way?
-
I have a few observations that may be relevant.
-
cast tooling plate is manufactured in large sheets (like 8' x 4' or larger). It is milled in that size and the flatness spec is applied over the entire sheet. Smaller pieces, cut from those large sheets, like we use for bed plates, will be flatter than the limits that apply to the large sheet. I have used 300x300 mm cast tooling plate beds, 1/4" and 8mm thick, in 4 printers and found it always flat enough to print edge to edge in a 0.2 mm layer - never tried thinner as I never had a reason to do so.
-
I have seen many recently designed printers using cast tooling plate beds with heaters that are smaller than the bed plate by a wide margin. I don't know why they do that- maybe to save a few $ on the heater. I suspect that leads to bowing when the plate is heated because the cooler edges won't expand as much as the central portion of the plate. Probing multiple points and doing a least squares fit would help to minimize the variation in the first layer thickness on a bowed plate. I "probe" nine points with a piece of paper between the nozzle and bed when I use the manual bed leveling assistant, typically about once a year when I check the tram of the bed.
-
I use 300x300 mm heaters on 300x300 mm bed plates. Here is a thermal image of the uninsulated 8mm plate in my corexy machine:
The minimum point in the UL corner is about 7C below the center of the bed. If there were a 20 or 30 mm unheated margin around the plate what would the temperature difference be? How much would the plate bow? Maybe there's a simulator on the web somewhere that could provide an estimate.
- I have seen forum posts in which people claim their cast tooling plate beds were bent in shipping. I have never seen any mention of the truck tire tracks on the package that would be surely be there if the bed really were bent in shipping.
-
-
Some of my cast tool plates are nice and flat, others not so much.
The first four I got were good, got unlucky on the last one.
But I still have to use Mesh Bed Compensation.
I don't yet understand how others can manage without it.
Frederick
-
@dc42 said in Suggestion for a simpler, less error prone, way of bed levelling:
Do you find the present scheme unsatisfactory, and if so, in what way?
Not at all. As I said in my OP, it matters not one jot to me because I don't have a need to use it.
Your title suggests that the current method is error-prone: in what way?
I was going to bugger off but seeing as you asked, a quick gander at these forums will reveal a number of threads related to bed levelling in it's various guises where people seem to have misinterpreted the instructions or misunderstood how it works. Another quick gander at M671 shows a list of pre-requisites that people might get wrong. For example the number and position of lead screw/attachment points/adjustment screw points. All of which have to be with respect to an origin which people might get wrong. As long as one probes in a line parallel with a line passing through the attachment points (and why would one do otherwise?) then none of this matters - the only parameter that matters is the distance between attachment points in order to calculate the length of the line and therefore it's slope.
I would also suggest that, the recommendation to probe near the lead screw positions is incorrect. For reasons that I detailed in this video tat I made over a year ago, https://www.youtube.com/watch?v=H9O1r46Izn8 with a 3 point system, a slope in the Y direction will affect the readings taken in the X direction. Whereas probing the X axis along a line that runs through the centre of the Y axis will negate that error. Likewise probing along the Y axis should be done on a line on the centre of the X axis.
That video also explains how one can end up with a level bed, but it's not necessarily level with the XY gantry because there might be a some twist or misalignment of the frame. You could, if you felt like, incorporate a check whereby after levelling the bed across the centre, you then check all 4 corners. This will show up any misalignment although it could be due to either a twisted build plate, or (more likely) a misaligned or twisted frame. But I appreciate that most people will choose to use mesh compensation rather than correct the mechanical error.
But hey, it was just a suggestion - wish I hadn't wasted my time..........
-
@deckingman you have not wasted your time, I am sure a large number of users will have appreciated your detailed explanation.
-
@fcwilt Mesh compensation can correct if the bed plate/print surface bows when heated, and/or the Y axis guide rails are not coplanar, and/or the print surface is not uniform thickness.
I ensured coplanar Y axis rails by mounting them on tooling plate (two pieces cut from one piece, green in the image below) that is in turn mounted on a rectangular frame of 4040 t-slot.
I use 0.7 mm PEI with a layer of adhesive for the print surface. I have no idea what the thickness specs are for either the PEI or the adhesive, but it has been good enough in the 4 printers I have used it on.
-
This post is deleted! -
@deckingman nice idea! I agree that people get too many of the moving parts of bed leveling wrong (like order of probe points having to match up order of reference points, which can cause any number of weird issues, or forgetting to probe Z after tramming the bed, etc.). Even the fact that you need a G30 to establish Z=0 instead of a standard homing move for an end stop seems to cause issues again and again.
Could be a fun exercise to implement this in a macro and see how it goes. Shouldn't be more than 30 lines of code I think.
-
@oliof more often than not, people's brains shut off and expect that using a probe and chunk of toolplate automatically gets them NASA/JPL accuracy and precision.
-
@oliof said in Suggestion for a simpler, less error prone, way of bed levelling:
...........................
Could be a fun exercise to implement this in a macro and see how it goes. Shouldn't be more than 30 lines of code I think.That's the best idea I've heard all day. I'd do it myself but as I've explained numerous times, I don't have a need myself for any type of firmware assisted levelling as I prefer the "mechanical approach" whereby my bed is flat, level and stays that way. I only have to check it if I do any "major surgery" on the bed (which almost never). If you do decide to write a macro, let me know how you get on.
-
@deckingman said in Suggestion for a simpler, less error prone, way of bed levelling:
I would also suggest that, the recommendation to probe near the lead screw positions is incorrect. For reasons that I detailed in this video tat I made over a year ago, https://www.youtube.com/watch?v=H9O1r46Izn8 with a 3 point system, a slope in the Y direction will affect the readings taken in the X direction. Whereas probing the X axis along a line that runs through the centre of the Y axis will negate that error. Likewise probing along the Y axis should be done on a line on the centre of the X axis.
Perhaps it would be better to probe 4 points, at the mid point of each edge of the reachable area of the bed?
-
@dc42 said in Suggestion for a simpler, less error prone, way of bed levelling:
Perhaps it would be better to probe 4 points, at the mid point of each edge of the reachable area of the bed?
Exactly so.