A CNC machine can be a great addition for every woodworking hobbyist or business. A CNC will enable you to create stunning woodworking projects that are only possible with precision machining. But can you build your own CNC machine from scratch and how expensive would that be? I will show you exactly how I build my CNC machine and how you can make your own cheaply and easily.
Here are the basic steps of building a CNC machine:
- Build the frame of the CNC machine
- Install and wire the stepper motors
- Install the control board
- Flash the firmware for the control board
- Prepare and start the first job
These steps are very basic and there are a lot of things that need to be considered. Like the type of the frame and where to get it from, the right control board for you and how to program and install the firmware, how to calculate the steps for each stepper motor to move precisely 1mm, and more.
But don´t worry, I will tell you how to do all of that and how to choose the right frame, spindle, and control board for your very own CNC machine.
Supplies You Need for Building a CNC Machine

There are a ton of supplies that you will need for building your own CNC machine and the supplies may change depending on what kind of frame or control board you choose.
Here is a list of supplies you need:
- The frame (Mostly Printed CNC, indie mill, or self-made)
- The spindle (Makita RT0700C or Dewalt 660)
- A control board (SKR 2, Ramps, or Planet CNC)
- Stepper motors, pulleys, belts, and a lead screw
- Drag chains
- Shielded wires (LAN cable)
- Wire stripper and crimping tools
- Screws, screwdriver, nuts, and bolts
- A Power Supply (12v with 10 amperes)
The supplies you need will highly depend on the type of frame and controller board that you use so I have a section for each item on the list that will help you decide what you need for your CNC.
The Frame

First off, the most important part. The Frame of the CNC.
Designing and building a frame is really hard especially if you have never built anything like a CNC before. That´s why I highly recommend either buying or building a frame that somebody else already designed.
There are a lot of options out there for CNC frames but the two best I found were the Mostly Printed CNC and the Indie Mill.
I personally used the Mostly Printed CNC for making my CNC Machine.
The Mostly Printed CNC is a project where you will 3D print your own frame and use conduit metal rods to reinforce the whole thing. If you don´t have a 3D printer then you can simply buy the parts from their online shop.
I personally printed them which took me around a week of nonstop printing on three machines.
The Indie Mill is another option for building a frame but you have to buy the instructions and also some parts from their shop to properly build it.
Here is a link to their homepage.
The Spindle

Next up, you will need a spindle.
There are a lot of no-name spindles on the market that I would never recommend buying in general. They are usually of very bad quality.
Instead, I would recommend a spindle from Makita, like the Makita RT0700C or, if you are on a tight budget then a Dewalt 660.
I personally opted to buy the Makita RT0700C and it is an amazing spindle that goes through wood like butter. So I highly recommend it!
Control Board

You have quite a lot of control boards to choose from and there isn´t really a wrong choice here.
The SKR 2 and the newest Ramps control boards are great choices for a CNC even though these control boards are usually used for 3D printing.
But the fact that 3D printing has become such a big industry also means that 3D printing controller boards are cheaper than control boards that are purely for CNC milling.
I personally used the SKR 2 for my CNC and it works great with minimal adjustments for CNC milling.
If you want a more high-end solution then you can opt for using the control boards and drivers from Planet CNC.
They are much more expensive but well worth the extra price. The only thing I don´t like is that you have to pay extra to use their firmware that is already pre-installed on their controller boards.
For drivers, I used the TMC2209 drivers that were delivered with the SKR2 board.
You can also use an Arduino Uno with a stepper motor shield and Estlcam if you want a real low-budget option that will work great.
Stepper Motors, Pulleys, Belts, and Lead Screw

You will also need the stepper motors for actually driving the spindle, pulleys, belts, and a lead screw for converting the rotary movement of the motors into vertical and horizontal movement.
Depending on the frame you will either need three or five stepper motors.
I needed five for the Mostly Printed CNC frame.
Regardless, the best stepper motors for most CNCs are Nema 17 stepper motors that you can get right here on Amazon.
These are the ones I used and they worked perfectly and were easy to install and wire.
Drag Chains

