Introduction: Building a CNC Router

Picture of Building a CNC Router

Need parts for your project? Check out my Amazon Affiliate link below:

Anything you buy through this link provides a small commision and helps support projects and free content like below, Thanks!

This instructable will show you how I built my CNC router. I hope you can draw some inspiration from my build and that this instructable will be helpful for your future projects. This instructable shows all the steps I went through in designing and building this CNC router.

The main thing I like about a CNC router, is that it is so versatile. You can use it as a drilling machine, a router, a saw, a mill and even as a lathe. Because my workshop is very small (it’s more like a shed), I didn’t have the room for all of these tools, but I still wanted to be able to make very precise parts for different projects. That’s why I started to think about building a CNC router.

After doing some research I decided to design and build my own machine. It took me almost 6 months to build and design the machine from start to finish. Before starting the actual designing of the machine, I did a lot of research on the web. I recommend taking a look at the following websites: and These websites will provide you with a ton of information and answer most of your questions on CNC related topics.

Please note:
I built this CNC router as final project for school (also called 'profielwerkstuk' in the Netherlands). When I started the build, I was 16 years old and I finished it when I was 17. Although I have done a couple of larger projects in the past and have been doing FTC robotics for the last few years, I didn’t have that much experience with building CNC machines. This machine actually is the second CNC machine I built. The first one was a wooden test machine, which I built to gain some experience and learn more about CNC machines. I tried to build this machine as good as possible, with the tools, the knowledge and the budget I had at the time. I think the machine came out pretty nice and I hope you enjoy reading about it.

Step 1: The Design

Picture of The Design

Before starting to build a machine, you will always have to make some sort of a design. Sometimes it only have to be some sketches on a piece of paper, but for this machine a more precise three dimensional drawing was required. I made my design using google sketchup. Google sketchup is a free cad program, which you can download from the web. I found it was very easy to work with, although I had never worked with a cad program before. You won’t be able to draw as complicated designs as you can, by using other programs like Autocad, but for my purposes it worked just fine.
My main goal was to get all of the proper dimensions for my parts, so that I could order them online. I wanted to see if all of my parts were going to fit together. Because the machine consists of a lot of moving parts, I wanted to make sure that nothing would hit one another while running the machine.
When I started designing the machine I already had some parts like the linear rails and the ball screws. I bought these from someone who had built a test machine for his webshop. I used the same electronics for this machine, as I used for the wooden test machine I had built earlier.

These are the basic dimensions and parts used for the machine:
Overall dimensions
X: 1050mm
Y: 840mm
Z: 400mm
X: 730mm
Y: 650mm
Z: 150mm

The length of the rails and ball screws depends on the size of the machine you want to build.

- Motors and drivers: 3 Nm Nema 23 Stepper Motors or even better an Electronics kit
- ON/OFF switch
- Shielded 18/4 Awg wire
- Proximity sensor (limit switch)
- 5V power supply

- Spindle: Kress FME 800 or Bosch Colt or Dewalt Compact Router

If you also want to cut aluminium and other non ferrous metals, a water cooled or air cooled spindle would be a lot better. You can buy a kit that includes everything you need. I have purchased this as an upgrade after finishing my CNC


- Electronics enclosure
- Energy chain
- Connectors


- Linear rails: X: SBR 20 Y/Z: SBR 16

- Ballscrews: X/Y: 16mm 5mm pitch

You can save a lot of money by buying a kit that includes linear rails and ball screws.

- Z - axis drive screw: M10 with homemade delrin nut, but a ballscrew would be better
- Aluminum profiles: 30/60mm Misumi 100mm
- Aluminum plates: 15mm thick
- CAD/CAM software: CamBam
- Controller software: Mach3

The machine is almost entirely built from 15mm thick aluminum plate and 30x60mm aluminum extrusions. I built this CNC router using a very limited amount of tools. The main tools I used were a drill press and a lathe. Because I didn’t have the right tools to cut the aluminum plates to size, I designed the machine around standard sizes and ordered the plates online, already cut to length. The aluminum extrusions I used were also cut to length and I ordered these from misumi Europe.

When designing a CNC router it is helpful to ask yourself a couple of questions. Here you will find the design process I went through for my CNC router.

What type of CNC router do you want to build?
There basically are two types of CNC routers: the moving table design and the moving gantry design. Moving table style designs are often used for smaller size CNC routers. They are easier to construct and can be built more rigid than a moving gantry style machine. The downside of letting the table move instead of the gantry, is that the overall footprint of the machine in retrospect to it’s cutting envelope, is about twice as large as with a moving gantry design. Therefore it probably is better to make a moving gantry style machine, if your cutting envelope is larger than about 30x30 cm. Because I wanted to build a machine with a cutting envelope of about 65x65 cm, I used the moving gantry style design.

