Wednesday, November 13, 2013

Closed Loop CNC 4th Axis.

My friend has an Abene 3-Axis CNC machine, it's capable of lifting 1000kg on the table... Pretty grunty. I've used it for making Tesla coil parts, making custom camera accessories, and even teaching his 12 year old stepdaughter CNC programming.

Due to making such things as the centre plate for a twin plate car clutch, and because it's well cool. We decided it was time to build an addon rotary 4th Axis.
The controller, a Heidenhain TNC 155b which despite being as old as me is still capable of driving 4 servo axes with 1 micron positioning accuracy. It's even capable of 3D graphics!

 The controller outputs 0-10Vdc which is fed into a dc servo amplifier for each axis.

Left to right: XYZ

The amplifiers then output up to 100Vdc to the DC brush motors which drive the ballscrews on the axes.

The servo motors have a tachogenerator mounted to the opposite end of the shaft: This generates a DC voltage proportional to the speed of the motor. This signal is fed back to the servo amplifier for the speed control loop.

On the linear axes the position control loop is closed by use of linear glass scales which output a quadrature signal of two sinewaves back to the CNC controller.

The 4th axis is a little different. Mechanically it's a rotary table that would normally be used for manual indexing of parts on a milling machine.

The table is driven by a 1000w dc servo motor with a 3:1 belt drive reduction. When the servo is at maximum speed (3000rpm) the table rotates at around 10RPM, a little exciting when there is a large part in the chuck.

Due to the machine originally being only 3 axes with an optional 4th axis, we had to add an extra servo amplifier.

The servo we used has a higher voltage tachometer than the amplifier was designed for. Not wanting to allow many dollars worth of smoke out, I modified the "Personality Module" of the amplifier slightly to allow a higher input voltage.

If only humans came with such a module.

The mechanical loop is closed in this case by a Heidenhain rotary encoder which is connected to the input shaft of the rotary table.

The encoder is held in place by a large block of aluminium machined to suit. Inside there is a flexible shaft coupling between the encoder and the input shaft of the rotary table.

Electrically the 4th axis is pretty simple:
A small proximity switch is used for the initial homing of the axis on startup.

All the connections are made inside a tiny electrical enclosure, all the holes were CNC machined of course :)
The lid carries the encoder connections.
The base carries the motor and
tachogenerator connections

All the parts are mounted to a 12mm thick aluminium base plate that was also machined in the CNC.

Mounting bracket for the servo motor.

It took a couple of evenings working till way past midnight but the result was well worth it.

The video below shows a test piece being machined with the 4th axis mounted horizontally and then the clutch centre plate being machined vertically.

Using a touch probe to set the X zero point.
Drilling the edge of the clutch centre plate.


  1. Thinking of doing the same on my Bridgeport. How about the PLC, did you have to do much programming? My concerns is the electrical stuff, not the mechanical.

    1. Sorry for the delay in replying, what controller do you have? There wasn't much to set in the TNC155, just things like encoder resolution etc.