Showing posts with label bed leveling. Show all posts
Showing posts with label bed leveling. Show all posts

Tuesday, April 30, 2019

More Changes to UMMD's Z Axis

More Z Axis Updates

I "finished" UMMD about 1.5 years ago, but there have been quite a few changes to the machine over that time.  In particular, I have made a lot of changes to the Z axis and related parts that I will summarize in this post.

Pulleys and Belts


The original Z axis used 3 mm pitch steel core belts and 40 tooth pulleys.  I can't recall how I ended up using those parts- maybe I had them on-hand- but that combo led to an unfortunate 18 um/full step in the Z axis.  After a few changes and some careful calculations, I ended up with 60 tooth 2mm pitch drive pulleys and belts, and now have glass core belts on the machine.  That gives a nice, round 20 um/full step.  The glass belts stretch about 3x as much as the steel core belts, but still not enough to matter.

One of the 60 tooth 2mm pitch drive pulleys.  The larger diameter of the pulley necessitated a redesign and fabrication of the Z axis top pulleys to keep the belts parallel to the linear guides.
The Z axis top pulley mounts had to be remade when I changed the drive pulley diameter to keep the belts parallel to the guide rails.  The original mounts had two carriage bolts to hold them in place and prevent the plate from rotating.  The new design has an antirotation tang that fits into the t-slot and uses a single carriage bolt to hold it in place.

Update 1/20/20:  A year or so ago, before I changed from steel core to glass core belts in Z, one of the Z axis drive pulleys came loose and rotated on the drive shaft.  I was recently doing some work on the XY mechanism and decided that it would be a good time to fix that problem.  I pulled the Z axis shaft out of the machine and milled two flats at each end so the drive pulley set screws would prevent rotation on the shaft.

The original pulley mounting bracket at the top of the Z axis used two carriage bolts to hold it in place and prevent it from rotating.  


This is one of the final top-of-the-Z-axis pulley mounts.  It was milled from a piece of 8mm thick tooling plate left over from the bed plate.  There's an anti rotation tang on the back side that fits into the t-slot.

Extruder Carriage

The extruder carriage has undergone more changes than any other part of the printer.  I used different extruders, different hot-ends, and different carriage designs.  The original carriage was made from a single piece of aluminum tubing with the extruder, motor, and hot-end all hanging below the X axis bearing block.  I thought that it looked too much like a pendulum, so I moved the extruder and motor above the bearing block leaving just the hot-end below.  I eventually settled on a two piece design that has the extruder and hot-end mounted on a metal plate with the belt clamps mounted on a smaller piece of tubing.  That allows the extruder and hot end to be removed without taking the belts out of the clamps or even relaxing the tension on the belts.  One thing about the design that has been a constant was the extraordinary length of the carriage.  This was necessary because of the way the bed was lifted on the Z axis.

Eventually, the very long extruder carriage started to bother me.  I can't really say that it was creating any problems in the prints, but it just didn't seem right.  Any minor wiggle in the X axis guide rail would be amplified by the long lever arm that the hot-end was mounted on, so I finally decided to do something about it.


Here's the extra long, almost final extruder mounting system that I wanted to shorten.  The extruder and motor are mounted just above the X axis bearing block and the hot-end is connected by a PTFE tube down below.  The length was needed so the hot end could reach the bed surface.


Bed Lifting Brackets and Z Axis Belt Clamps


If I was going to shorten the extruder carriage, the bed had to go up higher.  The easiest way to make that happen was to swap and flip over the bed lifting brackets that hold the bed assembly on the Z axis.  That raised the bed by about 50 mm, and moved the lever arm from the extruder carriage that whips around at high speed and acceleration, to the bed that only goes up and down a little.  Probably a good trade off.

The new positions of the bed lifting brackets.

