We use a small CNC (computer Numerical Control) machine to cut accurate holes in things, drill circuit boards and to mill 3D items.
I recently spent the day (along with Ashfaq Juna, who lent one of his CNC machines to Nottiingham Hackspace) playing with my CNC machine and trying to mill circuit boards. These are some notes and photos of what we did.
I have written a post on the CNC machine at re-innovation. It is a relatively small machine with a bed of 300mm x 200mm and a depth of 70mm. I have been using it to cut acrylic parts, drill holes for etched circuit boards and cut holes into boxes for some prototypes.
I have been wanting to find the time to get the machine to mill a circuit board (rather than etch) as this is quicker and less messy (especially for one sided boards). Milling uses a very fine pointed mill bit to cut a path into copper clad board. This cuts isolation paths around the tracks on the circuit board, hence creating the circuit. There are a number of ways to do this and I hope to add to this post to explain more as I find more details.
Our test board, with fine isolation paths and drilled holes. (It looks a bit funny as I used off-cuts from PCB etching to do this sample – waste not, want not).
A video of the CNC in action (its not actually that exciting….)
The tool-chain we used to create a circuit board was:
- Create design using KiCAD (free and open source)
- Export design as a Gerber and also the drill file.
- Import the Gerber and the drill file into coppercam (a commercial program – I hope to find an open source program to do te same thing soon (13/4/12: there is a free and open source program called Line Grinder which looks interesting.)
- Convert the Gerber and drill information into g-code which specifies the mill cutting path
- Use EMC2 (free and open source) to read in the g-code and control the CNC machine.
This worked quite easily and it was not long before we had the machine moving but, like always, the devil is in the detail and it took us a number of attempts to get a satisfactory board. I made some notes about our experiences:
- The mill bed will not be totally flat – which means the mill depth will vary slightly over the piece of board, which means the isolation path will also vary.
- To compensate for this change you can:
- Mill a perfectly flat bed
- Use electrical measuring techniques to map the change in bed height and compensate for it
- Use a floating head mill
- Make the tracks wide with lots of space in-between
We used the latter as it was quick and easy.
- We stuck the copper clad board down to the bed using double sided carpet tape. This worked well to hold the piece flat.
- Ensure coppercam uses only single points for the drill commands (check the visualisation on EMC2).
This shows a number of test runs.
First used a blunt router bit, hence too much copper is milled away.
This attempt was too deep – its very difficult to get the z-axis 0 point just right. We used a piece of paper and brought down the bit until you could just move the paper slightly. This goes wrong when the board or CNC bed is not exactly flat (within 0.1mm, really).
We got the isolation paths just right on this one, but the drill bit snapped due to a setting in coppercam which thought the drill bit was a milling bit….
Update 8/11/13: I’ve done some more work on auto-levelling the G-code to mill better PCBs written up here.