After a lot of weekends of trial and error I finally have my PCB milling process working. In this post I share some things I have learned along the way - hopefully it will make it easier for anyone else trying to develop the same process.
1. Be Consistent
This is one of the most important factors to get repeatably reliable boards. It's very tempting to just tape a board down randomly and start milling - but the next board might not be in the same place and you wind up with very different results.
Your goal should be to minimise the number of variables as much as possible - use the same size blank boards, always mount them in the same place and at the same height. My solution was to use a piece of pine for my milling base which I bolt to the bed of the CNC and mount the blank boards on to the pine itself with M3 bolts.
This means the blank PCB is in the same place for every session and I can be sure that changes in results are due to changes I've made, not random differences caused by different placement or other factors.
2. Install Limit Switchs
If your machine doesn't have limit switches already you really need to install them. Apart from the increased safety provided by ensuring you don't exceed your cutting area it makes it easier to position your work co-ordinates by using the homing function.
When you run a homing cycle the CNC will move the gantry until the limit switchs are triggered and then set the machine zero co-ordinates to that point. This allows you to accurately reposition the tool head even after a power cycle.
Limit switchs are not difficult to implement, essentially they are normally open switches that are closed when the gantry makes contact with them. On my machine I just used standard push buttons mounted in 3D printed attachments.
3. Levelling is Critical
Milling a PCB involves cutting away a very thin (0.05mm or less) layer of copper. Having the board as level as possible during the process is absolutely essential - cut too deep and the engraving tool will cut away too much copper leaving you with very thing tracks; cut too high and the tracks won't be completely isolated and the PCB will have short circuits.
Getting a level surface requires a number of steps the first of which is to mill out a level pocket to sit the PCB in. This ensures the PCB is at least parallel to the tip of the etching tool.
Although this helps (a lot) it still won't give you a perfectly flat surface. The solution is to use probing to measure the actual surface of the board and then an auto-levelling function to adjust for the differences in it.
The probe itself is simply a normally open switch, usually you just use the tool tip itself and the PCB as the two contacts. A probe operation simply moves the tool head (at a very low feed rate) until it comes into contact with the surface and measures the height at that location.
Most CNC controller software allows you to probe an area of the board and then automatically adjust the Z level as it processes your gcode file to take into account any differences in height. This process gives you the most consistant depth across the entire board.
4. Account for Flexing
Blank PCB material is not as rigid as it appears, depending on its size and how it was stored (not to mention how you mount it) there will be some bowing which results in a curved surface under your engraver.
Unfortunately, the probing process doesn't put enough pressure on the board to push it down while the actual engraving process will. This means you will get shallow cuts even with an autolevelling process.
The trick is to ensure that the probe pushes the board down to it's fully flat level before measuring the height at that point. My solution was to put a small ball on the spindle that is 2mm lower than the probe tip - as the probe moves downwards the ball pushes the PCB to the underlying bed and compresses before the probe makes contact. This gives you a far more accurate depth reading.
5. Avoid Tearing Copper
The tool tips used to drill and cut the board in the final steps can tear the copper away which damages the pads and tracks (and it looks horrible). I found that if I engraved away the copper at the edge of the cuts (circles around the drill holes and an engraved path along the board outline) this tear was reduced significantly.
The tool I wrote to prepare board milling code for me does this as an automatic step. Other isolation routing tools may do the same thing.
6. Design the PCB for Milling
There are a few simple changes you can make to your board layouts to make the milling process more reliable. The isolation cuts are between 0.2mm and 0.3mm wide so you should ensure that the minimum distance between pads and tracks is about 0.25mm.
Footprints that use circular pads can be problematic - if the annular ring (the portion of the pad that surrounds the drill hole) is too small the entire ring can lift off during drilling. Applying tip 5 can alleviate this somewhat but a better solution is to use rectangular pads and use slightly larger pads than you would normally.
Rectangular pads help with another issue as well - with a 'normal' PCB the pads and tracks are surrounded by blank space, in a milled PCB there is still copper surrounding them. This makes soldering a milled board more difficult, you have to carefully avoid letting solder short the pad and the surrounding copper. Using larger, rectangular pads gives you a large surface to solder to and makes things a little easier.
You should also avoid using tracks that are too thin - if the engraver cuts too deep you can cut the track completely, I have been using tracks that are at least 0.6mm thick (twice the width of the isolation cuts).
Your PCB layout software will most likely set these parameters as design rules and you may have to modify some component footprints to adhere to them. Changing the layout this way will not adversly affect other production methods - you can use the same gerber files to mill prototype boards and then send them off for fabrication without issues.
7. Have a Recovery Plan
One of the more frustating parts of milling PCBs is the number of dead boards you generate as you develop the process. I have a drawer full of failed early attempts and at times, after a sequence of failures, I was ready to give up on the process altogether.
Eventually I developed a work around that let me use the resulting boards even if the process wasn't successful. By painting the blank PCBs with a light coat of spray paint before milling them I could soak them in etchant afterwards to correct for any shallow cuts. Even extremely shallow cuts that didn't even remove the paint layer could be corrected by simply scratching the isolation lines by hand.
This step let me have usable boards in my hands a lot earlier than I would have otherwise. As well as reducing the cost and waste this also reduces the frustration level fairly dramatically.
Having the ability to quickly and reliably make PCBs for my projects has had a dramatic effect - because the process is so much faster and reliable I don't have to worry about the time it takes to prepare a board. As a result I have no problems making small boards for very specific purposes that I would have avoided (or simply breadboarded) previously.
There are still things to improve though - milling footprints for surface mount devices is my next goal. The accuracy of the milling process is good enough for a range of SMD parts, how difficult it will be to solder them is the big question.
If you are working on your own PCB milling solution the end result is well worth the effort, I hope this tips are useful.