About this page
Last year I got the idea to make a very basic CNC router. After exploring the internet and more specifically YouTube on homemade CNC’s I started making some concept designs and cost estimates.
Having no particular goal for the CNC, I decided to build a CNC router small enough to easily fit on my desk that I can use to machine and engrave wooden parts with acceptable tolerances for wooden parts (±0,1 mm).
Machines like the Nomad 883 from Carbide3D, Carvey from Inventables and various others were definitely an inspiration, and the fact that this CNC router would cost less than 10% of these machines definitely made me exited to at least give it a try.
Very early on I decided to film my ‘workbench’ and make a video series of the build process. You can find the videos I made plus additional information on this page!
- Budget of roughly €200,-
- Made with basic tools, no workshop.
- Modular design
- 5 short videos (HD), total of 20 minutes.
- 2 extra videos
- Arduino (GRBL) controlled
- Ø8 mm linear rods & M8 thread leadscrew
- Work area of 200 x 250 x 100 mm (x,y,z)
- 250 watt flexible shaft driven spindle
- NEMA 17 stepper motors and drv8825 drivers
Part 1: X and Y axis
In this first part i make the Y of the desktop CNC mill. The Y axis of the mill is mostly the same construction as the x-axis with only a difference in length. For that reason i only show the build of the Y axis in the video.
The axes are built out of a simple wooden case and the linear guides (steel rods) are attached to this case with small plates that can be adjusted to make everything level and perpendicular. In the middle of the steel rods is a leadscrew made from M8 thread with a ball bearing on one end.
More information about the linear guides
Selecting which linear guides to use was difficult. There were a few options for this budget:
- Drawer rails
- unsupported linear rods with bearing blocks
- improvised homemade rails
I decided to use Ø8 mm steel rods with bearing blocks. These are very easy to install (and replace) and are the cheapest option in my case.
More information about the leadscrew
The movement of the plate along the length of the axes is done using M8 threaded rod (functioning as a leadscrew) and a stepper motor. M8 has a pitch of 1,25 mm. In combination with the stepper motor's 200 steps per revolution this gives a theoretical movement of 160 steps per millimeter or 6,25 micrometer per step. One end of the leadscrew has a ZZ608 ball bearing and the other end has a flexible coupling connected to a NEMA 17 stepper motor.
The nut is made of leftover pieces of POM plate. As can be seen in the video i have made a custom tap out of the threaded rod to tap the holes in the POM. I did this by grinding three sharp edges with my flexible shaft rotary tool.
This way the thread has a very tight fit with no backlash so far. In the third video you can see me use this tool again with great results.
Part 2: The frame
In this video i make the frame of the router that positions and secures the X and Y gantry ‘cases’ that can be seen made in the first video. Besides that, the frame also provides space for the electronics in such way that they are easy to access but stay out of sight.
I have used MDF for this part because of the low costs and the fact that it is easy to cut. The cutting is done with my homemade table router but can easily be done with a normal wood saw.
More information about the design
To make sure the important dimensions are accurate, I designed the frame in such way that all the parts that are sandwiched between two side plates. The middle parts are from the same saw cut so that they are exactly the same length. The cutting of the square and rectangular parts was done by a local hardware/DIY store under close supervision of me ;).
Part 3: Z axis and spindle
In the first part of the video you see me building the Z axis case. After finishing the case I fix the unit to the X gantry after which I do the first testing with the spindle.
The design of the X and Y axis could not be used for this axis because of the small dimensions. I chose to make sure the position of the holes for the steel rod are very accurate so that the adjustable blocks were not necessary.
More information about the clamping system
I have altered the design that is seen in the rendered image because I thought of an easier (and sturdier) way to make this assembly using aluminium profile I found in a hardware store. Using my vice and a hammer I bent aluminium profile and made a clamping system to secure the spindle handle to the Z axis plate. For now I only have one of these clamps, but in the future i am planning to add another clamp like this to keep the spindle more secure in place.
More information about the improved nut
This time I slightly improved the process of making the POM nut. By gluing the pieces together with cyanoacrylate glue i obtained a ‘solid block’ with the right thickness to make the nut with.
Then I used the tool to tap ‘perfect’ thread in the block, by screwing in the tap a few turns and removing it repeatedly until the thread was all the way through. After tapping I attached the tool to my cordless drill to finish the tap, which is seen in the video.
More information about the spindle
The spindle used for the router is a hand piece connected to a 1/3 horsepower (250 watt) motor using a flexible shaft.
There are four reasons why I expected this to give better results than a rotary tool such as a dremel, which is commonly used in homemade CNC’s like this one:
- Better quality and higher quantity of bearings in the hand piece
- Smaller load on the stepper motors due to the low weight of the hand piece
- Trans locating the vibrations of the motor away from the Z axis assembly
- High power (torque) of the motor that exceeds rotary tools
Part 4: Electronics
In this part I show the electronics used in the router and how I connected and installed everything. The electronics for such a project were kind of unknown territory for me but ended up being really easy thanks to the Arduino platform and the people who wrote GRBL(hotlink?), which is Arduino software for CNC’s.
Show the list of electronic equipment
- Computer power supply
I used an old computer power supply unit (PSU). I did not include it in the costs because these are practically free in second hand stores and it is likely that you have acces to a free one. Before using the PSU I made sure that the 12 volt line could deliver enough current to power my three NEMA 16 stepper motors at the stepper motor drivers's settings (see below).
- Arduino uno V3
This is the most basic Arduino available. It is connected to the computer with an USB-B port and is also powered by this. These controllers are very cheap and if you do not know the platform, there is a lot of information available on the internet. The Arduino is flashed with GRBL version 0.9, which was done very easily by following instructions of a Youtube video.
- CNC shield v3.00 from Protoneer
- 3 stepper motor drivers ‘drv8825’
Potentiometer adjusted to Vref = 1 V. Current is around 2 A - only with active cooling! Microstepping at 1/16 for smooth movement. More information soon!
- 5 limit switches
5 microswitches are used in 'NO' mode. The X axis has 2, the Y axis has 2, and the Z axis has only one, in the positive direction (up). While testing I noticed false triggers of these switches. To solve the false triggers, a 0,47 microfarad capacitor is placed over the cable that filters out the small voltage variations that are a result of the effect of a relatively large magnetic field (caused by the spindle's motor) on the cables.
- A control panel with on/off switch, a LED power indicator and three control buttons.
Resistor to decrease brightness of LED, on/off button connected to PSU green and black, control buttons connected to the CNC shield, wich is standard in GRBL without having to costumise the code.
Part 5: Milling a jigsaw puzzle piece
In this final part you can see the router cut out a jigsaw puzzle piece.
Before the CNC could do this at 'high' speeds, the stepper motor drivers had to be put to a setting to deliver higher current to the stepper motors. Before this moment, the stepper drivers were on a low setting to prevent overheating. Because the high current increases the heat output of the drivers a fan also had to be installed.
As I did not have a caliper nearby I do not know the exact dimension of the parts yet. The fit of the two pieces however shows a very decent accuracy and exceeded my expectations.
Show information about the parameters
Unlike metals, i did not know how to determine good cutting parameters to machine MDF. For the first tests I had to figure out what parameters (speed, step depth, RPM of spindle) work for the material. Because the rotary tool has a high RPM, I bought a single flute router bit to replace the standard 4 flute dremel bit i had before.
The first test was done at 350 millimeter/minute, with a step down of 0,5 millimeter. After a good result I increased the speed to 700 millimeter/ minute with good results too. I did not try more settings, since I did not have much time, but I am planning to do a more comprehensive test to determine the optimal toolpath settings.
Show extra video's
This is a video where I mill a shape (a deltoidal hexecontahedron?) in green floral foam using the homemade CNC router. This is the first 'real' test I have done with this machine. The g-code file with toolpaths is made with pycam 0.5.1.
Before finishing the router I used the axes as an improvised plotter.
Budget and used tools
Show the list of costs
This is the most accurate list of costs I could make since I did not track the costs of everything to the cents.
Most parts are bought from a local (dutch) webshop and from the hardware/DIY store. Some other parts are bought from Chinese webshops.
Some parts are not included, such as the flexible shaft motor, because i already own this and it is not exclusively used for this router. A flexible shaft motor like the one used for this CNC is only about €30,- euros on Aliexpress.
|Part / material||QTY||Costs|
|MDF and multiplex (Wood)||N/A||±€25|
|Rings, screws, nuts and bolts, corners||N/A||±€15|
|Ball bearing ZZ608||3||€1,20|
|(chinese) Arduino uno||1||±€8|
|Arduino CNC shield||1||€9,95|
|dr8825 stepper driver||3||€17,85|
|Stepper motor cable||3||€6,00|
|NEMA 17 motor||3||€36,00|
|M8 thread 1 m||2||€6|
|Ø8 mm steel rod 1m||3||€10,50|
|bearing blocks Ø8 mm||12||€36,00|
|Flexible coupling Ø8 to M8 mm||3||€12,00|
|Buttons, capacitors, resistors||N/A||±€10|
Show the list of used tools
This is a list of tools I have used for this build:
- Homemade router table
- Old 'cordless' drill (battery is dead, so I used the PSU as a power supply for this drill)
- Ø22 mm wood spade drill
- A rusty collection of old metal drill bits
- Metal saw
- screw drivers
- Try square
- A (very bad) soldering iron
Result & side notes
This chapter is about the end result and the improvements I would make if I should do a similar build again. Overall I am pretty satisfied with the machine, knowing that there is still a few things to optimise and for this price.
For about €200 I’m now capable to CNC machine wooden parts. Not at a high speed, or without any bumps along the way, but having this option is still great. I will definitely try to machine some gears, specific parts for projects and engrave signs with this in the future.
At the start of this project there were no specific requirements (in quantities) such as spindle feed rate and accuracy/repeatability. Due to all the unknowns I chose to first select minimalistic components and build the CNC router, and adapt the tool path settings to the limitations of the hardware.
Sidenotes regarding the costs
The costs of the wood could have been lower if I made a perfect design at the start and did not waste material, but the modular built-up and therefore the flexibility to change things was worth more to me than a bit of wood.
Costs of electronics could have been decreased if I bought it on Chinese web shops, but I chose a local shop for faster and better service. Afterwards it would have been wiser to order the parts cheaper with a longer delivery time and work on the rest of the project during shipping.
Also the micro switches used are overpriced and overcomplicated for my use. This could have saved me probably €10,- since basic microswitches are really cheap.
Sidenotes regarding the design
There are a few big design choices of the machine that afterwards I would have done differently.
- 100mm Z movement
Afterwards this much vertical movement, or room, is probably not required. The moment force on the X gantry would have been lower if I chose a lower value.
- Ø8 mm steel rods
These are very easy to (elastically) bend for the Z and Y axis; more then I initially expected when ordering. I presume this has a big impact on my machining accuracy. Afterwards I would have made homemade rails. Perhaps I will replace the X and Y linear rails with aluminium profile and ball bearing rail in the future.
- Noise and dust
At the very start I wanted to build a completely enclosed case (to reduce noise and dust), but soon I determined to first start with a basic open frame to prevent possibly wasting a lot of wood on something that might not even work. Afterwards, I should have built it because even this small router makes a lot of noise and produces a lot of fine dust. If I want to use this more often I will have to make some kind of enclosure.