Welcome! Log In Create A New Profile

Advanced

autoleveling plus mesh-bed compensation

Posted by shadowphile 
autoleveling plus mesh-bed compensation
August 30, 2018 10:16PM
What's the general consensus here? I've been doing just the auto-leveling but it's really just best-fit of a plane and can't fix peaks and valleys. (dc42, am I right?)
My print area is 350mm across and I want flat to at least 0.1mm. I read that it shouldn't be necessary with an accurate build but my current machine was built with lots of care (all CNC or extrusion parts assembled as square as can be measured) and I still probe a peak-to-peak deviation of three hundred or more microns. Maybe this would be considered awesome for a delta of this size?
For the record my print dimensions and orthogonality are so spot on they didn't need any software correction.
Re: autoleveling plus mesh-bed compensation
August 31, 2018 05:11PM
If you do not need precise parts then use also grid based interpolation to level the bed. You may need this if your bed is not planar or when your printer is not precise in a way which cannot be fixed by calibration. If your bed probing reports peak to peak errors of 0.3 mm then you can assume non-linear errors of this order in XY directions too.

If your bed is planar and your diagonal rods do not get almost horizontal when printing then you must have errors in the range of 0.3 mm in the printer geometry too. Also make sure your diagonal rods on one tower have as much equal length as possible. Design distance between rods as big as possible to lower sensitivity to diagonal rods length imprecision.

If you can do some math then study this to get some insight into what may be wrong.
Re: autoleveling plus mesh-bed compensation
September 02, 2018 09:36PM
Just for reference, my 350mm bed deltas running 32 point S6 340mm diameter calibration are generally under 0.01 deviation across the board, admittedly a lot of time has been spent on them to get them as mechanically perfect/aligned as possible.

Try manually calibrating your printer by adjusting bed heights manually as well as mechanically adjust endstops so carriages are same height from top of printer (if you can) so everything is square to the top of your printer (where a delta measures its location from).
Re: autoleveling plus mesh-bed compensation
September 04, 2018 12:58AM
is that peak or RMS? in the past I have gotten as low 11 um wasnt sure I trusted that number though. My typical used to be 50um but this new version of machine taps out around 20um. But that result still has a peak to peak range of .3 (+/- .15) mm so there must be a few high spots swamped out by a lot of accurate spots. Not that it matters. In my opinion these errors should always be reported in peak values, not RMS. Avoiding any contact of the nozzle with the post-printed material is a virtue, not a luxury.
Re: autoleveling plus mesh-bed compensation
September 05, 2018 06:48AM
RMS, but as you can imagine the peak is very low, admittedly the 8mm thick 400mm round tooling plate with 7 manual height adjustment points and a 4mm borosilicate plate on top goes a long way to achieving this. I also have to disclose I have laser squared the printers and put on adjustable feet, then sit them on individual 20mm thick steel plates that are also on adjustable feet and have been levelled and I am running 0.9* motors and custom 16 tooth pulleys with additional tension pulleys to ensure I have the accuracy in movement and control over the belt backlash.

I also run individual shielded wires sets for the IR probe, motors, fans/heater, temp probes, endstops with no shared ground or power sources (other than at the Duet board) and additional capacitors and choke on the effector for the fans and IR sensor as well as run the IR sensor at 5v (seems to probe more reliably at 5v) to reduce any electrical interference to a minimum.

From what I have seen, anything under 0.1 deviation is fine for smaller beds (under say 175mm), under 0.05 is good for medium beds (say 250mm) and under 0.03 is good for larger beds (say 350mm), the larger the bed the more important the accuracy becomes if you want an even bottom layer. If you can get under 0.05 for 350mm bed, and you take it back to 100mm bed probe you will find it will be in the 0.01 range, does not help on the larger prints but is a quick win for smaller objects.
Re: autoleveling plus mesh-bed compensation
September 06, 2018 02:33PM
Quote

RMS, but as you can imagine the peak is very low
Ummm, isn't RMS always lower than the peak values?

Quote

