Automatic Tool Changer

CNC Automatic Tool Changer

It’s been about a year now since I’ve built the ATC for my CNC mill.

Since it works pretty well, I thought I would do a basic description and share some of the design files.

Basically it’s a carousel type on a sliding arm. 10 positions.


The electronics is based on the Cubloc CB320 Mini PLC controller.

This device is programmable in either Cubloc basic or PLC ladder. It supports serial Modbus and I2C and has commands for driving stepper motors built in. Since I planned to use it with Mach3, Modbus was the main attraction for me.

I created a backing PCB with a few extras.

The board has a serial port for prog. download and a USB port for Modbus.

I made this a general purpose board with a few extra opto isolated inputs and relays to drive Air/Mist/Coolant if required.

My setup uses the following sensors:

  1. Long range opto spindle sensor – to detect if a tool is loaded.
  2. Opto index sensor on carousel – for a fixed rotational point.
  3. Opto position sensor for inventory of the carousel.
  4. 2 x slide on/out opto sensors for the slide mechanism.
  5. Opto drawbar sensor – to determine drawbar status.

One relay is used for a 5 way Pneumatic valve for the power drawbar.

The I2C bus is used to communicate with an optional status display. The status display is a standalone board with an ATMega328p driving an OLED display. It’s sole purpose being to scan the I2C bus from the Cubloc and decode the status messages.

Mechanically – There are two IKO 18mm Linear rails with a 12mm ballscrew -4mm pitch driven by a stepper.

The carousel is driven by a 3:1 reduction toothed pulley with another stepper. The ATC ‘fingers’ are a combination sandwich of Aluminium and Delrin to grip the Tool holders.

Tool holders are 20mm shank going into an R8 collet controlled by the drwabar.

The drawbar is based on a Watts linkage to provide parallel motion for the air cylinder with about a 10:1 lever. Air cylinder is 50mm diameter, 25mm stroke running at about 100psi.

The drawbar has a Belleville spring cup washer stack to provide tension.

Tool change speed is relatively slow on my machine. Speed will depend on your Z-axis speed and how fast you drive the carousel and slide steppers.

One thing to be aware of is the rotation inertia of the carousel fully loaded. You require a stepper with good holding torque to prevent loosing position as the tools rotate. Something I found out the hard way…..

Improvements – currently the code is based on tool numbers 1 to 10. I may change this and the tool slot sensor to use an RFID button on the top of the tool shank to sense the tool number – otherwise, you need to remember that tool no. 1 goes in slot no. 1 and you are limited to 10 tools at a time. Some additional error checking and custom Mach3 screens are also on the list.

Design files for the PCBs and Mach3 macro are here: