CNC Router Build

A couple of years ago, I set out to build a CNC machine.  These are the cobbled together photos and descriptions of the process.

  I wrote all of this well after the fact, so the documentation is not that great, but hopefully this information will help those of you out there looking to build your own machine.

I had looked into building or buying a machine a few times over several years before I actually bit the bullet.  I wanted at least a 2’x4’x5” build area and the ability to work with wood and occasionally aluminum.  Like most people, I didn’t have a lot to spend, so this priced me out of pretty much every available option that came close to my specifications.  Even more frustrating, many of the kits and plans that seemed affordable actually omitted a lot of substantial costs like a spindle, stepper motors, and stepper drivers.  Eventually, I decided that the best way to get the machine I wanted for the price I could afford was to design and build it myself.  I set a budget at 1,500 dollars and got cracking.  With a relatively small budget for a relatively large machine, price ended up being the deciding factor for almost every design consideration.

I looked into a lot of publicly available CNC builds and gleaned as much information from pictures and forum postings as I could.  Before I could go forward with the design, I had to make some decisions about a few key components. Once I had these parts in front of me, I could use them to make a more detailed design.

After pricing out linear rails, hardened rods, gas pipe, and all of the myriad options for linear motion, I eventually decided on using the linear motion system offered by CNCrouterparts.  This basically consists of some bearing trucks that use standard skateboard bearings and some cold-rolled steel bar that serves as a rail.  After much consideration, this seemed like the least hodgepodge of all of the cheap options that I found.

For the linear drive components, I ended up deciding on the rollerchain drive used by a lot of the builds on  This was by far the cheapest option that seemed robust enough to handle what I planned to throw at the machine.  There is very little backlash, it’s easy to repair, and did I mention that it was cheap?

The Z axis had to be pretty small and very precise, so after pricing out a lot of DIY options, I decided on buying a prebuilt axis.

The electronic components are one of the biggest expenditures, and this cost is usually not included in the sticker price of your average kit, or even in a lot of pre-built machines.  It’s no wonder, because you could easily spend more than what my whole machine cost just on steppers and drivers.  With my budget, I basically had two options, Xylotex steppers and drivers, or buying parts directly from China off of Ebay.  While I could have saved a sizeable amount of money buying on Ebay, I ended up going with Xylotex, and I’m glad I did.  I like that when things go pear-shaped, I can get a hold of a guy named Jeff, who will answer questions and ship parts quickly.

I made a few scribbles on the whiteboard to get a vague notion of what I would actually build, and once I had a decent understanding of what my machine would look like, I started making a CAD model.

First, I started the process in sketchup, but it became clear that the program just wouldn’t do.  Here is the hilarious model that resulted:

I love that Sketchup’s default person for scale looks exactly like Stan Lee.  I made some more design changes and restarted my model in Onshape, which at the time had a really nice free trial setup.  Eventually, I ended up with this:

This is  basically the first complicated CAD model I had made up to that point, and I was still learning the software, so it’s pretty rough.  Still, it was good enough to build a functional machine.  Here’s a link to the complete model.

With the CAD model made, I bought all of the remaining parts.  Here is a (relatively) complete BOM for the whole build  (Be sure to check at the end of the build description for how I would change some of the purchases I made if I could do it all over again).  

CNC Materials List      
Qty Purchased
CategoryVendorLinkCost per unitSubtotal
Baltic Birch Plywood sheets 3/4in
3StructuralHome DepotPlywood50150
Computer1ElectronicsNoneOwn it00
paralell Cable1ElectronicsNoneOwn it00
4 axis Motor/Driver/Power Supply Package
Breakout Board1ElectronicsXylotexBOB1515
Emergency stop switch
Limit switch cables per foot
X/Y Axis 1/4 in steel bar 36in
2Linear motionOnline MetalsSteel8.717.4
Axis 1/4 in steel bar 60in
2Linear motionOnline MetalsSteel1326
Steel Bar carriage
2Linear motionCncrouterpartsLinear Carriage2550
Steel Bar carriage extended
2Linear motionCncrouterpartsLinear Carriage3570
Z axis Carriage1Linear motionCNC4newbiesZ carriage160160
X rollerchain per foot
20Linear motionroller chain2.448
Drive sprocket3Linear motionSprockets1133
Idler sprocket6Linear motion1696
random hardware
2StructuralHome Depot4080
Cheap HF router
1Harbor FreightHF router5050
Endmill straight1Harbor FreightHarborfreight1515
Unforseen expenses
Murphy's Law150
Metal shipping50
Cnc router parts shipping
Xylotex Shipping
Total Cost:1449.05

I manageded to stay pretty close to the plans and materials.  Hopefully this paints a more realistic picture than a lot of other builds.  Nothing pisses me off more than a 500 dollar CNC build that ignores the 2000 dollars of “free parts from work” or 1000 dollars of scrap that “was laying around.”  Most people don’t have the resources to replicate a build like that.  Between this materials list and the CAD model you could reasonably replicate my machine, should you be foolhardy enough to try.

