Initial DIY CNC Prototyping

I’ve started constructing the basic electronics for the CNC machine I’m working on. It’s going to be a cheap machine made with what I have on hand, so accuracy won’t be great, but it should be an interesting experience. The leadscrews I’m using are less than optimal, requiring much software backlash compensation, but should work well enough for basic CNC work. Some early build photos are included below.

CAT5 signalling cable for quadrature encoder, motor PWM, and limit switches for a single axis. Once my mouser order comes in, these will be nicely soldered with panel-mount connectors.

All communication for motor controllers (PWM), encoders, and limit switches is being done over CAT5 cable, just because it’s pluggable, easy to use, and longer or shorter cables can be swapped in. Currently it looks like I can live with 1 CAT5 cable per axis.

Victor 883 Speed Controller, by Innovation First

For motor controllers, I’m using Victor 883’s. The controllers are currently running at 12v, but will run at 24v once I get some appropriate power supplies. These controllers weren’t intended for precise positioning and motion control (they are RC-style, meant for competitive robotics), but they perform quite well after some HAL PWM adjustments to EMC2. After some PID tuning, accuracy has increased as well.

EMC2, E-stop button, and my crazy parallel port breakout. Soon to be enclosed in a project box with 2x DB25 and 5x CAT5 panel-mount connectors.

Speaking of which, I am using EMC2 to control my CNC machine. Communication is all over the parallel port, saving me a ton of cash that would otherwise be spent on an FPGA card (although I’ll be needing another parallel port PCI card). EMC2 provides a ton of functionality and, unlike all other software of its type, it allows low-level HAL descriptors for motor controllers, encoders, and any other hardware. This allows you to move some complexity from your hardware into your software, or to modify the software to use old or unsupported hardware.

EMC2 Motor Controller Test from Ethan Zonca on Vimeo.

I’ll be posting more information on the project as the summer progresses, although I expect progress to be quite slow.

Ethan is a computer engineer and open source hardware/software developer from Michigan. He enjoys AVR and linux development, photography, mountain biking, and drinking significant amounts of home-roasted coffee. Find out more at

Posted in CNC, Projects

Leave a Reply

Your email address will not be published. Required fields are marked *