What do you want to cut with the CNC router?
This determines pretty much every answer to the questions below. I wanted to use the machine for plywood, hardwoods and plastics mainly, but also for aluminum. If you want to cut materials harder than aluminum, I recommend building a CNC mill, instead of a router.

What material will you use to construct the machine?
This is determined by the question above. A good guideline is that the material you use to construct the machine is stronger or as strong as the material you want to cut. So if you want to cut aluminum, you should use aluminum or even steel to build the machine. I have seen wooden CNC routers that can cut aluminum (you will find some on youtube), but this went very slow and the machines have to be very well constructed. Because I wanted to cut aluminum with this CNC router, I built it out of aluminum. I could have used steel, but this is more difficult to machine and I didn’t have the proper tools for that.

What length of travel do you need for each axis?
My first intention, was to build a CNC router that could handle standard size sheet goods, like plywood and mdf. In the Netherlands these are 62 x 121 cm. So for the Y - axis, I wanted a travel distance of at least 620mm. The machine is placed in a small shed in my backyard, with a very limited amount of space. I couldn’t make the machine too big, because then it would really get in the way and take up all the space. So the X - axis only has 730mm of travel. This is less than the full length of a sheet of plywood (1210mm), but I figured that if I wanted to machine something really large a could cut the first part, than slide the sheet forward and cut the last part. By using this technique you can cut pieces that are much larger than the normal X - travel distance. For the Z - axis I figured that 150mm would be enough to possibly use a fourth axis in the future.

What type of linear motion will you use for the machine?
There are many options to choose from for linear motion: drawer slides, ball bearings on V rail, V-groove bearings, unsupported round linear rail, fully supported round linear rail and profile linear rail. The linear motion system you use will to a large extent determine the cutting quality that you can achieve. I would recommend going for the best system that you can afford. After doing some research, I found that fully supported linear rails would be the best option, that I still could afford. If you search on ebay or Amazon for SBR12, SBR16 or SBR20 you will find a number of different sellers and sets to choose from. If you are building a 3 axis CNC router, you should buy a kit consisting of three sets of linear rails and two linear bearings per rail.

What kind of linear drive system will you use for each axis?
The basic options to drive each axis are: timing belts, rack and pinion and drive screws. For homemade CNC routers, drive screws are most commonly used. Screw drive systems work by placing the stationary nut on the moving part of the machine and holding the screw in place on both ends.The screw gets attached to the motor. If the motors starts to turn, the nut with the moving part of the machine attached to it, will move along the screw and set the machine in motion.
For the X and Y axis, I used ball screws. Ball screws provide very smooth motion, with virtually no backlash. Backlash is the amount of play between the drive screw and the nut and is something you don’t want in a CNC router. If you want to read more about backlash, I recommend taking a look at the website
Ball screws are more expensive than ACME screws (which are a good alternative), but will again highly improve the cutting speed and cutting quality you can achieve.
For the Z-axis I used high quality stainless steel M10 threaded rod, with a homemade delrin nut.

What type of drive motor and controller are you going to use?
Concerning the motors, there are two basic options: servo motors and stepper motors.
Servo motors are mainly used for high end CNC routers and are very expensive. They use encoders to provide position feedback and require more expensive controllers. Stepper motors are widely used on homemade CNC routers and there are many different types and sizes. The size of the stepper motor you need depends on what you want to cut, how fast you want to cut it, what type of linear drive and motion components you use, how large the machine is etc. I used 3Nm stepper motors for my machine, which is probably overkill.
The controller must suit the motor that you’re using. You can use individual drivers for each motor, as I did, or you can buy a 3 or 4-axis driver board. You can read more about the electronics I used in step 14.

What type of spindle will you use?
Most homemade CNC routers use a standard woodworking router or trim router as the cutting spindle for their machine. Mine is no exception. I used a Kress router, which is of slightly higher quality than standard wood routers, and it has a nice 43mm clamping flange. If you want to cut a lot of different materials, some sort of speed control can be really handy. The Kress router has a built in speed control but you will find this on most routers. If you are going to be doing a lot of really heavy cutting you might want to look into air or water cooled spindles. You can find these on Amazon/Ebay as well, but they will cost you a lot more than a standard router. They use a VFD for speed control and can be much quieter than standard routers.

What will be the total costs for the machine and do I want to spend so much money?
I estimated the total costs for this CNC router to be around 1500 euro. A CNC router is expensive but you can save a lot of money by building one yourself.

After I had found the answers to all of the questions above, I came up with the final design for my CNC router. As you can see, my design is not extremely detailed. You won’t see the exact hole locations on all of the parts for instance. It is difficult to determine how many bolts you should use to put two pieces together, if you have never held those pieces in your hands before.
For me, this design was enough to give me a good view on how everything was going to work out and which parts I should order.

After the design was completed and rejected/redesigned a couple of times, I could start ordering all of the parts needed. The 30x60mm aluminum extrusions and all of the aluminum plates for the gantry and Z - axis which I used for the X - axis were pre-cut to length. I also ordered some heavy duty anti-vibration leveling feet.

