Introduction: Modular DIY CNC Machine for ~$300

About: I'm a Mechanical Engineering graduate from UC Davis and I love to build things and figure out how stuff works. I enjoy design work, both in the field of engineering and general graphic design as well. When I…


This design is pretty old now so check out my updated and complete Instructable: Modular DIY CNC Machine! There's lots of information about how I designed my machine and more for you to read through to get started making your own machine.

I'm a recent college grad with a degree in Mechanical Engineering and love to build things. For my job I get to design and integrate parts of large, expensive satellite assemblies, however I don't get much hands on work with what I design due to the scale. I've always been interested in CNC machines and 3D printers, but I never really had the money to buy one myself. I decided to put my engineering background to the test, and build my own CNC machine with the ability to be upgraded and use the least amount of tools possible. This instructable includes what I've designed and how to follow these steps to create your own machine.

NOTE: This Instructable is a work in progress. I'm updating it with images/changing steps as I get parts and finish up the build

The following Instructables and links were used for inspiration:

- Desktop size CNC milling machine from scratch

- Arduino Uno + TB6560 Stepper Motor

- Arduino CNC

- Building a drawer slider CNC for under $200!

And another Instructable I hope to one day adapt to my CNC to create a laser engraver

- 1.6W Laser Cutter and Engraver

Step 1: The Design

As mentioned, I wanted to build this CNC machine as a proof of concept while at the same time create something I could upgrade in the future. I used Solidworks to create my design until I found something that would optimize my build area. I believe the area of travel for the cutting tool is about 19" in the X, 10" in the Y and 4" in the Z, however this is limited in some cases by the geometry of the design. Out of all my iterations, I found this one to give me the largest cut area.

The work piece itself moves along one axis (X), while the cutting tool moves along two axis (Y and Z). I originally had the work piece move along the Y axis and the cutting tool move along the X and Z axis, however I found it would limit the size of my allowable work piece considerably. The cutting tool for my current design isn't fixed permanently, so it can also slide along the rails to optimize cutting area.

I've attached my Solidworks files to this Instructable. This should include the entire model, as well as any custom parts.

Note:The Solidworks rendering shows the custom 3D parts in a cyan/blue color, while all other parts are purchased (more info in the next step)

Step 2: Bill of Materials

Being a recent college grad, I don't have too many heavy duty tools or a fancy workshop to work on projects. I always have projects I want to work on, but the lack of tools makes it hard to complete them. For this reason, I chose my parts to minimize the overall cost of the machine, while at the same time reducing the need for large tools. The project could probably be cheaper by using your own saw, different suppliers, or different material completely, but I found this to be the easiest option. The descriptions for each subassembly are described below and links/quantity for the each material is listed after.


For the frame I decided to use aluminum T-slot framing since it includes tracks built in and is easy to put together. I found 80/ to be the best supplier since they include CAD models with most of their products and can cut/end tap/counter-bore the aluminum extrusions. They also cut the extrusions down to your specified size which is perfect. The extrusions can also be assembled together using small brackets and bolts, making it easy to adjust the geometry and even make it larger if I wanted to in the future.


Based on researching other CNC designs and machines that are sold online, I decided to go with an Arduino Uno as the brains. I found a kit on Ebay that includes an knockoff Arduino Uno, a stepper motor shield,4 motor drivers, some limit switches and 3 stepper motors. These parts could be purchased separately to save cost, but this was convenient since I knew they were compatible with each other and there was an extensive guide online.

Drive Train:

For the drive train I chose to go with what most other DIY guides have used. I chose a stepper motor coupled to a threaded rod that spins to move a nut linearly. The nut needed to somehow connect to sections of the frame so it would actually move, so I decided to create custom parts that fit in with the aluminum extrusion track system. These parts are designed to be either 3D printed or laser cut, two services that are both available online. I've used to laser cut a design before, and I was impressed with the quality and speed of my order. I chose to go with 3D printing these parts (shown in cyan/blue in Solidworks models) as I purchased a Tiko 3D printer through Kickstarter and I thought I'd put it to work.

80/ sells linear glides for that fit in their T-slot extrusions, so I chose to incorporate these into my design. The other options I considered were drawer sliders or linear guide rails, however the guide rails were expensive and I didn't think I needed that much precision for a first time try at a CNC machine. As for drawer slides, I wasn't sure how to attach them to the frame, and was concerned about deflection at the ends. The Instructable listed in the introduction does create an effective drawer slider CNC machine, however I was looking for something with a little more build area and adaptability.

Cutting Tool:

I knew I wanted to start with a Dremel as my cutting tool, but didn't want to be limited to only this. In the future I hope to be able to use a laser to engrave things. Because of this I knew I wanted to have a simple mounting interface that could be adapted to the purpose of the project I'm working on.

Custom Parts:

I had ordered a 3D printer on Kickstarter (the Tiko 3D) and was planning to use it to create the custom parts for various parts of the machine (shown in cyan/blue). This includes the the motor mounts, parts of the drive assemblies, and the cutting surface itself. The printer has been delayed however, so I haven't been able to print the parts yet.

Materials and Links:

80/ ($134.15)

- $22.62 - 24" Aluminum Dual Slot Extrusion (x2)

- $22.52 - 16" Aluminum Single Slot Extrusion (x4)

- $9.88 - 13" Aluminum Single Slot Extrusion (x2)

- $9.42 - 15.5" Aluminum Single Slot Extrusion (x1), end tap both sides