While I was doing that, I changed the way that the Z axis belt clamps attach to the bed lifting brackets.  When I first built the machine, I didn't realize how hard it was going to be to release the Z axis belt clamps because of the dual layer PC panels that fit into the printer's frame (I'd have to remove a frame member to move a panel out of the way).  I also didn't anticipate the amount of experimenting I'd be doing with the Z axis.  Releasing the belt clamps from the brackets required a right angle screwdriver to get at the screws that were on the outside of the brackets, with very little room for my fingers to fit in the space.  I needed to flip the screws so that the heads were on the inside of the brackets instead of the outside.

The old way... my knuckles are up against the PC panel on the left.  There are four screws that I have to take out on each side of the Z axis.  The screws goes through a metal plate that holds the yellow belt clamp against the Z lifting bracket.


Much easier access to the Z axis belt clamp screws.  The tapped holes in the bracket were drilled  out to allow the screws to pass through the bracket and belt clamp and thread into a nut-plate on the opposite side of the belt clamp.


I drilled out the threaded holes in the brackets so that I could just push the screws through from the inside, and made two aluminum nut-plates with four tapped holes that the screws now thread into.  The belt clamps get trapped between the brackets and the metal plates just like before, only the screws are now easier to access.  It was so easy- I should have done it years ago!  Now if I want to remove the belt clamps I can just use a screwdriver from the inside of the brackets, under the bed support, where there is plenty of room to work and I can see exactly what I'm doing. Nice!  That will make future changes to the Z axis a lot easier.

Compare the two pictures above to see the differences in the bed lifting brackets.


This is one of two new nut-plates that clamp the Z axis belt clamps to the lifting brackets.  The material is 3 mm thick aluminum and the holes are threaded for 6-32 screws.



Z Axis Belt Clamp Redux


By now you've probably seen that I had a problem with the original belt clamp design that led to a failure of the steel core belts.  I redesigned the belt clamps based on a design I have used in SoM for about 6 years without any problems.


The original clamp design worked like this.

And it failed like this!

New Z axis belt clamp design folds the belt back on itself to lock it in place.  The open side of the clamp (facing the camera in the photo) is closed with a rectangular aluminum nut plate that's held in place with 4 screws.


Extruder Carriage Modifications


Now that the bed lifted higher, I was able to cut the long, 5mm thick aluminum plate that mounts the extruder and hot-end on the carriage about 60mm shorter, allowing the hot-end to mount closer to the extruder.  The PTFE tube that connects the extruder to the hot end is also lot shorter than it was.  I feel better about it now.

The metal plate on the extruder carriage used to bump the X axis endstop, but that part of the plate was cut off (maybe I should have left part of it there to bump the switch).  I printed a new hot-end clamp that includes an extension that bumps the switch.


The old extruder carriage- the metal extension plate used to bump the X axis endstop.



And here's the newly shortened extruder carriage.  There's not much room for bolting on a print cooling fan, but I rarely print PLA anyway.  The black hot-end clamp has a flag (to the right of the cooling fan) that bumps the X=0 switch.

This is the final extruder carriage design.  The extruder and hot-end mounting plate is 5 mm thick aluminum, and the belt clamp mounting tube is 1.5" x 2"x 1/8" aluminum tubing.  The belt clamps and hot-end clamp are printed ABS parts.  The plate holding the hot-end and extruder can be removed without taking off the belt clamps or releasing the belt tension.


Some of you may be thinking that my extruder carriage is ugly as sin, with visible wires, no "professional" looking covers, etc.  There's a reason for that.  The extruder and hot-end are the most unreliable parts of the printer.  Problems with either often require some disassembly.  I prefer to keep everything right where I can see it and easy to get to without having to take off a bunch of covers.

Bed Heater


The 468MP adhesive holding the heater on the bottom of the bed plate started letting go several months ago, so I decided to peel the heater free and reattach it using high temperature silicone.  I made an attempt to remove the heater using the scraper I use to release prints from the bed, but it didn't work- the parts of the heater that were still stuck to the plate were really stuck to the plate.

I contacted Keenovo about it and they pointed me at this site for instructions on how to remove a heater from a plate and this site for instructions of preparing a plate to receive a heater that has 468MP adhesive.  Here's their manual on the heaters (which I had never seen before).

They recommend a few things I was previously unaware of, including sealing the edges of the heater with a bead of high temperature silicone, maybe to keep the adhesive from "drying out" and letting go?  Maybe I should seal the edges of the PEI sheet for the same reason...  They also recommend using a mechanical "sandwich" construction to ensure that the heater stays attached to the bed.

Per Keenovo's instructions, I heated the bed plate (to 100C) and used a scraper to release if from the bed.  I gouged the silicone in a couple spots, but fortunately didn't expose any of the heating wires.  Once I had the heater loose I looked at the underside.  The area that had come off the bed plate had been running very hot and singed the silicone on the underside of the heater.  I flexed the heater in the toasted area and it cracked, so I decided it wouldn't be safe to reuse it and ordered a new one without any adhesive.


The burnt bed heater.  The dark section cracked when I flexed the heater in that area, so I have ordered a new one without adhesive and I will cement it to the plate using high temperature silicone.


I mounted the new, adhesive-free heater on the bed plate using Permatex Red high temperature silicone purchased at a local auto parts store.

The TCO, previously mounted on the edge of the bed plate was moved to the heater and mounted using the same high temperature silicone that was used to mount the heater on the plate.  This was done so that if the heater comes off the plate, the TCO will stay with the heater and hopefully shut down the power before it starts a fire.


The new bed heater mounted on the plate using high temperature silicone.  The TCO is also attached using the same high temperature silicone inside the blob near the center of the heater.


Leveling Screw Block Redesign


Once I had the extruder remounted on the shorter plate and went to relevel the bed, I noticed that when I turned the roll screw, it was causing the bed to shift laterally.  That's shouldn't happen!  I found that the PTFE block holding the pitch screw was tilting/shifting in the t-slot.  The narrow PTFE block was held inside the t-slot by two small screws and they weren't holding fast so the block was wobbling in the slot.  I tried to tighten the screws and they stripped the holes in the PTFE.

Here's the original roll adjuster- the other two are about the same.  The PTFE block fits into the slot and is held in place by two small screws whose heads you can barely see in the bottom t-slot, behind the long roll adjustment screw.  It wasn't a very solid or reliable way to mount the PTFE blocks.

It was time to redesign the leveling screw blocks for more secure attachment to the support frame. I was out of PTFE and the "local" plastics shop is about 40 miles away, and I just need a relatively small amount to use for this and future projects, so I did some shopping on ebay.  The first thing that struck me was how expensive PTFE is, or looks, at first glance.

PTFE is a commodity, and you buy commodities by the price per weight.  The ebay listings usually have dimensions listed in inches, and PTFE has a density of 0.08 lbs/in^3, so I calculated the price/lb including the shipping cost when I compared the different listings.  It didn't really matter what the exact dimensions of the block were because I'm going to cut it up and mill it anyway.  I mostly use small blocks of the stuff, not large sheets, so I looked at bar/block listings at least 3/4" thick.

Here's a typical offering:

This one is a total of 13.125 in^3, which will weigh 1.05 lbs.  At a total cost of $23, that works out to about $22/lb. Ouch!



Here's an example of a pretty good deal:


These blocks of PTFE are 71.25 in^3 and have good dimensions to allow a lot of small parts to be made by cutting it up and milling. 71.25 in^3 will weigh 5.7 lbs.  I've probably used 1/10 that much PTFE in the last 10 years. Total price is $36.80, which works out to $6.45/lb. That seems like a pretty good price for PTFE (and cheaper than filament for the printer).  



I ordered the block in the second photo.


The PTFE arrived in the mail- a literal brick!  I went to the makerspace and went to work on it.  In a couple hours I had three new PTFE blocks finished and ready to go.


The new PTFE leveling screw blocks.  You're looking at the bottom of the block on the left.  The tang just fits into the 8mm wide t-slot to prevent the block from rotating.





The bed support tee with new PTFE leveling screw blocks installed.  Each block is held in place with an M4 screw and t-nut.  The thickness of the blocks matches the length of the threaded part of the leveling screws- 13 mm.


One of the new leveling screw blocks.  The blocks are 30 x 24 x 13 mm.  So much neater than the original!


Here's the reference leveling screw with the new PTFE block in place.  I deliberately set the end of the PTFE block 5mm back from the edge of the t-slot so there would be more room for the spring.



The CAD file for the new design including the bed support and the bed plate itself is located here.

If you just want the CAD model of the sphere-head screws that are used for pitch and reference adjusters, here you go.  You don't have to use the same spherical head screws I used.  In fact, if you'd prefer to make all the leveling adjustments below the bed, you can just drill through the support as I did at the roll screw, use long screws with thumbwheels, and then put acorn nuts on the ends of the reference and pitch screws.  Use appropriate diameter/width of the hole and slot for the acorn nuts on the reference and pitch adjusters.

Update 1/11/22: very important! When you are preparing the PTFE blocks for the ball head screws, do not tap the holes in the PTFE and do not use threaded inserts. Threaded inserts are best used for screws that you're going to drive in and remove frequently. This isn't that. When leveling the bed you're going to be turning these screws maybe 1/4 turn, maybe a few times during the life of your printer. You don't need an insert. Also, threaded holes in inserts and nuts always allow for clearance between the nut and screw threads to ensure that it will be easy to turn the nut/screw. That clearance allows the nut/screw to wobble in the threaded hole. That's the exact opposite of what you want here. If you tap the holes or use threaded inserts, the screws will wobble, and if the screws wobble, the printer's bed will wobble. You should drill tap-size holes (in this case, 4.25 mm for the M5x0.75 threads on the ball head screws) into the PTFE blocks and then just turn the screws into those untapped holes. Steel screws are much harder than PTFE and will happily roll threads into the plastic. Don't worry, the PTFE won't grip the screws so tightly that you can't adjust them (but nylon will, so don't substitute nylon for PTFE! I know this because I tried it). The screws won't wobble in the PTFE so the bed won't wobble on the screws. PTFE is self-lubricating, so you don't need to use any thread cutting oil when you drive the screws in. 