Step 2: The X-axis

Picture of The X-axis

The X- axis consists of a basic frame, made out of 4 pieces of 30/60 aluminum extrusions and two 15mm thick end-plates. There are two 6.8 mm holes in the end of the extrusions. I used a metal tap to create an M8 thread on the insides of the holes. After that I carefully laid out the positions for the holes on the end-plates. I actually clamped both plates together while drilling, to make sure that the holes would line up on both ends. I also drilled four holes in the middle of each plate to mount the bearing blocks. I drilled four extra holes in one of the side plates, to attach the motor mount.

I made 4 blocks to hold the leveling feet. The blocks are pieces of aluminum (50x50x20). I used four m5 bolts and t-nuts to mount them onto the outer extrusions.

The linear rails fit directly onto the aluminum extrusions. For the X - axis, I used 20mm diameter rails. The pre-drilled holes in the base of the linear rails line-up exactly with the slots in the aluminum extrusions. I could easily mount them using m5 bolts and t -nuts.

Step 3: Gantry Side Plates

Picture of Gantry Side Plates

The gantry side plates are almost identical. The only difference is that one of them has four extra holes for attaching the motormount. The whole gantry is made out of 15mm thick aluminum plates. Drilling the holes in the sideplates, was quite simple. Although I had to work very precisely. To get the holes in exactly the right spot, I carefully marked their locations, then I used a center punch, to create a little divot. Then I went over to the drill press and used a centre drill to create a hole that guides the actual drill bit. For the larger holes I used a smaller size drill bit first before using the final size drill bit.

Because of the way I had designed the gantry, I had to drill holes in the end faces of the side plates. I originally planned to do this on the drill press, but the parts didn’t fit under it. So I had to come up with a different solution: using the lathe. I made a special holder on the moving carriage of the lathe. I drilled two extra holes in each plate, to keep them in place on the carriage. Now I could easily drill perfect holes in the ends of the side plates. The only thing that was left to do, was to tap the holes for an M8 thread.

Step 4: Assembling the Gantry

Picture of Assembling the Gantry

The rest of the gantry is made the same way as the side plates. The most difficult part was getting the linear rails lined up correctly. The linear rails had to line up with the edge of the plate. When marking the exact hole locations, I clamped two pieces of aluminum profiles to the sides of the plate to line up the rails. Once I had marked the hole locations, I drilled and tapped them with an M5 thread. When attaching the rails to the gantry, you have to make sure that the distance between the rails over the entire length is completely even (the rails must be parallel).

I used the same method for drilling the holes in the end faces as I did with the side plates.

I made some corner brackets to add some extra stiffness to the assembly. On the final assembly of the machine, I actually left them out, because I didn’t felt like they were needed.

The plate on the bottom of the gantry is very simple. I drilled 6 holes to attach it to the side plates. In the middle I had to drill two holes for mounting the nut holder.

Step 5: Y-axis Carriage

Picture of Y-axis Carriage

The Y-axis carriage consists of one plate with 8 linear bearings attached to it. Drilling the holes was pretty straight forward, but again it had to be very precise. Both the linear bearings for the Y-axis and the Z-axis get attached to this plate. Because the bearings are so close together, even the slightest misalignment causes it to jam. I made the holes only 0.2 mm oversized, but I had to drill them out to 0.5 mm to align the bearings correctly. I had to do a bit of tweaking to get the carriage to slide easily from one side to the other. Both the rails and the bearings needed to be adjusted. I used high quality digital callipers to align them as good as possible. When I had made the drive nut mount for the Y-axis, I drilled two extra holes in the plate to attach it. I also tried to align the bearings for the Z-axis as good as possible, but I still had to adjust them when I got the rest of the Z-axis finished.

Step 6: Z-axis

Picture of Z-axis

The linear rails of the Z -axis get attached to the moving part of the Z - axis assembly. The rails needed to be offset a few millimeters from the edge of the plate. I used the same method as I did for the Y - axis, to align them. I found two pieces of plastic, of just the right thickness, which I could use as spacers. I knew the edges of the aluminum plate were parallel, so I clamped two pieces of aluminum to the edge of the plate and added the pieces of plastic to space the rails out from the edge. Once I had marked the hole locations, I just drilled and tapped them again. Make sure that you mark where the pieces go, so that the holes still line up when you put everything back together.

To mount the top plate to the Z - axis assembly, I drilled and tapped three holes in the end of the router mounting plate. I did this with the same setup on the lathe as I did for the Y - axis plates. I had originally planned to attach the Z - axis stepper motor directly to the top plate. So I tried to mill some slots in the top plate to attach the stepper motor. This didn’t work out so well, because I didn’t have a proper milling setup. So I cut off the part with the slots and fabricated a different motor mount out of plastic (see step 12).

