Email Support | Mon - Fri: 9am - 5pm Sun: 12pm - 4pm CT | Call Support: 312-775-7009

How to mill a through hole PCB

Matthew White

Project by

Matthew White
Madison, USA

General Information

A Short intro to milling PCBs on the X Carve or the Shapeoko. Step by step instructions with tips and tricks to help everyone mill PCBs on their CNC mill.

Like this project
Material Description Price
Carbide Tip V-Bit 30 Degree Single Flute - 1/8 in Shank

Carbide Tip V-Bit 30 Degree Single Flute - 1/8 in Shank

Shank Diameter: 1/8 in, Tip Angle: 30 Degrees, Type: Engraving


Circuit Board Blanks

Circuit Board Blanks

Dimensions: 1 sided FR1 circuit board stock 4 in × 6 in (25 pack)

PCB Drill Set

PCB Drill Set

Qty: 10 Sizes, Material: Tungsten Carbide


This project's Bill of Materials is not complete. Add to Cart

from Inventables

File Description Unit Price


Download Zip

from Inventables


Gather up your tools and software

Before we proceed we will need to gather up a few supplies. I’ve also included a few optional items that I have found very useful in isolation milling of PCBs.

1 Software: I have used FLATCAM since shortly after it first came out and find it a very easy program to use. It works with Windows, OS-X and Linux. The program can be downloaded from here:FLATCAM. I will show you step by step how to use it for isolation milling later in this project.

2. PCB file: You will need a copy of the GERBER file for your chosen PCB. The GERBER file contains all the needed info for the isolation milling of your board and also for drilling the holes if it is a through hole board. I will include a sample GERBER file for you to use in this project so you can get started milling right away.

3. Copper Clad Board: You will need some copper clad board like FR1, FR4 or CEM. The board is a substrate which has a thin layer of copper bonded to it. By milling away parts of this thin layer we will make our PCB with the CNC and avoid the mess and danger of acid etching. FR1 boards do not contain fiberglass as their backing and can be bought here INVENTABLES FR1. Some folks prefer or need FR4 or CEM which can both be found here in a variety of colors and thicknesses in both single and double sided versions ABCFAB

4. End mills: Most folks isolation mill their traces with a common V shaped engraving bit like this one from INVENTABLES which work great for standard large trace boards. Those wishing to have a finer finish to their traces and for fine pitch trace milling, should consider something more along the lines of the FINE POINT ENGRAVER or the MICRO ENGRAVER END MILL. While both of these end mills require careful handling due to their extremely fine points, they render amazingly thin isolation traces for SMD boards with very little effort and leave a near burr free finish. You will also need a thin end mill to cut your PCB free from the copper clad once you are finished and ready to remove it. For milling in things like FR1 and FR4 it is advised to use a diamond cut end mill like this type HERE. I use a 1mm sized of this style to remove my boards from the surrounding copper clad board.

5. Drill Bits: Through hole boards are far easier to mill, but also need holes to be drilled to allow the components to be populated to the board. Double sided boards also need VIAS drilled and reference holes drilled. The sizes of drill bits you need will depend on your board and the components hole sizes. A large selection of drill bits can be found at DRILL BITS UNLIMITED or with DRILLMAN1 on Ebay. I have used both sources for over a year. They offer odd sized and multiple quantities of many drill bits. Often buying in quantity is cheaper and I highly recommend buying more than just one bit at a time, as they are a consumable, to ensure you have extras on hand. Inventables also sells a great starter set HERE

6. Sacrificial waste board and facing end mill: When milling a PCB even the slightest variation in height across your copper clad board can ruin your isolation milling traces. To help reduce this from happening you need to mill a pocket the size of your copper clad board into a sacrificial waste board of 1×4, 1×6 or 1×8 plain pine board or equivalent. This will insure your PCB board is level and flat relative to the spindle. This is an extremely important step along with probing your PCB before milling it. Most folks just use a simple 2 flute 1/8" fishtail end mill. I prefer a larger bottom cutting router bit like THIS or the equivalent, which is designed to cut when plunged into the waste board. The larger size faces the board much faster but is a 1/4 shank and needs a bit of power behind it to work well with your spindle. If you are unsure, it is safest to stick with 1/8" flat 2 flute end mill for resurfacing the small pocket you will need.