Finally, once in a while I see people suggesting that PTFE is not good for this application because of "creep". Don't worry about it. I've been using PTFE blocks for this purpose in my printers for >5 years and never had any problems.

Electrical Connections


I had great results using Wago 221 lever nuts when I wired the Duet controller, so I decided to use them to make the bed connections.  I designed and printed an ABS housing that is screwed to the support tee.  Another printed ABS part that fits tightly into the t-slot provides strain relief for the cable.  A Fusion360 file for this and other Wago mounts is here.

I used the Wago mount on the left to make connections to the bed heater and thermistor.  It has a tang that fits into the 8mm wide slot on the bed support tee.


I mounted the Wago bracket on the back side of the bed support tee, where the screw terminals had been. That was a mistake. It's hard to see it back there, hard to install and remove it. I tried to move it to the front side where I could inspect it and release wires easily but, alas, I had cut the cables from the bed heater too short to reach the front side of the support tee. I may turn the whole bed support assembly around so the electrical connections will be at the front side of the bed. This is a mistake I won't repeat in my next printer.

Miscellaneous


I had to make a couple other small changes to accommodate the new configuration.  I printed new bottom-of-the-Z-axis bumpers to keep the bed assembly from going too far down (you can see one of them in the first photo at the top of this post).  Finally, I had to shorten some of the cables that run from the hot-end up to the extruder carriage cable.