With all of the boring planning and part procuring out of the way, I jumped straight into construction.  First, I chased a snake out of the garage, a really pretty speckled king.  Is that good luck?

Next, I cut all of the lumber to size and built the frame that the bed sts on.  For each step, I did my best to make everything as square and level as possible.  Ideally, errors in one step would be compensated for in the next step.

This picture shows the jointing sled I made for my planer as an attempt to get the members that hold up the CNC bed as flat as possible.  This is just a long piece of MDF to provide a flat surface and several shims to make the boards lay flat.  All of this got hot glued together before running it through the planer.

Once the cross members were theoretically flat, I put them on the frame and shimmed them with playing cards to get everything as level as possible.  The whole machine is built to live in this specific spot in the garage.  Hopefully, I will never have to move it.

With the frame constructed, I started on the bed.  I built it as a basic torsion box out of plywood.

Here are all of the pieces nice and organized sitting on the frame.  The little box is a template that I used as a guide while making all of the sections in the torsion box.

I glued the sides next.  I could really use a corner vise.

I brad nailed and glued each support as I went.  Evidently, I did my math wrong  and ended up with a little gimp section that was smaller than the others.  Here is what I looked like when I figured that out.

It’s hot as hell in the summertime in South Louisiana.  Mistakes will be made.  Fortunately, this sin would be covered by a piece of plywood.

Next, I fit the legs that would hold the rails then nailed and glued the top.  Good thing I got that anvil!

I drilled holes in the steel for the rails.  You can see that I have a very professional setup.

I also tapped the holes for the 80/20 extrusion that would serve as the gantry.

Next, I routed out a rabbet to accommodate the bearings for linear motion and drilled holes for the bolts that would secure the rails.  I really should have jointed the rail pieces the same way that I jointed the crossmembers for the bed.  Dimensional lumber is surprisingly crooked and out of square.  I ended up shimming the hell out of my rails to make them flat.  Jointed supports would have saved a lot of headache.

I printed up the DXF’s from the CAD model and laid them out on some plywood with spray adhesive.  These are the mounts for the stepper motors.

Initially, I had planned to use carriage bolts to mount the rails on the 80/20 extrusion.  This required grinding off the little square part, and turned out not to work very well.  I eventually ended up actually buying nuts made to slide around in the extrusion.

Cutting the rails down to size for the gantry..

The pre-made z axis didn’t come with any mounting holes, so I had to drill them myself.

With the rails cut and drilled, I mocked up the mechanical parts on the machine.  Right around this time I realized that I had never actually even seen a CNC machine in person, and that I might be in way over my head.

Next, I slapped a coat of spar urethane on all of the wooden parts and taped off the linear motion surfaces.  I almost skipped this step, but I’m really glad that I didn’t.  The machine looks way nicer with a finish, and the structure being sealed should help lessen the expansion and contraction of the wood.

Installing the steppers.

Originally, I planned to use a 3d printed router mount.  It looked pretty good from the top, but the print curled up really bad.  I kind of figured it would.  Good thing it only took 15 hours to print!  Plan B was a few pieces of plywood and a couple of hose clamps.  This worked well enough for a while.

Here’s the whole machine ready to rock.   Surprisingly, it actually worked.

These are a couple of the first projects I made.  

Two years after having built the machine, I have had to make a few modifications, and there are some things I would do differently.  

First, I would have gone with a DIY solution for the linear bearings.  The CNCrouterparts bearing trucks are nice, but they really aren’t what I imagined.  The set screws loosen up, and they are very fiddly to adjust.  Additionally, they just aren’t suited for how I attached them to my gantry, which is my fault, not theirs.  They work as is, but they are really intended to have one truck on each side of a big wide rail.  I didn’t do this because a wider steel bar and two more trucks would have put me over the top on my budget.

I would have made my own Z axis as well.  The premade Z axis saved a lot of time, and seemed to cost about the same as if I had parted it out myself, but I would have used higher quality components. The Z axis doesn’t use an acme leadscrew, and the leadnut is plastic, as are the bushings.  Overall, there is just more slop than I would prefer.  That said,  it works fine for what I do, and it was probably worth getting the premade Z axis just so that I could get the machine running faster.  Eventually, I will upgrade those parts.

Despite all of its shortcomings, this machine has achieved its purpose.  It is reasonably solid, versatile, and cheap.  Since I built it, I have crashed it, broken parts, repaired parts, and replaced parts.  I could do all of this with confidence because I know exactly how the machine is built.

What I did not expect was that operating the machine is considerably more difficult than building it.  Two years in, I have only scratched the surface of what the machine is capable of.

The first modification I made was new  router mount.  The pictures make it look way nicer than it actually is.  Overall, it is an improvement over the hose clamps.

Posted in: CNC

Leave a Reply

Your email address will not be published. Required fields are marked *