DIY Arduino 3-Axis Bench Top CNC Machine

Hey Guys,

So I am a noob pretty much, but I want to make a bench top CNC machine, milling area of ~12"x12"x6". So I have done a lot of research but there are a few things that I haven't been able to get exact details on. First thing is if I want to machine aluminum as the hardest thing I would mill, what is the minimum oz-in rating I should get my stepper motors at? What would be the best motor driver to use? (Not to complicated to wire and have a high enough power rating to run my steppers) I am thinking of using a L293D...? What type of mill/router should I get. (Links are nice) I have access to a superior machinist and a machine shop so building the rig shouldn't be a problem just material costs. Any tips for this would be nice. So far gonna use aluminum ceramic coated rods as guide rails and ACME screws on the steppers. I am using an arduino Uno with the Gcode interpreter from the RepRap system.

Thanks any other tips would be appreciated.

"what is the minimum oz-in rating I should get my stepper motors at?"

That really depends on the size of the bits, cutters, drills, etc you plan to use. I would imagine cutting larger surfaces would require a bigger motor than just milling out 1 oz copper clad.

"What would be the best motor driver to use? (Not to complicated to wire and have a high enough power rating to run my steppers) I am thinking of using a L293D...?"

Picking the driver first kind of limits your motor selection doesn't it?

"What type of mill/router should I get." Isn't the point of this exercise to be making that? Or am I missing something?


There are many, high quality CNC projects which will likely be of more value. There are even projects built around the arduinos.

rymanvw: what is the minimum oz-in rating I should get my stepper motors at?

As CrossRoads pointed out, there isn't a single good value here. The coarseness of your lead screw or what other mechanism you use to manipulate your CNC will be of significant consideration. The other thing to consider is the torque holding rating for your motor in question. If you have a very coarse lead screw setup, or especially a direct drive system of some type, you'll need far more powerful motors.

As it happens, my brother is currently building his own CRC machine. He's already purchased his mill and it was just delivered. He's currently looking at 400-oz/in NEMA 23 motors which hold roughly half that. But his mill isn't a desktop top unit either. From what I've seen, motors at or over 400-oz/in rating get rapidly more expensive.

Realistically, you can likely get away from relatively small motors but your feed rates will likely be more limited, especially if you progress past aluminum. For hobby/home type CNC work, even a terribly slow feed rate shouldn't be that big of a deal. And even beyond that, the HP of your mill motor and the size/quality/lubrication of your bits will also be factors in your feed rates. Accordingly, these should all be looked at before you starting buying. As an example, if the difference of a hour or more for complex projects isn't a factor for you, there is some money to be saved. If on the other hand speed is important, be prepared to purchase beefier parts.

Something to consider when looking at your CNC, is that many of the DIY kits which include a power supply, IMOHO, provide the absolute minimum required power to properly drive the motors. So do spend some time looking at the load of your motors to make sure you have enough power to push them as needed. If you have a need to drive all your motors at the same time, you may find your self surprised. From what I've seen, most power supplies can only drive one motor at full power and others at considerably less. Of course, it doesn't actually work out that way, which means frequently none of the motors can ever produce peak torque ratings. This can become even more profound if you're planning on running your mill/router/drill off of the same supply.

I had a little more time to follow up now.

Try looking at the following projects:
Grbl - An Arduino CNC gcode controller

This is just the tip of the iceberge. Also, Ebay is your friend. If you shop hard, you can find both fairly inexpensive kits and individual parts, frequently from Asia, to create your own CNC machine. Again, pay attention to provided power supplies.

And if you’re new to CNC, make note if your controller can be easily extended to drive things like lights, cameras, oil spray/misters, limit and emergency stops, so on an so on. Think about what’s involved in manual tool/bit change. Ask yourself if the design actually prevents noise from starting the bit from turning while your hand is on it. Accordingly, make sure you include such manual interrupts to ensure you can safely perform bit/tool changes. A bit at 3000-6000 RPM will sure ruin your day in a hurry.

Next, ask yourself if you prefer a parallel port or USB port. Officially parallel ports are now obsolete. This leaves you with either old computers or USB <-> parallel port interfaces. Understand not all of these conversion ports are created equal and some require special USB drivers for Windows. So educate yourself about the potential headaches down the road. And don’t rule out Linux as an option. In fact, many like it because of USB driver support and no licensing fees. The down side is that the Linux CAM solutions I’ve seen all require the use of the non-stock real time kernels (RT).

After that, you’ll want to start research the many available CAM solutions. I don’t remember the cad/cam solution my brother finally settled on but he did look at something around a half dozen different combinations. I do recall he spent a couple hundred dollars on his CAD solution. One of the other complications he had is that he’s been looking hard at 4-axis solutions. Last I heard, I believe he finally settled on a 3-axis solution with a manual, sub-degree resolution, 4th-axis.

And if anyone cares, his planned first project is an aluminum AK-47 lower receiver.

CrossRoads: "What type of mill/router should I get." Isn't the point of this exercise to be making that? Or am I missing something?

That would be just the actual milling head, i.e. an assembly of a motor and a tool collet, which could be done with a router, or even the head on a drill press. In fact, some people do little bits of machining on a drill press, using a cross-slide vise. I've never tried it, but I think that with the speed control I have for my router, I could do plastic. Not sure about aluminum or brass.

Just noticed that mdfly has shaft couplings

I suppose those could come in handy as well, I recall reading about them on GrumpyMike’s CNC project.

