CNC Mill Progress

A little over ten years ago I bought a manual Taig milling machine with the intention of converting it to CNC. For reasons too boring to go into here, the conversion got postponed indefinitely. It remained in its manual configuration and saw little use (probably a couple of hours a year, mostly as a glorified drill press with XY table).

About a year ago I finally started collecting parts to do the conversion: Chinese stepper motors, switch mode power supply, driver boards and an Arduino Uno clone via eBay, and motor mounting kits from Lester Caine at Model Engineer’s Digital Workshop.

I was happy with most of the components, except for the Chinese driver boards which turned out to be a hopeless waste of money (basically, a design flaw means they only ever run at 30% power level, and poor quality components mean they would probably quickly burn out if you hacked them to work at full power). If money was no object I would have bought Gecko drivers, but they are very pricey here in the UK so I searched for an alternative and found these THB6064AH kits. I went for the ‘special’ model because it’s easier to mount to a heatsink. It took me a couple of hours to assemble three of them, and I’m very pleased with the design and performance of them.

drivers1

I mounted them on a couple of large P3 Xeon heatsinks salvaged from old servers. I’ve left space for a fourth driver board in case I ever decide to add a rotary axis for gearcutting or something. They barely get lukewarm.

drivers2

The stepper motor controller is a cheap Arduino Uno clone running grbl, which interprets simple g-code and generates step and direction pulses for up to three simultaneous axes. I needed a way to connect it up to the drivers and various switches so I knocked something up using a (poorly designed) prototyping shield and a bit of stripboard:

arduinoshield

This is currently working fine for interfacing to the drivers, but I think I need to add opto-isolation to the inputs because I’m currently getting an occasional spurious e-stop when I switch my spindle on or off. Luckily it hasn’t happened at any other time and the program execution is always paused when I start/stop the motor, so it hasn’t caused an issue yet. It’s more likely to cause a problem once I get around to fitting limit switches. At some point I’ll probably switch to using an Arduino Nano soldered to a custom PCB with full isolation.

I mounted the power supply, drivers and Arduino inside a steel box that started out as a dead fan heater (sorry for the punny name):

grblcage

I’ve never liked the sound of the standard Taig stepper motor couplers so I decided to go with the MEDW Oldham coupler kit instead. When I took off the handles to install them, I soon realised it was going to take a bit more work than I was expecting. First I had to carefully shorten the stepper motor shafts so the couplers fit as close as possible to the motor:

steppermotor1

steppermotor2

steppermotor3

Then I had to make something to fill the space left between the nut and dial when you remove the ball handles (which you have to do because they won’t fit inside the coupler tubes). Theoretically I could have just sawn and filed the arms off the handles, but that seemed like a bodge too far for me, so I turned up some spacers from 1″ aluminium bar instead:

turningspacer

Installation and adjustment of the couplers was slightly fiddly, but I’m very happy with the results: no backlash and more than strong enough to handle the motor torque.

yaxisstepper

The most time-consuming piece of the project by far has been that I got side-tracked into writing my own user interface software called Handwheel. Turns out it’s a huge amount of work to implement a good CNC UI, but I’m pretty pleased with what I’ve ended up with. I’m going to release it as Open Source once I’ve cleaned up a few more rough edges and written some sort of user manual. More on that later.

To finish off this rather long and rambling post, here is a video of the machine in action. This was slightly nerve-wracking for me, as it was the first time I’ve programmed a CNC machine, the first time I’ve used the mill to cut metal since the CNC conversion, and the first time I’ve used Handwheel on a real part. Just to up the stakes a little, the workpiece was £12 worth of sterling silver! Fortunately everything worked perfectly.