facepass2This was written way back in early 2002. I have a whole new stash of goodies to apply to a mill/drill when I have a little bit of coin and time to throw at it, but as you can see, it’s not too hard to bang out a very small machine to play with.


Well I’ve finally started to fulfill a small dream of mine… I’ve begun putting together a proper machine shop. Now that I have a small collection of wonderful tools, I thought it’s time to start on a real project. I don’t have a mill yet to convert to CNC so I thought I’d grab some of the parts and scrap I have laying around and build my first CNC machine. The end result should have a work envelope measuring about 8x8x2″. Yes it’s small, but one has to start somewhere, and as I’m now back at my parent’s place while I save for a house, I’m tight on space.


At work, I’m fortunate enough that over the past couple years we’ve gone through a series of upgrades and I’m generally right in the middle of it all. Out of this comes all kinds of bits and pieces that I’m always hoping might be useful “someday”.

In going through my assortment of aluminum parts, I found I had a couple assemblies of linear rails with bearing glides just begging to be used. Also, during a recent trip to Vancouver I stumbled across a linear stage with ball screw and coupler that had about 2.25″ of travel and a NEMA 23 mount that would make an excellent Z axis. I also have a number of NEMA 23 4 pole steppers, E-stop buttons, limit sensors and a bunch of heavy aluminum bars. I went out and purchased some cheap “hardware store” grade 5/16-18 all-thread and some single-sided copper-clad board for making the stepper motor drivers, but that was about all I needed to buy.

To control my machine, I’m using EMC from NIST, which I’m extremely happy to see available. I’ve been using Linux for some time and was thrilled to find EMC in an obscure link on a long-neglected page. The software performs better than expected. I installed it on a couple of my machines to play with way back in October. Now it’s found a home on a real (toy) machine.