Wednesday, July 4, 2018

UMMD: A Better Way to Set Up the Origin and RepRapFirmware Manual Bed Leveling Assist

Setting Up the Printer's Origin


In a previous post I explained how to set up the endstops and origin of a 3D printer.  In the method I outlined, slic3r is easy to set up, but Cura required some custom gcode to get prints dropped on the center of the bed.  It turn out that it's easier to set up the slicers to drop prints on the center of the bed if the printer's origin is at the printable center of the bed.

This post describes how I put UMMD's origin at the printable center of the bed with the new Duet Ethernet controller board, and how you can do the same for your printer.

First, you have to know the dimensions of the printable area of your printer's bed.  It may sound strange, but some machines can't print on the entire bed surface.  So, move your printer through it's motion limits and watch the nozzle relative to the bed.  If it is unable to print on part of the bed, mark a line (or lines) on the bed where the nozzle can't go any further.  Now mark the center point of the printable area of the bed (you can find the center by drawing diagonals between opposite corners of the printable area).

Next, move the extruder to the "home" position (where the X and Y end stop switches are both triggered). Use a ruler to measure the distance from the printable center of the bed to the nozzle in X and Y and write the numbers down.  Now move the extruder carriage to the diagonally opposite corner of the motion limits and measure again, and write down the numbers.

Make a sketch of the top view of the printer, showing the limits of nozzle travel and the outline of the printable area within those limits, like this one that I made for UMMD:
Top view of UMMD's XY stage.  The outer rectangle represents the limits of XY motion of the extruder nozzle.  The  printable area of the bed is a 300x300 mm square that fits within those limits.  The leveling screws are shown for reference (we'll use those later).  The home position is in the right rear corner of the machine because that's where the end stop switches are located.

The origin is set to the dead center of the bed's printable area.  Notice that the bed is not centered within the range of motion.  That's OK.

In the Duet config.g file, the following statements define the origin as the center of the bed's printable area:

M208 X-151 Y-185 Z0 S1 ;  sets the minimum values for all axes
M208 X150 Y153 Z680 S0  ; sets the maximum values for all axes