I would strongly suggest checking out and looking at some of the many build logs that are posted there to get ideas. You will find dozens of examples of everything from benchtop machines built from Home Depot hardware to sophisticated 5-axis rigs. I spent a good 6 months studying the forums there (with very little electronics knowledge but a bit of machinery experience ) and was able to build a machine that filled my needs and fit my budget with very little trouble.

As far as choosing components of your system, you should first of all determine what kind of cutting forces you anticipate, along with the desired cutting speed and use this information to size your motors. From there you can choose appropriate drivers and power supply. This link would be helpful in this

I doubt an L293 would be sufficient for the size motors you would need. For drivers that would be appropriately sized for what you would need if you're cutting aluminum, I would suggest buying them. Pololu has some very affordable driver boards that would be suitable for a small machine. If you're really dead set on building your own, check out where you'll find a number of proven designs for drivers as well as breakout boards.

A small router is probaby your affordabe choice for a spindle. A lot of people like the Bosch Colt, but small trim routers from Porter-Cable or DeWalt are also popular. Just make sure it has a good speed control if you want to machine aluminum. I use a,or.r_gc.r_pw.&biw=1024&bih=545&um=1&ie=UTF-8&tbm=shop&cid=4659105001687453144&sa=X&ei=5RsqTs2wLcaOsQKwuMC9Cw&ved=0CGQQ8gIwAg which has an excellent feedback control system, though it may be a bit large for the size machine you describe. Any of the routers I listed can be fitted with aftermarket collets which will vastly improve the runout: Although my machine is primarily for cutting wood, I have done a fair amount of light aluminum machining with good results.

Good luck with your project. Just remember though: CNC machines can be addictive!

Yankee: I would strongly suggest checking out and looking at some of the many build logs that are posted there to get ideas.

Ooooh this is not a good post for me to read. :)

I've thought, on occasion, that I wouldn't mind having a Sherline mill. The thought of being able to just use my Porter-Cable, with a precision collet, and build a small milling machine is very tempting. Home Depot parts eh?

One of the guys in our club built one from scrap parts, and his build is detailed here. We were fortunate to have him and another involved in these sorts of things, give a rundown on them.

I've always been interested, but having seen and heard from those who have been before, Ebay might be a really good place to start. Aparently as you tackle one problem, the next turns up, and the investment can become exponential.


Okay so I have decided to gather all of my proposed components for my CNC machine build. Please let me know if I have forgotten anything.

General Specifications:

Approximate machineable area 33"x15"x7"

Able to machine wood and aluminum (at reasonable speeds but not fast or anything)

Accurate to 0.001" with repeatability.

Things I have already have:

Arduino Uno (Bought)

3 x NEMA23 bipolar stepper motors 270 oz-in @ 300 RPM (Bought)

3 x L298N 46 Volt 4 Amp max load (Bought)

Things that I am still debating:

Power supply either build my own or buy this one KL-600-48 48V/12.5A 115V /230V

Linear shafts and linear motion bearing Items #1, #2, and #3

3x double wall ball bearings

6x limit switches (2 per axis)

Here is a model of my proposed machine:

Aluminum is 6061 Alloy

Steel ACME 1/4"-20 precision screws [url[/url]

Not all peices are modeled as there final result changes will be made to the main traverse guide rail system using linear motion bearings.


Arduino loaded with this gcode interpretter:

CAD: Solidworks CAM: CAMBAM?

Approximate machineable area 33"x15"x7"

That is quite big, it will put quite a constraint on your mechanics.

3 x L298N 46 Volt 4 Amp max load (Bought)

That chip is only 2A per channel and your motors take much more than that.

Did you see my project:-

Power supply either build my own

Don't even think about that, building your own high power switch mode power supply is not a thing to undertake lightly.

CAD: Solidworks

Quite expensive and very steep learning curve.


Good choice if you run a PC.

That chip is only 2A per channel and your motors take much more than that.

Did you see my project:-

What driver would you suggest to use? I don't want to buy a geko or something like that they are very expensive and I feel like I can make a similar (less fancy) chip for a fraction of the cost. It will basically be something that works. If I dont make my own I was thinking of using this one

my motors say they are rated at 2.8 amps, I have tried asking if that was per coil or the entire motor but I haven't gotten a response from the manufacturer yet.

The rating is per coil not per motor, it always is.

Looking at your machine design I can see a very important omission: there is no thrust bearing to take the load of your screw. The motor is not designed to take axial loads so it needs a thrust bearing of some sort on the drive end of the screw. The motor should be attached to the shaft either with a zero-backlash coupling such as this: or a cogged belt. These mechanical details are essential if you want a machine to reliably hold .001 inch tolerance. I think the 1/4"-20 screws are way too "slow" and too small a diameter. You will limit the speed of your machine to an achingly slow rate. The small diameter will cause "whipping" on an axis of 33". I would choose at least a 1/2"-10 Acme screw. You don't mention what sort of nut you plan to use with your screw but they need to be a zero-backlash type such as these: I agree that an L298 driver is a bit underpowered for you motors. I would want at least 3 amps. I'm sure you're on a budget just as I was when I built my machine but resist the temptation to go too cheap. You will likely not achieve the results you want and end up spending even more in the long run. For a first machine I would go with a proven designs such as Joe's CNC , a Solsylva machine or one of designs. There are plenty of homebuilt designs out there and you will save yourself much "reinventing the wheel" mistakes by using one of them. Again, I would point you to CNCzone as being a much better resource than this forum for CNC information. I agree with Mike that CamBam is a very good choice for a CAM program. You can even do basic draftin with it. I've been using it for 2 years to produce G-code from my Autocad drawings and it has consistently produced good code.