Items completed

  • Start small… Make a 3/8″ OD – 1/4″ ID collar to adapt the Z axis linear stage for use with the stepper motor. (This happened to be my first real part made on the lathe, made from a slide rail removed from a dead flatbed scanner by my girl friend) Completed 12/05/2001
  • Build a Stepper Motor Driver. I found a very inexpensive and simple design at John Kleinbauer’s web site.
    From what I’ve seen and heard, John has great plans but I already have materials that I wanted to use so I took advantage of the simple schematics he had posted.  I simplified the design a bit (took out the pull-up resistors on the 7474 and tied the inputs directly to +5V) and designed a PCB around it. I also elected to use 74HC86s and 74HC74s as the CMOS has better noise immunity than TTL. I was pleased, though my etching skills leave something to be desired, the boards worked as designed. I also had some 15ohm 50W resistors already mounted that are ideal for this application. Digging around I also found a 24V 360W DC switching power supply that’s compact, light and more than I’ll need to power this project. With the stepper motor set on the table, and the driver board, resistors, motor, power supplies and a function generator acting as a “step” clock, I powered it all up and was thrilled to see the motor twitching, but not quite rotating. Swapping pairs of stepper wires eventually found a combination that allowed the motor to rotate. Completed 12/08/2001
  • Assemble the Z axis linear stage, stepper and driver into a working component. This went as expected with no hiccups. The stage would run to one end of its travel, and then sit and grind as the stepper skipped steps, and then run back when I changed the direction input. A small but significant mile stone! Completed 12/09/2001
  • Connect the Stepper Motor Driver to my industrial PC running EMC. This was probably the fastest and simplest of all the steps as I found a 12 conductor cable with one end terminated in a male DB-25 and the other end with wires already stripped in one of my bins, and I just wired the three (CLK, DIR and GND) appropriate wires for the Z axis to the stepper driver, and booted up the EMC computer. The EMC.ini file already had axis_2 (Z) configured properly for a 200SPR and 5TPI screw, so I started up EMC, and tried manually moving the axis… I work on controls and process equipment daily, but there’s Still something amazing about this stuff…I
    let out a “Yip” that would not be described as quiet when that bugger moved for the first time. Then refusing to wait to see something go to town, I loaded up the 3dtest.ngc program that comes with the EMC BDI, and let the thing crank away. The stage isn’t quite long enough for that program as the stage hits the mechanical stops at both ends, but hey… it runs! (not to mention making a really kewl jet-engine like sound as the axis moves through an arc.) Completed 12/10/2001
  • Convert one of the bearing slide assemblies to a stepper driven axis. This was a couple evenings work, but a lot of that was holding bits of aluminum and plastic and such together trying to envision what combination of my scrap-pile refugees would work best. I ended up making a nut from some sort of acrylic block, an aluminum bracket to hold the free end of the lead screw (bushing to be added yet), a NEMA23 motor mount, and a motor-lead screw coupler made from the same bit of precision rod as the linear stage collar. Completed 12/12/2001
  • Build a second Stepper Motor Driver. This came together pretty quickly… I’d really like to build a proper etching tank so it takes less than 45 min to etch a board, but one of the main points of this exercise is to get away from chemical etching, so unless this whole project is a major flop, I’ll live with what I have. Completed 12/13/2001
  • Assemble the Motor, Axis and driver and connect to the EMC PC. Set axis parameters appropriately (input_scale = 3600SPI), load EMC and run 3dtest.ngc… Yeah baby, just like downtown! It sure sounds busy when the motors start grinding 🙂 Completed 12/15/2001
  • Make a third Stepper Motor Driver. Due to impatience, my PCB quality is suffering. This one has fly-wires attached to fix broken traces. Completed 12/16/2001
  • Finish the 3rd axis with a few changes from the first design due to available materials. Completed 12/16/2001
  • Assemble the 3rd Motor, axis and driver and connect them to the EMC PC, make changes to the .ini file to suit, and try it out. Hmmm… The motor seems like it’s trying to step in one direction, but only twitches once in the other direction. Hmmm… well it’s late, and time to move on…I’ll tackle that one another day. Completed 12/16/2001
  • Assemble the X and Y axis into a single unit. Well this took a bit, but After drilling holes in a few wrong places, and generally messing around, I managed to put together what I think will be a workable design using some pre-machined stock. I didn’t even have to cut it to length! My luck so far has been incredible… This is almost too easy. I don’t know what’s wrong with this picture, but something’s gotta give. The table top is just lexan, but I’ll be replacing this with something a little more rigid at some point. I’d like to make a vacuum table instead of a plain flat table. Completed 12/17/2001
  • Test the X-Y table with a pen (fixed Z). After I figured out the problems with my 3rd motor driver (swapped fly-wires and still another broken trace), I experimented with a marker, pencil and pen mounted on a stiff ruler (this experimentation shows in the first drawing). Just to get the machine going, I ran an old .ngc file I had for an early revision of my stepper motor driver board. Due to my playing with pens, it’s kinda messed up, but overall not bad for my first try. I also see evidence of missed steps, but at this point I’m just happy to have something moving! Completed 12/17/2001
  • 1stdraw

    The Setup

  • Grab unused BOSCH structural aluminum extrusions from work to mount my Z axis. Still have to bolt the “H” (seen in pictures) to the base, but with this extrusion I can adjust the height of the cross-beam to meet my tooling requirements. Completed 12/20/2001
  • cnc1xl
  • Mount Z axis. I don’t know what I was thinking… I was going to drill and bolt the Z to the aluminum…but this stuff is so great… T-nuts!!! This way I’m able to loosen and move the Z side-to-side to suit the application.
  • Make additional tooling for devices other than spindle. ie. digitizing probe, pen holder, scribe holder, etc…. Ok well… I’ve got a pen holder… more to come. Completed 12/21/2001
  • cnc5xl
  • Assemble a Controls Cabinet for the drivers, power supplies and perhaps the PC. This went incredibly well. After juggling things in my hands trying to figure out a layout, I decided to “just start drilling” and ended up with the cabinet you see. I tried a test run, but it stopped working about 15 minutes in. I knew those ballast resistors got hot (I’ve boiled water on ’em in operation)… but they managed to melt the solder on the 24V line. I guess I’ll have to put in an aggressive fan and perhaps some ducting… I hope I don’t have to go to water cooling just for this. Completed 12/23/2001

  • controller2xlunsolderedl
  • Decide on a spindle motor. Well this was almost done for me. Canadian Tire had a great sale on DeWalt tools including their cut-out tool which I ended up with for $79.99can. It’s a nice beefy 5A motor that operates at 30,000RPM but has no speed control, so I may have to work on that. I’d heard online that the Dremel tool has some sort of bushing rather than ball-bearings, but mine states
    on the label that it indeed has ball-bearings, so I’ll make up tooling to mount it as well. (12/28/01)
  • dewaltcutout
  • Make tooling for mounting the spindle motor. This was pretty quick to do stealing a few minutes here or there to drill and tap holes, and bore large holes in 3.5×3.5×0.675″ aluminum plate. I’ve completed mounting brackets for both the DeWalt (12/30/01) and the Dremel (12/31/01), and am happy with the fit and finish given that I’m working with a small lathe, drill-press and a hacksaw. (Mental note: band saw..band saw…BANDSAW!)
  • dremeltool
  • Make some actual cuts. I just modified the cds.ngc program that comes with EMC and hot-glued a 5×5″ chunk of pink foam to the table and let fly… this is where the poop really gets cooool. The DeWalt’s a little loud (I have to sit in my room wearing ear plugs), so I’m looking forward to doing more with the Dremel tool(12/30/01). The Dremel is much lighter-weight, so one has to watch the feed rates (especially if there’s extra hot-glue in its path), but it seems to do an admirable job with the foam(01/01/02). Here’s some pics of cutting a pattern using Gcode output by DesKAM‘s DeskART using a picture of my face taken by my girl friend. I’m not really happy with the way DeskART makes the cuts, though I can see it’s the easy way to compute things. It has the cutter “scan” across the image line by line. I’d like to try a “waterline” approach where each colour gradient is outlined by the cutter. I may have to try my hand at writing some software for this.(01/03/02).
  • facedone
  • Change Lead screws. I was unhappy with the performance of the 5/16-18 lead screws that I’ve been using, so I purchased some 7/16-14 stock and made up new lead screws and modified the nuts to match. Once done this, I lowered the maximum acceleration to 2 instead of 20 and more than doubled the slew rate of the X and Y axis to 15IPS. I’m ecstatic with the results thus far given the minimal amount of time I’ve been able to devote to this project(01/02/02). I tried doing a larger image, but the x-axis wandered to the left as the run was completed, so I again lowered the acceleration to 0.5 and now not only does it not do that, it makes a really cool “I’m a busy machine with a purpose but I belong in a sci-fi movie” sound. (01/05/02)

Items still to be done

  • Perform further tests varying feed rate and travel using a ball point pen.
  • Check for and measure backlash on all axis.
  • Add spindle-power control relay.
  • Mount limit switches.
  • Add E-Stop button
  • Build vacuum table, wire and plumb vacuum.

A Few More Views

cnc6xl cnc7xl