With the Duet (RepRapFirmware), the fact that the upper right corner is the home position is a function of where the endstop switches are positioned on the X and Y axes and the motor rotation directions.  In SmoothieWare, there are explicit statements that the X and Y axis home to max or min, and then the ordinate values to assign to each.

Now mark the coordinates of the corners of the printable area of the bed:
When you set up Cura you tell it the dimensions of the printable area of the bed (in this case, 300x300 mm), and check the "origin at center" box:

Cura custom machine setup.  There's no need to make changes to the start gcode to position the origin.
Plater view in Cura, origin at center of bed.

When you set up Slic3r, you enter the dimensions of the printable area of the bed and then enter offsets that put the origin at the center:

Slic3r bed set-up.  You enter dimensions of the printable bed area and offset values that put the origin at the center of that printable area.



And this is what you see in the Plater view- origin at center- it matches the diagram perfectly.




Why is this better?  Besides the easier setup in the slicers, it makes the gcode a little more portable between different printers, assuming they use origin at center.  Of course, you still need other things to be right for gcode to be moved from one machine to another.  You won't be able to use gcode for a 300x400x200mm print in a machine with print capacity that's 200x200x200, for example.

Manual Bed Leveling Assistant


The Duet has been working fine for a few weeks now and I am still exploring some of the options in the firmware.  One of the really great ones for people with printers like UMMD that have flat, stable beds that don't require frequent releveling, is called the "manual bed leveling assistant".  The assistant "probes" (actually, you do the "probing" with a piece of paper placed under the extruder nozzle) the bed at a few locations then does a least-squares fit and tells you how much to adjust each leveling screw up or down to minimize leveling error .  It's a quick process that works extremely well.  In order to use it, you'll need to add the coordinates and pitch of the leveling screws in a config file statement, so start by adding the coordinates to the diagram we drew above by measuring the distance from the bed center to each of the screws:

Leveling screw coordinates added.  These coordinates will be used in the M671 statement in the config.g file.


There's going to be some gcode presented below.  You can find definitions of all the gcode supported by RepRapFirmware at this site.

You'll also need to select probing points, at least one for each leveling screw.  If you have 3 leveling screws, you might choose to use just 3 probing points.  You must use at least as many probing points as there are leveling screws, so if you have 4 screws, you need at least 4 probing points.  I chose to use five points, one near each corner of the bed and one at the center:
Probing point coordinates added.  P0-P4 designators are used in G30 statements in the bed.g file.

The config.g file has to contain a few specific lines to enable use of the manual bed leveling assistant.  First, there's and M667 statement that tells the firmware the architecture of the printer you're setting up (coreXY, delta, etc.).  Then you need a couple statements that set up the origin of the printer because everything to come will depend on the coordinates.  You need an M558 statement to tell the assistant how the probing is to be done, and an M671 statement to tell the assistant where the leveling screws are located.  In the M671 statement, list the screw coordinates reference first, then pitch, then roll.  UMMD's config.g file will contain:

M667  S1  ;  set coreXY architecture
.
.
.
M208 X-151 Y-185 Z0 S1 ;  set minimum travel limits (front left corner) for X, Y, and Z
M208 X150 Y153 Z680 S0;  set maximum travel limits for X, Y, and Z
.
.
.
M558 P0 F180 H5 T6000  ; no probe, probe at 180mm/min, start 5 mm above the bed, travel between probing points at 6000 mm/min
.
.
.
M671 X-161:161:0 Y0:0:-161 P0.7  ; defines leveling screw locations and thread pitch

Finally, you need to have a bed.g file that specifies the coordinates of the probing points.:

bed.g file:

G28 ;  home
G30 P0 X-140 Y-140 Z-99999  ; first probe point coordinates
G30 P1 X140 Y-140 Z-99999  ; second probe point coordinates
G30 P2 X140 Y140 Z-99999  ; third probe point coordinates
G30 P3 X-140 Y140 Z-99999  ; fourth probe point coordinates
G30 P4 X0 Y0 Z-99999 S3  ; fifth probe point coordinates, 3 leveling screws

Once all this stuff is in place, you can start the manual bed leveling assistant from the Panel Due by first preheating the bed and nozzle to print temperatures, homing all the axes, then touching the wavy looking icon under "P0" on the right side of the control screen.