admittedly the 8mm thick 400mm round tooling plate with 7 manual height adjustment points and a 4mm borosilicate plate on top goes a long way to achieving this
How do you use more than 3 points to adjust a stiff plate? My bed is a 1/4" MIC-6 cut with a waterjet (so residual stresses should be pretty low).
Right now I'm trying out using a thin plate of polycarbonate as a printing surface. It's pretty flat but I don't have a spec. But it seems to grip a metal straight-edge pretty well along the entire length.

Quote

laser squared the printers and put on adjustable feet, then sit them on individual 20mm thick steel plates that are also on adjustable feet and have been levelled and I am running 0.9* motors and custom 16 tooth pulleys with additional tension pulleys to ensure I have the accuracy in movement and control over the belt backlash.
It's been a real challenge to 'square' my printer with so many 60 deg angles, especially the diagonals or towers that lean sideways.
How do I do 'laser-squaring'? Some kind of commercial interferometer? How does having multiple layers of adjustable feet work help? Isn't one layer enough?
Also, I've always had the impression that anything that can change the length of the belt-path (like deflection) during operation would cause position errors proportional to the amount of deflection.
Thanks for your input btw, this has been pretty useful. I'm interested in engineered parts, not statues, so accuracy has been my priority.
Re: autoleveling plus mesh-bed compensation
September 06, 2018 11:28PM
Quote
shadowphile
Ummm, isn't RMS always lower than the peak values?

Yes, but you only need one slightly higher point to create a pretty big deviation in RMS

Quote

How do you use more than 3 points to adjust a stiff plate? My bed is a 1/4" MIC-6 cut with a waterjet (so residual stresses should be pretty low).
Right now I'm trying out using a thin plate of polycarbonate as a printing surface. It's pretty flat but I don't have a spec. But it seems to grip a metal straight-edge pretty well along the entire length.

You would be surprised how much a tooling plate can flex even though it seems solid. 400x8mm tooling plate is attached to another ~500x8mm hexagon plate (by 12 points around plate edge with insulator in between plates) with 6x M5 mount points (one near each corner) and a single bolt in the middle to adjust dish. The hex plate has the bolts captured on both sides so any adjustment made is not being enforced by a spring, rather directly without movement or play. Think of it a s a plate with 2 sets of 3 point adjustments, you always make adjustments using triangles (tree opposing points), you just have to technically do it twice.

Quote

It's been a real challenge to 'square' my printer with so many 60 deg angles, especially the diagonals or towers that lean sideways.
How do I do 'laser-squaring'? Some kind of commercial? How does having multiple layers of adjustable feet work help? Isn't one layer enough?

I totally get the pain in “squaring” out a printer, fortunately in my job I have access to devices to make this easier being an engineer, this also includes being able to dynamically balance motors, pulleys and arms.

Quote

Also, I've always had the impression that anything that can change the length of the belt-path (like deflection) during operation would cause position errors proportional to the amount of deflection.

As long as the deflection remains the same/constant it has not impact on the length of the belt assuming it is positioned where the belt won’t change location during its entire length of the carriage movement. The belt is initially tensioned at the bottom (motors on top) and held in place by that idler pulley, then additional tension points are added on either end of the belt with 2 sets of side idler pulleys pressing in on the belts from the outside. This prevents any backlash at the motor and also reduces vibration and movement down the length of the belt as you have effectively shortened the unsupported section by more than half the length of the belt as well as improving the belts constraint.
Re: autoleveling plus mesh-bed compensation
September 07, 2018 03:55AM
What do you mean by dynamic balancing of arms?

Edited 1 time(s). Last edit at 09/07/2018 03:55AM by hercek.
Re: autoleveling plus mesh-bed compensation
September 07, 2018 09:27AM
Like the motor, they are spun at high speed and the force is measured and marked so you can add counter weight. A complete an utter waster of time on something that is not rotating but I wanted to learn how to use the machine. grinning smiley
Re: autoleveling plus mesh-bed compensation
September 07, 2018 11:54AM
OK, thanks. I doubted you did the same as we do with rotors (since they do not rotate) so I wanted to make sure there is not something special I did not know about.
Re: autoleveling plus mesh-bed compensation
September 07, 2018 01:41PM
oh, so you are actually flexing that plate to make it flat. Yes iVe learned also as an engineer at work how much even thick stuff can flex once you start thinking in microns, especially bridging-type clamps.
Wow, you are definitely going well beyond the norm for accuracy.
How are you handling the zprobing?
Re: autoleveling plus mesh-bed compensation
September 09, 2018 09:55PM
Using a DC24 IR probe, admittedly I rarely use it these days with everything squared up, I pretty much just use black Printebite for the build surface on boro glass for all my prints these days so no need to auto-calibrate, only when I get a new bed material to test do I use the auto-calibration.

