Friday, December 17, 2010

I noticed a problem when I tried to machine two "mirror image" parts, and when I tried to match-up the parts, they would not align. It seems my router was built out-of-square. I have decided to completely re-build the router, taking my time, and making sure all the parts are square. Before I make the new router, I needed a solid, mobile table on which to hold the router, PC, power supply keyboard and some extra storage. I will provide the plans and images of the table.

Monday, July 5, 2010

Fifth time is the charm!

My 5th attempt at isolation milling the PCB was finally a success. After experiencing just about every failure mode, here's what I learned.

First, be sure you've calibrated your milling tool. See "Calibrating PCB isolation routing with Eagle/pcb-gcode" by Poul-Henning Kam. He created a simple PCB design that mills traces of a particular width across from isolation paths of the same width. Compare the two - if they are the same width, you are good to go. If they are differing widths, then your bit is either too deep or too shallow.

Second, is your table surface 'flat' in comparison to your milling tool? Mine was out by just under 2 mils, which is a lot, considering 1 oz copper is only 1.4 mils thick. To test, I took one of my mill bits and inserted it upside-down in the Dremel. I moved the tool to each of the four corners and found the highest corner. I use an axillary 9 x 12 inch "sacrificial" board to which I attach my PCB stock to - with double-sided tape - so that any drill-through would not damage my router table. To the underside of each corner of the sacrificial board I added 10-32 tee nuts, countersunk slightly. Into each I used 10-32 x 1/2" set screws with a hex-head.  Update - a machinist friend of mine advised me to have have two set screws on one side and only one setscrew in the center of the other side - forming a tripod.  This makes adjustment super-easy and much faster than one adjustment screw in each corner.

I repeated the leveling exercise, again starting at the highest corner, and using a feeler gauge - update:  I have since converted to a dial indicator - about 10x faster - I lowered the set-screws until each corner was lifted to the proper height. I kept gentle clamping pressure on the board so it wouldn't move during the leveling process. The thickness of the feeler gauge is not important, just use the same thickness gauge everywhere.

Finally, align the PCB square on the routing table and test by moving the X or Y axis along one edge of the board - I use the point of the router bit as my reference. Adjust the PCB (carefully) into square.  Update - it is important to adjust the PCB to be 'square' against the path of the router, not square to the table as shown here.

Now we're ready to route.

Next post I'll cover what I learned on the Eagle CADsoft PCB design software.

Saturday, June 26, 2010

PCB isolation routing - attempt 2

Much better results this time. Milled-and-drilled with excellent results. I decided to switch from my 1/4" router to a Dremel tool - this required a new mounting bracket. Naturally, I used the router table to make the new parts. The process is starting to get easier. I routed two brackets from 3/4" MDF and glued together.

I carefully added the mounting holes so I can easily switch from the router mount to the Dremel mount with only 4 bolts. Works great. Another benefit is the Dremel is considerably less noisy than the router, and the Dremel runs cool the whole time. Running a homeowner-quality router for an hour gets scary - you can smell the varnish on the motor windings getting hot.

Added a saw kerf and a bolt to "pinch" the Dremel into place. Like a rock.

Here's the Dremel mounted.




I secured special 1/8" milling bits from DrewTronics. It was the 1/8" shaft that made the Dremel the easy choice. I ordered 30, 45 and 60 degree bits with the idea to play with them all over time. I had to throw 'em under the microscope - here is a 45 degree bit at 20x magnification.

Routing went perfectly. Tooling still a bit to deep. Milling time was shortened considerably by using the gcode optimizer.

After routing, I decided to try drilling too. Snapped the first bit after drilling the 4th hole. Checking the setting of the gcode converter - I found one setting at zero inches - this caused the tool to move to the "home" position for a tool change, but didn't lift the drill out of the PCB first! Changed the number to one inch, and it worked fine, returned the router to the 0,0 position, raised an inch for easy drill changes.

Drill bits are from Jameco and seemed to do an excellent job.

Here's some of the traces at 20x magnification. I did nothing but scrub the board a little with a Scotch scrubbing sponge - no abrasives, no sanding. Was able to get a trace between two 0.100 inch IC pads.

Next I'll ring it with a volt meter, and if all is good, actually build the circuit.

