Electronics DIY blog

DIY is fun and is food for the brain and spirit. Don't be afraid to learn.



Thursday, August 23, 2012

Milling PCB in a CNC - The guide

OK. So here is a little resume of my process to make PCB with my crap of a CNC.

I'm using freeware version of Eagle to make the schematic and board and then I use pcb-gcode plugin to generate the gcode for the milling.

My steps are these:-Make the schematic and board in eagle.
-After all is in place use the Drc tool in eagle to check your clearances. To do this go to the clearances tab of the Drc tool and set all clearances according to this formula:

Minimum clearance = tool width + (2 * safety offset from pad/via distance)

Why?
Because using the same formula in the pcb-gcode plugin will allow you to make the PCB using 2 passes (making a PCB in a single pass doesn't always ensure proper isolation and almost always needs deburring and more the two passes is excessive and time consuming). The 2-pass isolation has yield the best results for me with a 10º v carbide bit. I'm still waiting for the 60º bit. I'm hopping it can produce similar results with a single pass. For now I'm sticking with 2.

The above formula is a reference and should be used has a reference only. If overlay occurs it's not the end of the world. The amount of overlay is the problem. Some SMD components might not even comply with the clearances. It's OK. But you should check the generated gcode for those places to see if they where properly isolated.

-Next configure pcb-gcode plugin. If you are going to work in metric units (mm) change the gcode-defaults.h in the setting folder of the pcb-gcode plugin to output the coordinates with only 3 decimal places after the floating point.

This is done by changing this line:
string FORMAT     = "%-6.4f ";      /* coordinate format */

To:
string FORMAT     = "%-6.3f ";      /* coordinate format */

Milling depth = -0.05mm
Remember most copper sheets in raw PCB is 35 microns (0.035mm). 0.05mm should be enough without going too deep.

Tool width = 0.2mm.
In my case I'm using a 0.1mm v-bit 10º. I set this to 0.2mm to compensate for run-out, vibration and bit wobbling (being such a thin bit it bends while trying to remove the copper. It's like forcing a needle to scratch a surface. Bending will occur. Also must compensate for the widening of the tip as it goes deeper.

Default isolation = 0.15mm
this is an other place where you can compensate for all the variables above. I prefer not to do it here. In here I like to put the amount safety margin to apply to pad/via clearance.

Isolation step <= Tool width.

Maximum isolation = Default isolation + Isolation step.
This insures 2-pass milling.

Don't forget to set the feeding speed. I'm using between 60 and 100mm/min. Faster then that bits will brake, deformations in isolation will be produced and you don't want that.

-After a good gcode is achieved It's milling time. Secure the PCB to the table in a way that avoids (un)leveling (usually the PCB is not perfectly flat due to storage conditions).
Two ways to do this.
The pro way. Use a vacuum table.
The cheap and dirty (but totally works). Double side scotch tape. This the one I use. It works (period). Read this.
Home the bit with one of the to procedures I've mentioned in a early post (Eagle2GCode - Part 2).

And you are good to go. You should be ready to start milling.

Good luck.

2 comments:

  1. hello there;

    I`ve just ended my home-made CNC. Tried it in wood and now trying to adjust everything to make decent PCBs (this was the true goal of the machine)I am using the same tools as you, eagle and pcb-gcode. Going to start my trial-error with your numbers....

    but when you say "feeding speed between 60 and 100mm/s" are you meaning mm/min

    ReplyDelete
    Replies
    1. You're right. It's a typo. I've fixed the post.

      Thanks

      Delete