Welcome! Log In Create A New Profile

Advanced

auto bed compensation via end-stop-wired bed mounts

Posted by ei8htohms 
auto bed compensation via end-stop-wired bed mounts
September 29, 2014 09:21PM
Hello All,

Although I don't have any illusions about the method employed here for auto bed compensation ("bed leveling") catching on, I thought some folks might find it interesting and it might even trigger a creative impulse along similar lines.



The whole story can be found here:

ei8htohms.tinyparts.net

I look forward to any feedback you may have!

_john
Re: auto bed compensation via end-stop-wired bed mounts
October 20, 2014 10:28AM
As I understand it, this "bed leveling" technique will result in all layers being skewed in the Z-axis by the amount of the error in the physical level of the bed. It seems to me you're trading a relatively small problem for another small problem with a lot of complexity thrown in for fun. To use your example, if the far side of the bed is 1mm higher than the near side, your print of a cube will not come out as a cube if you use auto-leveling. The front and back walls will tilt back if you set the "cube" on a flat surface.

If adjusting the bed to be level and keeping it that way are problems, the solution lies in fixing the underlying issue, not band-aid approaches such as auto-leveling. If your print bed won't stay level then your machine has a structural problem: there is too much slop/play/flex in the mechanical structure. If your print bed is difficult to level maybe it is because the method of leveling it is a bad design.

Mechanical rigidity can only be achieved with better design and materials in the structure of the machine. Laser cut plywood flexes and with exposure to heat and time it will warp and delaminate. 3D printed plastic parts in the structure of the machine (such as many Rep-Rap designs) aren't going to help either. Take a cue from real machine tools- big, heavy structures and direct metal to metal attachments are necessary to achieve rigidity and precision. Obviously a 3D printer isn't subject to the same forces as something like a milling machine, so the size and mass don't need to match a milling machine, but the idea is the same.

As far as leveling goes, a review of simple geometry is in order. It takes only 3 points to define a plane. The purpose of leveling the bed is to ensure that it is in the XY plane defined by the guide rails in the X and Y axes. When the bed is in the XY plane and the z-axis zero is set right, the first layer will stick to the bed. If your bed leveling system has more than 3 points supporting the bed (such as spring loaded screws at each corner of a square/rectangular bed- like Maketbot and many others) it is going to be hard to level because each screw affects the bed in two axes simultaneously. Also, while solidoodle and a few others have figured out that only three points are needed, they are positioned so that adjustments affect two axes, once again making leveling more difficult than necessary.

The print bed plate is also important. It needs to be flat and needs to stay that way when heated. It should also be thermally conductive to spread heat evenly. Aluminum is frequently used, but it is often extruded/rolled aluminum sheet which has a directional grain structure and isn't necessarily flat to start with. Cast tooling plate is a better choice because it has a random grain structure and it is usually milled (and guaranteed) flat. When it heats up it doesn't warp as much as extruded/rolled sheet. People often put glass on top of the aluminum bed. You have to make sure you use a very flat piece of glass.

Edited 1 time(s). Last edit at 10/20/2014 10:44AM by the_digital_dentist.
Re: auto bed compensation via end-stop-wired bed mounts
October 20, 2014 12:48PM
Hello the_digital_dentist,

Thanks very much for your thoughtful reply.

My understanding is that Marlin's bed compensation (they call it "bed leveling", but I'm still refusing to call it that for the time being) algorithms will tilt the entire geometry to compensate for the plane of the bed so that the resulting geometry will still be as originally designed/intended. I haven't tried to empirically test that myself, but that's what I've read anyway.