Heat up the bed and nozzle, home all axes, then touch the sine wave looking icon on the right side to start the manual bed leveling assistant. Note: I did not heat the bed and nozzle for this photo...
Then you'll see a screen like this for each of the probing points:

The manual leveling assistant at work.  The nozzle will start at the height set by the H parameter in the M558 statement in the config.g file, in UMMD, that will be 5 mm above the bed.
Put a piece of paper between the bed and the nozzle and lower the nozzle using the buttons on the screen until the nozzle just grabs the paper.  After the last point has been probed, the assistant stops. and you go back to the ordinary control screen.  What happened?!!

Fear not!  Switch to the console screen and you will see a message telling you how far off the leveling is at each leveling screw, and how much to rotate it to correct the error:

The message at the bottom tells you the result of the manual leveling assist process.  The first leveling screw is considered the reference and the error and correction are always zero there.  
The example above shows that there is no error or adjustment required at the reference screw (it will always show that, and that's why you put the reference screw coordinates first in the M671 statement on config.g), the bed is low by 20 um at the pitch adjust screw, and the bed is low by 60 um at the roll adjust screw.  Since I told it the pitch of the screws are 0.7mm (the P parameter in the M671 statement in config.g), the bed Pitch adjust screw needs to be turned 0.03 of one rotation (that's not much!) in the direction that raises the bed to correct the leveling error, and the bed Roll adjust screw needs to be turned 0.08 of one turn in the direction that raises the bed to correct the leveling error.

You twist the leveling screws by the stated amounts to bring the bed into "level" (true meaning is parallel to the XY plane of the printer defined by the X and Y guide rails).  If you are full-on OCD or just borderline like me, you repeat the process as many times as it takes to satisfy you that the bed is as level as it can possibly be.

Finally, it's a good idea to readjust the Z=0 position after you're satisfied that the bed is level.

You can find info on using the manual bed leveling assistant here, and definitions of all the gcode that RepRapFirmware supports here.




Saturday, July 29, 2017

3 Point Print Bed Leveling vs 4 Point Bending

The word "leveling" applied to printer beds is a misnomer.  When you "level" the print bed you're not trying to level it to the earth the way you level a picture that you hang on the wall.  You're really "tramming" the bed, which means adjusting it so that it is parallel to the printer's XY plane, which is defined by the positions of the X and Y axis guide rails.  In case you missed it, let me state specifically: the bed surface is NOT the printer's XY plane.  When the bed is properly leveled, it is parallel to the printer's XY plane.  The guide rails, which in a properly built machine don't move, are the reference, not the bed plate.

CAD software uses right hand rule coordinate space, and each of the three axes are perpendicular to the other two, a condition called orthogonality.  Your printers axes should all be orthogonal, too, or prints will come out skewed.  Autoleveling serves one purpose only: to get the first layer of the print to stick to the print bed.  It assumes the guide rails/axes are orthogonal and does its job as if they were.  It can't compensate for axes that are not orthogonal.


Right hand rule coordinate space used in CAD software, slicing software, and in your printer's construction and configuration.


There are two common 3D printer configurations.  The most common, exemplified by the Prusa i3 and it's many clones, has a bed that moves in the Y axis.  The other most common type has the bed moving in the Z axis.  Less common types have fixed beds (most common among those are delta machines).

In printers with the bed moving in the Y axis, the X axis is lifted in Z, most commonly by two stepper motors turning screws.  If the screws don't stay synchronized (and there are many ways they can lose sync, including just powering the printer on), the X axis tilts, which means the XY plane tilts, and is no longer perpendicular to the Z axis.  As long as that condition persists, prints will be skewed, even if your printer has autoleveling.  Skewed prints won't fit together properly, gears won't mesh right, threaded parts may not work, etc.  IMHO, using two motors to lift the X axis is just plain bad design.  Maintaining orthogonality of axes is critical in a 3D printer or you can't print accurately.  In this type of printer, autoleveling contributes to the problem because it masks a tilted X axis until the X axis has tilted so far that either the operator notices the tilt or the Z axis mechanism fails.

That brings up another point.  Autoleveling systems all use some sort of bed sensor on the extruder carriage, which usually rides on the X axis.  The bed itself rides on the Y axis guide rails.  Therefore, autoleveling can compensate for nonideal X and Y axis characteristics, such as sagging guide rails which can be a big problem for large format or cheaply made smaller printers.