Drag chains are used to organize the cables in such a way that they don´t accidentally fall on the bed when the machine is working.
They are necessary but I highly recommend them. They were my first upgrade and they made the whole machine so much tidier and safer.
You can buy some cheap drag chains right here on Amazon.
Shielded Wires
Again, shielded wires are not a must but I highly recommend using them to ensure that no false signals are being picked up by the stepper motors.
The cheapest way to get shielded wires is by simply using LAN cables. They are shielded and twisted, which makes them perfect for us.
I replaced all wired from the stepper motors with shielded wires.
Wire Stripper and Crimping Tools
If you plan on replacing all of the cables with shielded cables then you need to have a wire stripper and some crimping tools to cut and connect the wires from the motors.
I used this crimping tool set for jumper wires that comes with a crimping tool and connectors.
How to Make a CNC Machine
Now, it is finally time to make your CNC machine!
1. Build the Frame of Your CNC Machine

Building the frame is quite straightforward.
Just make sure to square the frame properly and you should also measure the diagonal from one point to the other and make sure that everything has the same distance.
When installing moving parts make sure not to screw them on too tight or too loose or they will either not move at all or move too much.
This can be adjusted after you installed the motors and control board. It’s usually easier to see if something isn´t moving properly once you can actually move the spindle with the control board.
Take your time when assembling your frame and measure constantly to make sure everything is assembled as accurately as possible.
I didn´t do that when I assembled my CNC frame and I had to go back and adjust the frame a lot because the CNC wasn´t accurate at all when I first tested it.
As I mentioned before, I have the Mostly Printed CNC as my frame and it was really easy and straightforward to assemble even though I had some issues when tightening the nuts because they were sometimes a little hard to reach.
V1 Engineering (the makers of the Mostly Printed CNC) has really easy-to-follow instructions to help you assemble the frame.
2. Install and Wire the Stepper Motors

When installing the stepper motors, make sure that the pulleys are lined up correctly with the belts.
Optionally, you can replace all of the standard cables of the motors with shielded wires which will help with interference that could cause inaccurate movement.
I did switch out all of the wired for shielded wired just to be safe.
I used crimp connections to connect the new shielded wires to the stepper motors. It’s the easiest and fastest way I know of.
I also had to wire my stepper motors in series because I am using the Mostly Printed CNC frame which requires me to have two motors for the Y and the X axis.
But that was surprisingly easy, especially because I changed all the wiring to shielded wires anyways.
I ran all my wires through drag chains to keep everything tidy.
Also, make sure that the belt is aligned properly with the pulleys and the stepper motor to ensure that everything moves properly. As you can see in the image below.

