[ Log In ]
[ Register ]
Alden G's CNC Machine and Narrative
I have seen many builds based on the step-by-step instructions on this site, but when I see the the DIY community start to mix the ideas of one CNC machine with another, I get really excited. To take a machine and introduce concepts from another machine, like timing belt mechanics, is clever and welcome. Alden also is very creative with where he positions the drivers.

The narrative below is completely from Alden and I hope will help others embark on similar builds. Pay special attention to the recommendations on the details of the build. He gives very helpful hint on methods resulting from his trials.


I started researching what exactly G-Code was in conjunction with CNC machines for a friend back in February 2010. Very soon after that I found Patrick Hood-Daniel's wonderful world of BYO CNC web site along with many others. The CNC bug had started to get a hold of me.

I'm a big DIY'er from a way back. I used to design and build ion gas laser graphics and special effects projectors along with control electronics and computer graphics control systems to control them. I've used Bridgeport mills and really nice metal lathes to machine aluminum parts for the projector closed-loop scanners and optics mount works. We always used to dream of having CNC controlled enhancements on the mill and lathe (although back then I had only the most basic understanding of what that was, e.g. computer controlled automated tooling.

I'm certain that if it weren't for Patrick's devotion and tenacity through the years of his research, building and yes, posting his "time stamped" DIY videos (time stamped in terms of watching his family and “work shop” grow in the background), it would not have been nearly so easy for me to journey down this path. Thank you, thank you, thank you Patrick. And thanks to all others whose Internet posts are allowing others to learn and benefit. After much inspection of Patrick's machines and those on YouTube CNC videos, I decided to base some of my design on Patrick's blueChick 3.0 machine. Although, I opted to use the less expensive aluminum angle rails and bearing trucks for my first attempt.

And so it began

At the end of March I started sketching, pencil on paper, the Z-axis components, then the Y-axis components and soon I resurrected my old copy of AutoSketch 6.0 and completed a 3-view design (but at the very end switched to AutoCAD 2010). As the design was in progress I would order or buy locally the mechanical items, and acquire their dimensional specification. I created part symbols for the bearings, angle aluminum, bearing trucks, bolts, stepper motors, drive amps, power supplies in AutoSketch so I could accurately determine their locations, alignments and clearances from other objects. My design goal was to achieve a usable 13" x 28" XY table which I exceeded (yeah!).

A word on bearing truck fabrication: It is really, really, really, really important to accurately drill and thread all four bolt holes in each bearing truck and to make the angle aluminum length cuts perpendicular to their length and smooth. Hint: Clamp the angle firmly in place against the backstop of a radial arm table saw. Measure and scribe drill hole center lines with a digital micrometer. Accurately center-punch each hole center using a spring loaded center punch and magnifying glass if necessary. Use a drill press and start with a very small drill, gradually using a successively large drill bit (at least 3 sizes to final diameter) with the angle clamped firmly down. Tap the 5/16” bolt threads with the tap in an unplugged drill press, TURNING THE CHUCK BY HAND (half-turn forward, then reverse, repeat) to insure the threads are made clean and perpendicular to the aluminum angle side. Through April and May I cut, drilled, re-cut, re-drilled, tapped, assembled and re-assembled (countless times) the parts of all three axis until it was right and worked. The basic construction uses 3/4" Maple 5-ply from Home Depot. The X-table has three longitudinal stiffeners and a mid-span lateral stiffener. The Y-gantry rail plate has a doubler. Plywood has two coats of polyurethane. I used flexible 1/2" conduit from Home Depot for cable management and service loops. On one underside of the X table's outside, longitudinal stiffener, the conduit runs down the stiffener and is held by cable clamps from start to the mid-point. The remainder of the conduit is free to flex into a lengthening and shortening u-turn, terminating into a clamp on the X-gantry motor plate. Where the conduit flexes within the X-gantry bottom plate width, I added a rounded aluminum cover over the timing belt, pulley and idler bearings. This excludes the conduit service loop from the drive train. In addition, there is a 1/8" steel rod that runs outside the timing belt cover, end support-to-end support, and parallel to the timing belt and above it to keep the conduit service loop away from the belt not protected by the aluminum cover. There were times I had to wait on parts to arrive and couldn't do anything more until they did so I used that time to get familiar with CamBam and Mach3. Wiring began the first week of June and took about 1 week altogether. Many more holes were drilled through plywood components trying to find the best route for conduit and cables but not all were used. It is called trial and error.

From my electronics and computer design background, I knew that if I kept all my wiring as short as possible, kept TTL signal lines short and away from high current path loops, I could use unshielded cables. The most egregious wires to avoid were the stepper motor coil leads. To achieve this I mounted all stepper drivers near their respective steppers. I mounted the 36V regulated switching power supply on the X-gantry motor platform (under the table) next to the stepper driver so they moved with the X-gantry and minimized all my 36V and Gnd leads to the stepper drivers. BTW: 8-conductor flat lead that is crimped into an RJ-45 connector would be perfect for running the TTL signals. And using the RJ-45s might provide a neat way to provide disconnection points to easily unhook things without a big fuss. The only cabling I had to manage within flexible cable conduit service loops were two 3-pair, 24 gauge cables from the I/O board to the X-gantry. One cable ending on the X-motor platform with XY limit switch, 5v and X step and direction signals. The other 3 pair cable (plus one more wire) continued up to the Y-gantry. With the X driver and power supply next to each other, all that had to be routed along with the YZ data lines up to the Y-gantry were four 16 gauge silicon 36V leads (2-V+ and 2-Gnd). I used Anderson Power Pole 15 amp uni-sex connectors with the silicon leads at the power supply disconnect. I also added a 3amp fuse and holder in each V+ line to the drivers. Adding a 6.5amp Slo-Blo fuse on the 115Vac input to the power supply is on my To-Do list, along with adding a plexi-glass dust cover over the parallel breakout board.