In printers with the bed moving in the Z axis, the bed is usually lifted in Z by one or more motors driving screws.  If the screws get out of sync, the bed tilts, but the printer's axes remain orthogonal to each other (assuming they were set up properly in the first place).  The first layer may not stick, but if you manage to print, the prints won't be skewed.  Autoleveling can work well in this type of printer, because it is being used to compensate for an unlevel bed, not to compensate for tilted axes and an unlevel bed.

Anyone who paid attention in the first week of high school geometry (do they teach geometry in high school any more?) knows that 2 points define a line and 3 points define a plane.  Quick quiz: what do 4 points define?

Most printers come with 4 "leveling" screws, one at each corner.  When you turn one of those screws clockwise, two things happen.  The corner of the bed plate goes down and the corner of the carriage plate goes up.  Nothing (or much less) happens at the other three corners which are held in position by their own leveling screws and springs, so the bed plate bends along a line between the adjacent corners.

4 point "leveling" is more accurately called 4 point bending.  Whose idea was this?



In an i3 type printer, the carriage plate has bearings or bushings that ride on the Y axis guide rails.  Those bearing/bushing locations and orientations are critical to proper operation of the Y axis.  By turning that "leveling" screw, you just bent that carriage plate that holds those bearings/bushings in alignment.  That can't be good!  The guide rails are pretty rigid, so bending the bed carriage plate isn't going to move the rails much, so the carriage plate and the bed plate are going to move in some rather complex way.  So, turning one leveling screw throws off the level at the other three.  Now imagine what happens when you twist all four screws while you're trying to level the bed.

Of course, the bed plate or the carriage plate are going to flex different amounts, depending on which is more rigid.  The bed plate should be flat, so you really don't want it to bend at all or you'll have trouble getting prints to stick to it.  The  carriage plate holds those critical bearings/bushings, so you really don't want it to bend at all, either.  Yet printers that come with 4 leveling screws almost always have thin, flexible carriage plates and thin, flexible bed plates.  Hmmm.

In printers with the bed moving in the Z axis, the bed support is usually solidly built, so it isn't likely to flex when you tweak a leveling screw.  That means the bed is going to do most of the flexing.  How can a bent bed be made level?  Autoleveling that maps the bed surface can compensate for this.

Printers that have four leveling screws usually have "special" sequences of tweaking the screws to try to get the bed leveled.  They invariably end up bending the bed.  Then people clamp glass to it to try to provide a flatter surface that prints might stick to.  But then it isn't evenly heated, so they do stuff (thermal pads, glue, hairspray, etc.) to try to compensate for that.  What a mess!

Three Point Leveling


With 3 point leveling, there are three screws, reference, pitch adjust, and roll adjust.  The screws are normally arranged so that two of them, reference and pitch adjust, are along the printer's X or Y axes. The roll adjust screw is usually located along an edge of the bed, opposite the other two screws.  The reference screw is used to set the overall height of the bed above the carriage plate and not normally used for bed leveling.  After initial set-up, only the pitch and roll adjust screws are used to level the bed.

Look at the image, below.  Notice that when you turn any screw, the bed is free to pivot at the other two screws, so nothing is forced to bend.  The bearings mounted on the carriage plate are not affected.

3 point bed leveling.  Adjusting any screw causes the bed to pivot on the other two screws.  Nothing is forced to bend. Leveling is accomplished by adjusting the pitch first, then the roll.  


To level a bed on 3 points for the first time, you move the nozzle to the reference adjuster and adjust the screw to grab a piece of paper, then move to the pitch adjuster and adjust the screw to just catch a piece of paper.  Finally, move the nozzle to the roll adjuster and adjust the screw to just catch the paper.  The roll adjustment does not affect the pitch setting because when you adjust the roll, the bed pivots on the reference and pitch screws.  After the first time, if ever, you adjust the level by simply tweaking the pitch and roll adjusters.  Always adjust pitch first, then roll.

Example 1:


In the example below, the bed moves in the Y axis.  The reference screw is at the back of the bed (hard to reach, so best not used for leveling) and the pitch adjust screw is at the front of the bed.  The pitch adjust screw adjusts the bed plate's pitch in the Y axis.  The third screw, the roll adjuster, is located at the left side of the bed and adjusts the bed plate's roll around the Y axis.

Son of MegaMax (SoM) bed plate showing level adjustment screws.


The screws can be placed anywhere that is convenient, but the best place to put them is close to the bearings that support the bed, because that's where the most solid structure is located.  In this machine there are two guide rails for the Y axis, one at about the center of the bed and the other to the left, near the edge of the bed.