Wednesday, June 23, 2010

Gcode optimization

I tried the Opti - PCB-Gcode Optimizer from JayC. Tried it on Ubuntu under Wine (Windows emulation), it opened, but wouldn't do the optimization. Had to resort to MS-Windows to run the optimizer. Seemed a bit finicky, but once it ran - WOW what a difference. To the right is how the gcode looks coming straight off the Eagle CADsoft program. Click the image to zoom. All those grey-green lines are where the router is moving in between milling actions. The damn thing spends 60% or more of it's time just moving the router from point A to point B.

Enter the optimizer. DAMN! I'd say 95% of the wasted movement is just GONE! This should have an amazing impact on the overall time to mill.

Now if I only knew enough about C++, I could probably re-compile onto Ubuntu!

I ordered some PC milling bits (30, 45 and 60 degree) from Drewtronics. I should have them in a few days. My router is a 1/4" shank, and these itty-bitty PCB router bits are 1/8" shank. I'll need to track down a reducer.

Monday, June 21, 2010

PCB isolation routing with a real PC board

I did not have the proper milling tool. I had a pointy router bit (60 degree) that is supposed to be used for engraving wood. Fiberglass and copper was too much. Nevertheless, the results were very promising. The router bit was more like a snow blower, just heaping the copper up on each side of the trench it dug.

Here is a close-up of the IC pads. It's tough to see, but it is pretty much a mess. I went at it with some 220 grit sandpaper to get rid of the bulk of the nasty high spots so I can get a peek at what was underneath.

To the right is a 20x image of some of the pads for a .100" header - after sanding. I pulled the board off the router before the pads on the right were finished. I also think I had the bit digging-in a bit too deep.

At the left is a 40x image of one of the IC Pads. In both images, even after sanding, the "piling up" of the copper around the edges of the trench is clear.

Couple of early learnings: The cool dust brushes I made obscure the PCB. This isn't a problem for routing, but it makes setting up the tooling a real nightmare. I've got to re-design the brushes such that they are either fully or partially removable.

Second, the CADsoft to gcode converter does an excellent job, technically, but the resulting gcode is very far from being optimized. I'd estimate 40 - 60% of the time to route the board is the router moving from one end of the board to the other. More than half the milling time is just plain wasted.

Next Steps: Order some real router bits. Consider using a dremel tool rather than a wood router. Try to make a gcode optimizer that I found work.

Saturday, June 19, 2010

PCB isolation routing - first attempt

Last night I downloaded CADsoft Eagle schematic drawing and PCB design software. Learned just enough to make a basic board. Used an Eagle to Gcode converter and created the gcode.

Tie-wrapped a rollerball pen in place of my router, added a flat (MDF) auxiliary table on the Router base, got the paper flat.

Started the EMC software, opened the gcode file. It looked perfect with a "rats nest" of jogs. I set X and Y to home, set the touchoff, and hit 'go'. Board is about 2.5 by 2.0 inches.

Son-uv-a-gun. It did pretty damn good. I am pretty sure I had some of the feed rates too high, and I think I skipped a step or two. Nevertheless, I was blown away. It takes a L O N G time to route. One key learning: keep as much copper on the PCB as you can!

Here is a close-of the bottom left of the PCB. The holes are marked quite well in the pad centers. This was not the case everywhere, though. Next time, I will slow down the steppers.

This will make prototyping PCBs fun, clean and fast (faster than the chemical options!).

I will document my complete setup and experience.

Here is a 73 second video of the CNC machine drawing with the roller-ball pen. You can see the pen flex and the paper move - these are, no doubt, large contributors to the inaccuracy.

Wednesday, June 16, 2010

Software - Introduction

The Software. Now this is where things get confusing for me. CAD this and CAM that. I have successfully milled some parts, but I've not yet figured out all the bits.

For the CAD software, I stick with Google Sketchup. Sketchup is a really amazing product. First, it's free. It is 'easy' to learn (for a 2D CAD package, anyway). There are a lot of great tutorials available. I used Sketchup to create all the CAD drawings for building the router, and all the drawings I posted to this blog. Since it's free, you can get your feet wet while preserving some cash.