7. Sanding block: A fine sanding block is used to smooth your surfaced pocket and to clean burrs off your PCB once milled.

8. Double sided 665 tape: You need some double sided tape like This to attach your copper clad board to your surfaced waste board. Clamping it tends to bend the board reducing the chance of good traces being milled.

9. A well-tuned and square CNC mill. The fine details of a PCB need a very well-tuned and calibrated CNC mill to produce the fine isolation traces needed for PCB milling. Calibration is best done with a dial indicator for each axis to insure proper steps per unit settings. We will also need a set of probe wires attached to the mill controller. This is easiest on a TinyG, Planet CNC controller or on the new X Controller Inventables sells. But can also be done on the Arduino stock shield with Pin 5 and the Ground.

10. A set of calipers to measure your drill bits and the thickness of your copper clad board

11. Optional items: Flat screw driver for prying the board up from your waste board once you are finished milling.


Loading the GERBER file into FLATCAM

So our first step is to turn the GERBEL file into some Gcode the mill can understand. For this we will use FLATCAM today.

I have provided a sample GERBER file to download and use to follow along if you wish. It is a simple single layer through hole board. We will be milling the bottom layer of the PCB using the GERBER file and will use the Excellon file for the drill holes.

Be sure you have your GERBER file where you can find it on your computer and we will get started milling your first PCB!

If you are using the sample file I provided, you will first need to open FLATCAM and go to the OPTIONS tab and set the UNITS to MM for the sample board.

So to start we will go to FILE-OPEN GERBER, then we will look at our GERBER files and pick the one called “Pulse-Width-modulation.gbl” This is our bottom layer file (GBL) and is what we will use to tell the mill how to make our PCB.

Once you click that you will see the board traces show up in the right hand window. Keep in mind this sample board was designed in MM and will be milled that way so all the following values are in metric not imperial measurements.


Setting up the first layer.

Once you have the bottom layer GERBER file loaded into FLATCAM you will then click on the “Pulse-Width-modulation.gbl” layer in the PROJECT tab and then once it is highlighted you will click on the SELECTED tab.

We now see the GERBER OBJECT window. In the ISOLATION ROUTING section we first see a setting for TOOL DIA which is where we will fill in our tool TIP diameter. Most V shaped bits for PCB routing are around .1mm – .2mm tip size. Look up your tip size and fill it in here. For this example, I will be milling with a .1mm micro engraving bit.

