CNC Mill‎ > ‎


This page is full of pictures of the progression of my CNC build. They go chronologically top-to-bottom, so it's kind of a build log in its own right.

Note that there's another page of pictures; I thought that maybe it'd be nice to not just have one giant page of pictures- reduce load times for those people who don't have gigabit Internet... Why 62 pictures on this page, instead of something nice like 50, 60, 64, ... ? Because 62 is where I decided that having multiple pages would be a good plan, and I'm disinclined to move some of them to a different page.

Here's a view of my first attempt. You can see the steppers for two axes, the Dremel, the driver board (on top), and the power supply (silver box mounted on the side). You can also make out the limit switches at the ends of the axes.

Here's a back view of the machine in that same state. Here you can see the E-Stop. Mounted on the inside-right you can barely see the terminal block I've got all the limit switches wired to. This was actually a big improvement over the very early attempts, in that wires are actually bundled and routed (they're mostly hidden under the top of the CNC machine)

This is a test PCB I milled using the first incarnation of my CNC mill. It's basically a collection of standard 0.1"-spaced pins. I was going to solder an IDE cable on there (so it'd be an IDE breakout), but I realized that it wasn't really necessary to do so. Anyway, the cuts were made with a 0.38mm end mill with the Dremel spindle.

This is my new Z axis (blue and gold)- it's definitely overkill, in that you could probably drive a car on it and still have it function just fine. On top of it, you can see some of the linear bearings (1 rail and 3 carriages). Right above those two is a chunk of angle aluminum that will support the spindle.

This is the mount for my spindle. It's still a work in progress, but it gives the general idea of what it'll look like. A lot of careful lathe work went into making the center hole exactly the same size as the spindle mount point.
Spindle in partially-completed mount
This is the spindle in the mount. It's not really secured (because the mount isn't complete), but it sure is a nice fit.
Z axis mounting plate

This is the plate that will couple the Z axis assembly to the linear bearing carriages- it's a chunk of 1/4" scrap aluminum that was lying around.. The sets of small holes are for attaching the linear bearing carriages, and the large holes are for attaching the Z axis itself.

Since the linear bearing holes were in a nice defined pattern, I actually got to use the existing machine to drill them. The Z axis holes were done by hand.
Assembled spindle mount

Here's the spindle mount assembled and mounted on the Z axis. Nothing too complicated- just a lot of precise hole drilling. Again, the existing CNC incarnation helped out where possible.

You can see different types of machine screws used to hold the mount to the Z axis carriage. On the left are plain round-head. I used countersunk flat-head screws on the right, since there wasn't clearance for round-headed screws under the spindle.
Another view of assembled spindle mount

Another view of the assembled spindle mount. Here you can see the tapped hole for the leadscrew (read: threaded rod) to go through.

As it turns out, the tapped block will need replacing, since it's not straight. Sigh.
Spindle mounted on the Z axis

Here's the spindle in the complete mounting bracket. The other addition in this photo is the stepper mounting bracket, which can be seen on top of the axis (with the 5 holes drilled in it).

You can (barely) see where the spindle clamp was cut through to allow it to clamp down on the tool. That machine screw serves triple duty securing the tool to the block, the block to the angled piece, and the two angled pieces together.
Comparison of the old Z axis and the new one

While replacing the old Z axis with a new one, it seemed fitting to place the old and new next to each other for a comparison. The old one can be seen on the left (upside down), while the new one is on the right.

Major differences:
  • The new one isn't attached to a cross beam parallel to the X axis. This is seen on the old axis extending off the frame to the left. It was required to couple the Z axis to the drawer slides. It worked, but cantilevered the spindle out further than was really ideal. The new axis is connected straight to the linear bearings via an aluminum plate- much better.
  • Because it had to be attached to the X axis in the method mentioned above, the old Z axis would extend far off the side of the machine- not ideal. You can't really see it in any of the pictures (it's going off to the right in the very first one), but it maybe doubled the effective width of the machine.
  • The spindle mount on the new one is much more precisely tooled, and holds the new spindle much more securely than the old version. Of course, it also took many times as long to fabricate...
