A cheap & easy to build CNC Machine for drilling PCBs
After etching my first Printed Circuit Board (PCB), it immediately became clear that drilling the holes was going to be a problem. Not only are there a lot of holes in most PCBs, but the drill bits are so small that any horizontal movement results in the bit breaking. Although buying a drill press would solve the bit-breaking problem, drilling all those holes will still take a tremendous amount of time. The alternative is a CNC Machine.
Commercial CNC machines cost thousands of dollars, but with effort you can build your own for much less. Thankfully, there are many well-documented hobby CNC projects on the internet to help us through this process. A great source of inspiration for me was "Tom's Easy to build Desktop CNC Mill:"And here are a few more CNC Machine designs that stood out:




I did not have any experience with Inventor, so I had to teach myself. I didn't go into extreme detail with the Inventor design, like putting every nut and bolt into the assembly, but I was able to see what the machine would end up looking like and also get dimensions of parts from it - which was a great help when I started building it.
To make the seemingly overwhelming task of designing and building a CNC machine more manageable, I broke the project up into sub-projects:
The CNC machine
Design the machine.


And a video of a test run: (note that I've made a lot of improvements since this video was made, including fixing the extremely annoying freezing problem).
http://www.youtube.com/watch?v=sHf4x8b3YKU
Unfortunately I've been having trouble with the accuracy of my machine. It's very precise, but it seems to lose accuracy at certain places on boards. There could be several causes for this:
The next challenge is to figure out a way to drill boards with different hole sizes and how to change the drill bit on-the-fly!
After etching my first Printed Circuit Board (PCB), it immediately became clear that drilling the holes was going to be a problem. Not only are there a lot of holes in most PCBs, but the drill bits are so small that any horizontal movement results in the bit breaking. Although buying a drill press would solve the bit-breaking problem, drilling all those holes will still take a tremendous amount of time. The alternative is a CNC Machine.
Commercial CNC machines cost thousands of dollars, but with effort you can build your own for much less. Thankfully, there are many well-documented hobby CNC projects on the internet to help us through this process. A great source of inspiration for me was "Tom's Easy to build Desktop CNC Mill:"And here are a few more CNC Machine designs that stood out:
- lirtex.com's CNC
- wardscorner.net's machine
- Another instructable tutorial
- Engadget's three part article: Part 1, Part 2, Part 3.




I did not have any experience with Inventor, so I had to teach myself. I didn't go into extreme detail with the Inventor design, like putting every nut and bolt into the assembly, but I was able to see what the machine would end up looking like and also get dimensions of parts from it - which was a great help when I started building it.
To make the seemingly overwhelming task of designing and building a CNC machine more manageable, I broke the project up into sub-projects:
The CNC machine
Design the machine.
- Sketch the basic design on paper.
- Model the full machine in Inventor.
- Buy parts using dimensions from Inventor – allowing for a margin of error.
- Parts for the frame include 2x4's, bolts, nuts, washers, screws, skate bearings, and acrylic (plexiglass).
- Start by building the frame out of 2x4's.
- Put the aluminum trim channels on.
- Build the X & Y axis platforms out of plexiglass (bottom & top decks).
- Attach bearings to acrylic platforms so they slide securely along trim channels.
- Etc..
- This board provides power to the motors and, when told to do so buy the microcontroller, turns the motors in either direction.
- Read more about the stepper motor controller..
- My CNC control system is designed like this: User -> PC -> Microcontroller -> Stepper Motor Controller -> Motors.
- The PC program (below) sends the hole locations and system commands to the microcontroller, which in turn sends the step signals to the stepper motor controller.
- Details on the PIC18F4550 microcontroller board.
- The PC program parses an excellon drill file that the user loads for hole coordinates.
- After calibration (including adjusting coordinates for board misalignment) the user can start drilling.
- The PC program is like the "host," controlling everything, sending commands to the microcontroller.
- More information about the PC program is available here.
- The microcontroller is connected to the PC over USB and does only what the PC program tells it to.
- When hole coordinates are received, step signals are sent to the motors until the drill location is reached, at which point the drill routine is started.
- When the hole is drilled, the microcontroller lets the PC program know it's ready for the next hole.
- The PIC18F4550 CNC machine firmware can be downloaded here.


And a video of a test run: (note that I've made a lot of improvements since this video was made, including fixing the extremely annoying freezing problem).
http://www.youtube.com/watch?v=sHf4x8b3YKU
Unfortunately I've been having trouble with the accuracy of my machine. It's very precise, but it seems to lose accuracy at certain places on boards. There could be several causes for this:
- Software - PC software (calculating the hole coordinates), or firmware (the step routine).
- Electronics - I made all of the electronics myself, including the microcontroller board and stepper motor controllers. There could be a problem with electrical interference, bad PCB design, or who knows what else.
- Mechanical - I believe the problem is mechanical. I'm using super-cheap threaded rod for my leadscrews and equally inexpensive coupling nuts. My linear rails (trim channel) and ball bearings may also contribute to the problem. I'm planning on running a battery of tests with the machine to try to determine if there's a pattern to the accuracy problems, such as it being inaccurate around the same place every time, which would mean the problem is mechanical.
The next challenge is to figure out a way to drill boards with different hole sizes and how to change the drill bit on-the-fly!