With the printer sitting on a level/heavy/thick/steel plate and the printer tops attached to a concrete wall (same wall the base plate is attached to) there is no twist or movement in the printer over time and as a result noting gets out of calibration smiling smiley
Re: autoleveling plus mesh-bed compensation
December 02, 2018 03:14AM
Doing some new calibrations after repairing some catastrophic damage and using the mesh-bad compensation to study the deformation of my bed plane.
While back reading this I realized that I never got a clear answer:

How does G30 auto-leveling compare to mesh-bed leveling? At first glance it seems like both of them just put the printing plane as a best fit of the deviations.

What does G30 fix that G29 does not, or vice-versa? When is using one or the other (or both) most appropriate (or not)? I'm interested in precision.
Re: autoleveling plus mesh-bed compensation
December 02, 2018 07:22PM
Quote
shadowphile
How does G30 auto-leveling compare to mesh-bed leveling? At first glance it seems like both of them just put the printing plane as a best fit of the deviations.

What does G30 fix that G29 does not, or vice-versa? When is using one or the other (or both) most appropriate (or not)? I'm interested in precision.

Are you referring to G30 in RepRapFirmware, or another firmware? Different firmwares use G30 in different ways.

In RepRapFirmware on a delta, G30 can be used in two ways;

1. A simple G30 probe (normally at the centre of the bed) can be used to reset the Z height;

2. A sequence of G30 commands is used to perform delta auto calibration. This adjusts endstop positions, delta radius, tower position corrections, and optional rod length (not normally recommended) and bed tilt to get the printing plane as flat as possible.

G29 mesh bed compensation can be used to handle residual height errors after performing calibration. A well-built delta typically doesn't need it.

Btw the term "auto levelling" doesn't describe either of these.

Edited 1 time(s). Last edit at 12/02/2018 07:24PM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: autoleveling plus mesh-bed compensation
December 02, 2018 10:04PM
I think there are couple additional things to point out;

- G30 is a “Quick” delta calibration method for working out the main mechanical constants for the delta mathematics, this helps you get close to a good calibration state for your delta for very little effort. It does not work “effectively” if your mechanical accuracy is not very high.

- G29 does not do much for you if G30 has not worked well.

- G30 assumes some things such as initial measurements being highly accurate, mechanical surfaces/structure such as towers/rails/beds being perfectly square and the bed being perfectly level even though it will calculate the bed “tilt” over multiple runs (faster if you use additional probe points). Think of it like fast estimation based on some previous data samples, this is why you should run it at least 3 times in a row or until the variance stops to allow multiple iterations of the “estimations” to take place to improve the estimate.

- Both G29 & G30 assume no effector tilt but G30 does have built in compensation you can add in for each probe point but it is a pain in the ass to use if you have more than a couple of probe points. There is an opportunity this could be added to the Duet menu or web interface to run through a set of "compensation" probe measurements for each probe point in G30, kinda like some of the cheap units use for bed leveling, to make it easy to add in instead of manually having to move the head, feeler gauge and then probe bed a number of times to get offset/compensation.

- Both G29 & G30 provide a better result with more probe points, unfortunately G30 is limited to only 32 points (definitely need to open this out too much larger sample size, at least the 64 in the documentation and ideally 128) and only 20mm squares for G29 (not sure this really does much considering you really need to be below 5mm probe points to be particularly useful).

