Saturday, July 22, 2017

UMMD Belt Lifted Z Axis Design, part 3

I decided that two equal length belts would be better than the single long belt.  The two belts will stretch equally, keeping the bed level under load.

Complete Z axis rev 3 design.

I put a longer shaft on the worm drive, added pillow block bearings and two 36 tooth drive pulleys to both ends of the drive shaft, finalized designs for the belt clamps and the Z=0 and Z max limit switches, and ran more tests.

Close-up CAD rendering of the bottom of the Z axis.  The switch on the left is the Z max limit switch that gets bumped by the belt clamp on the left side of the bed support.  Orange parts are printed in ABS.  This is not the final belt clamp design on the left side- a ramp was added to bump the roller on the Z max switch.

Belt Clamps

I experimented with different belt clamp designs as I developed the three different versions of the Z axis.  In the end it came down to a choice between two designs.

The first design used printed teeth to engage the belt's teeth.

The second design used a short segment of belt to engage the belt's teeth.
I tried pulling on the belts when they were inserted into the clamps and found that the first design tried to flex open much more than the second design, so I went with the second design, printed in ABS to withstand warm temperatures inside the printer.  Both clamps have metal plates preventing the belts from migrating out of their slots.

Z max Switch

I used an industrial surplus snap action switch that I found in a box at the makerspace and printed a mount using ABS.  It attaches to the frame using a single t-nut and can be moved up or down by sliding it into position in the slot in the frame.  It is positioned to stop the Z motor when the bed gets within about 1 mm of the bottom of the Z axis.

UMMD Zmax limit switch operation from Mark Rehorst on Vimeo.

Z=0 switch

The Z=0 switch determines how high the nozzle will be above the bed for that critical first layer.  There are two common methods for adjusting the Z=0 position.  First, oldest, and most common is a simple screw that bumps a switch telling the controller that the bed is at the Z=0 position.  More recently, the proliferation of poorly designed and built printers has been enabled by autoleveling that attempts to compensate for unflat, unlevel beds and automatically sets the Z=0 position.  Yuck!

The problem with the screw adjustment is that when you need to adjust the Z=0 position, the threads of the screws commonly used are much too coarse.  You might need to adjust the bed position by 50 um but the bed will move by 700-800 um per revolution of the screw.  That means small adjustments have to be made using tiny, fractional rotations that are hard to judge, usually resulting in overshoot.

That problem was fixed with a screw mount using a lever and cam that travels with the bed and bumps the switch mounted on the printer's frame.  The lever and cam provide about an 8:1 reduction in the motion of the screw, making a 50 um adjustment requires a 1/2 turn of the screw.  It is easy to make fine adjustments without overshooting your target.  The lever/cam turn on a bearing removed from a hard disk drive resulting in very high precision.

Z=0 switch action.  The screw pushes the lever, the cam bumps the switch, providing about 8:1 reduction in screw pitch.  The small square block is a magnet that keeps the lever in contact with the end of the screw.    The metal bracket screws to the right side Z axis belt clamp.
Here's what it looks like, all blue parts are printed ABS.

Fine Adjusting Z=0 Switch for 3D Printer from Mark Rehorst on Vimeo.

Top End of the Z Axis

The pulley plates at to top of the Z axis were reused from the rev 2 design.  Two 5/6-18 carriage bolts hold the 1/4" aluminum plate just above the ends of the linear guides.  The pulley, a pair of stacked F608zz bearings are screwed to the plate using a shoulder screw and a couple nylon washers as spacers.  The bed support shelves are cut from 1/4" thick aluminum L stock and are screwed directly to the bearing blocks on the linear guides.  I originally tried 1/8" thick L stock but found it too flexible- when I had to apply some force to remove prints the bed moved more than I liked (it would probably be OK when printing, the movement just bothered me).  The left side belt clamp is sandwiched between an aluminum plate (barely visible in the photo) and the bed support shelf.  The aluminum plate covers the belt slot in the clamp and prevents the belt from exiting the clamp.

Top of the Z axis on the left side.  The bed support shelf is cut from 1/4" thick aluminum angle stock.  The belt clamp is printed ABS.  The pulley is two stacked F608zz bearings mounted on a 1/4" thick aluminum plate using a shoulder screw.  the belt clamp has a ramp that bumps the roller on the Z max switch at the bottom of the Z axis.

The right side is almost the mirror image of the left side, except that the belt clamp is sandwiched between the Z=0 switch bracket and the bed support shelf.  You can see that assembly better in the video, above than in the photo, below.

Top of the Z axis on the right side.  The Z=0 adjuster screw mounts on a piece of angle stock that holds the belt clamp on the bed support shelf.

Belt Stretch

A lot of people won't use belts to lift the Z axis because they worry about the effect of belt stretch on the print quality and accuracy.  I was a little concerned, too, until I did some tests and calculations.

Z axis rev 3, bed loaded with 4 kg to measure belt stretch.
When I tested the Z axis rev 2 under load, the belt stretched 128 um/kg of load.  Rev 3, with shorter, equal length belts stretches about 42 um/kg, a 3X improvement.

But what about that 42 um stretch?  If you're printing in 250 um layers, that's 16% of a layer thickness.  That's got to have some effect on the print quality, doesn't it?

Nope.  None at all.  That stretch doesn't get applied per layer, it is applied per kg of print mass.

So the absolute worst case stretch in any one print layer will be 1.18 um (how often do you cover the entire bed surface with plastic?).  That error is so small it will be masked by other, much greater errors such as the variation in filament diameter, frame and guide rail flex, and other imperfections in the printer mechanism.  Assuming everything else is perfect, that single layer will start out 250 um thick and will end 251.18 um thick.  As the print mass grows the errors will accumulate and a 1 kg print will theoretically be 42 um taller than the design size.  If you need to worry about an extra 42 um of height in a 1 kg print, you shouldn't be using a 3D printer to make whatever it is you're making!

TLDR: belt stretch in this belt lifted Z axis doesn't matter, and it's hard to imagine a design where it would.

Final note:  the drive pulleys and pulleys at the top of the Z axis are carefully positioned so that the belts run parallel to the Z axis guide rails.


I never priced out a double or triple lead screw version of the Z axis, but here are the prices I paid for the parts to make this one.

ebay (prices include shipping):

F608zz bearings - 10 for $7 (2 used)
8 mm shoulder screws - 10 for $15.02 (2 used)
30" THK linear guides with bearing blocks- 2 for $110
Rino worm drive with motor - $ 116.15 (1 used)
600 mm long keyed shaft for Rino - $31.60
pillow block bearings for Rino shaft- 2 for $12 (2 used)
36 tooth HTD-3M drive pulleys, 2 @ $15.77 each (2 used)
HTD-3M steel core belt $23 (for 5m, ~3.5 m used)

locally obtained stuff:

Misc. bits of 1/4" tooling plate @ $2/lb, maybe 2-3 lbs used.
5/16-18 carriage bolts/nuts $1 per lb
3"x3"x 1/4" aluminum L stock x 7" long - makerspace.
40x40 mm t-slot @ $1 per lb, probably 8-10 lbs used for Z, total
locktite $4
8mm nylon washers - 4 used, my junk box
misc screws, washers, etc.


  1. It looks like you are using belts with a steel core, as that is usually what the white ones use. You will need to be careful not to use too small a bend radius with these, as if you do the steel core wires will break. Alas I can't find a reference just now as to what a suitable radius would be.

  2. This comment has been removed by the author.

  3. Yes, steel core PU belts. The upper pulley diameter is only slightly smaller than the drive pulley diameter so I'm not too concerned about it. If it becomes a problem I'll switch to larger pulleys.


Leave comments or a questions here and I'll try to post a response as soon as I can.