- $14.70 - 6.5" Aluminum Single Slot Extrusion (x2), end tap both sides

- $7.40 - Slotted Inside Corner Bracket (x10)

- $10.80 - Inside Corner Bracket w/ Support (x6)

- $10.50 - Slide in T-Nut (x50), only 44 needed but extras ordered just in case

- $16.80 - Linear Door Slide (x6)

- $9.51 - 12" Sliding Door Glide Profile (x1), only 4" needed but extra ordered just in case (needs to be cut down using hacksaw)

McMaster ($14.38)

- $5.24 - 1/4"-20 bolt (50 count), only 44 needed but extras ordered just in case

- $9.14 - M8 Threaded Rod (3 meters), used for 3 drive axis (needs to be cut down using hacksaw)

Home Depot/Local Hardware Store ($2.00)

- $2.00 - M8 Hex Nut (5 count)

Amazon ($30.79)

- $11.84 - 8mm to 5mm Flex Coupling (4 count), only 3 needed but this was the cheapest option

- $18.95 - 24V 15A Power Supply (x1)

Ebay ($49.40)

- $49.40 - CNC Kit (x1), includes 3 stepper motors, Arduino Uno knockoff, stepper motor shield, limit switches, stepper motor drivers

Custom Parts

- Motor Mounts (files attached)

- Drive Assemblies (files attached)

- Cutting surface (files attached)

Step 3: Assembling the Frame

The parts ordered from 80/20 came in around 2 weeks and I was able to save some money by ordering when they had a Cyber Monday sale. As for McMaster, the parts came within 2 days, however shipping was $20 due to the size of the threaded rod. For this reason, I suggest trying to find the part locally, or ordering smaller lengths of rod so the cost isn't as high.

Assembling the frame itself is fairly straightforward. I found the brackets I purchased from 80/20 didn't fit as nicely with the frame as I thought. For this reason I purchased some smaller washers from Lowe's in order to offset the brackets. The bolts purchased also didn't fit through the holes in the brackets so I had to use my drill and increase the size of the holes. In hindsight, it might have been best to purchase the recommended bracket hardware from 80/20 but I was trying to save some money. Enlarging the holes took some time but wasn't too much work in the end.


- As expected, the frame itself doesn't go together as easily as it does in Solidworks. After much tinkering, I found it easiest to inserts a screw through the bracket, washer then partially thread on the T-slot nut. Then slide this into the aluminum bar and tighten as necessary.

Step 4: Hooking Up the Electronics

The first parts I received was actually the CNC kit, which was nice since it gave me the chance to play around with the motors and make sure I could actually get my CNC to move. You also need the power supply, otherwise there's nothing to actually make the motors move. Make sure to hook up the power supply correctly, otherwise you may short out the components and could destroy your electronics. For an extra precaution, I plugged the power supply into a surge protector. To hook up the supply, I took an old computer power adapter and stripped down the cord so the positive, negative and ground wires are showing. You can use a multi-meter to determine which wire is which, or you can consult online sources since most cables are the same. Once I determined which wire is which I labeled them so I didn't get them mixed up later on. I then hooked them up and plugged the power supply into the outlet and measured the output voltage using a multi-meter to ensure I was getting the 24V I needed. My power supply had a potentiometer on it so I tuned the supply to get the value I wanted.

The next step is to load GRBL onto the Arduino Uno as this is what communicates with the motors and transmits the G-Code to the CNC. I placed the motor shield on top of the Arduino Uno and the motor drivers on top of that. It's best to test one motor and motor driver at a time to ensure GRBL is running correctly. Once you've determined GRBL works, you can hook up the rest of the motors and play with them. I thought this step was pretty cool as it's one of the main things that makes a CNC a CNC. These motors are then used later on to turn the drive shafts which moves the respective axis.

There are various programs online to actually send GCode to the Arduino. Most of them are pretty light and self explanatory. I like Candle the best (linked below), but there are several other programs available that you can find with a quick search. I also attached a few guides I used for installing GRBL and other electronic troubleshooting:

- Using GRBL

- Connecting to GRBL

- Arduino CNC Shield Instructions

- General Arduino CNC Shield Instructions

- Candle

- GcodeSender

Step 5: Putting It Together

The final step is to combine the electronics and the framework. Since my printer hasn't come yet (it's due soon though!), I haven't been able to print my custom parts. The Dremel I received for Christmas also appeared to be used and then returned to the store, so we had to exchange it and I'm waiting for it to come back in stock. Regardless of this, I plan to first test the CNC using a marker as the "cutting tool" just to make sure everything works well. This will allow me to calibrate everything without risking damaging the Dremel or messing up a work piece.

I'll continue to update the Instructable as my parts come in, including insight on any design changes or things that map make the build easier or cheaper.

Step 6: Current Status and Future Development

I'm currently still waiting on my Dremel and 3D printer to show up so I haven't been able to move beyond testing the electronics and building the frame.

Once the machine is build and proven to work, I might play around with the software side of the CNC. This includes using the limit switches that were included with the electronics kit. I hope to also be able to create a system to quickly switch in and out the cutting tool. Specifically, my next step would be to use a laser to try out engraving or even laser cutting. This is a little ways down the road, however.

CNC Contest 2016

Participated in the
CNC Contest 2016

Epilog Contest 8

Participated in the
Epilog Contest 8

Remix Contest 2016

Participated in the
Remix Contest 2016