Wednesday, August 31, 2016

CNC Router Rotary Axis

This post documents adding a rotary axis to my CNC Router Parts router.

My router was a 3-axis machine. Adding a 4th rotary axis allows considerably more flexibility as the part to be machined can be rotated to expose different faces for cutting. I'd previously done some 4-axis router work at Stamps School of Art & Design - here's that post. I really wanted to add this capability to my router.

After exploring a few options - most of which were very expensive - I chose to go with an inexpensive kit from China. It was only $358 including shipping. I'd have to figure out how to get it hooked in to the electronics then build my own mount.

Rotary Axis Hardware

I ordered it and it shipped from Hong Kong the next day. It was ordered on Thursday June 30th and arrived in Michigan, USA on Tuesday July 5th. Not bad!

It includes a tail stock, a self-centering 4 jaw chuck, a Nema 34 stepper motor, and a 4:1 ratio belt drive. It includes both inside and outside jaws.

Electronics Hookup

To connect it to my setup I had to solder on a 4 pin XLR male connector.

Then using one of CNC Router Parts standard cables I could plug directly into my controller:

I had to set the dip switches in the electronics cabinet to match the 4.8 amps of the motor (the other motors I'm using are 7 amps). Then set the steps per revolution in Mach3 and it was ready to run.

Under Table Mount

I went through several iterations when designing how to mount the motor/chuck and tailstock. The requirements were:
  • It had to be always hooked up - never removed from the machine. I wanted to be able to use it without much hassle. 
  • It had to be moved out of the way when I wanted to 3-axis route using the entire 4'x4' bed. 
  • It had to be rigid when locked in place. 
  • And it obviously had to support a variety of part sizes including wide ones. 
I messed around with a lot of ideas. One was cantilevering the parts from one of the horizontal rails in the frame. But I thought this would be too much torque on the frame - the motor/chuck weighs 19 pounds.

In the end I decided to make it out of aluminum extrusions. I  choose components from 80 / 20 Inc. They have quite a few parts including sliding ones. And a great CAD library of their parts. So I could fully 3D model the design.

This is the final design, as seen from below the table. The existing frame is light blue. The new components are gray. The handles shown lock movable parts of the assembly.

Here's a front view of the frame in the lowered, beneath the table position, so 3-axis routing can happen over the full table:

Here's the frame raised up, slid up those verticals, ready to route. The center line of the axis is right at the top of the table. That's the lowest reach of the spindle:

Here's the tail stock moved forward for a smaller part. It slides along on the horizontal rail:

This configuration allows for a part that's 22" long and 14" in diameter.

After having 80/20 review the design they gave me a quote. The parts arrived at my house in just under two weeks.

Build one For Yourself: If you wish to build your own version of this setup you can download a parts list using the following link:  XLSX Parts List. These were kindly provided by Joe Russack. Thanks, Joe!


The parts were easy and enjoyable to put together. The linear bearings as 80/20 refers to them work quite well. Things slide smoothly and lock solidly,

Loosen the four corner yellow handles and you can lower the entire assembly beneath the table.

In the up position the centerline of the axis is right at the top of the frame which is close to the lower limit of the reach of the tool.

Chuck Setup

The 4th axis has a four jaw self-centering chuck which has to be assembled in a particular sequence. If this isn't followed the jaws will not all line up correctly. This process is outlined below:

Identify the numbered jaws and the numbered slots. The jaws are labelled on their side. The slot numbers are stamped into the back face of the slot (you'll need a flashlight to see them).

  • Using the key, turn the scroll observing the number one slot until the outermost end of the scroll appears. You should see the edge of the thread just appearing to enter the slot. 
  • Next turn it back a little just enough to allow the #1 jaw to enter the slot. 
  • Then push the jaw down as far as it will go (which isn't very far). 
  • Next, using the key turn the scroll so that it engages the first tooth of the jaw and starts to pull it inwards. You can give it a light tug to make sure it's engaged. 
  • Rotate the chuck until the next slot is up then turn the scroll until the start of the thread appears in the next slot. 

Repeat the above with the #2 jaw and continue with jaws 3 and 4. This procedure ensures that all the jaws are synchronized with the scroll. Here you can see them coming together properly, and aligned with the point of the tail stock:

Alignment / Calibration

The rotary axis needs to be exactly aligned with the Y axis of the router. X needs to be zeroed over that axis. And the Z height needs to be zeroed on the centerline.

I bought an aluminum cylinder to use as a calibration tool. It was very straight and uniform in diameter (1.875").

As carefully as I could I marked the centerline, and used a punch to create a starter dent in the end.

Then I drilled a small hole which will accept the tail stock point.

This bar then gets chucked up between the centers. I put a dowel pin in the spindle and carefully jogged the axis to look for variations using a feeler gage. One end of the horizontal rail can be moved to level things out.

I had to tweak the tailstock location a teeeeeny bit in X to get it aligned. But this is really about as good as I can get it without a probing routine which touches off at multiple points on the bar and compensates for any axial deviation in software. If I can locate a Mach3 probing routine I'd certainly like to try it.

Toolpath Programming

There are several possibilities for how to program the cutting. A powerful, but very simple method is to simply rotate the part to a new face, then 3-axis mill it from that position.

I'm using my standard 3-axis router profile. I manually rotate the chuck using the MDI interface of Mach3. I just type in G90 G0 A90.0 and it rotates to an absolute rotation of 90 degrees. Then I run the toolpath from the side. Doing G90 G0 A-90.0 and it rotates to the other side. You can also rotate in a relative manner using code like G91 G0 A10. It's really easy, and of course keeps the simple 3-axis toolpath programming.

An alternative is to rotate the part as it is cutting much like a slow speed lathe.


I'm excited to finally have this running. First work will be some portrait sculptures much larger than I've been able to do in the past.

Here's a link to an early test of the system.

Saturday, August 27, 2016

New Profile Linear Rails for CNC Router

CNC Router Parts, the company which makes the parts kit for my router, came out with a new version of the system. The most significant change was using profiled linear rails and bearings. These happen to be the same bearing type used on the Onsrud routers at the Taubman College FABLab I'm used to using. So I decided to give these a try and ordered an upgrade kit. The parts shipped about one and a half weeks after ordering.


The first step was to strip the router down to the frame. It started here:

The current rail system looks like this. The rails are easiest to see at the top of the picture - hardened steel rails held at a 45 degree angle by brackets.

It was easy to disassemble and I was able to leave all the electronics intact except for simply disconnecting the motors. I removed the spoilboard and took the opportunity to re-tune the frame: making sure everything was square, level and aligned flat.

To be replaced are the hardened steel rails, the carriages for gantry, and the entire Z-axis assembly. I'll be reusing some of the plates as reinforcement for the frame and base. But I now have a LOT of spare parts!


With the frame cleared the new system could be installed. The rails are polished steel. They are fastened to the extrusions with T-nuts every few inches:

The linear bearings slide along the rails and are attached to other parts with four screws. The black plastic plate in the middle of the bearing keeps the ball bearings in place until the unit is slid onto the rail.  There is a grease fitting on one end and they periodically need to be re-filled.

The new rails get aligned parallel to the top using the provided fixture which keeps them 10mm from the top of the extrusion:

Once the rails are installed the new gantry supports are put in place. These are about 50% thicker than those they replace. This design seems more refined than what was there before. Attached to these supports are the two bearings which grip the rails.

New vertical extrusions are attached to the gantry supports.

The horizontal member of the gantry is now supported on 1" thick aluminum plates. These are secured through the plate into the end of the vertical extrusion. Then the gantry is secured from below, and using a face plate from behind. This system feels a lot more secure than what was used before. 

There are new linear rails on the gantry for the Y axis travel. 

Four linear bearings are attached to a plate which supports the Z axis. There's no detectable play in it whatsoever. There's a new Z axis assembly. It is better in that the motor no longer moves up and down. Instead just he plate the spindle is attached to moves. This means you don't need a cable carrier now. The Z axis assembly is on the table still to be installed.

Here's the Z axis and spindle installed:

I removed the spoilboard to check if the Y axis (across the front of the machine) was perfectly parallel to the front rail. If not I'd adjust the proximity sensors at the back to further tune the square. Things are looking good!

Final Tuning

With everything up and running it was time to check how accurate things are. The first step was to check for runout on the spindle. I put a 1/4" endmill in the spindle and ran it at 8,000 RPM. Then I moved a dial gage onto an area of the shank with no flutes to see if the needle moves. No motion I can see in the needle.

Next is to bore some holes into a sheet of melamine to test for square. If it's not square you can compensate by adjusting the number of steps per inch in the motor setup. I reset both X and Y to 2038 steps. Then milled a pattern of 3/8" holes which measure outside to outside at 8" square.

The holes are milled to 0.379". The dowel pins are 0.374". It's a tight fit. It measures 8.000" exactly in both directions. So far so good.

Next to check the diagonals. They each measure 11.159". Nice!


The bearings need to be lubricated every so often. I do so when I can see the bearings aren't laying down a small amount of grease when I jog the machine. As a reference, here's the video from CNC Router Parts on how to lubricate:


This new rail system has a much more solid feel. There is no play at all in any axis of motion. It's also much simpler to put together. This is a real step forward for their kits. I see they also improved the frame (no more corner brackets which can slip). And a much better cross brace setup for the base. CNCRouterParts is really moving things forward.