- G29 is really meant to help with an “isolated” area of the bed where a print is not getting a good first layer, generally not an issue with any decent bed with a borosilicate glass topper. It definitely can be a big help with flexible beds as they have a lot of variance in the surface and it changes over time the more you use the “flex” but it also means you have to run it all the time between each print and it takes a while if you have a reasonable sized print bed.

- G30 cannot get your calibration anywhere near as good as manually squaring/measuring/adjusting the towers and bed to match the top of your delta (yes that’s right, everything needs to be made square to the top of your delta where the endstops are) then tram the bed up to match the effector movement to deal with and minor mechanical variances. In saying that however, G30 can get an “OK” calibration really quickly over a couple of runs (10 mins) verse a couple of days of careful and often painful process of measure, adjust, remeasure everything else now and readjust, repeat 50 times (difference is you should not have to do manual calibration again).

- Your Delta should not go out of calibration unless you are changing beds &/or bed surfaces, if you find after a few prints you need to G30 then you have some other issues you need to resolve (flex bed will be the culprit if this is what you are using). Using a decent bed surface (i.e. printbite+) there is no need for flexible beds and the issues that come with them. A borosilicate glass plate from a good glass supplier should have no variance in glass thickness when you buy a couple glass plates together. Combine the glass with the printebite+ and add a good manual calibration and it means you can swap out beds without the need to calibrate again.

- Agree it is not “auto leveling”, rather G30 is Basic Delta Calibration (maybe labelled “lazy person calibration”) and G29 is Bed Height Compensation (or “I should of bought the better glass or bed surface compensation”).
Re: autoleveling plus mesh-bed compensation
December 03, 2018 09:34PM
thanks for your answers. I refer specifically to Duet gcodes.