One of the linear bearing rails mounted on the machine

This image shows one of the new linear bearings mounted for the X axis (and the old X-Z axis assembly removed, in case you missed that detail). If you look at the picture for the Z axis coupling plate, you can see how it'll go together- the plate mounts to the carriages, and also to the Z axis.

The rails really nice and smooth. And stable- no wobble I can discern. That's especially nice, since that was the main reason for installing them. Another plus: The CNC-drilled pattern for connecting the carriages to the mounting plate was spot on. It might not have had the precision for fine PCB work, but it was definitely good for a lot of things.

As a side note, mounting the rails was kind of a pain, mostly just the screws. The holes required 6-32 screws, but I couldn't find any with a head small enough to fit into the countersinking. I ended up taking some standard round-head machine screws and turning down the heads on a lathe.

Getting the rails aligned wasn't too bad- I had it measured out so that the carriages were parallel with the bottom of the crossbeam, so I just clamped some scrap metal under there, rested the carriages on that, then clamped the rail to the crossbeam and drilled through the holes. That was a bit of a challenge, since there's a bunch of wires running on the other side.
Leadscrew bearing

This is the bearing block for the leadscrew for the Z axis to run through. On the previous incarnation of my machine, the threaded rod just passed through a hole and some washers, which made it sound like it was dying whenever an axis moved. You can't really see it, but there's a bearing that the rod is going through in this image (sandwiched between the plate and the metal ring you can see), which should make it much smoother.

The outside of the metal ring is circular to let it fit within the PVC chunks used to separate the steppers from the mounting plates (which you can see in some of the first images).
Z axis mounting plate- mounted

The second linear bearing rail mounted, and the Z axis mounting plate attached.
Under side of CNC machine- wiring

The wiring on the under side of the machine. Nothing new here, I just haven't shown it before.

As you can see, the wires are controlled mostly with zip ties and some tubing. The terminal block at right connects all the limit/home switches to the control board.
New axes assembled

Both the new X and Z axes mounted on the machine (sans spindle).
Back side of Z axis

This is the rear of the Z axis. The stepper can be seen at top, with the limit switches below that. The stepper wires feed into the terminal block mounted on the back of the axis to make taking it off easier, should the need arise. The limit switch connectors just slide off, making all the electronics easy to remove if the axis needs work.
Close up of Z axis limit switches

Close up of the Z axis limit switches. I rather like the method of triggering them.

The Z axis used had a hole tapped in it already, presumably for a pneumatic cylinder to drive it. Since that wasn't being used, a threaded rod was put in there instead. Some nuts were tapered, and attached to the rod. Since the rode rides up and down with the axis, the nuts trip the switches at the appropriate points.

This is really neat, since it means the limits can be adjusted arbitrarily. That, and a single switch can be used for both the +Z and -Z limits.

The picture above shows the Z home switch (right) being triggered. If the axis moves up a little more that same nut triggers the +Z limit (left). You can see the -Z limit nut in the previous picture, which hits the Z limit switch when the axis moves far enough down.
Z axis limit rod embedded in a bolt

This is definitely an interesting picture. It shows the rod on the Z axis that holds the nuts triggering the limit/home switches.

The hole that came in the axis was theoretically designed for a pneumatic cylinder or something similar to attach. The 7/16" hole was definitely overkill for triggering limit switches, so to save size/weight/cost, a 7/16" bolt was drilled/tapped for a 1/4" threaded rod, leading to the interesting image above.

The 7/16" hole is tapped; the nut is there to secure the bolt in place.
Levelling the work area

Not the most exciting picture, but one showing just about the first thing the new X/Z axis combination did: Level off the work area. The 2x4s seen in previous pictures are used to suspend the work piece from, and are milled to be parallel to the X axis. Since the new axis probably wasn't exactly parallel to the old one, re-levelling it was required.

Also seen in this picture is a new hole in the Z axis assembly- required to access the button to lock the shaft of the spindle for tightening in new tools.
PCB milling, pic 0