3. Install the Control Board
The controller board was easily installed.
I used the SKR 2 board but the ramps board is very similar in many regards.
Make sure to disable sensorless homing, as you don´t need it, and the end-stops are also only optional. I have some installed for every axis but I don´t use them for 99% of my projects anyway.
Plug the motors in the correct connectors, they are usually right next to each other.
Then connect the power supply to the power plug or power connectors. Most boards need a 12V power supply with 10 amperes just to be safe.
You can also connect an LCD screen but that is also optional. I have one connected but I rarely use it.
4. Flash the Firmware for the Control Board
The firmware might vary depending on what kind of control board you are using.
I opted for using Marlin, which is a 3D printing software but it can easily be adapted to CNC milling. Make sure to select the correct board before compiling it, in my case the SKR 2 rep B.
There are full guides on how to properly use and adjust marlin that you can check out as I will only go over a few key options that you should change for CNC milling as well as some options that I had trouble with.
Planet CNC is probably the easiest to set up as everything is usually already set up for you and you only have to change some options.
The most important option that needs to be set correctly in every CNC firmware is the steps per unit for each axis.
This number tells the firmware how many steps a stepper motor has to do in order to move one unit on a specific axis. So for example, 100 steps for x would mean that the stepper motor has to do 100 steps to move 1 mm on the x-axis.
In Marlin, this option is called default_axis_steps_per_unit and can be found in the config.h file.
You have to calculate that number for every single axis yourself. The value depends on the belts or leadscrew you are using and the type of stepper motor you have installed.
There is a handy calculator by Prusa that you can use to calculate the steps per unit for every axis.
Another important value to change is the size of the printable area.
This will define the size of your workspace and keep the spindle from trying to move outside of the bounds.
I also had to change the value of the “travel limits after homing” of the Z-axis to -30 in Marlin to allow the Z-axis to move below 0.
We need this as we aren’t printing upwards but instead carving downwards.
Those were the most important options that I had to change to make Marlin suitable for CNC milling.
All that is left to do is to compile Marlin and upload the firmware to the board.
For the SKR 2 controller board, all I had to do was to put the firmware.bin file, which was compiled by Marlin, on a micro SD card and plug that into the controller board.
Then start the board, wait until it is fully booted, and then shut it down and remove the SD card. The firmware should now be installed on the board.
Make sure to use an SD card that is 8 GB or less in size and format the SD card in fat32. This will ensure that the whole firmware flashing process works.
5. Prepare and Start the First Job
To start our first milling job we have to do a couple of things. First, we need to prepare some g-code for milling something, then we have to prepare the machine and the software to start our first job.
I use Fusion 360 to generate the g-code for milling because it is free for hobbyists and there are a lot of resources out there that will show you how to make and prepare your first project for milling.
I highly recommend using this online calculator to calculate your feed rate before exporting your first g-code.
I am using Repetier host to control the CNC through my pc. It’s also free.
Just make sure to disable the hot end and extruder options before starting the first job or the CNC won´t start.
Import the generated g-code into Repetier Host and press the “Show travel paths” button to see the travel path of your tool head.
Then manually position the spindle of the CNC to where you want your x, y, and z origin to be. For me, this is usually the top of my workpiece in the lower left corner.
But this may be different for you depending on how you set up your Fusion 360 g-code.
You can manually send the g-code to the controller by using Repetier Host.
And we will be using this to send this piece of g-code “G92 X0 Y0 Z0” to the controller to set the current location of the spindle as 0,0,0.
This g-code is marlin specific, so for other firmware, the code that you have to send to set the current location to 0,0,0 may be different.
Now, everything is ready to go. All that´s left to do is turn on the spindle and then press the start button.
If you did everything right then your CNC should start executing the job right away.
Be ready to pull the plug on your machine, though, in case anything goes wrong!
How Much Does it Cost to Make Your Own CNC?
One burning question you might have now is how much did building all of that cost and was it worth it?
As a whole, building your own CNC machine can cost as little as 500$. On average a well-built CNC machine will cost around 650$. The most expensive parts of a CNC are the frame and the spindle.
Making my own CNC with the Mostly Printed CNC as a base cost me around 600$ in total.
If I went full budget on my CNC then I would have been able to shave off another 100$ by getting a cheaper spindle and not using drag chains.
So I would have been able to build a very good quality CNC machine for around 500$.
Hi, I am a passionate maker and professional prop maker for the entertainment industry. I use my woodworking, programming, electronics, and illustration know-how to create interactive props and puzzles for Escape Games and marketing agencies. And I share my knowledge and my experience on this blog with you so that you can become a maker yourself.
Hi Valentin,
I was really impressed with your own CNC machine. I am planning on designing, creating, and assembling my own dresser and potentially build them for family and friends. I believe that having my own CNC would help me a lot. So I have two questions:
1. Do you have a tutorial video showing the assembling process?
2. Could I use Solidworks instead of Fusion360?
Thank you for your help. I hope I can talk to you further!
Best regards,
Cristian Zuniga
Hi Cristian,
I don´t know if a CNC machine is the right fit for you if you only want to build a dresser except when the dresser needs to have some sort of ornate design that is best done with a CNC machine for example.
Solidworks will also work. The reason why I recommend Fusion 360 is that it is free for non-commercial use and it has a massive community with lots of tutorials online.
The CNC machine that I build is a slightly modified version of the Mostly Printed CNC. You can find documentation online.
I still think, however, that for building a simple dresser it would be faster and easier if you simply used a table saw, a disk sander, and some simply woodworking tools to build them.
It would only make sense to use a CNC machine if the dresser has some ornate design, complex round forms, or similar.
I hope that helps!