Home / Legacy / CNC Machine

CNC Machine


A couple months ago, I decided I had it in me to have a go at building my own CNC machine. For those not familiar with the term, CNC stands for Computer Numerical Control. The idea being that a computer can control a cutting bit far more precisely than a human can, but, I suspect if you’re reading this article you’re already familiar with the concept, so I’ll go on.

My very first steps were looking at the low end commercially available units, primarily those from Zen Toolworks and Probotix.com.  Not knowing much about how the systems worked at the time, I decided against the Zen unit as I didn’t like the speed the machine ran at in the videos I could find. Of course now, I know the feed speed is dictated by the machine controller, but, I’m still glad I decided to go off and try on my own anyway. I was all set to order the Probotix Fireball V90, but just couldn’t accept the lack of true linear bearings and standard(non-anti-backlash) nuts in the base model, so that one was off the table. Next, I looked at a couple of similarly sized units available on Ebay, mostly from China. Their price(with shipping) was comparable to the Probotix unit, but I was concerned if the unit ever had a problem, that I would basically be dealing with no support, so, that was the final nail in the coffin for a commercial unit, as they start getting exponentially more expensive as you start getting above the units I described above.

Material Sourcing

After all my research, all I really knew was that I needed 3 axis’s, some motors to drive them, a computer to control them, and some software to design the parts.  I figured the software/computer part was easy, so I would save that till the end(I was wrong BTW), and started sourcing the main components online.  I’m not going to get into the details of where I purchased everything(I doubt you care I bought 3 misc screws at Home Depot), but will try to set you on the right path for the major components.

I first started with the axis movement components, i.e. the lead screws and the linear bearings.  There are a lot of manufacturers of both, and commonly available on Ebay.  My very first purchase was 3 precision lead screws from Precision Tech Machining LLC in Florida.  I liked how they produced a lead screw tailor made for the home CNC market, i.e. ½-10 threads and turned to 1/4” on the ends for a motor coupling.  Ultimately, the ends being turned to ¼” was not that big of a deal, as so many motor couplings are available which will do the adapting for you, but, live and learn.  With shipping, these cost $55 total, not bad.  I should mention, they claimed the ends were turned to 5/16” for insertion into a mounted bearing before being turned to ¼” for the motor coupling, but I found they were off about 1/1000 of an inch, enough to make them non-insert-able into a 5/16 ID bearing…but, oh well, I figured out a work around to that.

Next, I began a search for the linear bearings, what I initially thought were going to be the most expensive part of the entire project (more on that later).  After searching and searching I found the only “reasonably” priced ones which fit my requirements were going to have to be purchased from China. I purchased a three axis set from a company I found on Ebay.  I ended up doing the transaction outside of Ebay as none of the items I found there were exactly the size I wanted (24x18x12”).  This set included 12 linear bearings and six linear rails.  I used 16mm rail which ended up being more than rigid enough.  Depending on the price difference, I wouldn’t hesitate to use 12mm rail for a future project of this size. Total cost of rails and bearings, $200. When I received the items about two weeks after payment, I noticed that 10 of the bearings worked great, and two were defective and would not slide onto the rail. After a couple of emails requesting replacements, I finally got a response after threatening to charge back a portion of my Paypal payment. The replacements worked well, so I was happy. I only mention this because I wanted to remind everyone of the importance of verifying the quality of components as soon as they arrive. If you waited the month from receipt to installation, it might be too late to request a replacement.


Next, I knew I needed some rotary device to actually do the cutting, for this purchase, you really have three options, a Dremel, an off the shelf router or a “CNC specific” spindle. When sourcing this, my biggest concern was maintaining the ability to control spindle power from the CNC controller, and not have to be standing by when the program ends to turn off the spindle. At first, I didn’t even know relays were available, so I started searching everywhere for a 24 or 36V(motor voltage) spindle. I wasn’t having much luck so I started to assume that there must be another alternative…there was! I ended up using a SSR(Solid State Relay), a device which uses a DC control signal from the motor driver board to open up a 120V circuit and provide(or turn off) a 120V router or Dremel. These devices are pretty cheap, I ended up purchasing one from Amazon for ~$10. I decided against a Dremel, simply because they don’t have much torque and only have 1/8″ collars which limits your choices of bits. I settled on a Porter Cable 7310 trim router, due to the ability to use 1/4″ and 1/8″ bits and from my previous experience with the quality of Porter Cable rotary products. Just a suggestion, but when selecting a router, chose a non-slow start model. I say this because slow start routers, i.e. the Bosch Colt, are not compatible with router speed controls. So if speed control is important to you (and is should be if you’re going to machine a variety of materials) get a non-slow start unit, like the PC 7310