I also made two bearing blocks out of the same plastic material, which got attached to the top plate as well. The drive screw is a piece of stainless steel threaded rod (M10). The drive screw is clamped between the two bearings with two nuts. I drilled and tapped the timing pulley for an M10 thread and just screwed it onto the top part of the drive screw. It is held in place by three set screws. The delrin drive nut gets attached to the Y - axis carriage (see step 10).

The router mount was pre-made and I ordered it from It has a 43mm clamping ring, which fits the Kress router that I am using.

If you want to use a water cooled spindle instead as an upgrade, a mount is often included in the kit. You can also purchase these mounts, if you want to use a dewalt or bosch router with a cylindrical body.

Step 7: Timing Belts and Pulleys

Picture of Timing Belts and Pulleys

I did not want the motors to be sticking out of the machine. Because this would increase the overall size of the machine by about 15 cm in each axis. Normally you would mount the motors on the outside of the machine using a special motor mount or standoffs. This way you can couple the motors directly to the ball screws with a flexible coupler of some sort. This is how I did it on the first wooden prototype machine I built. For most people this will probably work out just fine. But what I found was, that because the machine was placed in a very small shop, the motors would really get in the way. Because they were sticking out by almost 20 cm (motor standoffs) I quite frequently would bump against them.

That is why I placed the motors on the inside of the new machine. By doing this I could not directly couple the motors to the ball screws, but I had to use a timing belt and pulleys.

I ordered the timing belts and pulleys from They have a big variety of types and sizes. I used 9 mm wide HTD5 belts and pulleys. When using a belt drive to connect your motor to the drive screw, you can use a gear reduction. By using a smaller gear on the motor you can use smaller motors and still get the same torque (although you will of course lose speed). Because my motors were pretty large I did not need any gear reduction to get more power.

To save some money I ordered the timing pulleys without the holes for the setscrews and with only a pilot hole in the centre. I used the lathe to drill out the bore to the correct size. For drilling the holes for the setscrews, I made a little jig out of some steel hexagonal bar using the lathe and the drillpress.

Step 8: Motor Mounts

Picture of Motor Mounts

The motor mounts are made from pieces of aluminum tubing. Mine were pre - cut to length when I ordered them, but you can also use a piece of steel tubing and cut it into square pieces. The motor mounts for the X and the Y - axis, had to be able to slide in and out, to tension the timing belts. If you use a normal coupler to connect your stepper motors, I recommend making or buying some standoffs. I used the lathe to make the slots and to drill a large hole in one face of the mount, but you could also do this on a normal drill press.

I started by making a large hole in one side of the mount with a holesaw. This allows the motor to sit flush with the surface and it also makes sure the shaft is centered. The motor is fastened to the mount with four M5 bolts. I made four slots, in the other side of the mount, to allow it to slide in and out. I clamped the piece on a special lathe attachment to mill the four slots.

Step 9: Bearing Blocks

Picture of Bearing Blocks

The bearing blocks for the X and the Y - axis are made from 50mm aluminum round bar stock. I cut off four equal slabs, each 15mm thick. I then faced off each side of the blanks on the lathe. After marking and drilling the four mounting holes, I used the lathe again to drill out a large hole in the centre of the blank. I then made the cavity for the bearing to sit in. The bearings have to be pressed in and the blocks get bolted onto the end and side plates. I drilled and tapped a hole in the end of the ball screws to hold them in place. By inserting a bolt, I could tighten them against the angular contact bearings. The end of the ball screw was turned down on the lathe to 11mm. This is the part were the timing pulley gets attached to. The very end of the ball screw was turned down a little bit further to 10mm, so that it could be pressed onto the bearing. On the floating end of the ball screws, I just used standard ball bearings.

Step 10: Z-axis Drive Nut Mount

Picture of Z-axis Drive Nut   Mount

I didn’t use a ball screw for the Z - axis. Instead I used standard, but high quality M10 threaded rod. I made a nut out of a piece of delrin. Delrin is a very good material for this purpose, because it is self-lubricating and it won’t wear out over time. If you use a good quality tap to make the threads in the nut, the backlash will be very minimal (I haven’t noticed any). Inside the Z-axis assembly, there was very little room to mount the nut. And since my homemade nut was round, I needed to make a special mount. The mount consists of two pieces of 12mm acrylic. I was able to use the homemade CNC router of my school teacher, to make these parts. The round nut fits very snuggly inside the pieces of acrylic and is held in place by a small bolt. The bolt keeps the nut from spinning inside the mount. I drilled and tapped two holes in the little feet of the holders, to be able to mount it to the Y-axis carriage

Step 11: X- and Y-axis Drive Nut Mount

Picture of X- and Y-axis Drive Nut Mount

