I recall the point I started taking electronics seriously, although excited, a sense of dread followed upon the thought of facing the two main obstacles faced by hobbyists and even professionals: Fabricating you own PCB’s and fiddling with the ever decreasing surface mount footprints. Any resistance to the latter proves futile, expensive, and frankly a bit silly in retrospect. Cheap SMD tools have made it extremely easy to store, place, and solder all things SMD.
Once you’ve restricted all your hobbyist designs/experiments to SMD, how do you go about producing the PCBs needed for prototyping? Personally, I dread the thought of etching my own boards. The process is laborious and involves messy chemicals and specially sensitized PCB’s — none of which interest me. I’ve only ever done it a few times, and have promised myself never to do it again. Professional but cheap PCB manufacturing is more like it board pooling services such as OSH park have made this both easy and affordable — if you can wait for the turnaround.
So what are the alternatives? If you are really serious about swift prototyping from your own Lab, I put forth the case of milling your own PCB’s. Read on as I take you through the typical workflow from design to prototype and convince you to put up with the relatively high start up cost of purchasing a PCB mill.
Tools of the Trade:
In recent years the frightening cost of buying a CNC machine both rigid and precise enough for the job has come down significantly. A quick search on eBay and Aliexpress for “Engraving CNC machine” returns some interesting and affordable hits. The generic machines floating around on these websites are called CNC 3020 denoting a work area of 30cm by 20cm and cost around the £250-£300 ($350-400 USD) mark. Other models are the 3040 and the 6040. The machines seem to all be based on a single design (and even a manufacturer) and are well built. The aluminium based construction is solid and handles an array of materials given the right spindle of course.
The cheapest machines tend to host a simple DC 50W electric spindle which is reliable enough and more importantly, cheap to replace. It is suitable for engraving and cutting woods at modest feedrates but nothing more. The more recent machines are coming with water cooled 200W spindles that are certainly a better choice. You can cut modestly thick aluminium with them too.
I had purchased one of the early versions of the CNC-3020 quite cheaply. The machine had no end stops, hosted an old parallel port based interface and had most of the PCB functionality such as auto spindle control unpopulated. We wrote an article awhile back where [whitequark] successfully modified his machine to upgrade the hardware. I too did the necessary modifications, which were simply attaching 3 end stops to the CNC and soldering in an otherwise unpopulated connector for the surface probe. Many of the newer machines sensibly come with these pre-installed now.
With the machine ready, we need to get the right tools for milling PCBs. The most important of these is the engraving bit, responsible for committing all the actual traces onto the PCB. This bit needs to be sharp so it actually cuts as opposed to tear the copper and of course it also needs to be fine enough to mill any tiny footprints or traces. After a lot of experiments, I’ve got the best results using generic 0.1 mm V bits from eBay. These are cheap and reliable enough for about 8-10 medium sized jobs. However, the V profile does pose a challenge when specifying its cutting width in software, as the deeper you go the wider they cut. This can be tuned via some trial and error.
Next, we need a few drill bits for drilling through-hole component mounts and vias. Every different hole you specify will need a manual tool change, so its best to simply stick to a single 0.8 mm – 1 mm bit which should be suitable for most things. I would recommend buying this set of cheap drill bits.
The last bit we need is the End mill, responsible for cutting out our board from the larger PCB clad. A 1-2 mm End mill does the job nicely.
Apart from the above essentials we also need the actual PCB clad, I’ve found the generic, cheap, single sided ones on eBay are terrible, they crumble like biscuits when being cut. All the better ones seem to be double sided, in either case I had to experiment with a few different suppliers before settling with one I liked. Sourcing quality copper clad seems to be a topic that hasn’t been settled throughout Hackaday’s history.
In addition to the important items listed above, we will also need the following:
- Thin Double sided tape to fasten the PCB clad to a scrap cutting board for the CNC. This should not be the foam backed but rather the thin-film one often used for fabrics.
- A Finishing brush with stiff metal bristles for some post processing. A board fresh out of the CNC will inevitably need to be deburred.
- A fine sanding block or sanding paper to clear away some of the more finer burrs.
- Rubbing alcohol and a softer brush (I use a toothbrush!) for the finishing touches.
The Mechanical Setup
The biggest challenge in this DIY process is getting a correct and consistent cutting depth. These V-bits yield a wider cut the deeper you go, effectively robbing you of precious engraving resolution. If you do not tune in just the right depth, some traces will come out too thin and frail. The key to success is to experiment with a few cutting depths and most importantly probe the PCB to compensate for any variations in the height across the clad.
To tune the right cutting depth, I put together a simple test design consisting of breakout board for the super tiny DFN-8 footprint. The trace size on this board is as small as my designs would go. Next I tried a few different cutting depths and eventually found one with reliable results for these thin traces. I use a cutting depth of 0.8 mm with a 0.1 mm V-bit.
Preparing for Auto-Leveling
The auto-leveling process is set up in software and simply consists of a probing routine before milling. All we need to do is to solder a scrap wire to a corner of the PCB clad, and fasten it to an ideally flat piece of scrap wood using generous amounts of double sided tape.
Once this is complete, the wood is secured to the CNCs work area and the milling bit is secured in the chuck. A pair of crocodile clips are attached to the wire soldered on the PCB and the milling bit, completing the probing setup. The idea is to build a map of the height variation of the PCB, and if the PCB is not completely level, the mill will actively compensate for the error.
The first step is to prepare the CAD files, all we need from our favourite PCB CAD software are 3 GERBER files: Top, Bottom and Drill. But before we do that, we need to make sure all necessary precautions have been taken to maximise the mill’s chances of reproducing the circuit
As an example, lets talk about some things I ensured when designing the following PCB that I have milled successfully quite a few times now. For anyone curious this is the Phase Lock Loop section for a DIY Spectrum Analyser based around the Analog Devices ADF4008 IC.
Choose footprints wisely: This board is based around an IC available in both TSSOP-16 and LFCSP-20.
Milling for the later, tinier package would certainly be pushing the capabilities of the process. As a smaller footprint also imply smaller traces, this makes the whole process a lot less reliable. With the same rationale I stuck to 0805’s or 0603’s for passives where possible.
- Trace to Trace clearance: As a rule of thumb I kept trace clearances to at least twice the width of my bit. With a 0.1 mm bit, a minimum clearance of 0.2 mm is sufficient.
- Pour Clearance: One of benefits of this subtractive process is that you have natural ground plane at your disposal. However, finished boards tend to have copper burrs around traces which can short with a ground pour placed in close proximity. Hence, pour to trace clearance should be at least 0.3-0.4 mm. This will also make reflowing the board without a solder mask a lot easier.
- Trace Width: Once again, anything larger than twice the bit width should work nicely. I generally stuck to 0.3mm traces
These constraints are certainly very restrictive compared to any professional fabrication but with a bit of give and take you can certainly produce usable and realistic boards.
Once we make sure all the above constraints are respected we need to export the GERBER files and then turn them into GCODE that the CNC could run. For that we use an excellent piece of open source software: FlatCAM, which is specifically designed for 2D PCB CAM processes. It has an extensive set of features that you should really check out.
A tutorial on FlatCAM is beyond the scope of this article, for that check out the official documentation. In summary, for each GERBER file you import, you have the option to generate various tool paths for different kinds of jobs such as Cutout, Isolation milling etc. All you need to do is punch in some parameters specifying your cutting depth and bit sizes.
For a single sided board, we need 3 GCODE files from FlatCAM; Top-layer, Drill and Cut-out. With those in hands we are almost ready to mill out our board!
The last software step is to add an auto-leveling routine by post processing the Top-layer GCODE file FlatCAM produced. For this we use yet another excellent piece of software called Autoleveller, which we featured way back.
There is a free version and a paid version, the free version lacks the ability of sharing probing data across sub-jobs. This is somewhat important as you can only probe the board once at the start of a job, i.e you cannot probe for the drilling job after you have already cutout and hence isolated part of the board from the PCB clad! Honestly, I haven’t felt the need to purchase the full version yet, as probing is only critical for milling traces.
The most important parameter of this process is the Probe Spacing which determines the probing resolution. The smaller the Probe Spacing, the more points probed. Although this takes a while to do, it is well worth doing at least 80-100 for good results. Once this file has been generated, it replaces our old Top-layer Gcode file and we are ready to mill out our board!
Milling It Out
At this point we will have 3 files for our single layer board: The top layer file with probing, the drill file and finally the outline milling file. We begin by milling the top layer file. Fire up your favourite GCODE interpreter/CNC controller, I use MACH-3 but Linux CNC or most others are all viable options.
We begin by homing all 3 Axes, positioning the spindle roughly a few millimetres above a corner of the PCB and zeroing all 3 axes. It is important not to lose track of the X-Y zero position between the different jobs. Each new job will need a re-zeroing in the Z axis but the X and Y zero positions will be unchanged. Make sure the probing circuit is correctly set up, otherwise the mill will crash into the PCB! Once we engage the job the Mill should start the probing routine. Once complete, the milling routine will begin, depending on your feedrate and number of passes, this usually takes a while. Once this is complete our board should hopefully resemble our design albeit cluttered in fibreglass dust.
Next, we move on to the drilling, this step does not need precise re-leveling. We simply insert the drill bit, and zero the Z axis with the bit laying flush against the PCB surface. Once this is complete all the specified holes should be drilled into the board.
Last but not least, the board needs to be cut out from the rest of the PCB clad. This process is very similar to the previous step albeit with a different bit and slower feedrate. Once again we re-zero the Z axis and let the job run. If all went well we should have the finished PCB!
Finishing Touches and Assembly
Now onto the more rewarding parts of the process. The milling process is not perfect, especially as the engraving bit gets blunt, it tends to tear rather than cut. To clear off stray copper filings, give the PCB a good scrub, first with the thick bristle brush and followed by the finer sanding paper. After a final wipe with some rubbing alcohol, we can finally solder the components on!
Take a look at the final result. It looks pretty good, although you can see some imperfections such as residual copper traces in between actual traces. These should not be a problem as we specified sufficient clearances between traces and pours!
Now you might be wondering if this process works for double sided boards? The answer is Yes. Although aligning the two sides can be a bit of a hassle, with the right practice and jigs this is not too hard.
In fact, FlatCAM provides a way to drill alignment holes for aligning 2 layer designs. Lastly, you might also be wondering if this elaborate workflow produces consistent results for demanding footprints. The answer is again, Yes. I have produced multiple boards for packages as small as DFN-8 (3 mm * 3 mm * 8 pins!) in a single run! Check out this 1 GHz mixer based off the LTC5560 IC in DFN-8.