The printer shown above is Son of MegaMax.  The bed leveling screws have flat heads that sit in countersunk holes so there's nothing for the extruder nozzle to crash into.  Originally, strong springs pushed the bed plate up against the screw heads.  The leveling is so stable in this machine that once set, it doesn't have to be adjusted unless the machine is taken apart for mods or maintenance, so the springs were replaced with nuts (if you allow something to move, it will!).

The bed plate itself is a piece of 1/4" thick MIC6 cast aluminum tooling plate.  That plate comes milled flat on both sides with plastic film to protect it until you use it.  It is flat enough to print on edge to edge and stays that way when heated.  The brown print surface is kapton tape but that has since been replaced with PEI.

85 wheels printed almost edge to edge on the plate.



Example 2:


We have a Taz 3 printer at the makerspace.  It originally came with a glass bed with 4 point leveling that didn't work well for reasons explained above.  Between the uneven heating of the glass and the leveling problems, we could only print near the center of the bed.  After the bed broke I decided to upgrade to a piece of cast aluminum tooling plate on a 3 screw leveling system.

Taz 3 printer modified undercarriage showing leveling screw blocks (white) and location of bushings for the Y axis guide rails.  4 bushings on the guide rails make about as much sense and 4 leveling screws!  The plate is quite flexible and I wasn't able to put the new leveling screws closer to the bearings, so this one is a little less stable than SoM, but still a huge improvement over the original design.

In this printer the reference and pitch screws are aligned parallel to the X axis.  The roll adjuster is at the back of the bed.  While it has been a great improvement, it is not as stable as the system in SoM because the rest of the printer isn't very solidly built.  As long as we don't move the machine, the bed stays level and doesn't require any releveling, but as soon as we move it, it has to be releveled.  The thermal performance improved drastically.

Taz 3 with the cast tooling plate bed installed.  The roll adjuster is behind the extruder.  We originally put PET tape on the top surface but recently replaced it with a layer of PEI because it works better.


Example 3:


My most recent printer design, Ultra MegaMax Dominator, uses a unique 3 point leveling scheme called a kinematic mount.  The idea was taken from an optical table lens mount. It still uses reference, pitch, and roll adjusters, but since the bed moves in the Z axis, I didn't have to put the leveling screws through the bed plate. The plate rests on top of the screws (held down by springs) which allows the plate to expand freely when heated without pushing laterally against the leveling screws.  More details can be found here.

UMMD's bed leveling scheme (and the rest of the construction) is so stable I can transport the printer laying on its back in my car and take it out and stand it up and start printing without any adjustments.

Here are flatness scans of UMMD's bed that was made by mounting a digital dial gauge on the extruder carriage and then slowly sweeping it over the surface of the bed.  The first is at room temperature, 19C, and the second is at 100C.  This type of scan measures several things at once- variation in thickness of the PEI print surface, the thickness of the adhesive tape that holds the PEI on the bed, the flatness (and level) of the bed plate, the sag in the X axis linear guide, and the sag in the printer's frame, rigidity of the Z axis mechanism, all of which will contribute to the "stickiness" of a print's first layer.


And a print that runs almost from the left edge to the right edge of the bed:

Base of a filament spool holder printed in PLA in 290 um layers using a 0.6mm nozzle.

All three printer examples above have 300 mm x 300mm bed plates.  The first two are 1/4" thick, the third one is 8mm thick.  All are flat enough for edge to edge printing in 200 um layers.  I can't say how big the bed can get and still be rigid enough to stay flat enough to print on with only 3 screws supporting it.  That will depend on the thicknesses of the bed plate and the first print layer.  Larger printers are typically used to print larger objects in thicker layers, and thicker layers are more tolerant of variations in flatness, so I suspect that 3 point leveling can be used to go quite a bit larger than 300 mm square, unless you're trying to print a 50 um first layer.  Guide rail sag is likely to be more of a problem than bed flatness.

In summary, 4 point leveling bends either the bed plate or support plate or both, which can be very hard to print on.  Autoleveling can compensate for that and get the prints to stick.  3 point leveling and solid construction eliminates the need for autoleveling or even releveling.  The only fix for tilted axes is to prevent them from tilting through good design (one motor driving both screws) or check and realign them frequently.  Autoleveling does not and cannot compensate for tilted axes.