For the X and the Y axis, I made a different drive nut mount out of a piece of aluminum. The ballscrew nuts have two small flanges on one side, with three holes in them. I used one of the holes on each side to attach the nut to the holder. The holder is made from a piece of aluminum and is machined on the lathe. Because I didn’t have a mill, I used the lathe with a four jaw chuck. These pieces have to be machined very precisely. Once you have attached the nuts to the gantry and Y-axis carriage, you should be able to move these parts easily from one side to the other, by turning the ballscrews by hand. If the dimensions of the holders are incorrect, the nut will get jammed, and you won’t be able to turn the ballscrew by hand anymore.

Step 12: Z-axis Motor Mount

Picture of Z-axis Motor Mount

The Z-axis motor mount is different from the others. It is made from 12mm acrylic and was also cut with the homemade CNC router from my teacher. I had originally planned to make the mount out of a plate of aluminum, but machining that was too difficult. The belt tension can be adjusted by loosening the two bolts on top and sliding the whole motor mount assembly. The 12mm acrylic works just fine for now, but I might replace it with a piece of aluminum in the future. I found out that when I was tensioning the belt, the acrylic plate would bend a little bit.

Step 13: The Cutting Bed

Picture of The Cutting Bed

The final part I had to make for the machine was the cutting bed. The cutting bed is a very important part of the machine, and often overlooked. There are many different types of cutting beds. Examples are: t-slot table top, perforated table top, vacuum table or you could just use a disposable table top and screw your stock right onto the table. An aluminum t-slot table top would probably be the best, but it will cost you a few hundred dollars, depending on the size of your machine. I choose to use the perforated tabletop, because it fitted within my budget and I would still have lots of clamping options.

The cutting bed for my machine, is made from an 18mm thick piece of birch plywood. I fastened it with M5 bolts and t - slot nuts to the aluminum extrusions. I bought about 150 M8 hexagonal nuts for about 4 dollars. Using a CAD program, I drew hexagonal shapes in a grid with a hole in the middle. Then I used the machine to cut out all of the pockets for the nuts. Instead of regular nuts you could also use T-nuts, but then you would have to flip the tabletop over to insert them. Another problem you can have is that they fall out.

On top of the piece of birch plywood, I installed a piece of 25mm thick MDF. This is the disposable surface. I used a larger router bit, to cut holes through both pieces. The holes line up exactly with the centre of the hexagonal shapes cut earlier. Then I unscrewed the piece of mdf and installed all of the nuts in the piece of plywood. I made the holes slightly undersized, so I had to use a hammer to pound them in. Then I reinstalled the MDF surface and checked if the alignment was still correct.

I also flattened the tabletop to ensure that the surface was parallel to the x and the y axis and perfectly flat.

Step 14: The Electronics

Picture of The Electronics

The electronics for my machine consist of the following components:

Main power supply - 48VDC 6,6Amp
3 drivers - Leadshine M542 V2.0
3 steppermotors - 3Nm hybrid Nema 23
Relay - 25A, 230VAC output, 4-32VDC input
Main power switch
Power supply for breakoutboard - 5VDC
Power supply for cooling fans - 12VDC
2 cooling fans (80mm)
2 power outlets - for Kress router and shop vac
E- stop - still needs to be installed
Limit switches - still need to be installed

This would be a good electronics kit:

3 axis Nema 23 stepper motor kit

If you don’t want to spend a lot of money on electronics you can buy a kit from amazon. There are a lot of different sellers with prices in the 200-400 dollar range. Before ordering a kit you should think about what size steppers you need. I you are building a small machine for cutting wood and plastics only 270 oz in or 1.9 Nm motors will give you plenty of power. I choose 3Nm motors, because the machine itself is quite large and heavy and I planned on machining some harder materials like aluminum in the future.

If your motors aren’t too large you can use a 3-axis driver board, although it is better to use individual drivers. Individual drivers can handle more amps and feature microstepping. They are more reliable and will give you better results. The drivers I use actually came with the kit I ordered. They can handle 4,2 amps max and up to 125 microsteps.

The main power supply is connected to the drivers with 14 gauge wire, which is mainly used in RC airplanes. These wires are very flexible, but of high quality and can handle plenty of amps. The 5 VDC power supply is connected to the main power inlet. For the cooling fans, I installed a power outlet inside of the enclosure, so that I could use a standard 12V wall adapter to power them. The main power gets switched on and off by a large power switch.

The 25A relay is controlled by the computer through the breakoutboard. The input terminals of the relay are connected to the output terminals of the breakoutboard. The relay is connected to two power outlets, which power the Kress router and shop vac to suck up the shavings. When the Gcode ends with the command M05, the machine will automatically switch of both the shop vac and the router. To switch them on you can either press F5 or use the Gcode command M03.

Step 15: Electronics Enclosure

Picture of Electronics Enclosure

Since I temporarily mounted the electronics on a piece of wood, to test the machine, I still had to make a good enclosure. I drew out the rough dimensions and places for all of the components on a piece of paper. I tried to arrange them in such a way that I could easily get to all of the terminals to install the wires. I also made sure that I would get a sufficient airflow through the enclosure. This is very important since the stepper controllers can get quite warm.