Milling a PCB! This isn't the first attempt (that failed; you can see it on the right- the traces flaked off).

Actually, a couple attempts failed. Lessons learned: Use oil, don't use the bits that have been dropped on their points repeatedly.
PCB milling, pic 1

Another picture of the PCB milling. The one being milled and the two left-most PCBs are done with a 0.1mm 10 degree tapered bit. The one on the right (with a bit of a halo from sanding) was done with a 0.38mm end mill. It didn't work QUITE as well- the mill didn't make it through the copper in some places (that might have been user error), and the trace edges were ragged (more so until they were sanded).
PCB milling, pic 2

Yet another shot of milling PCBs. You can see the puddle of oil I was milling in- the bits of copper swirling around the tool look really neat (not that you can see that in the picture).
Milled PCBs

Here are the resulting PCBs whose creation is shown in the previous few pictures. The traces look kind of crummy, since they're still gummed up with a fiberglass dust/oil mixture- they actually look very nice and clean in person. I'll try to get a decent picture at some point.

These PCBs are breakout boards for some transistors, for an audio amplifier we're making in class. No, we weren't supposed to use SMD parts, but we found some transistors that would work well, and they only came as such. Since we'll want to match the transistors as best we can for the audio amplifier push-pull output stage, I decided to make some breakout boards to allow for testing them on a breadboard.

For a sense of scale, the transistors are in a 6-pin MSOP package- 0.65mm pin pitch. You're only seeing 4 pads above because the collector of the transistor is connected to 4 of the pins.

It turns out I made a mistake in layout out the PCBs... the trasistors are in a 0.65-mm pitch, 2.0x1.6mm (aka "tiny") package. The board above I used the 8-pin MSOP footprint for. That has the right pin spacing, but is way too wide. I think I managed to get the transistors soldered on OK, though I'm not sure I want to post pictures, since it's rather a hack job.

Anyway, the point is that the PCBs above are finely pitched, and that the CNC mill did an awesome job of etching them.
Battery charger board, etched with CNC mill
[Cross-posted from my Runner's GPS project]

No, this isn't of the mill itself, but it's another board I etched with it. The traces were a little ragged this time around, which I believe is either due to the slightly different tool rotational speed or a deeper cutting depth (neither was intentional).

Anyway, the board works great! It's a Lithium Ion-Lithium Polymer battery charger, and it seems to have successfully charged one of said batteries without blowing it up (I say "seems" because I haven't measured how charged the battery is).

Another test PCB

[Cross-posted from my Runner's GPS project]

Another example of the mill's work. Parts of it look really good, parts of it not so good (you can see the ragged edges towards the botom of the board. I'm not even going to show the back where it got even worse; you can see it here).

I'm still trying to track down exactly why things went poorly in some places and not others. Current theories include the Y axis being subpar (that's being worked on right now; even if it's not the problem, tweaking it a bit will definitely be good) and the board not being held down securely/flat enough. That'll be worked on after the Y axis.

The traces that do look good look really good, however, which is definitely encouraging.

New table profile

A profile view of my new milling table. My dad actually built this while I was off at school, so I can't take credit for it. In any case, it's really nice, and solves the problem of PCBs flexing while I try to mill them.

It's got MDF on top for easy leveling (read: milling down), with oak for the rest of it. The T-channels are to allow bolts to be used to fasten down whatever is being machined.

A top view of the table, after being milled

A top view of the table, after it's been milled down to level (that's where the horizontal bands come from). Also visible are a couple of aluminum bars used to clamp down a PCB and a toggle clamp used for the same purpose.

Comparison of previous trace attempt to latest

A comparison of my previous PCB milling attempt with the most recent one (2013/04/19). These images show more or less the same location on the board. It's pretty clear that the new board has finer isolation paths.

As a sense of scale, those are mini-USB connector pads on the left side of the right half of the image.

As you may notice, the new board isn't complete- the Z axis bound up partway through, and so it ended up gouging out a chunk of the board on the next plunge. Yet another thing to fix...