I used one travel limit-switch per axis and mounted each switch in the center of its axis of travel. At either end of travel for each axis are mounted adjustable triggering tabs that depress the limit-switch lever. All three limit switches are wired in series (OR'd) back to one I/O input. I used JST connectors at each switch.

I started out using a 5/16” x 18 all-thread rod for the Z-axis drive and a form of anti-backlash that seemed usable but changed it to an ACME lead screw and real anti-backlash nut. As this was a retro-fit I mounted the anti-backlash nut so it was recessed into the Z-box back wall so I wouldn't loose any travel and avoided mounting the whole she-bang on the side resulting in lose of Y-gantry travel. I've upgraded the steppers in this photo since I took it.

The eStop switch uses a 2nd I/O input while the X, Y & Z Auto Tool Zero touch plates uses a 3rd I/O input. I use the Auto Tool Zero macro button for Z and the G-Code macro button for X & Y. That is as fancy as I have gotten thus far.

So far this all seems to work well. I have had no signal interference of any kind on the stepper driver or limit switch controls. Motors run smooth with no loss of steps, control and drive signals look clean on an O-scope and I didn't have to change Mach3's limit switch debounce defaults.

So now, I've finished my first (or as we like to say) Final-Before-Last (FBL) 20" x 40" CNC mill project and now I am debugging and running through very simple milling and cutting tests and trials. The XY position repeatability and accuracy tests with a dial-indicator are better than .00075". Z performs a bit better (no pun intended).

After doing the dial indicator position repeatability check recommended in the Mach3 manual I etched out a 14" x 30" work space grid on 1" centers to a depth of .05" on my sacrificial 3/4" MDF board with my Dremel tool. Doing this also revealed where low or high spots were on the table and gave me a good idea of how to spec my surfacing routine. I used Mach3's "Surfacing with tool down in Y" Wizard and what a time saver. It took about 4 hours using 10/10 for feed and plunge rates with the Dremel's 1/4", 2 flute mill bit but did a very respectable job. I milled down to -0.0185" in one pass to get a flat work surface. Now I've had my Model 395 Dremel for years and it probably had less than 10 hours of use on it. After surfacing the front bearing had quite a bit of side play. The short of it is, it wasn't the front bearing but the motor housing recess that holds the bearing in place changed shape. I wrapped the outer bearing with 1 1/2 wraps of aluminum duct tape and eliminated the slop. Now it is good to go again.

I'm using my Dremel to test with before I mount my Porter Cable 892 router. Plus I had to have my table working so I can cut out the PC mount with the Dremel. Good thing too, for today I forgot to clip on the ground lead to the Dremel mill bit when zeroing the Z axis and drove the bit into middle Earth, forcing the Y-gantry to places it wasn't meant to go. All was fixed with a bit of Elmer's glue though. Yeah plywood!

General Specifications

XY Table overall dimensions - 20" x 40"

XY Usable dimensions - 14.5" x 30.4"

Z-axis maximum travel - 3.5"

X,Y,Z travel limit switches implemented

X,Y,Z AutoZero Tool touch plates implemented w/VBA scripts

Changeable Router Mounts - (Dremel, Porter Cable finishing router, etc)

Overall Height - 26.5"

Table materials - 3/4" (.7145") Maple, 5-ply plywood

XYZ Rails - 3/4" 90 deg. angle aluminum

XYZ Rail Bearing Trucks - AEBC1 5/16" I.D. Skate Bearings on 3/4" aluminum angle

Plywood Joining method - 1/4-20 Barrel nuts (corner fasteners) or wood glue and nails


CamBam Plus - licensed - Version [Beta 0.9] Rel 7f

Mach 3 - licensed - Version R3.042.038

Computer I/O

CNC4PC Model C10 Opto-isolated Parallel Port Breakout Board - provides Step & Direction control for XYZ axis steppers, inputs for XYZ position limit switches, XYZ Auto Tool Zero touch plates and Emergency Stop button.

Drive Mechanics

All stepper motors are Keling NEMA 23, 4-pole (coil) unipolar / bi-polar types wired bi-polar/parallel configuration.

X&Y are driven by 425 oz.in. stepper motors, 1.8 deg./step, 200 steps/turn

Z is driven by a 185 oz.in. stepper motor, 1.8 deg./step, 200 steps/turn

X&Y-axis uses 3/8" wide, .2" pitch, timing belt with 14 toothed timing belt pulleys resulting in 1142.86 steps per inch, with drive amp set to 1/16 micro-step.

Z-axis stepper drives an 3/8" diameter, 5 pitch (10-turn, 2 starts) ACME lead screw into an anti-backlash nut, at 4000 steps per inch, with stepper motor drive set to 1/4 micro-steps.

Drive Electronics

Keling KL-4030 H-bridge drivers, current limit 3.0A max, micro-step range 1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64

Keling KL-350 36v, 9.7A regulated switching power supply.