All of the cables can be connected in the back of the enclosure. I used special 4 wire plugs, because I wanted to be able to disconnect the electronics from the machine, without having to unscrew any of the wire terminals. I also installed two power outlets to provide power to the spindle and a shopvac. The power outlets are connected to the relay to switch the router on and off automatically in Mach3. I mounted a large powerswitch on the front of the enclosure.

Once I got all of the components arranged the way I wanted, I designed all the pieces to make the enclosure with a CAD program. I then used the CNC machine itself to cut out all of the sides and the base. I made a lid with a piece of plexiglas in the middle. I then installed all the components and tried to keep the wiring as clean as possible.

Step 16: CNC Software

Picture of CNC Software

To control a CNC router, you need 3 different types of software. A CAD program, to create a drawing. A CAM program to create the toolpaths and output the G-code. And a controller program which translates the G-code and controls the router. I am using CamBam to create most of my drawings and create the toolpaths. CamBam is a simple program and is very easy to work with. It has some basic CAD functionalities, so for most projects you don’t need a different CAD program. Before CamBam can create the toolpaths, you need to set a couple of parameters. Examples are: the diameter of the tool that you’re using, the cutting depth, depth per pass, cutting speed etc. When you have made the toolpaths, you can output the G-code. The G-code is the machining language, that tells the machine what to do.
For the controller software I am using Mach3. Mach3 sends out the signals through the parallel port of your computer to the breakout board. You use Mach3 to zero the cutting tool and start the cutting program. You can also use it to control the spindle speed and cutting speed. Mach3 has some basic wizards built in, which you can use to output simple G-code files. An example is the write wizard, which you can use to quickly write some text and output it to G-code. (See step 17 for an example).

Step 17: Using the Machine

Picture of Using the Machine

After several months of work, the machine is finally finished. After the initial testing, the first thing I made were some hold-down clamps. The first ‘big’ project was the electronics enclosure, which you have seen in step 15. I have also been cutting some different types of gears and some signs. For some guitar pick boxes I made see my Etsy shop.
One thing I quickly realized was that a CNC router makes a lot of dust and can be pretty loud. To fix the dust problem I made a dust shoe, to which a shop vac can be attached. Reducing the noise level was more difficult. My parents were kind enough to pay for the material costs to build a full enclosure for the machine. So I made a large cabinet in which the CNC machine stands. I used noise-absorbing plates to cover the inside of the walls. The electronics and the shop vac can sit in two different compartments under the machine. The cabinet really cuts down on the noise level and makes using the machine even more fun.

Step 18: Conclusion

Picture of Conclusion

So that’s about it. Now you know how I build my CNC router and why I did it the way I did.
Although you probably won’t be building an exact copy of my machine, I hope you can draw some inspiration from my design and build. I have learnt a lot, by building this CNC router and really look forward to using it for future projects.

I would like to thank my school teacher, Nop Velthuizen, which gave me the opportunity to build this machine. He allowed me to come over to his own workshop and use all of the tools I needed to build this CNC router. He gave me a lot of information and inspiration and helped me where needed, to successfully complete this project.

If you have any questions, please leave a comment and I will try to answer your questions as soon as possible.

Benne is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means to earn advertising fees by advertising and linking to amazon(.com,, .ca etc) and any other website that may be affiliated with Amazon Service LLC Associates Program.


Sohail Baig (author)2017-08-24

Hey myself a student of engineering. I am looking to create and carve out my future by building up the best projects related to mechatronics and the project of CNC router is the best key. Much thanx to you for explaining each aspect in details.. Can I get a detailed report.. If its possible for you please send it at

GilC24 (author)2017-08-21

Please email me the CNC project build data whenever possible. Thank you for sharing your great project.

mahendradalvi (author)2017-07-09

Hi Benne

Can you please share me the required data to build one myself. This is my email id I am searching for DIY CNC router machine for long time but your machine is one which I feel to build so please help me. Thanks. Looking forward for email.

cushmape (author)2017-06-30

This is fantastic, Now I am motivated to build one. I highly appreciate if you kindly would provide any engineering drawing/build data you may have? my email is

FiBerg (author)2017-01-13

Great instructions. All
my 3D models that I want to CNC are done in SolidWorks. Using Solidworks I can
transfer them into STL, DXF, IGES, STEP ...etc files. Can I then import them
into CamBam (probably DXF or STL) and generate G-code?

lathe_makeatio (author)2017-01-10

Great construction and well explained. Especially the part what I had to choose depending to the things I would make with the machine. Also a nice trick to drill holes in the face of the aluminum with the lathe :-)

affitfather (author)2017-01-05

Awesome build. I'm totally impressed. You've assisted me in moving closer to the action of building. Can you also email me the CNC project build data,,com Thanks so much!

DamonD2 (author)2016-12-23