Having the lead screws, rails and router in route, I needed some way to tie it all together, I needed some lead screw nuts. The lead screws I purchased came with standard, no-frill Delrin nuts, but I wanted to avoid backlash(something I still don’t fully understand) so I opted to purchase a set of three anti-backlash Delrin nuts from “IMService” on Ebay, $43.20 including shipping. A bit steep if you ask me considering they’re just plastic. When I received the anti backlash nuts and compared them to the standard variety, I found they did hold their place on the lead screw a bit better than the stock nuts, so I guess it was worth it.

I wanted to take a moment to talk about the importance of having plastic sheet available when making your own CNC machine, especially if the main frame material you plan on using is going to be MDF(medium density fiberboard). In terms of strength to dimension, PVC(the sheet I purchased) is worlds stronger than MDF. This is particularly important when making the smaller components, as MDF simply isn’t tough enough to make things like router to frame mounts or bearing holders. You’ll find that having a sheet on hand for random small parts is a huge frustration saver. I initially purchased a 12x24x3/8″ sheet of PVC from Amazon for $22, and can’t tell you how glad I was that I did.

In order to drive the machine, you have a bunch of choices but need to be careful here as its easy to cheap out if purchasing based on features alone. By this, I mean that a $300 Gecko G540 really does the same thing as a $75 generic driver board from China. They both take the pulse stream coming from the controller software (EMC2 or Mach3 typically), break them out, distribute to the individual motor drivers and ultimately drive the unit. The difference being reliability, consistency and support. I went back and forth on which type of unit to purchase for quite some time, and ultimately ended up purchasing a G540(Gecko) based on the overwhelmingly positive feedback I had read regarding the unit. I personally envision doing a little bit of contract work with the machine, so the last thing I need is my Chinese driver board frying and having to wait 3 weeks for a new one to arrive. With the Gecko unit, you get an American made piece of equipment, with US based support and the piece of mind knowing that the product you order is going to work. I’ve read some forum discussions where people say their TB6560(a common driver chip made my Toshiba) based generic boards work fine, and others that say they can’t get consistent signal interpretation to save their lives. Imagine how pissed of you would be if your job is 50% complete and your $75 driver board craps out. Not only have you wasted all that time, but you’ve also wasted $$ on the stock that is now ruined. So, just my opinion, but just pony up for the quality pieces of hardware and save yourself the inevitable blood pressure points!

To save a little bit of money, I purchased my G540 in a bundle which included 3 Nema 23 300oz motors and a copy of BobCAD/CAM for $406 shipped. For what is worth, BobCAD/CAM V21 sucks and is completely un-intuitive to use. Maybe I’m just impatient, but I prefer programs which make sense. As far as motor selection, I really didn’t know where to start. I knew I wanted Nema 23 framed motors due to the availability of mounting hardware. Actually, I wanted Nema 34 framed motors as I had this idea that I needed monster(1000 oz’ish) torque, but due to the current limitations (3.5A per motor) of the G540, I had to purchase lower power Nema 23’s. As it turns out, the 300 oz motors are more than capable of driving the machine at acceptable speeds with a 24V power supply. Believe me, I’ve tried to hold an axis in place while the motors moved it, and couldn’t even slow them down. In order to drive the whole system, I purchased a run of the mill 24V switching power supply from Ebay for ~$55. Despite being relatively cheap, which I was concerned about, the voltage the unit puts out is a very constant 24.6VDC as measured by my digital multi-meter. I consider this a feat as the AC supply voltage bounces around from ~121.5-123VAC.


