Last updated July 25, 2020


My CNC mill is based on a Precision Mathews PM-25MV manual mill. A CNC conversion kit was purchased from David Clements of ArizonaVideo99. This project was meant to be a hobby and much of the project sat for months until…

I’m a freelancer who builds prototype computer vision machines and analytical software. A plant research company asked if I would build them a system to image and measure plants. Machinists are busy running a business and working with an inventor may not be profitable. I designed the machine in CAD, but once assembly starts, there changes will be desired and returning to a machinist for changes will create delays and extra costs.

I needed to get the CNC mill to a point that I could make the parts I needed. David’s kit was an easy bolt-on. Most of the kit was assembled in a day and the CNC mill was operational by the end of the weekend.

This is the second CNC mill that I’ve built. The first was an Industrial Hobbies mill. Both are based on a manual mill, a conversion kit, and supply-your-own electronics. The IH used Mach3 and a parallel breakout board. It also had servos on all axes and a 3HP VFD controlled motor. It was a beast of a machine.

The PM25 is a small and capable machine.


The CNC machine is composed of the 1) mechanics of the machine, which includes the frame, ballscrews, etc; 2) the motors and their drives; and 3) the CNC controller.

The CNC controller includes everything from the interface that one supplies the G-code file to through and including the hardware the produces the signals to control the motor drives.

Most controllers for most DIY CNC machines likely consist of the selection of some hardware and software. The software is likely to make the largest difference in the experience of using the machine, but selection of the software will put limitations on the selection of the hardware.

Simplifying the selection, there are also all-in-one CNC controllers including the Masso Controller. I’ve not used these but they deserve serious consideration for anyone who simply want their machine to work with minimal fuss and continue to work reliably.

Controller – Software

I previously used Mach3, which runs on Windows. It’s been many years since I used Mach and much is likely changed. What I remember most about Mach was it was simple to use. However, coming from an IT background, didn’t like that 1) Mach3 was Windows based; and 2) Mach3 is not open source. Windows is more stable today then the old days, but there is still a lot of baggage that comes with any Windows installation.

I selected LinuxCNC for a CNC controller. I’m reluctant to suggest it to everyone except those familiar with Linux, and then only if using well supported hardware.

Controller – Hardware

Consider if the computer used for your CNC machine will be dedicated to the machine, a number of machines, or will perform other tasks than being a CNC controller. Being dedicated and potentially network isolated may be ideal, but may not be practical or economical.

Most everyone starts with a parallel port breakout board, and I tried a number of parallel port cards until finding one that was compatible with Linux. The breakout board was basic and essentially provided a convenient way to connect the pins of the 25-pin parallel port to wires attached to motor drives, relays, and switches. The only bit of sophistication on the board was electrical protection.

A property that the LinuxCNC folks highlight in comparison to other products is that LinuxCNC is real-time, meaning there is a limit to how long an operation, such as sending a step pulse to a drive, will take. Real-time is the prefered property of controllers because it’s possible to make arguments about performance.

The parallel port is possibly the best real-time option for a personal computer. Compare to Ethernet where messages traverse layers of software and hardware, a parallel port can be controlled by setting value at a memory location.

Needing more capability

Spindle and axes load meter

Every motor, including the spindle and axes motors, have a rated power measured in watts. By monitored the motors and comparing to the rated power, we can learn how much research capacity is available. For milling metal, the spindle is more likely the limiting factor than the axes motors. A simple spindle load meter can be fairly easy to implement and will provide important information. See the spindle load meter project for more details.


Like any home or hobby project, I’ve not declared “I’m done” yet. Probably never will be. And there is a warning here. If you purchase a complete CNC machine, you’ll spend a little more upfront, but potentially much less over the lifetime of the machine. There’s no limit to what can be replaced on a CNC conversion, and one may regularly decide to upgrade a part. The costs can grow.