CNC Router Design & Build

This project started as an attempt to make a 2.5-D CNC router for less than I could buy a kit. Taking existing designs like the Inventables X-Carve and Carbide 3D's Shapeoko, I wanted to challenge myself to create a similar design while spending a fraction of the price. Additionally, I was hoping to learn more about CNC control and design, and figured this would be a good chance to improve my skills.


After familiarizing myself with what components were available from online shops McMaster-Carr and OpenBuilds Shop, I began designing the first iteration of what ended up being multiple component revisions.

I chose to use aluminum extrusion for the router frame, as it provided an easy platform for making design changes during later design cycles. While the aluminum extrusions were definitely more expensive than buying stock and drilling holes myself, the convenience that the extrusion provided was the incentive to spend the extra money. Furthermore, using aluminum extrusion allowed me to use the T-slots as track for the Delrin wheels, which meant not having to design a track of my own.

For the motion system, I chose to use acme threaded rods connected to NEMA 17 motors. I opted to use power screws over the more common belt-driven motion systems since the power screws would provide more rigidity in the system and allow for better performance when working with harder materials like aluminum.

Version 1 of my CNC design built in CAD

Build & Testing

While components such as the aluminum extrusion, threaded rods, and motors were purchased, most of the other structural components used in my design were 3D printed, allowing for reduced cost of materials. Additionally, having many of these components 3D printable allowed for rapid prototyping and testing, enabling me to make revisions quickly.

For controlling the system, I used an Arduino Uno connected to a GRBL shield with stepper motor drivers. Using this shield made it quick to get motors moving after flashing the GRBL firmware to the Arduino. The Arduino was then connected to an old laptop running the controller software.

The completed frame with Dremel router attached.


After months of designing and re-designing, I was excited to just have a system that moved in all 3 axes. Upon completing my first test cut however, I realized that there was too much slop in the bit. Due to the distance between the Dremel fixture and the cutting surface, the opposing force by the wood was creating deflection in the router assembly, making the cuts on the surface less precise.

To overcome this issue, I redesigned the router mounting interface so that there would be increased rigidity in the Rx and Ry directions. After implementing these changes, the performance was dramatically improved. I think there are still a number of long-term improvements to be made, but for now this current system fits my needs quite well.

Before and After the router mount design improvement.
Note how the corners are much more even and precise.


Have questions about my build? Interested in building your own? Shoot me an email and I'd be happy to share my design files or answer any questions you might have.