Levelling the print bed on a Lulzbot Taz 5 can be fiddly so here is a cheap dial gauge mount to make the process quick and easy.

tl;dr

Standard bed levelling technique – current method

Our Lulzbot Taz 5 is a fantastic 3D printer but unlike some of the recent machines, it does not have automatic bed levelling. A lot of those systems work by capacitively sensing the distance of the print nozzle from the print bed but there are reports that this method is sometimes unreliable causing the print head to crash into the bed if there is any residual plastic on the nozzle or bed.

Lulzbot recommend sticking a folded sheet of paper between the nozzle and bed and “feeling” how much force is required to push it in and pull it out. This is quite difficult to judge so you’ll probably end up adjusting all of the corners more than once.

Dial gauge upgrade – what we recommend

We thought that a cheap and simple fix would be to take a dial gauge, attach it to the print head and run it around the corners whilst adjusting the height at each.

AmazonDialGauge
Dial gauge accurate to 10 microns available from Amazon

I bought this cheap dial gauge from Amazon (~£8) to get started. The gauge didn’t have any way to mount anything to the back. The plan was to print a new back that allows the gauge to be mounted on to the print head assembly.

Rather than reinvent the wheel, I looked to see anyone had done this before and found this Thingiverse dial indicator mount:

http://www.thingiverse.com/thing:731620
Thingiverse mount: http://www.thingiverse.com/thing:731620

Since my dial gauge didn’t have a compatible mount point, I modified the Thingiverse file in OpenSCAD (you can learn about OpenSCAD on Simon’s website here).

I imported the .stl file into OpenSCAD, removed the mount point and added a new back plate to it so that it would screw on to my dial gauge.

OpenSCAD code and resultant .stl

The code used to create the part is here:

//dial_gauge_mount.scad
//Merges Thingiverse mount with 

$fn=96; // increase circle resolution (number of sides)
union(){
  //import the part from http://www.thingiverse.com/thing:731620 and remove mount point
  difference(){
    union(){
      cylinder(d=50,h=2);//add cylinder to be new dial gauge backplate
      rotate([0,0,90]) translate([-65,10,28]) rotate([0,180,180]) difference(){
        import("dial_Indicator_bracket_meshlab_fixed.stl");
        translate([29,-1,28]) cube([27,22,25]); //remove incompatible mount point
      }
    }
    // Next three lines remove space for screw heads
    translate([39.5/2/cos(30),0,1]) cylinder(d=4,h=20);
    rotate([0,0,120]) translate([39.5/2/cos(30),0,1]) cylinder(d=4,h=20);
    rotate([0,0,240]) translate([39.5/2/cos(30),0,1]) cylinder(d=4,h=20);
    // Next three lines add clearance for screws
    translate([39.5/2/cos(30),0,-1]) cylinder(d=2.5,h=20);
    rotate([0,0,120]) translate([39.5/2/cos(30),0,-1]) cylinder(d=2.5,h=20);
    rotate([0,0,240]) translate([39.5/2/cos(30),0,-1]) cylinder(d=2.5,h=20);
    // remove a small ring from the main part so that it doesn't interfere with the dial gauge housing
    difference(){ stl viewer plugin
      translate([0,0,-1]) cylinder(d=54,h=3);
      translate([0,0,-2]) cylinder(d=50,h=4);
    }
  }    
}

The generated .stl file is shown here:

[viewstl id=44] This .stl viewer plugin for wordpress is great.

The printed part in use

The modified Thingiverse part actually prints more easily now, requiring no support due to the removal of the original mount point.

3. Design and print new back plate, including mount.
The finished part attached to the dial gauge.

Fitting it to the print head is easy: raise the print head a few cm’s, attach the gauge, lower head until the dial gauge makes contact with bed, and zero the gauge. Now it’s extremely easy to level the bed by running the gauge dial around the bed and adjusting the various corner heights as necessary. Generally I start at the front left corner and use this as my base level.

4. Clip on dial gauge and level bed super fast.
The gauge in action. It clips on really easily and firmly. Thanks UpTime for designing the original part.

On our Taz 5’s print bed, this method reveals that the centre of the bed dips down by at least 100 microns compared to the corners. This is a problem if the layer thickness is comparable. We are considering sticking a pivot point underneath the centre of the bed so that all the corners can be levelled with respect to the centre instead of the front left corner.

Conclusion

This dial gauge mount has turned a five to ten minute job into a one to two minute job and the end result is bound to be more accurate than feeling how much resistance there is when inserting or removing a bit of paper between the nozzle and bed. The print height of the initial layer is still set by the z height set bolt. The only thing to be aware of is that the gauge is offset from the nozzle so care must be taken to prevent the dial gauge falling off the front or left hand side of the bed. It is possible to crash the dial gauge in to the front left corner holder if you were to home the x and y position of the print head. The offset also means that it’s not possible to get within about 20 mm of the back corners. This isn’t a problem since the gauge is accurate to 10 microns.

Considering how cheap this levelling solution is, I think Lulzbot should have included it with the Taz 5 in the first place or offered the option to buy one. The Taz 6 which is due to be released in the next few months will have an auto-levelling system similar to the one on the Taz Mini.

If you just want to use this mount, you can grab the stl file from its Thingiverse page.