In addition to the 24V power supply used to run the stepper motors, the Gecko G540 also has several lower voltage auxiliary outputs one could use for anything. I happen to use mine for two purposes, to drive a couple of 120mm PC case fans to cool the control box and to provide the input signal to the relay which opens a 120V circuit. The relay’s which are commonly available have wide input voltage requirements, I believe mine can accept anything from 3-32VDC, so the determining voltage was the PC case fan requirement, which happens to run on 12VDC. I didn’t want to spend the money on another expensive switching power supply, so I just bought a cheap replacement LCD monitor power supply from Amazon for $9 and cut off the end, exposing the positive and negative conductors…problem solved. Just a side note when constructing a control box…its always a good idea to have indicator lights on things to make sure they’re working, so keep that in mind when shopping for components, it really helps when you need to diagnose a problem. My case fans for example, have these Blue LED’s that are supposed to be for show, but would aid in letting me know if there was an interruption in the 12V supply.

I believe that’s it for the “major” components, i.e. the ones which you can easily identify as necessary up front. That doesn’t mean that I didn’t take dozens of trips to Home Depot for MDF and numerous misc fasteners. Speaking of which, I highly recommend purchasing your fasteners online, especially the specialty ones you’ll need alot of. For example, each of the bearing blocks has four mounting holes, threaded to M5x.80, not a standard thread in the US. 12 blocks x 4 holes = 48 machine screws necessary, at Home Depot they come in the specially drawers in two packs which cost ~$1.50 each, so were talking $36 just for bearing block screws if you bought them retail. I purchased online for $8/pack of 100. Same thing with thread inserts, you’ll use allot of them, especially if you plan to build your machine to ever be disassembled. I bought a pack of 50 10-24 inserts(and used every single one) for ~$5.00 on Amazon.com. At Home Depot, they only come in 4 packs and cost ~$3.00 each, $37.50 at retail.



Very important, when building a CNC from scratch with no plans, start with the least dependent component and work backwards. Let me explain, the X axis width, for example depends on the Y axis length. If you were to construct the x axis first, without knowing EXACTLY how wide your Y-axis was going to be, you’d be in for allot of rework…not ideal when this project will take a long time anyway. Instead, start by constructing the least dependent variable first, probably your router mounting plate, then work backwards to your Z-axis, Y-axis, etc.

You can see in this photo how I adapted my router to the movable Z-axis, basically with an adapter plate which bolts on to the Z-axis with 3, 1/4-20 hex cap machine screws. Its a good idea to construct it this way for a couple reasons. One, the entire assembly will be much heavier than you expect. So when you’re trying to line up the very picky bearings to slide them on the rails, its allot easier to do when the object you’re lining up is as light as possible(with the router removed). Two, if your router ever has a problem, you don’t want to be in the position of disassembling your machine just to troubleshoot one component.


Here is just a general construction tip; when installing anything in MDF near the edges(or on the sides) clamp the crap out of it near the insert prior to insertion. This will keep the MDF from splitting while your doing your threading. Speaking of MDF, I’ve actually grown to dislike it very much, the only thing I believe it has going for it, is its ability to be easily machined. Other than that, it doesn’t hold screws very well and splits all over the place. I plan on building my next machine out of something different. And, along those lines, not all MDF is created equal. The 4×8 sheet I bought at HD was decent. I needed a bit more(after also using it for shelving) so I went to the same HD and bought a 2×4 sheet, apparently made by a different manufacturer. The second sheet was total garbage, so just be careful. I returned it and my girlfriend, in her words “judged me pretty seriously” for returning used wood…ha!

One thing you must be very aware of when constructing a machine like this, is the absolute necessity that things line up correctly. For example, if your lead screw and two support rails are not all perfectly parallel, the machine will stall. To help overcome this, I recommend a couple things.First, drill all pilot holes which will have bolts or machine screws through them one size larger than needed. If, for example, you need to insert a 1/4″ bolt through something, drill a 5/16″ hole, this will help you visually correct any misalignment which will surely make its way into anything made by a human by hand. Second, on all “mated pieces” (the top and bottom section of the axis for example), drill any pilot holes concurrently by lining the pieces up, clamping them together, then drilling through everything at once. This will ensure that all holes mate perfectly.