More traces

0.5mm-pitched pads done after compensating for backlash. Definitely usable, if not perfect.

I don't know what caused the "L" shapes at the tops of the pads. Some of the pads are narrower than others as well, though this is probably due to the GCode that cut them- the pads vary in size (in GCode) by 0.001". I don't know if that's the whole story here or not. So many things to investigate (and fix).

New spindle and VFD

My new spindle and the VFD to drive it, all unpacked.

Spindle clamps (work in progress)

These are the clamps that will hold the new spindle to the Z axis. They're going to be screwed into a 4" square chunk of aluminum tubing, which will be secured to the axis. The current plan is to cut a diagonal notch in one of the corners (perpendicular to the circle) to allow a screw to be added for clamping down on the spindle.

The clamps are made from 3/8" aluminum. The hole was made by first cutting a hole on the drill press using a hole saw, then putting the clamps on the lathe to turn out the hole to the proper diameter (80mm). It took several hours overall, due in part to not hole-sawing the largest possible hole. The drill press really bogged down with the hole saw, so I first drilled a bunch of holes along the perimeter of the cut; reducing the amount of aluminum the saw had to go through made it work MUCH better.

Spindle in clamps

Here's the spindle sitting in the clamps. As you can see, it's a close fit... within 0.01" or so. I mis-measured when turning out the clamps, hence the "large" error. It should still be OK, I think.

Spindle cooling pump

This is the spindle cooling pump. I haven't tested it yet (or the spindle, for that matter), but I got it from a CNC supply seller, so I hope it'll work.

In any case, it's a submersible pump; just plug it in an chuck it in a body of liquid.

Liquid cooling tube connection

The liquid cooling tube connector. This really isn't exciting on its own, but one relevant detail is the tube sizing: 1/4" OD, 0.170" ID. It's a tight fit onto the barb, but it looks good (a little soap helped get it on there).

Spindle mount frame
The frame for the spindle mount. The larger holes on the bottom are for securing it to the Z axis carriage, and the smaller holes on the bottom/sides are for attaching the spindle clamps.

The whole thing was cut from a piece of 4" square aluminum tubing.

Complete clamp

The completed clamp for the spindle. You can see the tapped holes for securing it to the frame on the back. The lower left corner is cut to allow a machine screw to clamp it down on the spindle (screw not present, obviously).

Spindle mount, front

A front view of the (mostly) assembled spindle mount. It's all screwed together, but the machine screws on the left and right need to be shortened so they don't try to occupy the same volume as the spindle while securing the clamps.

Oblique view of the spindle mount

Another view of the mount.

Spindle in mount
The spindle in the complete (ish, sans clamping screws and shortened mounting screws) mount.

New acme screw on z axis

New Z axis acme screw. I should probably show it instead of just saying it's such, but the end embedded in the carriage has been turned down and threaded to 7/16-20. It was a little messy, since the acme threads weren't quite eliminated by turning down the screw, but putting the 7/16-20 threads over it worked OK anyway.

New spindle mounted on machine

The new spindle mounted on the machine. It's not completely hooked up (hence the lack of cooling tubing, a stepper, power cables...), but at least it stays on there.

Nut and ring

Machined ring for coupling the Z axis nut to the tube that will make it turn.

Ring on nut

Ring actually on the nut, showing how nice of a fit it is.

Ring and tube

Ring and tube side by side. The tube has an abrupt lighting change that you can see; that's because I only turned down a bit of the inside (to make sure it was circular). I turned down more than was required because the tube will be shortened at some point, and there's no sense in turning down the inside twice.

Ring, nut, and tube all assembled (sans screws)

The whole assembly. You can tell it's a nice fit by how straight everything is sitting, even when not even fully pushed together, much less screwed together.

There will eventually be some screws holding the ring, tube, and nut together.

This whole assembly exists to move the Z axis carriage up and down. Since I don't have a carriage that will allow a threaded rod to go all the way through, I'm improvising and making the rod fixed in the carriage, then turning the nut around the rod with the stepper.