Next we see the WIDTH (# PASSES) window with a 1 in it. This window will allow us to make any number of passes we wish with our bit. If you use a tiny .1mm bit for some narrow spots on the board, but you need larger isolation traces in the rest of the board, you can set this to 2 or more and it will remove more copper in the spots on the board with space to allow it. But keep in mind that each “pass” is a new set of Gcode we will need to send and adds a step to the board milling process. (You can edit them together later into one larger file, if you please).

The PASS OVERLAP window is where we can change the overlap between the passes if we wish. I leave it at the stock setting of .150000 with good results on .1 or .2mm bits.

Now we will press the GENERATE GEOMETRY button to trace our board traces with our isolation routing paths. You will notice a thin red line now surrounds all the traces on the board.


Creating the mill paths

Now we will click on the PROJECT tab again and we now see a new item in our PROJECT window. This is called “Pulse-Width-modulation.gbl_iso” This is the trace pathways which we need to turn into Gcode in this step. Select the Pulse-Width-modulation.gbl_iso file, then click on the SELECTED TAB. We now see the GEOMETRY OBJECT window.

In the CREAT CNC JOB section we see the following Windows.

CUT Z: This is our DOC (how deep the bit tip will try to cut in each pass). Our copper layer is VERY thin and I have found a value of 0.0650MM works very well.

TRAVEL Z: This is how high the tip will raise above the stock when moving between milling paths. I keep mine set to .15MM to reduce air cutting time between moves.

FEED RATE: This is of course how fast our end mill will move across the surface while cutting or moving between cuts. I keep mine set to about 60-80mm/M for V bits you can use a high feed rate. If you are milling with a tiny flat end mill, then you need to consult a feed rate calculator but keep in mind tiny end mills do NOT like high feed rates and take far longer than a V bit.

Tool dia: This is the diameter of the tool at the contact surface. We will keep it set to . 1 for our micro engraver with a .1mm tip.

Once we have these filled out we will press the GENERATE button and we now see a blue trace around our copper pathways and light green pathways from moving between cuts.

Now we have our pathways in the form of Gcode that our mill can understand. Now we need to save the code so the mill can load it.

After that we will cover drilling our holes and cutting out our board. Just a few steps left before we can start the fun of milling!


Saving the isolation trace Gcode.

3 minutes

Now we will move on to saving the Isolation trace Gcode we made in the last step. We will be using this same process multiple times during the next operations, so I will be referring back to this section later instead of repeating it for the other steps.

So now that we have our Gcode paths made, we need to save them for each operation. So we will again click on the PROJECT tab in FLATCAM and we now see the Gcode file ending in_CNC. In this case it is Pulse-Width-modulation.gbl_iso_cnc for our isolation trace Gcode. Click on the _CNC file and then on the SELECTED tab once more. This will bring you to the CNC JOB OBJECT window.

Click the EXPORT G-CODE button to save your GCODE, with the name of your choosing. We will end up with a number of Gcodes for milling our PCB so make sure you name it something that makes sense so that you will be able to keep all the files straight. I often name mine PASS 1, PASS2 and so on. For drilling Gcode I use the drill diameter of 1MM, .7MM and so on. This way I know both that it is drill Gcode and what size drill I need loaded. I label my cutout file as 1MM cutout, again so that I know the size end mill needed.


Working with Excellon layer for drilling our holes.

In this section we will learn how to use the Excellon data of our GERBER file to drill the holes in our through hole board. The Excellon data has all the info we need to make sure we have the right sized holes in the right places. Keep in mind that Excellon data is only designed to be used with drill bits, not end mills, in FLATCAM. With this program, we are not routing a hole with an end mill we are going to be actually drilling a hole with a drill bit.

Go to FILE and then down to OPEN EXCELLON. Then we will pick the Pulse-Width-Modulation TEXT DOCUMENT at the bottom of our sample files. (Excellon files are always a .txt file)

We will now see our holes are placed in their right spots on our traces in the preview window on the right.

Now we can see a new file in the PROJECT window called Pulse-Width-modulation.txt. We will click on it then on our SELECTED tab once again.

In the EXCELLON OBJECT window we will see the following items.

TOOLS: This window has a list of the drill sizes we need to drill all the holes in our board. We will see listed 1.016mm, 0.7366, 0.889, and 2.2606 listed in this window.
Since this board is just for fun, I will just be drilling with a 1mm and 2.3mm drill bits to keep things simple.
CREATE CNC JOB: Within this area we see the following areas.

CUT Z: This is how deep our drill will go into our stock. You need to measure the thickness of your stock with a set of calipers then add about 0.125mm-0.250mm to insure your bits go fully through your copper clad board. I tend to mill on thicker PCB substrate so my value here often ends up around 2mm-3mm deep. Measure your stock and input your value plus 0.125mm-0.250mm extra. Be sure you use a “-” before your number or your spindle will raise instead of plunge.

TRAVEL Z: This is how high above the stock your drill will retract before moving to the next hole. I tend to keep this value very low, around 0.250mm-0.500mm so I reduce the time the bit is SLOWLY dropping back down for the next hole. On some large boards this “air cutting” time can really add up.

FEED RATE: This is the same as PLUNGE RATE and sets how fast your Z height will drop and the drill will enter and drill your substrate. Keep in mind that small drill bits like 1mm and smaller are VERY fragile and not cheap. A SLOW feed rate is ALWAYS safer than getting in a hurry and breaking the only bit you have of a given size on hand. I often set mine to around 20-30mm/M tops.

How to set up each sized hole: So in order to get the Gcode for drill our holes we have to first pick one or more of the drill sizes in the TOOLS section. So we will start with the 1.016 size by selecting it and making sure the tool # is highlighted in GREY and that no other tools are highlighted.

Now we will input our values in the CUT Z, TRAVEL Z and FEED RATE windows. My stock is 1.56mm thick so I will input a value of -1.85mm in the CUT Z window. I will put in a value of 0.5mm for the TRAVEL Z window and a value of 25 in the FEED RATE window.

Now we will press the GENERATE button to make the Gcode for your chosen tool size. Pick the next tool size by highlighting the tool number in the TOOLS section then recheck your values and hit GENERATE to make the Gcode for the new tool size. You will do this for EACH tool listed so you can change bits on your mill and drill the right sized holes in your board.

Like I mentioned before since this is an example board, I will be using only 2 hole sizes for this board. I will be lumping the 1, 0.7 and 0.8mm sizes into one drill path of 1mm sized for ease of photos later. My second drill path will be 2mm sized (for the 2.2606mm).

Now that we have each of our drill Gcode files made we will need to save them so the mill can use them. When you click on the PROJECT tab you will see a .TXT_CNC file for each drill size you used. As you add sizes they will change the file name to .TXT_CNC_1, .TXT_CNC_2 and so on. It is a good idea to keep track of the order in which you use your different drill bit sizes, so that you can easily know which size bit goes with which .TXT_CNC file.
Refer to the Step 5 Saving the isolation trace Gcode section above if you need a refresher how to save your Gcode for the drill paths. Remember to label your Gcode so you can recall which drill size to use with which file.


Board cutout.

In this step we will tell the mill how to cut out our board. This step is done on the mill after we have finished milling all the traces and drilling all of our holes. To do this we will go to the FILE window and then to OPEN GERBER and select the file with the .GKO at the end of it, so Pulse-Width-modulation.gko. We will then see this file in our PROJECT window. We will select it then click the SELECTED tab. In the BOARD CUTOUT section we will see the following.

TOOL DIA: This is diameter of the tool we will use to cut out the finished PCB for our copper clad board. I use a 1mm chip breaker end mill for my boards. So my value here will be 1mm.

MARGIN: You can enter a value here to change how much of setback your end mill will leave around the sides of the board. I leave the stock value of 0.1 for my projects. You can change this as you see fit.

GAP SIZE: When you cut out your board, FLATCAM will leave a gap (or TAB) of the size you choose here. I tend to pick about .5mm since my boards are taped to my waste board.

GAPS: Here you can pick between 2 gaps on the top and bottom, 2 gaps on the left and right or 4 gaps total. Each gap will be the size you picked in the GAP SIZE window above.

Now we will hit GENERATE GEOMETRY and we will see the thin red line surrounding our board now with small gaps, the size and quantity you chose above.

Now we will return to the PROJECT tab and see the new Pulse-Width-modulation.gko_cutout file there. We will select it then click the SELECTED tab.

In the CREAT CNC JOB section we see the following Windows.

CUT Z: This is our DOC (how deep the end mill will cut in ONE pass). Measure your board thickness and then add about .125-.250mm to it to ensure you cut all the way through it. So we will enter -1.85mm for my stock today.

TRAVEL Z: This is how high the tip will raise above the stock when moving between milling paths. I keep mine set to .15MM to reduce air cutting time between moves.

FEED RATE: This is of course how fast our end mill will move across the surface while cutting or moving between cuts. I keep mine set to about 60-80mm/M.

Tool dia: This is the diameter of the tool at the contact surface. This value will be for me.

Press GENERATE and you will see the blue outline of our board cutout tool path. Now refer to Step 5 above to save the Gcode. Be sure to label the file so you know the tool needed. I use 1mm cutout.

That is all for the FLATCAM Gcode section. If you really want to know more FLATCAM you can go HERE to find out ALL about it and how powerful of a program it is for PCB milling. Of course it is not the only game in town for PCB milling and I encourage everyone to use the software they enjoy the most.


Milling your sacrificial waste board

15 minutes

So now we get to start the fun part….MILLING! We all love this part so now it is time to make some chips!

We will start by measuring our copper clad stock. Mine is about a 4×6 size board. So we will need to take the measurement of our stock and go to our CAD program of choice and program in a pocket just a bit bigger than our stock size and about 0.5mm deep. So once we mill the pocket we will have a pocket just bigger than our stock 0.5mm deep.

Once you have your pocket Gcode set up. You will mount your sacrificial piece of pine or MDF to your mill bed. Make sure it is clamped tightly. Verify that you will not be milling into any holding clamps.

Mount your end mill into your spindle and place it at the starting point for your Gcode. I use the center on my projects. I slowly lower my spindle until the end mill JUST makes contact, then zero out the Z Axis. Then run your pocket Gcode to mill your flat pocket for your PCB stock.

Once it is finished jog the spindle out of the way and clean up the chips. Then take your fine sanding foam block and give a light sanding to the pocket to make sure all the burrs and any tiny ridges are knocked down and you have a smooth surface for your tape to stick to. Vacuum this really well to ensure the tape will stick in the next step.

Now you have a nice smooth and level pocket to place your stock in.


Mounting your PCB blank

Now we will prepare the PCB blank for mounting in the pocket we just milled. First we want to put some double stick tape across the back of our board, opposite the copper clad side.

On my 4×6 sized blank I will be using 3 strips of 665 double sided tape. Top, middle and bottom.

Make sure your milled pocket is free of dust and chips before moving forward.

Once you have the tape in place you will place the board tape side down in the pocket we just milled and ensure the bottom edge of the board is resting along the edge of the pocket to ensure our board is square to the mill.

Once you have it placed, firmly press down along the board to bond the tape to your milled pocket.


Set up your endmill and probe wires

So now that we have our PCB blank mounted inside of our nice flat pocket we will set up our end mill and probe wires. Place your end mill in the spindle and tighten it up firmly.

Then clamp your probe wire to the end mill. Now tape your other probe wire to the copper on the PCB blank in an area where you will not be milling. Our sample board is rather small so the top right corner of the PCB blank, should do well.

Now line up your end mill point just inside the lower left corner of your PCB blank and zero out your X and Y Axis. Please note that the included GERBER file is zeroed at the bottom left corner of the board.

Use your probe setup to set your Z offest (zero out the Z Axis with the probe wires)

Now we are all ready to start probing!


Probing your PCB blank.

I am going to assume that most folks will be using Chilipeppr for milling their PCBs due to the auto leveling features it allows. All of my PCB milling experience has been with Chilipeppr. But I currently use an advanced controller with built in probing which is not compatible with Chilipeppr, so we will reference some stock shots of Chilipeppr as we cover this section. I will include this great link to a Chilipeppr Instructionable so that everyone can get a through walk through of setting up auto leveling in Chilipeppr. Below is a step by step walk through which should cover everything needed.

1. We will drag our PASS 1 Gcode into our Chilipeppr window to load it.

2. In the WORKSPACE window in the top left we will click on the AUTO-LEVEL button, then click on the PRE RUN tab.

3. If we change the STEP EVERY setting (how far between probe touches) to between 3 to 5mm we will get a nice set of data level points. Once you fill in the value you want, click AUTO-FILL and you will see the area of our probing will be 51 × 48.

4. In the CLEARANCE HEIGHT window place a value of between 0.500 to 1mm. This is how high your probe will raise between measurements. Set the START PROBING HEIGHT to between .250 and .5mm. You want to keep this number as small as you can. The probe moves very slowly under this height and a larger height will increase your probe cycle time.

5. MAX NEGATIVE Z should be set to .5

6. Z FINAL SAFETY HEIGHT should be set high enough to make sure you will not hit a clamp or fixture when the probing is finished.

7. Now we will click on the RUN tab and we will test everything to make sure we do not break an end mill or ruin our PCB blank.

7.1: First we will make SURE your ground lead wire is taped with good contact between the wire and the copper PCB blank, so we have good contact.

7.2: Position your spindle so that the end mill is at least 15mm above the surface of the PCB blank. Now we will remove the positive lead clip of our probe from the end mill and hold it in one hand JUST above the copper surface of our PCB blank.

7.3: With your free hand use your mouse to click the RUN TEST PROBE button, then quickly hover over your E-STOP BUTTON WITH this HAND! As the Spindle slowly descends towards your PCB blank, touch the clip that is in your hand to the surface of your copper board while the end mill is ABOVE the PCB board. The spindle should STOP moving down. If it does NOT STOP the HIT YOUR E-STOP to prevent a crash!!! Double check the wiring on your probe wires if the spindle failed to stop. DO NOT proceed until you have a good test of this feature.

7.4: It is VERY important that we reconnect the clip we held on our hand to the end mill once again so we can probe.

8. Make sure your spindle is lined up on your X 0 and Y 0 points on your board (lower left corner for the example GERER file provided) and that your Z axis is also zeroed out to your board. Now raise the spindle to Z5 and press the PLAY button to start your probing.

9. A small pop up window will remind you to make sure all your connections are good and that your test probe stopped the spindle, otherwise you WILL break your end mill in the next step. Click the LET’S GET PROBING button and sit back and enjoy as the program maps your board.

10. Once the probing is finished you will click on the POST-RUN TAB, then click on the SEND AUTO-LEVELED GCODE TO WORKSPACE button to do just as it says and send your now level code to the workspace.

11. Remove the clip from your end mill and we can get ready for some milling!


Milling the traces

Now comes the fun part! Since we just completed probing our PCB blank, we now have some Gcode we can mill with. Make sure you remove the clip attached to the end mill that we used to probe our PCB blank with. Now we will just hit the PLAY button in the GCODE window in Chilipeppr and our mill will start milling our PCB.

Now you can just sit back and relax while you CNC mill does all the hard work of milling your new PCB out for you.

While the PCB is being milled it is a good idea to pull out and set aside all the drill bits we will need in the next step when we drill out holes.



Once we have all the traces milled on your PCB we will get ready for the drilling phase. For the sample board I will only be drilling with two drill bit sizes of 1mm and 2mm. I have lumped the 0.7, 0.8 and 1mm sizes together for drilling with a 1mm bit. The 4 mounting holes will be drilled with the proper 2mm drill bit.

So pick the first drill Gcode from your list and make sure to insert the matching drill bit into your spindle. For me this will be the 1mm Gcode and drill bit. Attach your probe clamp to your drill bit slowly lower the bits until it is about 2-3mm above the surface of the copper clad. Make SURE your other probe wire is still attached to copper clad board and that your bit is not inside of the milled traces so there can be conductivity when the drill bit touches the copper clad. Click on TOUCH PLATE in the Chilipeppr TinyG or GRBL WORKSPACE. For the TinyG: Fill in the two values, FEEDRATE TO PROBE is the rate at which your drill bit will lower to the copper clad, I keep it set to around 22mm/M to be safe. For the HEIGHT OF PLATE we will enter ZERO (0) since our copper clad is our “plate” this time. For the stock GRBL shield: The DEPTH TO PROBE will be -5mm to -10mm. For FEEDRATE TO PROBE we will enter 25mm/M again for a slow decent speed of the bit. HEIGHT OF PLATE will be ZERO (0) as the surface of our copper clad is our desired Zero.

Make sure to do this or each drill bit, even if they have depth rings installed to make sure you reduce the chances of broken drill bits or holes not being fully drilled through.

Once you have your Z Zero set, remove the probing clip and raise the drill bit up to 5mm, make sure you are at X 0, Y 0. You can now drag your first drill Gcode onto the Chilipeppr workspace and hit PLAY in the GCODE window once it is loaded.

Now sit back and watch the mill drill all the tiny holes for you and be super glad you have a CNC mill instead of just a drill press!

Once the Gcode is finished you can jog the spindle up to a location and height that makes it easy to change your drill bit for the next size needed. Then REZERO your drill bit with the TOUCH PLATE command we used above and you are all set to drag in the next Gcode and drill away.

Once you are finished will all the drilling Gcodes you can take a moment to vacuum up the swarf and put away your prized PCB drilling bits before moving to the next and final milling step, cutting the board out.


Cutting out your finished PCB

So now we can move to the final milling step of our process. Now we get to free our prized little PCB from the copper clad board around it. We will change out our drill bit and insert our end mill to cutout the PCB we just completed.

Once we have the end mill inserted we will make sure to rezero our end mill by running the TOUCH PLATE function in Chilipeppr like we have before, in the above steps from milling and drilling our PCB.

Once you have the end mill zeroed you will drag the cutout Gcode into the Chilipeppr workspace then hit PLAY to start the mill.

Once it finishes you will have your PCB still attached by 2-4 small sized tabs which we set up earlier. I personally jog my spindle over to just above or below the tabs and then lower the end mill to my cutting depth. I then SLOWLY jog the end mill through the tab to cut and release it. I do this for each tab I have. Once finished I raise the spindle out of the way and jog it to the far end of my mill so I can inspect and remove the PCB.


Inspection and Testing.

Now that we have our small PCB board milled and cut out, we can inspect it and then remove it. Double check that all your holes look like they are drilled fully through your PCB and also check to make sure your tabs have been fully cut so your board will pop out freely when we try to remove it. If anything looks wrong you can go back and repeat the needed step since you taped your board done well at the start.

If everything looks good, then we will take the flathead screwdriver and gently pry the PCB free from the double sided tape and the waste board. Be careful when prying the board up to not damage it or yourself with the flathead screw driver.

Once we have our board out we will give it a brief washing to remove all the dust from milling, then we will test it. A simple multi-meter with a continuity function will allow us to test each trace on the board. Also be sure to test each trace for a short to the remaining copper surrounding your traces on the PCB. If everything tests good then you can populate your board and go enjoy your new electronic project with the PCB you just milled!


End Mill Comparison

I often get asked about which end mill mills I use for my PCB milling. I have milled the sample board with 2 different end mills, one is the standard .2mm 30 degree V bit style and the other is the .1mm 30 degree micro engraver. I am attaching some photos here for everyone to review and see the differences between the two styles of end mills.

The .2mm 30 degree standard V engraving bits are easy bought from many places and are very forgiving of error in feeds and DOC. But the tradeoff is the overall quality of the cut and the surface finish they tend to leave. In the pics I have attached the board on the left was milled with the standard .2mm V engraving bit. The board on the right was milled with the .1 micro engraver.

The images of the board on the left all show burring and torn traces. The images of the board on the right show the clean milling traces and smooth finish the micro engraver leaves.

The board on the left was sanded a few times with a fine grit sanding sponge. The board on the right has had nothing done to it after milling.

.2mm standard V bits are over all cheap and easy to find. A good .1 micro engraver averages about $9 plus shipping from Drillman1 on Ebay. The standard .2 V bits are easier to handle and withstand faster feeds and deeper DOCs, but the tradeoff is burring of the traces and often shorting of narrow passages.

Micro engravers have EXTREMELY sharp points and great care must be taken in handling them both for the sake of the fine point and your tender fingers.

I would suggest that someone learn how to mill PCBs with the standard .2 V bits. But upon getting a feel for your feeds and DOC, I would switch to the micro engraver for the lack of burring and finer traces that be milled with ease.

Jocelyn Bouchard
Wow! Great job! Thanks you so much for sharing such a great effort!
Jocelyn Bouchard
John Lauer
Have you tried out ChiliPeppr's Eagle BRD Import feature instead of using Flatcam? One of the super unique things it has is path inflation/deflation so you can try to go as wide on your traces as possible to reduce problems while milling.
John Lauer
Matthew White
Hey John, I found the TinyG and Chilipeppr too unstable for my needs as it often crashed midway through the probing which caused the probing to be restarted over and over on large boards. I have since switched to a MK3 board from Planet CNC which will not work with Chilipeppr.
Matthew White
Toto Titi
How do you do that project now : the machine do no longer come with a spindle that accept small bit (1/8")?Thanks
Toto Titi
Matthew White
You can use the collets sold here!!!Dewalt_611!!!Kit!!!PG!!! to convert the Dewalt 611 and may others to use a 1/8 end mill with ease.
Matthew White
Scott Willis
WOW! Very detailed. Way cool. Thanks for your effort. I may have to give this a try soon and maybe share with some HS students I am working with after school on some projects. Scott
Scott Willis
Matthew White
Thanks! Great to hear it helped someone out! LOVE hearing it will help out some students!
Matthew White
I'm limited to 300 characters so my comment is broken up. This is a great tutorial! In my day job I fabricate PCB prototypes using two LPKF CNC routers. I'm considering an X-Carve to mess with PCB fabrication at home, but can't seem to get the money saved up.
I would like to integrate similar features that the LPKF machines have (tool depth limiter, vacuum table, and a fiducial recognition camera). I have a bunch of tips to add to this, but limited by 300 characters.
The issues you are having with the .2mm bit isn't the size of the bit, but the quality of the bit. My boards look like that too when the bit gets dull. I run the .2mm 90 degree universal cutter from Midwest Circuit Tech in my machines. I use that tool at 40k RPM and 45IPM.
Matthew White
Yeah the quality of the cheap bits most folks buy is pretty bad. I just grabbed a new one from the package of an old set I had and gave it a go. I have not used that style of end mill in ages for PCB. I use them more for soft stone or Al engraving where I am not trying to get such fine detail.
Matthew White
Matthew White
If you pair the right controller with the X Carve you can get the camera interface, though you have to manually jog it, it does adjust the Gocde and mill the board correctly. I use this controller and love it.
Matthew White
Sweet! I appreciate the link. I'm pretty certain I could can an X-Carve to do comparable work to an LPKF machine. Gift me a machine, Inventables, and I'll document the whole thing. :)
Chuck Chambers
Hey Matthew! Thanks for posting this guide. Can you explain the installation process, for a Mac, for FLATCAM? Obviously, I'm one of those download and look for the .dmg file types. I do understand how to get to the terminal app. But, past that gets confusing for me. Thanks!
Chuck Chambers
Matthew White
Hey Chuck, I am sorry to say that is one area that I am not of much help in as I only use Windows OS PCs at this time.
Matthew White
Matthew White
The developer is a great guy and they have a good forum over at their site. I think the best path might be to post a thread there asking for help with the OSX install. I am very sorry I am not much help in that area.
Matthew White
Chuck Chambers
That is not a problem. I still use Windows and will try that route. Then get back on track with your excently guide. Thanks again! If I get help about the Mac OSX installation, I'll let you know.
Chuck Chambers
Tim Nash
I make proto boards here all the time. One suggestion. Sometimes the drill bit will lift the pad if you route traces before you drill. I drill the holes first, then traces/pads. I also drill 1/8" alignment holes for doing double sided boards. Great job!
Tim Nash
Akhil S Nair
when I sent leveled gcode for job, the output I obtained was not as I expected.In some places engraving is not deep even thought I used auto leveling at ever 2 step.I used -0.05 as Z cut and used 0.1 mm 15 degree bit.
Akhil S Nair
sohail imdad
Wow! Great job! Thanks you so much...
sohail imdad
Peter Syster
Big THX. Had trouble generating the toolpath with FlatCam 8.5. Changed the program back to 8.1. I'm fine now. It goes like you have described it. Again, your tutotrial is big help for me as a beginner using my own DIY CNC :-)
Peter Syster
Peter Syster
One note: Using the generated GCODE with I have to ad a blank between each x-y position. Otherwise Repetier-Host wan't work Example: From G01 X4.000Y3.000 change it to G01 X4.000 Y3.000 Hope this helps someone.
Peter Syster
<a href = ""> Your Keyword </a>
Carlos Stein
Dear Matthew White, The PCB should not have been mirrored as it is the bottom layer file (GBL)? IC pin 1 (square) is on the wrong side. In the case of mirroring, is it best to generate the mirrored gerber and excellon files, or do it in FlatCAM? Thank you.
Carlos Stein
Mike Blake
Anyone use bCNC and it's autoleveller ?
Mike Blake
David Zahn
Instead of using several drill bits, I use a 1/32 end mill and mill the holes. This way I can do whatever size hole I want. I just import my eagle cad vectors into my vectric software, add some toolpaths mill the holes, then go around the traces all with the same bit. I end up with beautiful boards.
David Zahn