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: cncroutersource.com and cnczone.com. These websites will provide you with a ton of information and answer most of your questions on CNC related topics.
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
Before starting to build a machine, you will always have to make some sort of a design. Sometimes it only has 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:
Motors: Nema 23 - 3Nm
Controllers: Leadshine M542 V2.0
Spindle: Kress FME 800
Linear rails: X: Sbr 20
Y/Z: Sbr 16
Ballscrews: X/Y: 16mm 5mm pitch
Z - axis drive screw: M10 with homemade delrin nut
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 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. Linearmotionbearings2008 is a good ebay store from China, that sells a number of different kits, even with the ball screws included.
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 cncroutersource.com.
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 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
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
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 centre 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
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
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
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 damencnc.com. It has a 43mm clamping ring, which fits the Kress router that I am using.
Step 7: 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 beltingonline.co.uk. 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
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
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
Step 11: X- and Y-axis drive nut mount
Step 12: Z-axis motor mount
Step 13: 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
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
If you donít want to spend a lot of money on electronics you can buy a kit from ebay. 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
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
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
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
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.
Links to useful websites: