I agree with your sentiment Ryan, but I have a few comments on some things:
The way auto levelling works is:
- The gcode for the part only has to add in a G29 command, when you want to do the auto levelling
- The G29 will measure at different points in the bed.
- The firmware (not the slicer/gcode) will adjust the x,y,z for each position in the gcode.
There are different methods, such as 3-pt, which will just adjust for a slope, or mesh leveling, which will compensate for a bend in the build plate. The X/Y are adjusted as well, so a building will be printed “tipping” if there is a slope to the bed. These settings are all adjusted in the marlin firmware, the slicer has no idea that it’s happening.
“Software should never be used to fix a hardware issue”. This is a fine opinion, but there are many reasons why solutions on software are prefered. The best counter example is a quadcopter, where all the complicated mechanics of a helicopter were replaced with a $1 microcontroller and it’s software. Software can be copied billions of times for cheap. Some issues should not be solved in software, but some things definitely should be.
“This works by always running the z axis up and down to compensate for a non perpendicular bed (not a non planer), the more axis moving at once the less accurate you prints will be.” The slope of these movements is about 1/1000, so there are really no significant dynamics in play here. The z axis moves so slowly, that I think this is more fear than fact.
“The settings only work for one printer every offset will be different, not a big deal for most, but for me no good”. I agree that you will not benefit from auto leveling. But the gcode does not change from printer to printer.
“This only controls a flat plane, a warped or bowed bed can not be compensated for, as far as I know, if it did you would translate that warp all the way through your part…pointless for anything useful.” It can be compensated for. Also, a difference of 0.05mm in the height at one corner of a part is no big deal for a great many prints that are useful. Also, there is a setting to adjust only the first few layers, so that the rest of the part is as uniform as it would have been.
“If you don’t set up your printer well initially this will not work as your axis can be far enough off to not permit printing, axis binding, poor nozzle angle, ect.” Agreed. It would be one thing if you bought a printer with auto leveling, but I don’t think you should expect auto leveling to fix any problems if you are having trouble with your first layer. I’ll get to my motivation in a minute.
“If your offset changes in any way do to repairs or unclogging a nozzle or something your previously sliced gcode is worthless as the offset is hard coded in.” The gcode doesn’t change with the z offset, it’s a setting in the marlin configuration. It’s accessible from gcode, or from the LCD. It’s a pain, but so is leveling a bed. Adjusting only the offset is better than adjusting the corners screws too.
Personally, I tried it because I thought it was cool, and I am not making money with this printer, it’s my toy. I will say that there is a big advantage for me. The first layer thickness is the most critical part of any print, and getting it as right as possible is more important than the overall thickness of the part. The tolerances are way different, a small change in the first layer height can really screw it up. That same small change in the total part is no big deal. Also, if you’re like me and you have a slightly bowed plate, then you can’t do anything to make the part perfect, but at least you can print it when first layer is layed down well.
Once adjusted, I’ve had very consistent results, and I don’t have to deal with the corner screws anymore. I don’t like that I have to adjust the height whenever I remove it, but with a different mount, that wouldn’t be a problem. Adjusting the z offset is pretty easy, and saves in the configuration. The gcode doesn’t have the z offset or the mesh leveling numbers in it, that’s all done in the firmware. Mostly, I have much more confidence that the problems I see are from something other than the bed leveling, but I do make sure the two z motors are at the same height if I suspect they’ve moved. I printed a bunch of leveling calibration prints, and the sensor is not perfect. The rear left corner is always a bit higher than the others, and I think it might have to do with some inductance interference, or the fact that the sensor can’t get to that back corner, because it’s in front of the print head.
I have a 12V sensor, and it outputs 12V, but a simple resistor dividor is all that’s needed. No relays are required. Tom has a good explaination here:
Here is a neat video that shows how the printer removes the slope from a print:
The last thing I’ll say is that Ryan, your use is very different than mine, and I completely agree that you should not do it. Your printers are working hard for you, and time on them is money in your pocket. You could probably print a whole spool without changing anything on the printer. I change something every 2-3 prints. I find that most of those changes affect the bed leveling, and it’s nice to not have to mess with it so often. I also like the fact that I have some confidence in the sensor, and I know if I’m having adhesion problems, or something, that it’s probably not a loose bed screw.
If you are reading this, Ryan’s advice is sound, and based on a ton of experience, but if you already pretty much know what you’re doing, and you want some adventure, then I think it’s worth the $10 to try it. You can always cut it out and go back to the way it was, a little smarter, and a little poorer.