For the CAM software, I am playing with the demo (40 uses) version of CamBam. The CamBam website says it best: "CamBam is an application to create CAM files (gcode) from CAD source files or its own internal geometry editor".

There is also a free add-in for Google Sketchup that will cleanly export a Sketchup drawing into a format ready for CamBam.

Take some time to read the three-part software tutorial by Patrick Hood-Daniel on his buildyourcnc.com website.

There is a lot to learn about the CAM software, and I'm only just starting. I've found the CamBam documentation to be very weak, almost useless. I did most of my learning by trial-and-error.

For the machining software, I am using EMC (Enhanced Machine Controller). From the EMC site: "EMC2 is software that runs on Linux, on most standard PCs, that can interpret G-code and run a CNC machine." In my case, I use Ubuntu. I had an extra PC, the EMC software installed and ran first time, no problems. EMC plays perfectly with the HobbyCNC stepper driver board.


On a side note: If you have not considered a Linux system, Ubuntu 10.0.4 is amazing. It is quite Mac-looking, fast-as-hell, robust and stable (my server ran for well over a year with zero issues). And with a product called Wine, you can run most windows applications. It's pretty sweet.


I do suggest you use a separate computer to drive your router. It will suck in dust and crap like you won't believe, and you'd hate to trash your home PC. I open my PC regularly and blow out the collected dust and debris. One challenge, is finding a PC with a parallel port, which is required for the HobbyCNC stepper controller. Most new laptops don't have a parallel port. My Ubuntu system had no issue accepting a parallel port card, tho I do remember having a challenge finding some I/O port address or other. But once I figured that out, all was well.

I hope to give some tutorials or other helpful guidance on getting these three products playing together nicely, but time is a rare commodity at the moment.

Dust Control - making the brush

I settled on the idea of a 'brush' or at least 'bristles' for my dust curtain. I couldn't find anything ready made, so I made my own. Works pretty good, and I'm confident when I upgrade to dual 2" vacuum lines, it'll be smokin'. I started by taking pliers and tearing out the tufts from a Harbor Freight workbench brush.

Try to carefully yet securely grab the entire 'tuft' of bristles with the pliers and rock the pliers to pull out the 'tuft'. Some will get messed-up. Keep going. It takes a hell-uv-a-lotta bristle tufts.

The Harbor Freight brush had a neat little staple like gizmo around the 'tuft' of bristles. This came in very handy when inserting the tufts into my motor mount.

I tried drill bits in the holes left in the brush to determine the proper hole size.

I flipped the motor mount upside down and put holes around the perimeter of the router in a highly un-precise fashion - just guesstimating the spacing.

Then I took a small nail set, and with a file, put a very slight "V" in the end. I would open the bristle bunch a bit, line the "V" of the nail punch over the small metal staple, align it with one of the holes I just drilled and smacked it with a hammer. Repeat until you start talking to yourself.

To the left is a close-up of the bristles in the motor mount. It actually worked quite well, and the bristles are held in quite firmly.

I didn't count 'em, but it took a lot of the little buggers to circle the router and dust port.




Tuesday, April 6, 2010

Dust control - the background

If you haven't used one of these devices, there are two issues you will need to deal with - noise and sawdust. And these routers produce both in ample amounts. The noise can be dealt with using hearing protectors. IMPORTANT SAFETY NOTE: eye, ear and dust protection is mandatory. You may feel like a goober wearing all this protective gear, but at least you will still be able to see and hear and you are less likely to cough up bits of your lungs years from now.

Regarding the dust, goodness only knows what carcinogenic crap is in that stuff, and these machines produce a lot of very fine particles - I'd bet these are the most dangerous.

I needed something that would include a vacuum system, and there had something that would enclose the router bit, extending all the way to the surface of the workpiece. Upcut spiral router bits really sling the sawdust - somewhere between a speeding bullet and the speed of light.

I am a firm believer in intercepting the dust as close to the source as possible - especially considering my garage is attached to my house - and all that fine dust will work it's way inside - and my wife will find it - and I will be in deep, deep sh_t.

Whatever I used needed to be flexible - it has to bend against the work surface when the router cuts deeper. It had to be firm enough to not get sucked into the router bit or the vacuum system.