The Z-axis was by far the hardest axis to construct. One, because I didn’t really know what I was doing, and two, because everything on it was small, so less room for any error. I’ve provided a few photographs below…

Z-Axis Close ups

As for the X&Y axis’s, they were pretty easy by comparison….

X&Y Axis Photos
This is the back of the Y-axis. Notice the 3/8″ channels I routed out for the 1/4″ threaded rod which runs the entire length and “clamps” everything together
Y-Axis sitting nicely atop X-axis for the first time
Y-Axis support stanchion freshly cut. Note, the “curve” is due to the fact that you’ll want your Y-axis to be able to overlap the back of your X-axis travel, otherwise you’re giving up valuable X-axis travel!
The machine together for the first time. I added the two pieces of 1-1/4″ PVC on the outside of the X-axis for added torsional stability, and to help keep the ends of the X-axis firmly in place…you’ll notice they’re painted blue in later photos, just for aesthetics.

The last piece I had to put together was the work surface. I thought it was going to be pretty simple, and it was for the most part. I obviously wanted some method of holding work firmly to the surface while it was being machined. To accomplish this, I purchased 2 36″ lengths of T-track from Amazon for ~$15.00 each. When going to T-track route, which I would recommend, make sure you get “universal” T-track that accepts standard 1/4″ bolt heads. I noticed there were some out there that had a proprietary channel, so just be careful. To install, I simply routed a 3/4″ wide groove into a 25.5″ long piece of MDF and glued the T-track in place with Gorilla Glue..good stuff BTW. The excess was just trimmed off on my miter saw, FWIW, aluminum machines sooo nicely, it will be my material of choice for future projects. See below…

T-track installed on the work surface. The square tube below the work surface is 3/4″ steel square I bolted to the back of the work surface for rigidity as the surface flexed too easily prior to installation.

In terms of adapting the lead screws to the moving parts of the axis’s, I had more trouble than I expected to. The fact the height of the supported rails dictated how much space I had to work with, caused much aggravation as the lead screw nuts barely fit under the moving parts, leaving very little room for the necessary adapting hardware. I came up with the little contraption below, that adapts the lead screw and then bolts to the carriages…

This was another example showing the necessity of having some PVC sheet lying around. The dimensions were simply too small to have done this with MDF, as it would have split or broke under the relatively large load this small device has to take.

I think that about wraps up my construction photos…last step, installation and testing…


Installation and Testing

I have to admit, I thought that once I got this thing installed in its little shop, I was pretty much home free. In fact, learning the CAM(computer aided manufacturing) software was probably the hardest part. Just one little tip for those just starting out with Mach 3. The software recognizes two sets of coordinates, the machine coordinates, which never change, and the stock coordinates which change and need to be zeroed depending on where on your work table you clamp your stock down. Just a hint, but take a look a the myriad of videos that Artsoft provides regarding homing and coordinates.

After several weeks of on and off work, I finally have my CNC router installed in the small work space I constructed for it!…yay. I do want to point out the importance of lubricating your moving parts. If you notice the tube of “Ultra Lube” on the right side of the photo, that is a high quality white lithium grease. After using that on the lead screws and shaft collars, the machine defiantly ran noticeably smoother.
This photo shows the control box I built to house the machine’s electrical components. It houses, the Gecko G540 controller, 12 and 24V power supplies, Solid State Relay and a couple of power terminals. The two switches above the router speed control are 12 and 120V power overrides, so I can turn on the case fans and router without input from the control box. Obviously, the big red button is the machine’s Estop switch.

P.S. I know its a bit of a rats nest in there right now, still working on cleaning that up.

This photo represents my very first use of the machine. Without any G-code loaded, I was so anxious to try it out I just turned the router on manually and started jogging it around
This screenshot is actually from MeshCam. I’m currently on the fence about the program. In terms of usability, I feel its by far the easiest Cam program to use, at least of the ones I’ve tested. However, its functionality is a bit limited compared to some of the other programs.
And here you have it, the culmination of several week/months worth of effort putting this thing together. Naturally I had to show some love to my website!