A new CNC router was certainly not in the budget, but with lots of reuse, patience, and a few small purchases, my DIY CNC works! I can cut out and engrave things with computer control. You can certainly do better with more expensive components, but this project has given me the chance to learn a lot about CNC machines without spending a lot of money first.
A friend gave me his radial arm saw when he upgraded to a new miter saw and didn't have space for both. I had seen a CNC router made from a radial arm saw on YouTube and decided to give it a shot.
For now, I'll summarize what I did. I hope you find it helpful.
Before you try any of this, read up on woodworking and power tool safety, then proceed to Step 1...
Step 1: Begin With the End in Mind
This video gives a quick tour of the finished CNC router and all its major components.
Step 2: Materials and Tools
I did a lot of "use what you have" design of this machine. If you find clever ways to reuse old stuff for a similar project, please post it in the comments. You may have to buy some things that I already had lying around. If you do, try browsing your local thrift store, or look online.
For me, some of the items were reuse:
- Radial Arm Saw (Mine has convenient tapped holes in the bottom of the motor assembly that were originally used for shipping.)
- Cookie Tin
- Old Laptop power supply
- Old PC
- Parallel printer cable
- An old plastic toboggan
- I already had a trim router like this one: Amazon
- Obsolete non-standard phone chargers for use in the car make great voltage regulators for low-power control components and what else were you going to do with these anyhow?
- Abandoned printers (I have collected several of these from various sources, including friends, my alley, the curb, freecycle.org)
- An extra cabinet drawer my wife gave me when we moved. You can buy one like it: Amazon
- Miscelaneous screws, nuts, cotter pins and other hardware from countless DIY home improvement jobs
- Scrap 16mm plywood and 4mm hardboard
- Scrap angle and channel from steel shelving
Others I had to buy:
- Drawer glides for the Z axis Amazon
- 7+ Sealed deep-groove ball bearings Amazon
- NEMA 17 Stepper motors Amazon
- 5mm To 5mm Flexible Coupling Amazon
- 3+ drivers. I recommend a few spares: A4988 StepStick Stepper Motor Drivers Amazon
- 6+ Limit Switches Amazon
- I bought a separate graphics card to reduce latency Amazon
- I bought a separate parallel port card thinking that, if I fry it, I might just have to replace the card Amazon
- For my lead screws, I used 1/4-20 threaded rod, a very common thread size in the US. This is close to 6mm, which would work fine if that's more available for you. I recommend buying these from the local building supply store. I rolled them on the floor at the store to check straightness first.
- Coupling nuts for the threaded rod
- Lots and lots of Gorilla Glue Amazon
- 3 Cat5 patch cables Amazon
- 3 Cat5 sockets Amazon
- Solder Amazon
- Solder flux Amazon
- Pre-tinned wire Amazon
- Perforated prototype board with copper dots Amazon
- Female headers Amazon
- Conformal coating Amazon
- Heat-shrink sleeving Amazon
- Zip-ties Amazon
- Grease for the lead screws Amazon
- Soldering iron Amazon
- Heat gun (for heat-shrink sleeving) Amazon
- Various saws, table saw (Amazon), hack saw (Amazon), even the radial arm saw for some things, although I don't recommend it for ripping
- File for breaking sharp edges of cut metal Amazon
- Wrenches, screw drivers, etc. Amazon
- Hand drill (Amazon) and drill press, if you have it
- Tap set Amazon
- Sand paper Amazon
Tooling I bought for using in the router:
Step 3: X Axis
For each of the three axes, you need to restrict motion to one direction and control the position with a motor and, in this project, a lead screw (first photo). As I mentioned earlier, I used a wire drawer made to mount inside kitchen cabinets. It makes a convenient stage for the workpiece to rest on while the router is cutting it. The weakness of this approach is that it's not very stiff in the Y direction. I improved on this by mounting bearings on the table where the sides of the drawer ride against them (second photo).
I extended the range of motion by removing the rubber stops and bending their supports out of the way. To drive the motion of the drawer, I mounted a coupling nut to the bottom of the drawer with a p-clamp (third photo). I drilled a hole through the clamp and nut big enough for a short screw to self-tap it's way in. I added a little glue to the screw threads to keep it from loosening. Make sure the screw and the hole don't interfere with the nut's threads. Make sure the lead screw turns freely in the nut.
I mounted the lead screw with a bearing on each end mounted in bearing blocks I made from hard board pieces joined with gorilla glue. I mounted the blocks in a channel of hard board. I mounted the motor on a bracket of hard board and joined it to the lead screw with a flexible coupling. I used 5mm x 5mm couplings so I could drill and tap one end to thread onto the lead screw. The coupling has set screws on both ends to keep it from slipping. The motors had round shafts so I ground small flats on the shafts for one of the set screws to hold.
The last critical piece of the axis is mounting the limit switches to the table where the nut reaches at the extreme ends of the drawer travel. I glued a piece of hard board to the bracket holding the nut to the drawer so it trips the switches.
Step 4: Y Axis
The motion of the Y-axis is controlled by the sliding rail of the saw. The trick to using it for this project is to mount the lead screw nut on the carriage. Fortunately, my saw has lots of useful threaded holes for this purpose. On both sides of the top of the carriage there were plastic covers held on with screws. Bingo! I removed the plastic covers and made a bracket of plywood to reach the holes at the bottom, reach over the top of the arm, and fit around all the protrusions. I added a couple of old pulleys on top of the bracket to add a counterweight for the router, but it wasn't needed after all.
Like the X-axis, I drive the carriage with a lead screw. The nut is attached under the plywood bracket in a similar way. The lead screw bearings and motor mount were reused from an old printer. The printer used a gear train so I attached the output gear to my lead screw by drilling a small hole through the gear and screw and installed a cotter pin. The bearing brackets required additional support for stiffness, so I built up some support with wood on the motor end and added a steel channel between the brackets. This lets me put a little tension on the lead screw. Limit switches are mounted at each end.
Step 5: Z Axis
My saw came with threaded holes for shipping, which are conveniently located on a flat surface that can be turned vertical as shown in the photos. I mounted a wood base to this surface, which holds the drawer glides, motor, bearing block and switches. I made a simple stage of plywood to ride on the gliders, driven by the lead screw. A separate router mount is bolted on, which may let me attach other kinds of tools to the CNC in the future.
Step 6: Driver Box
A big piece of this project is wiring. I made a lot of my connections in a box made from an old cookie tin as shown in the photos. Inside, I mounted the three drivers on a perforated prototyping board and soldered connections with wire to the copper dots on the back. I have attached a breadboard-style illustration showing the main inputs and outputs. My input power is an old laptop power supply. I use a couple of obsolete phone chargers to regulate my 3.3V for the drivers to match my parallel port card, and 5V to drive a small cooling fan I harvested from an old printer.
Since the drivers send no more than 2 Amperes, I got away with using Cat5 patch cables and sockets for motor power as well as for switch inputs. The parallel port on the bottom was removed from an old printer, too. I added a power switch on the side of the box to shut off all the power to the motors.
In the attached images, there is a wiring diagram and a table of parallel pin designations copied from the documentation for LinuxCNC, described in the next step. I used most of these pins in my project.
Step 7: Software
The computer runs LinuxCNC, which you can download free as a DVD image and includes the operating system and the CNC software. LinuxCNC supports many more sophisticated control systems. I am using the most basic parallel port control, which is well documented and can be set up with a wizard. The main limitation is the speed your computer can generate steps for the motors in real time (due to latency), a topic which is also fairly well-documented on their web site.
I found this program very helpful when troubleshooting connection issues from the computer to the limit switches: Parallel Port Tester.
To create the tool paths, I use more open source software (you will notice a trend here): I use PyCAM to generate the g-code. It's very useful, but you have to hunt for help on how to run it. Check out my next instructable on creating an engraving program using all Open Source Software.
I make 2D paths for engraving using Inkscape. PyCAM also makes tool paths from 3D .stl files, but I haven't tried it yet. I'll say more about that later, if I get the chance.
Again, I hope you find this project helpful. I have learned a lot and had great fun in the process. It is very rewarding to see the thing I made making things. I especially enjoy getting new life out of old hardware that would have been junked otherwise. Please post questions and comments, which I will do my best to answer.
You can find more of my projects at www.ChipsWoodShop.com.