I've seen some builders used a 'skirt' around the router mount, others suggested brushes (called 'door sweeps'). Yet others just put the whole-damn-thing into an enclosure (thereby addressing both dust and noise). I will eventually do the enclosure route and a dust-pickup at the source. Sort of like wearing a belt and suspenders.

This looks like an industrial router, but I really like the dust control.

Sunday, April 4, 2010

Router Mount

Since I had to take the whole thing apart to replace the drive screw for the x-axis, I decided to replace the left-and-right side of the z-axis assembly with two parts I made on the CNC router.

The photo (above, left) shows the router mounted in the original mount. I had to raise the router in the mount so that the router bit did not extend past the dust brush (details on that later). That moved the router too far away from the table, so I had to jury-rig it to lower the whole router/mount assembly lower toward the table. The new sides to the Z-axis assembly (above, right) includes a "jog" to hold the router mount lower.

Here is the router mount. I designed it in cardboard, transferred the design to 1/4" hardboard. I verified the fit of all the components. I used a pattern bit on my router to duplicate the shape on two 3/4" pieces of plywood. I stacked and glued the plywood together.

The small hole to the upper right is for the vacuum attachment. It works fairly well, but I will re-make this with a 2 1/2" vacuum attachment. The more air you can move, the better.

Wednesday, March 31, 2010

Mounting the Steppers

For mounting the steppers, I cut a stack of 1/2" and 3/4" plywood squares 2 1/2" square. By testing various combinations of different thickness, I determined the right size for each stepper.

I marked the center of the square and drilled a 1.5" hole with a Forstner bit and drilled the four stepper mounting holes in each square. Glue, stack and press them together. When dry, cut a notch to allow the block to be slipped under the stepper. This is necessary because of that three-part coupling spider - you really need to get that assembled first, then slide the spacer under the stepper. The notch must be wide enough to allow the coupling to pass through.

To the left is my Z-axis stepper where you can see the stack of plywood for mounting.


To mount the motor, I used 10-32 x 3" machine screws. All I could find were round-head slotted screws, and the head diameter was a bit to big. A few seconds on the grinder and they fit fine. The screws to through the axis assembly - I pressed in four T-nuts. (for the Z-axis, the T-nuts were pressed into shallow holes bored into the plywood.

Connecting the drive screw part II

Sometimes I get an idea in my head and I can't seem to see other alternatives. As I mentioned yesterday, the quick-and-dirty X-axis coupling nut broke off the X-axis assembly. So I pulled out my wire-feed welder and welded a mending brace across the coupling nut. This should last longer then the rest of the assembly!
My welding skills are pretty much non-existent, but it should hold.

Had to take the whole damn thing apart to get to the broken epoxy joint. Here's the half-assed epoxy job with the fixed drive screw shown in the inset image.

Tuesday, March 30, 2010

Connecting the drive screw to the axis assembly

I have seen many clever ways to attach the drive screw to the axis'. The more durable the connection, the better. I took a 'cheap-and-dirty' approach that I will no doubt pay for later.

I used a coupling nut and attached this to each of the three axis assemblies.

I cut matching dados into one part of the axis assembly and a smaller "cover", shown at the left. I sized everything for a very snug fit. Using a chisel or sharp knife, I notched the bottom of the dado (image on the right) to accept the point of the coupling nut. I added liberal epoxy around the coupling nut and glued and pressed the two parts together.
I selected a dado over drilling through the piece because, as I was using plywood and not MDF, I couldn't get the drill bit to track perfectly straight through the center of the plywood.

Note: for the X-Axis, I just did the dado and epoxy with no 'cover' glued and pressed over the coupling nut. the epoxy just broke loose two nights ago. I will design a much more robust attachment.

To the right is a photo of my Y-axis drive screw. You can see the dado in both pieces.

Backlash: Yes, I am aware that this type of nut is not ideal and that it can fall prey to excessive backlash. As the first version of my router is my "proof of concept", and I'm not machining to the micron, I don't currently care about the tiny bit of backlash present. I must say, however, that it's not too bad. We'll see after 10,000 cycles how it looks and feels!

Saturday, March 27, 2010

Drive Screws