New flanged nut-tube coupler

New and improved nut-tube coupler. I realized that supporting the entire weight of the spindle/carriage with only a few screws going maybe 1/8" into the nut probably wasn't the best idea (the spindle is rather hefty). Since the nut already has 1/4" holes on the bottom (hidden under the flange), I thought I'd use them.

Of course, that meant redoing the ring that couples the nut to the tube, but it turned out nicely. Holes still need to be drilled and tapped, both for the nut-coupler connection and the tube-coupler connection.

Tube with one end screwed on

One end of the tube screwed in place. Nothing terribly noteworthy, except that maybe 4 10-24 machine screws was overkill.

The new nut-tube coupler can be seen on the left (albeit out of focus and not screwed in)

New stepper platform support

The support for the plate that will hold the stepper driving the Z axis. It's required because I've got to have space for the tube to allow the acme rod room to move up and down with the Z axis.

It's pretty much just a chunk of 2" square aluminum channel that I milled down to fit in the space I had. I'm not exactly an expert at milling, but I at least made it fit just about perfectly.

Stepper mounting platform support pseudo-installed

This does a slightly better job of illustrating how the tube integrates with the rest of the machine. The Z axis acme rod and tube will be going up the center of the square tube, through a bearing, and coupled with the stepper on top.

The part of the platform sticking out won't be there in the final version; I just stuck everything together using the non-final parts I had lying around.

I'm not sure I like how tall the Z axis is getting, though I'll [maybe] deal with that later; I rather doubt it will actually become an issue.

Inside of the spindle before modifications- note the ground pin isn't connected

Inside of the spindle as it shipped. The unconnected pin? That's what should be ground.

Spindle inside with new ground connected

Inside of the spindle after a little modification. I just soldered a chunk of wire to the ground pin and tied it to one of the screws inside- they're electrically connected to the rest of the case.

The spindle doesn't shock you anymore when you touch it while running now, which is a good thing.

ACME nut mounting bracket

The mounting bracket for the acme nut that will be an upgrade for the X axis. The part shown will eventually have a hole drilled in it for the rod to go through (that's what the circle marks).

ACME nut mounting bracket with nut inserted

The nut seated as it will be when mounted. The bracket will have a cover on it to secure the nut in place, and will be clamped against the mounting plate of the Z axis to secure the nut in the other dimension.

You can see that the nut sits outside the bracket a bit; the Z axis plate will be notched a bit to accommodate it.

Acme nut attached to Z axis tube

The acme nut is finally properly secured in the Z axis tube.

Stepper end of the Z axis tube

The other end of the tube. The lower nut is to allow the bolt to go through the stepper mounting plate (see pictures below). In the middle is the bearing that will support the whole assembly. On top is another nut to hold it all together. The shaft sticking out is to allow coupling with the stepper shaft.

Visible portion of the Z axis tube, as mounted

Here's the top of the Z axis- you can see the shaft from the previous picture. The extra disc of aluminum will be screwed to the plate below it to hold everything in place.

Z axis upgrade mostly assembled

The whole thing assembled (more or less). You can see the acme rod for moving the Z axis sticking out of the carriage. It goes into the enclosed square tube, which contains the circular tube mentioned and shown previously (but not in this picture). It goes through the stepper mounting plate bolted on top, and will be coupled to the stepper itself as soon as it's mounted.


Fully assembled machine with new Z axis and spindle attached.


The back side of the assembled machine, showing off my fancy bucket-of-water cooling system.


Some 0.5mm-pitch pads cut with the new spindle and Z axis. Note that there was NO backlash compensation here, which would account for the width differences in the traces.

Still, they're REALLY nice and clean!


A close-up of my LCD breakout board traces. I added back my software backlash compensation, hence the more even traces. The board looks rough because I had to sand it a tiny bit to clean up some minor burrs. The row of pads ~1/3 of the way up are 0.5mm-pitched. The traces are mostly 10 mil, with the fat ones on the right being 20 mil.

Aside from that, there's really not much to say; the picture speaks volumes.