One impression I got that neither of you pointed out (assuming I'm right) is that G30 does a best fit of a plane, and G29 actually adjusts the z-height as needed across the bed, essentially adding a warp to match the uneven surface, but that non-flat adjustment continues all the way up, hence the taper-off function.
In this context it seems like G30 would adjust (almost) orthogonal fit then G29 used to cope with the residual peaks.

I'm not sure how much more I can do with manual calibration. I have a thick tooling plate that gave me .01mm errors but after inverting the machine to do some work I can't get it lower than about .02 now. An additional metal plate with a sheet of PC glued on raises that to .05. I'm experimenting with solid PC as a print surface but trying to keep it super flat, especially when heated, is hard.

I finally built a piezo detector that uses the nozzle and immediately saw much better results, even after painfully going through all the H value measurements. Halleluja!
Re: autoleveling plus mesh-bed compensation
December 04, 2018 12:06AM
Quote
shadowphile
One impression I got that neither of you pointed out (assuming I'm right) is that G30 does a best fit of a plane, and G29 actually adjusts the z-height as needed across the bed, essentially adding a warp to match the uneven surface, but that non-flat adjustment continues all the way up, hence the taper-off function.
In this context it seems like G30 would adjust (almost) orthogonal fit then G29 used to cope with the residual peaks.

Pretty much, G30 adjust the calibration/delta motion maths, G29 adds in an additional adjustment for any residual height errors as a result of uneven bed surface. If you need to use G29 then your G30 calibration is potential pretty bad as the G30 assumes the bed is perfectly flat.

Quote
shadowphile
I'm not sure how much more I can do with manual calibration. I have a thick tooling plate that gave me .01mm errors but after inverting the machine to do some work I can't get it lower than about .02 now. An additional metal plate with a sheet of PC glued on raises that to .05. I'm experimenting with solid PC as a print surface but trying to keep it super flat, especially when heated, is hard .

You are definitely in the zone you want to be in and everything must be pretty well aligned, below 0.01 is always the aim but when you are dealing with off the shelf products like PEI that are being retrofitted for 3D printing then you are always going to some surface variances. PEI is particularly bad as it expands a fair amount with heat and does it very unevenly, I find letting the heated bed sit 5*C hotter than I want it for at least 30 mins before printing on it makes a noticeable difference but in the end all my PEI sheets eventually get some visible warpong in the surface over time. Going to a super high-quality product like Printbite+ will eliminate this for you, although it comes at a price, but the prices is reasonable once you have been using it effortlessly for a while. Stay away from the current flex plate fad….

Quote
shadowphile
I finally built a piezo detector that uses the nozzle and immediately saw much better results, even after painfullyy going through all the H value measurements. Halleluja!

Yeah, the piezo system works really well, especially some of the multi piezo hotend packages now available. I have stuck with the 3 under bed piezo setup as it looks much cleaner, does not rely on 3d printed parts to hold my hot end together and allows me to make very fine tuning of the piezo pickup sensitivity manually (on top of the filtering on the piezo signal generator unit). They just need to work out how to incorporate the piezo into the retaining ring of the heatsink to clean up and simplify the install.
Re: autoleveling plus mesh-bed compensation
December 10, 2018 10:09PM
I still don't understand why I can't use the mesh-bed topology measurements (G29) to do tiny (ie .02mm) adjustments to a well-built system, not major corrections to a badly built system. Is it not an accurate process?

thanks
Re: autoleveling plus mesh-bed compensation
December 10, 2018 10:48PM
Well there a couple of things here, firstly the G29 is not too accurate. With a best case scenario of 20mm square probe points (all the probe points the duet can handle) a 0.02mm variance in bed level won't be compensated for too well especially if the height error does not cross multiple probe points. Running G30 over the uneven bed surface when G30 assumes a perfectly level bed surface means the height errors have been incorporated into the delta kinematics, this means your ability to compensate for bed errors becomes even less.

Some questions:
Also are you adding the G29 S1 G-code command to your start code on your slicer to load up the mesh compensation before the print starts?
Are you ensuring G30 is not used after the mesh bed has been done?
Are you running G30 a few times with more than 7 probe points (suggest at least 16) , then running G30 with 20mm probe points?
Have you got your delta radius set right?
Re: autoleveling plus mesh-bed compensation
December 11, 2018 02:40AM
I was picturing the height correction being based on a smooth surface forced-fit to the grid points, smoothed to at least the first derivative. 2nd would be better. That seems (mathematically) like it could easily handle micron-level corrections. If it doesn't work like that, then dang it. Maybe too much for the Due?

Answers to questions:

Quote

Also are you adding the G29 S1 G-code command to your start code on your slicer to load up the mesh compensation before the print starts?
I have not attempted any prints that might have been affected by G29s, I only used it to report a heightmap out of curiosity when I found out how easy it was from webcontrol. Who doesn't like 3d surface plots!

Quote

Are you ensuring G30 is not used after the mesh bed has been done?
The few times I ran G29 was after G30. Except once I tried directly after bootup. That left a heightmap with a ~2mm offset that I figured is zero'd out with the G30. (my config file likely needs updating)


Quote

Are you running G30 a few times with more than 7 probe points (suggest at least 16) , then running G30 with 20mm probe points?
I run 6 outer points, 3 inner points, and the center. I had the impression that too many points was counter-productive... Since G30 assumes a flat bed, then it must be placing some kind of tiled plane. I didnt think more interstitial probe spots would add much to the plane's placement. Maybe I'm wrong.
Also, I see talk of running several G30 probe sets until the results converge but I've never seen mine get better after the first run, at least significant enough to notice

Quote

Have you got your delta radius set right?
My rod lengths are set in the config file; everything else is derived from G30s. Last time I checked my dimensions and ortho-ness ( because 'perpendicularity' is just a bloated word that should be struck from the dictionary!) were spot on, or at least as well as I could measure with my calipers on a single-layer 150mm square print pattern.
Re: autoleveling plus mesh-bed compensation
December 11, 2018 03:13AM
Quote
shadowphile
I still don't understand why I can't use the mesh-bed topology measurements (G29) to do tiny (ie .02mm) adjustments to a well-built system, not major corrections to a badly built system. Is it not an accurate process?

thanks

Yes it can do that, if your Z probe can measure that accurately. The maximum number of probe points supported is 441 over the XY square that encompasses the bed. So on a 300mm diameter bed you can use a 15mm mesh spacing.

Edited 1 time(s). Last edit at 12/11/2018 03:13AM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: autoleveling plus mesh-bed compensation
December 11, 2018 04:00AM
Quote
shadowphile
I was picturing the height correction being based on a smooth surface forced-fit to the grid points, smoothed to at least the first derivative. 2nd would be better.
I doubt that. It is probably only a weighted average: continuous but not smooth. Trying to make it smooth would be a waste of cycles. But maybe duet has enough cycles to waste grinning smiley
Re: autoleveling plus mesh-bed compensation
December 11, 2018 04:01AM
Ahh yes, the smaller the bed the closer the probe points can be, I forgot about this, just use to larger printers smiling smiley Op said 350mm bed so he is stuck with 20mm as well.


Did you square up your printer to the top of you delta? Remember everything works from top down on a delta, so you should square your end-stops and bed with the top of the printer, I know I harp on about this point but it is the most common problem I find when fixing a friends issues with calibration. Admittedly this is irrelevant if all your towers and top/base are perfectly the same length/thickness but this is generally not the case so better to just work from the top down when getting everything square and doing your manual calibration.

Unusual not to see a change between runs of G30, maybe dc42 can give better feedback here, but generally the first calibration is off by about 10-20% from where it settles after additional runs. Think of it this way, it starts with the dimensions you added in setup, then it does a probe run and works the maths to work out the errors, then changes the dimensions over to correct the errors, then you run the calibration again, only this time it has dimensions that are "technically" closer to what is needed to start the probing which reduces the size of the errors. When you start with "calibrated" dimensions the maths tries to fix the small errors it picks up on the first run (the maths and probe measurements are not perfect), but seeing as we are "perfectly calibrated" to begin with it introduces errors so the first G30 ends up a little out and requires and additional probe run to correct the errors it introduced.

The more probe points you have the more error calculations it can make which reduces the amount of error in the "calculated errors". I run 32 probe points when I G30 (manual says you can do 64), would run more but there is a limit in the software that won't let more than 32 points. The current online tool does not work well for beds over 350mm either, so if you want to use the full 350mm bed in your calibrations you need to make up your own probe points.

By the way, what is the printer, I am guessing a Tevo Little Monster as this seems to be the main 350mm delta bed getting around?
Re: autoleveling plus mesh-bed compensation
December 11, 2018 04:08PM
David, can you comment about how the mesh-bed heightmap is applied? Does the correction profile go through the heightmap points and is it linear or some poly interpolation?

One thing I really like about the height-map generation is that I can test the influence of various elements. For example, I thought the pull of the cable assembly going to the effector might be changing over the range of the bed so I manually held the cables upright during the entire probe and *nothing changed*. I would have guessed more significant impact buts it's nice to know my cable management is good enough for now.

As for converging runs of G30s it's possible there is a 10% improvement but that's at my threshold of 'insignificance'.

I will have to try some larger G30 sets. Since I run G30 frequently I didn't want to have to wait so long. I will report what I find.

I will also work on squaring the upper part. I've been working UP since the base is so fundamental. I've been pulling the upper frame up to tighten the belts but the difference in tower height protruding above the upper vertices is less than 2mm or so. I had all the extrusions cut in a machine shop so they should be extremely close in length. I've been depending on the RobotDigg corners to be precise but I did try to doublecheck the assembled dimensions.
(one thought that occurs to me is that it's easy to assemble the upper frame with good precision and use that as a template to evaluate how much the towers are spread out. If the upper frame drops onto the towers without requiring any bending of the towers then the towers are probably really good. I recall some very slight bowing (1mm?) required to get the towers into the upper frame.

This system is an evolution of a design based on dc42's original blog using 20x20s (thanks Dave!). This is my version '3' that moved to 20x40s, I redesigned everything and everything is machined (mill or waterjet) and no printed parts except where it doesn't matter. The bed is a 6mm hex plate of MIC-6 but not used as a load-bearing member. It seems like I may need to put in some tension-control idler wheels on the belts so I can square up the upper frame. (the never ending project :/)
(all of my original knowledge was hard-earned on a horribly poor mini-Kossel kit that I had to rebuild almost entirely before it would print right)
Sorry, only registered users may post in this forum.

Click here to login