There are three drive screws needed (one for X, one for Y and one for Z-axis). I used 1/4-20 threaded rod from Home Depot. Make sure to get them long enough - and keep them a bit long until you are 110% sure your design is set. Threaded rod is easier to make shorter than it is to make longer.

I finished the ends of all the drive screws the same way - with two nuts turned into each other. The second nut is referred to as a " jam-nut". This locks the two nuts in place very effectively. Notice the bearing is always towards the "inside" of the two nuts.

The bearing is a R4ZZ (1/4"x5/8"x0.196" Shielded) from VXB Bearings. 10 bearings for about $15.

Where I mounted the bearings, I used a 5/8" Forstner bit to bore a hole just deep enough to hold most of the bearing. Then I finished by drilling a 1/4" hole for the drive screw. It's a little difficult to see in the drawing, but the photo shows the double-nut arrangement and the bearing is counter-bored almost completely into the plywood. (this is the end of my Y-Axis drive screw). Sometimes I used a washer between the nut and the bearing, but It didn't seem to make any difference so I ended-up going without a washer.

A trick to remember when cutting the all-thread: Put a nut onto the bar before you cut the threaded rod. Cut the rod and file the end to clean off the burs & junk. Then, by taking off the nut, you will clean-up the threads (somewhat) where you cut them. Not perfect, but better than nothing!

Wiring the steppers

Here is the wiring diagram. Depending on your definition of "forward" and "backward" or "up" and "down" - your steppers may end up going the "wrong way". The best choice is to see if you CAM software can invert the outputs. Or you can swap the stepper windings. It's not obvious what to do, if you need to know, drop me a line and I'll draw the "swapped" version.

The nature of this type of project is that it goes together - and it comes apart. Often. So I used connectors (from Jameco) that had enough pins (9) and sufficient current carrying capacity. Get at least one M and one F for each motor, you need to order the individual pins and sockets a-la-carte. Get an extraction tool also. If you have the extra $, the proper crimping tool would be nice too.

Here's the Y-Axis motor showing the 9-pin Molex connector. I opted for the 9-pin connector vs. a 6-pin as I am planning to run my limit and/or home switches through the same connector.

Stepper motors

I purchased the steppers from Keling. I got three KL23H276-30-8A steppers - 8 wire, 1/4" Single Shaft with flattened area on shaft.
Steppers were delivered quickly, although their packaging for shipment was not ideal and the steppers were pretty much "flopping around" inside the package. All seemed OK, and the steppers are working perfectly.

You can also secure steppers from HobbyCNC - if you think you will be needing support from Dave at HobbyCNC, then it might make excellent sense to secure as much as possible from him.

To connect the steppers to the drive screws, I used a device called a "shaft coupler with rubber spider" - it's a three-piece arrangement that provides a rubber 'spider' that isolates the motor from the drive screw - allowing for some minor mis-alignment between the drive screw and the motor shaft as well as some forgiveness in distance between the motor shaft and the drive screw. These are available from Jameco. Just search for "spider". For each stepper, I used two PN 162270 (.250" ID hub) - labeled in the image below as "couplers" and one rubber spider.

Here's the spider assembly in use. The set-screws (visible in the photo above) in the coupler were pretty small, and there is only one, so I drilled-out the existing hole an re-tapped at 6-32, and added a second set-screw at 90 degrees, just to be safe. This device is going to take a beating.

The electronics

I purchased the HobbyCNC PRO Chopper Driver Board Kit from HobbyCNC. The price was good and delivery was quick. Kit went together with clear assembly instructions.

HobbyCNC has a new board, with fewer features that would most likely work just as well: HobbyCNC EZ Driver Board Kit. $64 vs $79.

I managed to blow one of the driver chips, though I tried to be ultra-careful. I replaced the chip, added a big heatsink, and all is now good.

Here's the bare board. The quality is first-rate, as are the assembly instructions. Take your time, double-check everything.

I checked every solder joint under an inspection microscope - my soldering skills are excellent, however my eyesight is not.

Pay attention for any solder bridges or cold-solder joints.

The completed board "in action". For the heatsink, I used the same material that was used for the linear bearings and the rails. I put some heatsink paste between the driver IC's and the heatsink. I'm sure all the sawdust isn't ideal, but I'm not done yet!