Please email me the CNC project build data whenever possible. Thank you for sharing your great project.

MichaelB382 (author)2016-12-21

Looks great! Please email me the build data. I would like to make one like it.

DamonD2 (author)2016-12-21

Hi, I am trying to build your CNC project. Can you please email me all the dimensions, materials needed, so I can order them from misumi pre-cut. also I noticed that your links provided not working anymore, can you provide an alternative links. thank you and good job on your awesome CNC

JVINOTH_09 (author)2016-12-07

Hai. I am willing to do the same diy for my door production. first i need to do some trial production, can you just send me the details , drawings, software etc to this mail id awaiting for your mail. thanks for your guidelines

akbabamesut (author)2016-12-05


iahmed17 (author)2016-11-18

Great Job!!!

Can you tell me what type of micro controller you have used??

MassimoC18 (author)2016-11-16

Ottimo lavoro......vorrei provare anche io non potresti inviarmi

i file tavole quotate misure, per piacere Grazie e continua cosi ciao Massimo.

la mia email : grazie.

Belahbibhoussem (author)2016-11-15

This looks great ! Great job ! I would be very interested in building one of these ! If someone could be kind and send me the drawings to this i it would be amazingly kind at :
I would be very thankfull !

lucasgelfond (author)2015-10-25

What's the difference between a CNC mill and a CNC router?

JasonD2 (author)2016-08-18

I am astounded that you made this at the age of 17! This is really marvelous and I am truly inspired.

I would really like to work on a project like this but I need to adapt it to US specs. Our sheets of plywood are typically 4' x 8' (1219mm x 2438mm). I would also have to adapt all of the thread sizing and power requirements to US specs. Or I could lead the charge in converting the US to the metric system (metric really is way easier)!

Yonatan24 (author)2016-08-11

Hi, I've added your project to "The Ultimate Collection of DIY Workshop Tools" Collection

Here is the link If you are interested:

necdetgizem (author)2016-06-29

I really love it! Excellent work! I wish I had one!

sanjat khatri (author)2016-05-20

i will try for this one useful & great experience Thanks

ljohnson69 (author)2016-05-19

Very nice machine and a great instructable. Maybe I'll build one of my own this summer.

LourensL (author)2015-11-09

Hello , Maybe you could help me . I just build a machine with a bed of approx 6feet by 3 feet . using RM2005 balscrews and nema 34 1600 oz/inc. But I am realy strugeling to even jog the machine at 3000mm/sec ,cutting max of 2000mm/sec . how fast should I be able to go ?

daniel21 (author)LourensL2015-11-25

3000mm/Sec sounds a little fast, that's 3 meters/10 feet a second.

jverhaegh1 (author)daniel212016-01-06

3000mm per seconde?!?! hoeveel haal je per pas eraf bij 2000mm p/s?

jverhaegh1 (author)2016-01-03

mooie machine, ik ben van plan om er ook een te maken. ik doe dan niet echt een technische opleiding maar dat is handig voor dingen te graveren of uit te frezen in hout. deze post was heel behulpzaam. maar de elektronische dingen daar ben ik bang voor dat ik faal. is dat moeilijk of is dat makkelijk te begrijpen?

nbiondo1 (author)2015-12-15

hi! nice project! and very useful, but I have a question that is driving me crazy, hope you can help me, ¿how the system( electronics and software) knows how many steps are each millimeter ? because you are using pulleys, diferent drive screws,the motors maybe has different steps, etc..

Are there some parameters you need to set in Mach3?

thank you, a lot!

DanielC176 (author)2015-11-08

Great project! I supervise IB personnal project in Québec (French-Canada). I'd like to present your project to my students. Do you have a video of your CNC?

Big Jon (author)2015-08-27

I just started researching this project to make my own. Your instructable has very detailed information and the machine looks very clean. Thank you for this, job well done. I see you are making another, if you have a chance can you please send me your sketchup drawings for the new version? Again, nice job!

Benne (author)Big Jon2015-08-27

I only have Solidworks drawings for my new machine. It is based around linear modules from Bosch Rexroth. These modules are normally very expensive (I got them from ebay) and not easy to obtain. Even if you have Solidworks I don't think the drawings are very useful since they use these custom parts. It looks a lot like this:

An open source project by the Dutch cnc forum.

OrozcoJ (author)2015-08-12

Congrats Benne, this is a very impresive job!

AbdullahA19 (author)2015-08-06

smart idea i have seeking such that idea but for aluminum

prosperer888 (author)2015-07-23

Great instructables, i found stepper motor, stepper motor driver and psu on here is it good deal? the controller is different from yours can i still follow this guide if i want to build 1?

MahfoodS (author)2015-07-09

Awesome project! I am currently trying to design something similar, so this is a great resource and inspiration :)

Regarding your choice to use timing belts to reduce the machine's space footprint, wouldn't that introduce more error into the machine? You're sort of throwing away the accuracy and precision the ball-screws are known for! Or am I misinformed in this regard?

