CNC Lathe Retrofit: Part 1


When working with tools, always make sure to take appropriate safety precautions. Always wear safety glasses and any other appropriate PPE. Make sure you have a comprehensive understanding of how to use your tools safely.

This video/article just documents how I approached a problem. This is not necessarily the proper, or safest way to do something. If you see something that looks unsafe, let me know! I'm always happy to learn a safer or better way to do something

All links to Amazon are affiliate links. As an Amazon Associate I earn from qualifying purchases. This helps fund these projects!


I've had this old Spectralight lathe sitting in the corner of my shop for a few years now. When I picked it up I had planned on a GRBL retrofit, but I hit a bit of a snag with threading... There wasn't a particularly 'ready' GRBL implementation that included threading. I half started the retrofit, but mostly the lathe just sat, seeing some periodic use as a manual lathe.

I wanted to use as much of the original hardware as possible, but much of what was there just wasn't going to work for what I wanted to do. The original control board was a really nice looking board, but unfortunately I didn't particularly want to go on a hunt for legacy computer hardware/software to get it up and running. Unfortunately, other than the DC speed control drive for the main spindle motor, there really wasn't all that much worth salvaging.


For the main CNC controller build I'm using:

The main CNC controller will be complemented by a separate spindle controller board which will take care of monitoring the spindle speed, and position.

The spindle controller will consist of:

All of this will be put together with a mix of various cables, wires, 3D-printed parts and M4 stainless machine screws.

Stepper Motor Assembly

To keep the stepper motors nice and neat I'm using a custom 3D printed strain relief and some heatshrink to protect the point where the wires come out of the stepper motor. I'm using shielded cable to try to keep the electrical noise down. When splicing the stepper leads to the shielded cable it's important to stagger the splices to avoid creading a bulge in the cable. I'm using a lash splice to attach the individual wires in the loom.

To make a lash splice strip an equal length of wire from each of the two wires being joined. Overlap the two wires by about 90% and wrap a strand of wire around the stripped wire leads to 'lash' them together. Next solder and heat shrink the joint. A good guide can be found here.

To attach the 3D printed strain relief to the stepper motor, I'm using the 'superglue' workholding method that's often used to hold down workpieces on a CNC mill. This consists of using masking tape on each side of the joint, and using cyanoacrylate glue to bond both of the masking tape covered faces. This makes a very stiff and strong bond but a semi-permanent one. This is still kind of a prototype, and I want to be able to cleanly remove the printed strain relief if I want to later on down the road.

For the other end of the cable I'm using a GX16 connector. According to the listing, they are rated for 5A, which seems pretty optimistic to me... Since the motor drivers are only rated for 3.5A there is a little headroom, but this is definitely the upper limit of what I would use these connectors for.

As an added bonus I'm using the metal shell of the connector to shield the connector by clamping the cable drain wire into the screw down strain cable clamp on the connector. This is a 'creative' use of the connector and is a little bit of a dirty hack. Time will tell how well this works, and how it holds up. The advantage of doing this is that all of the shielding is grounded to the rear I/O shield on the controller box, providing a nice star ground which should help to minimize ground loops.

Spindle Encoder Assembly

The lathe needs a spindle encoder to allow the controller to synchronize the linear motion of the toolpost with the rotary motion of the spindle. To accomplish this I'm using a ring of neodymium magnets placed on the spindle pulley in a 3D printed carrier. I'm using a hall effect sensor to read the polarity of the magnets as they pass by the sensor. This will output a square wave that can be used to control spindle velocity and output an index pulse to the GRBL controller.

Spindle controller Assembly

The spindle controller uses a Teensy 3.2 to compute the spindle position and velocity. This lets me offload some of the more advanced features (like PID spindle control) from the Arduino.

The GRBL controller has an output for spindle speed control. This spindle speed signal is piped into the Teensy. The Teensy processes the requested speed and starts the DC motor controller. The Teensy then maintains the correct speed by monitoring the spindle encoder, and once per revolution outputs an index pulse back to the GRBL controller. This lets the controller synchronize the movement of the toolpost with the position of the spindle.

The spindle controller also uses a 6N137 high speed optocoupler to separate the 'dirty' motor side from the 'clean' controller side.

Controller Assembly

All of this gets assembled on a 3D printed tray to keep the wire routing nice and neat. This helps to keep things organized, and will also help identifying problems down the road, as wire tracing for troubleshooting will be much easier.

With assembly finished, all that needs to happen now is testing! Things should be up and running within the next week or two to check back soon, and subscribe on YouTube to get notified when the next installment comes!