My bot is a unique case as far as being not only made out of birch plywood (stained and sealed with shellac, but still prone to warping somewhat) but also being in the form factor of a suitcase. This makes it unstable structurally in several respects and perhaps makes a bed compensation solution much more compelling than for most. I want the bed to not only remain usable with changes in temperature and humidity, but also want to be able to carry it on a subway somewhere, unfold it and click "print" and have it give good results. This would be basically impossible without bed compensation of some kind. An unanticipated bonus feature is that I also don't ever have to worry about setting the Z height, even if I change nozzles or hot ends, something I do regularly. It will just compensate and give me reliable results (or at least it has so far, knock on wood). While I agree in principal that addressing the underlying weaknesses is the best answer, in this instance it wouldn't make much sense to try to radically remake or reinforce the existing machine although I am still toying with the idea of machining a replacement Y carriage out of aluminum. Not out of any real need at this juncture, but just because the existing carriage is pretty janky and offends one's sensibilities.

There are some genuine theoretical concerns with the continual motion of the Z axis while printing introducing artifacts into the print process and one imagines that the skew of the plane will also give you minor micro-step differences in the X or Y plane as the height of the part increases and the compensation shifts precisely where the X or Y location of a vertical wall "should be" as compared to where it "can be" (per the microstepping of the X and Y axis motors). I would characterize those concerns as entirely theoretical in my experience at this juncture because the quality of my prints is just not consistent and repeatable enough in all regards to demonstrate such a thing. Some have even argued that the introduction of a little Z axis noise could actual improve your prints by minimizing/masking other artifacts, but that is certainly theoretical for me as well. My extruder gantry has its lead screws suspended from thrust bearings at the top and coupled to the motor shafts with Oldham couplers, so it is pretty well isolated from most common Z axis artifacts. A machine without a similarly refined Z axis might suffer more in this regard.

In practice, introducing bed compensation has made my life tremendously easier and radically improved my ability to produce good prints reliably. My experience has been positive enough in fact, that I believe I would design this system into a 3d printer of my own creation even if I was designing it for maximum precision and rigidity along every axis. Even if it turned out that I didn't need it at all to get good reliable prints, as long as it didn't introduce errors of its own (and if the bed is "perfectly" level I don't see how it could/would) it would still be useful to forget about Z height when changing beds, nozzles or hot ends.

_john
Re: auto bed compensation via end-stop-wired bed mounts
October 22, 2014 01:38PM
John,

It sounds like the autoleveling scheme is actually much better and more useful than I would have thought.

When I built my machine I went for maximum rigidity and used 1.5" 8020 for the frame. For an example of the result, I recently threw the machine (OK, I set it down gently) in the back of a pickup truck, drove it to the Milwaukee Maker Faire, turned it on and started printing without any adjustment to the bed. Then I transported it by truck and car back home, set it down and started printing again without any adjustment of the bed.

All that comes with a price- the machine weighs about 90 lbs! Not exactly portable... I was careful to design and build it to fit through standard doors without having to turn it on its side.

I used a 3 screw leveling system similar to yours. I have one at the center of the front edge and one at the center of the back edge of the printbed. The back screw is not generally adjusted. Leveling is simple- put the nozzle near the back screw on the Y axis, use a slip of paper to set the nozzle height, side the bed back until the nozzle is near the screw at the front of the bed and adjust that screw until the paper is caught. This sets the pitch of bed to match the Y axis. There is a screw on the left side of the bed to set the roll- just move the nozzle near that screw and adjust until it grabs the paper. Now the bed is level with the XY plane. Adjust the Z axis zero screw and you're done. The whole procedure takes less than a minute (OK, I have to wait about 4 minutes for the bed to heat up) and I only have to do it if I change the extruder/nozzle/hotend.

Just last night I rescued some servo motors and ball screws and nuts from a machine that was being scrapped, so I may try servo controlled screw drive in the Y axis soon. The motors are 200W and the screw pitch is 10mm, so even though I have a heavy printbed, the motor should be able to throw it around really fast.
Re: auto bed compensation via end-stop-wired bed mounts
October 22, 2014 04:05PM
That sounds like a beast of a machine and, yes, not the kind of thing that sounds like it could be improved upon by adding complicated bed mounts and compensating G-code algorithms.

That screw drive sounds like it could be pretty awesome too. I look forward to hearing how it turns out!
Sorry, only registered users may post in this forum.

Click here to login