Benne (author)MahfoodS2015-07-11

Well this depends on the type of timing belts you use. I used HTD timing belts which are known to be absolutely backlash free. The belts are very short so stretch is also not an issue.

It's nice to hear that you can use some of the information from my post for your design, I am currently building a knew machine as well. The knew machine looks quite a bit different and it deals with all the small problems i had with my previous machine. It looks a lot like this:

The biggest problem from my previous design was the X-axis. It's driven with only one ballscrew in the middle. If I am machining on the side of the cutting area, the gantry tends to twist a bit, because it's only held in place in the middle. The machine uses relatively cheap linear rails and these are not enough to keep it absolutely straight. A better idea is to use two ballscrews, one on each side. You could use the exact same design as my previous machine and just add an extra ballscrew, but I think the picture shows another improvement i want to make. It has a high base and the Y-axis is just a beam that goes across. This way you can create a large cutting height by making the sides higher and keep the whole structure very stiff. There is nothing that goes under the table, so it's easier to make the table stronger as well.

This design will be more expensive, since it uses extra ballscrews, motor and drivers etc. but I think it will work better.

nuno cruz (author)2015-07-02

excelent project! i'll follow this one to build my own. but tell me,why belts instead of direct? it will helps in vibrations?

digitalpr (author)2015-06-27

May I ask you where did you buy standard sizes aluminum plates that are already cut to length? I am searching auch pkates for a looong time :)


hondaman900 (author)2015-06-03

Awesome instructable - thank you. Great detail and clearly stated.

I wonder if it would be possible to add augmented reality positioning like this:

I would imaging a webcam and the software would be all that's needed. Not sure if you'd even have to have it integrated with Mach 3 to be useful. This would be very useful for avoiding the trial-and-error tests required to get the machine set up.

kbbaktha (author)2015-04-24

Great Instructable, so lucid and crisp. Thanks for sharing. This is one of the projects in my wish list. I hope to take up soon, as I am already 64 years young!

bybecker (author)2015-04-05

Nice job. Congratulations.

lowe (author)2015-03-24

Only 1500 for all aluminum cnc? Thats pretty good

-Maxi (author)2015-03-21

Hi dude, could I get your email? I'm looking to start making a cnc machine but I have some questions. I speak dutch so communication won't be a problem.

wdvalenz (author)2015-03-19

Great Job,

Could you please send the source files to my mail: please.

Kamikage (author)2015-03-05

Hello there :)

firstly... wooooow, that's VERY impressive :P

Secondly, I need a hand. Maybe a couple of hands. I am a heavy sketchup user, I designed lots of things, usually houses and pieces of furniture. Recently, I've been confronted with the need for a new bed. Looked on Ikea and some other places and found something that might fit but looking at the thing, it's not really worth the money. So I sat down and I designed my own bed in sketchup. Since I would like to be able to take the thing apart and I'm no big friend of metal... joints. MANY joints. The bed is basically built like a wooden jigsaw puzzle, using commercially available beams - usually around 45x45x2400mm, 19x100x2400mm, 25x50x2400mm and so on. Once all pieces are ready it can be assembled and used (at least according to sketchup design) without using any nails, screws or glue. I have a router (my boyfriend does). And a saw and mostly manual woodworking tools. But with the amount of joints in the design, it would likely take me and my boyfriend ages to finish the actual bed.

So I've been looking after a CNC router and I've come across your design. I think I'd like to build one myself, rather than buy one, because if I build it (based on your design) and it breaks (or, more likely, if I break it) at least I can fix it myself.

Do you think you would be ok with sharing more than the 18 steps (as in... really detailed) and maybe help me if I have questions during the building process? (If needed I can make use of german or danish).

Many thanks for your help and once more... wooooow coool machine :))))))))

Kamikage (author)Kamikage2015-03-05

Oh, I just tried opening the sketchup file at the end of the article, unfortunately my version of sketchup (8) can't open it. For the time being I haven't yet taken the step to sketchup make because I'm still running vista on my machine.

buckslayer24 (author)2015-02-26

What kind of materials can it cut?

Benne (author)buckslayer242015-02-26

It can cut all materials softer or as hard as aluminum. Aluminum works well, but I'm currently building a new machine that's a lot more high end and ridgid that will work even better for this. I haven't tried steel, but I don't think it's ridgid enough for that.

xemestan (author)2015-02-19


22jefferson22almeida (author)2015-02-02

Ola boa tarde! Parabéns pelo projeto!

Podes me enviar seu projeto em PDF para meu email? Pois não estou conseguindo baixar:

Muito obrigado!

QuentonR (author)2015-01-11

Thank you Benne you are an inspiration.

About This Instructable




More by Benne:3D Printed Water Bottle Holder for Your BikePlywood Hot Wire Foam CutterTomahawk Survival Axe (that Opens Beers!)
Add instructable to: