Saturday, August 25, 2012

Drew's Rostock: Drive Axis

The Rostock style 3D printer differs from more conventional designs in having three identical drive axis, all moving in the Z direction, which move the print head with a complex 6-bar linkage.  Instead of three independent axis for X, Y, and Z movement, the required movements of the 3 axis in the Rostock design to achieve the desired X/Y/Z position are calculated as needed by the controller. This makes the mechanical design in some ways much simpler - there are still 3 drive axis to build, but they are all identical.  None of the drive motors move, which simplifies wiring, and the actual moving mass is kept very low, which in theory translates to higher print speeds.  The cost comes in the complexity of the 6 bar linkage, with a dozen universal joints, and a greater overhead in software.

The standard Rostock design uses 6 smooth rods and linear bearing slides for the three drive axis.  What I'm building is a bit different, using Makerslide rail and carriages riding on V-groove bearings instead.  This is mostly due to cost and availability of materials.  I found a pile of roller bearings cheap at a local junkyard, and a single 2000mm length of Makerslide was much cheaper than sourcing the smooth rod and linear bearings required.  The Makerslide rail also makes for a slightly cleaner design - I can use the rail itself as a structural element to support the top end of the printer, and it has a channel inside which can be used to hide the wiring to top end.

For motors, I chose these large NEMA 17 motors from Phidgets.  The torque requirement was set by the direct-drive extruder design I wanted to use, and the motor required for that was cheap enough to use for the drive axis as well.

The standard Rostock design needs six 762mm smooth rods, and has a 400mm high print volume.  To keep costs down I bought a single 2000mm rail and cut it into three 666mm long pieces.  For this printer I'm only aiming for a 200mm high print area, so I don't need quite as much height on the rails.  The reduced height also let me use readily available 1164mm GT2 timing belts and pulleys

There are four sets here, I only needed three.  I bought these early on, before I had decided on the Rostock design.  Now I have a spare set.  I had been considering Synchromesh cable and printing my own pulleys, but decided that timing belts and premade pulleys would probably make for better precision in the moving parts.

The drive motors and pulleys are in the base of the printer, at the bottom end of the rails.  At the top end is an idler pulley.  These I decided to try and print myself.  The idler pulleys are printed in two halves.  Using the old Makerbot at work, I print the first half of the pulley.

While the plastic is still hot, I pressed a 625 bearing into the bearing half.

Once fully cooled, I remove that from the bed, and then print an identical pulley half.  The first pulley half and bearing is then pressed into that while still hot, making a complete idler pulley.

I'm not completely satisfied with how these run - the surface is a little uneven, there's a noticable irregularity with how the pulley runs with a belt tightly pulling on it.  I might try a different solution later.

To anchor the idler pulley and motor to the Makerslide rail, I decided to drill holes through the extrusion rather than attempt to clamp to it with T-nuts.  I haven't found a convenient source for the 5mm T-nuts that you're supposed to use to attach to the Makerslide rail, and I don't really trust a friction grip type connection to hold belt tension anyway.

Each 666mm length of Makerslide rail has two 5mm holes drilled, one near each end.  Andrew Terranova of Let's Make Robots was nice enough to let me use his saw and drill press to do this part.  I realized after cutting and drilling these that one of them has the inner groove in a reverse orientation to the others, but it doesn't really matter as I'm not anchoring anything to them.

The idler pulley goes at the top end of each rail.  The pulley itself is held in place by a 5mm machine screw threaded through the hole in the rail.  I designed a printed a plastic block that secures the pulley in place, has a flat surface and screw holes to attach to the upper structural plate, and has mounting holes for the upper mechanical limit switch.  I also have the option to use two T-nuts on each side to further anchor the block to the rail.

The motor and drive pulley are at the bottom end of each rail.  The lower assembly is made up of two blocks.  The smaller block to the left is anchored directly to the rail with another 5mm screw.  The larger block which holds the motor and drive pulley is free to slide along the rail.. I use two screws to attach the motor block to the anchor, and can adjust the tension in the drive pulley by tightening or loosening the screws.

To anchor the moving carriage piece to the belt, I use a modified version of the trick that's used on the original Rostock design, to pinch the belt in a groove on the carriage.  This sacrifices a little belt length for a secure grip with no additional hardware.

Four small V-groove roller bearings are attached to each carriage to let it roll smoothly on the rail.  In theory I could have gotten away with only using 3 bearings, and might change the design to reduce the weight in the future.  Other than the belt clamp and mounting holes for the roller bearings, the design of this part is the same as the original Rostock.

Now I have three essentially identical drive axis built up.  The next step will be to finish the wiring of the controller so I can test them, then getting the plywood cut so I can build up the frame.


  1. Thanks for your building. I'm building a Johann original. I've the sub-assemblies and will cut the base and top today - 09/10/12.

    I like your pictures.....

  2. Hi Drew,
    Looks like a really professional job! Any chance you would share your STL files for the printed parts?

    1. I think I will, once I have everything tested and proven to the point that I'm happy with it. There's still a lot of work to do.

  3. This comment has been removed by a blog administrator.