Mechanical PCB Etching
Throughout the years, I’ve implemented my electronic designs in many ways. From strip-boards to drawn on chemical etching to print and transfer chemical etching to photo-resist chemical etching to professional board-houses, I’ve tried it all. And, when I need more than one of anything, or when I simply want a professional solder-masked silk-screened board, I’ll probably still continue to use board-houses for the best results. But, of late, I’ve come to enjoy the twin benefits of fast turnaround and lack of nasty chemicals that making my own boards using mechanical isolation routing on my CNC router can provide.
I’ve gone through many iterations of mechanical etching techniques, and I’m probably not done experimenting, but I’m now comfortable with the process and results I’ve been obtaining with my current technique, and I thought I’d share it here for all to enjoy.
For now, I’ll skip my trials and tribulations I went through getting to this point, and get straight to what I’ve found to work well.
Here’s my not-so-secret sauce:
- I design my boards using Eagle. I’ve loved Eagle far before CNC routing became a concern, but it really shines if mechanical etching is your goal.
- I use the Eagle plug-in pcb-gcode to create the G-code to make my boards.
- I use a 15-mil flat end-mill from PreciseBits.com to isolate my traces. They’re more expensive than eBay cheapies but have been worth the extra cash. I could make smaller spacing between traces with a smaller bit or with an angled isolation routing bit, but I’m sick of my Z-level touch-off being so critical, so I’m sticking with end mills for the time being.
- I use a precision collet on my router.
- Drill Bit City (site 1, site 2) has been a great resource for tiny 1/8″ shank drill bits.
- I use a 1/16th” flat end-mill to rub-out large areas to reduce shorts and make my board pretty.
- I re-face my spoil board right before running a board to make sure it’s perfectly flat. Every thousandth of an inch matters when you’re producing a board, so this is a step you can’t afford to skip.
- When I touch off my Z axis before making a board, I touch off a couple thousandths higher than I think is right and start the job. Sometimes it actually is right, and I let it go. If not, I lower the spindle 1 or 2 thousandths at a time until it cuts right, but not too deep. Because it’s an end mill, a little too deep doesn’t hurt the trace widths or spacing, but traces will be more likely to fail if you go too deep around them.
- I use .6mm EasyContac vias from LPKF for all my vias. Soldering little teeny wires between layers is no fun, and is error prone. EasyContac may be a little expensive at $100 for 1000 vias, but it’s worth every penny when I compare the results with all my mistakes I made before I started using them.
Those are the highlights. Let’s look at a couple things in detail.
PCB Design
When laying out a PCB for production on a CNC router, there are a few adjustments that need to be made to be successful. Trace spacing must be at least as large as the smallest tool you plan to use. Trace widths should be large enough to avoid lift-off during machining or board prep. And, if using EasyContac vias, the drill size for vias should be set appropriately for the size of via you plan to use. I’ve found that a 16 mil spacing (using a 15 mil tool) with a 18 mil trace size produces wonderful results, with much smaller traces easily producible, but generally unnecessary. When I have difficulty routing particular areas of my board, I reduce the trace size accordingly.
Depending on how you plan to do vias, there may be additional considerations. If you plan on manually inserting wires for your vias, you should prevent placing them under components. This can be accomplished in Eagle by drawing polygons on the vRestrict layer. If you have through-hole components that cannot easily be soldered on both sides of the board, you should prevent component side connections to those devices. This can be accomplished in Eagle by drawing polygons on the tRestrict layer around the component pads. Currently, I only have .6mm EasyContac vias, so I allow vias anywhere, but add tRestrict rectangles around my through-hole component pads.
For extremely simple designs with very few components, you can sometimes get away with a single-sided board. To do this in Eagle, set the Top layer cost very high. If the auto-router still puts traces on the top layer, re-route with a smaller routing grid, re-route manually, or manually route the top layer traces in locations where jumper wires can be easily inserted in place of the traces.
A key component for two-sided boards is bottom side board registration. To accomplish this, I always place 1/8″ holes an exact distance from each corner. (Typically 1/4″) This is a key board feature, not only for mounting it in it’s eventual enclosure, but for making sure the board is precisely lined up when you flip it over to machine the bottom side.
G-Code Generation
Many of the pcb-gcode setup parameters are machine specific, but I’ll touch on the critical step-over parameters. I use two passes so I can have a nice clean board. The second pass isn’t really necessary, but I like the results. On my first pass, I use a .015″ tool, with .001″ default isolation, .015″ maximum isolation, and .007″ step size. After generating the g-code, I save off the files and update the parameters for my second pass. For that pass, I use a .0625″ tool, with .003″ default isolation, .25″ maximum isolation, and .031″ step size.
Machining
Before beginning, I freshly faced my spoil board (In my case, just a scrap of MDF bolted to my table). After I’ve faced the surface, I give it a thorough vacuuming just to make sure there aren’t any stray particles threatening to screw up my board. I rough cut my PCB, debur any edges that might lift the sides off my spoil board, and attach it with evenly spaced double-stick tape.
Before running my drill operations, I modify the drill g-code to drill my 1/8″ mounting holes extra deep (usually .25″).
Then, I touch off my axes and run my drill operations. Next, I run the 15mil pass. When touching off my Z axis, I err on the side of too high and then lower it a couple mils at a time until it cuts cleanly through the copper but not much further. After this finishes, I repeat the procedure with my 1/16″ end mill.
Now that the first side is done, I lightly sand the top layer to remove any burrs, gently pry up the board, and give everything a good vacuuming. I insert 1/8″ carbide tool blanks into the extra deep mounting holes I drilled into the spoil board, then I flip and tape the board back onto the table, obtaining excellent alignment due to the tooling pins. Since pcb-gcode generates the bottom g-code as negative X distances, I then re-touch off the X axis using the board width as a negative value. I then run the bottom passes the same way I ran the top pass, give the board a light sanding and vacuuming, and I’m done!
Vias
Early on, vias were always a nightmare for me. This was until I discovered EasyContac vias. Available from LPKF, they are basically little copper rivets you can put in your via holes to create a mechanical connection between the two board layers. Four sizes are available, so you can either get a small footprint, or a larger footprint capable of passing a through-hole lead through before soldering, enabling a component layer electrical connection on pads containing components that would otherwise be difficult to solder on both sides. For now, I’ve only tried the .6mm size, which I use exclusively for vias.
Conclusion
Prototype boards on general purpose CNC routers are a viable solution to implementing many designs. It takes a little playing around initially to determine speeds, feeds, and design limitations. But, once those initial determinations have been made, having the extra option at your disposal can be indispensable.






Fun creating printed circuit boards... | chembal.com says:
[...] mechanically etch PCBs, and I think I’ve finally got a good method. I’ve documented it here on my site for all to [...]
February 23, 2010, 4:28 pm