PCB Milling Tutorial by Ayesha Ebrahim

Hi everyone! In this tutorial we will be going through how to mill out a PCB with your Sienci Mill One. Let’s get started!


STEP 1: Create PCB Design

To create our PCB design, we will be using EAGLE. EAGLE is a PCB design software that allows you to create schematics and transform them into board designs. You can get the free version here: https://www.autodesk.com/products/eagle/free-download.


Step 1.1: Create New Project

Start off by making a new project. To make a new project, open up EAGLE’s Control Panel and go to File → New → Project.


Step 1.2: Create New Schematic

Once you have made your project you will want to create a schematic within it. To create a schematic, find your project in the “Projects” folder located on the left-hand navigation sidebar on the Control Panel, right-click on your project, go to “New” and select “Schematic”.

Now that you have a schematic file open, design the schematic of the circuit you wish to mill out. Here is a good tutorial to get you started on how to use EAGLE for schematic design: https://learn.sparkfun.com/tutorials/using-eagle-schematic.


Step 1.3: Create Board

When you are satisfied with your schematic, create a board for it by opening up the schematic and going to File → Switch to board.

This action should open up a board file that is linked to your schematic file and should look something like this:

At this point you can go ahead and lay out your parts on your board. This is a very useful tutorial on EAGLE Board Layouts: https://learn.sparkfun.com/tutorials/using-eagle-board-layout.


Things to note when creating a board layout in EAGLE:

  1. The EAGLE route thickness default is too thin to mill out. For a PCB with 1oz copper thickness aim to get a route thickness of around 32mil**. The mill can handle thinner traces but it is nice to keep them thicker to reduce the chances of traces breaking. To change your route thickness go to Edit → Change → Width and then select the width you would like and all the routes you would like to change.
  2. Try to make your pads as big as possible as that will make soldering components to your board easier. You can change pad size by going to Tools → DRC → Annular Ring.
  3. Make sure that there is at least 0.7mm** of space between all wires and pads. You can check this by going to Tools → DRC → Clearance, set the desired clearance, and press “Check”. Once again, the mill can tolerate less than 0.7mm of clearance but it is better to avoid having traces touch each other.
  4. If you are a beginner, it is recommended to keep your board one-sided (avoid making routes on both the top and bottom layers) as having traces on both sides of the board makes the milling process more complicated.


**These values are also dependent on the thickness and angle of the engraving bit. These particular numbers are based upon a 0.1, 30° engraving bit. If you have an engraving bit that is wider or has a larger angle, increase these values.


Once you are satisfied with your board move onto the next step!


STEP 2: Get Gerber (.gbr) Files

To generate G-code to mill out the PCB you need to get the Gerber files from EAGLE. To get the Gerber files, open your board file and navigate to File → CAM Processor.

This will open up a window where you can download the output files you need.


We are interested in the following files:

  1. Top Copper (under Gerber) – Contains the data for the traces on the top of the PCB.
  2. Excellon (under Drill) – Contains the data for the holes that will be drilled out of the PCB.If you are creating a PCB with traces on the bottom of the board as well (i.e. a double-sided PCB) you will also need:
  3. Bottom Copper (under Gerber) – Contains the data for the traces on the bottom of the PCB


Step 2.1: Get Excellon (.xln) File

The first file we are going to download is the Excellon file. None of the settings need to be changed but you can reference the image below to make sure your settings match mine.

When you are ready click “Export File”. Do NOT click “Process Job” as that will download all the output files.


Step 2.2: Get Top Copper (.gbr) File

Now we are going to export the Top Copper Gerber file for the top traces. Once again none of these settings need to be modified, but you may choose to check the “Board Shape” option, as I have, to include the board outline. Click “Export File” when you are ready.


Step 2.3: Get Bottom Copper (.gbr) File

This step is only necessary if you have traces on both sides of your PCB. If you only have routes on the top layer in EAGLE you can disregard this step.

Unlike for the other two files, the “Bottom Copper” settings need to be modified. Since you will be flipping your board to engrave the traces on the other side of the PCB you will need to mirror the “Bottom Copper” design and adjust the offset to accommodate the mirror. These changes can be made under the “Advanced” settings section at the bottom of the window. Since I will be flipping my board from right-to-left I have chosen a mirror that mirrors the output Gerber horizontally and set “Offset X” to be the width of my board. If you choose to flip your board from top-to-bottom you will need to select the mirror that mirrors the output Gerber vertically and set “Offset Y” instead. Click “Export File” when you are done.


STEP 3: Generate G-code

To generate the G-code we will be using Carbide Copper: http://carbide3d.com/apps/pcb/. Let’s go through each step taken within Carbide Copper together.


Step 3.1: Copper Material

Material Size: Enter the width and height of your material

Thickness: Enter thickness of your PCB board

X/Y origin position: Select where you would like to zero the mill

Flat surface: N/A


Step 3.2: Bottom Layer Signal Traces

Click “Choose File” and select the “copper_top.gbr” file.

Count: This is the number of outlines that will be made around a trace. I went with 3 but having more may ease the soldering process as more of the excess copper around the traces would be removed, however, it does increase the milling time considerably.

Tool: Select the engraving bit/ V-bit size you are using.

TIP: If you are finding that the mill is cutting too deep when milling your PCB try selecting a tool with a larger tip diameter and angle than yours as it may trick the program into making a more shallow cut.

Feed rate: Use 13.33mm/s – this value is from Sienci’s “Feeds & Speeds” page under resources (to convert from mm/min to mm/s, divide by 60).


Step 3.3: Drill Holes

Click on “Choose File” and upload your “drill.xln” file.

Tool: Select your drill bit size

Depth: Select the depth you want to drill

Plunge Rate: Use 1.67 mm/s – this value is from Sienci’s “Feeds & Speeds” page under resources (to convert from mm/min to mm/s, divide by 60).


Step 3.4 & 3.5: Board Cuts & Large Area Rubout

We will not be using these settings in this tutorial but you may find them useful. So feel free to test them out.


Step 3.6: G-code Output

Safe height: Use 3 mm

Rapid move rate: Use 25 mm/s

File extension: Use .nc

Once finished, click “Generate and save to disk” to download the G-code files. You should have two files downloaded in a zip file: bottom_contour.nc and bottom_drill.nc.


Step 3.7: For Double-Sided PCBs

(If you are making a single-sided PCB skip this step)

Rename the downloaded files to top_contour.nc and top_drill.nc instead of bottom_contour.nc and bottom_drill.nc, respectively. This should be done to avoid confusion when downloading the files for the bottom traces.

Now go back to Step 2 in Carbide Copper and reupload the Gerber_RS247X signal file. This time, upload the “copper_bottom.gbr” file. Then go straight to Step 6 and redownload the G-code files.

The downloaded files will include both bottom_contour.nc and bottom_drill.nc, as before, but now you can delete the bottom_drill.nc file as you will not be using it.

In summary, you should have three G- code files: top_contour.nc, top_drill.nc and bottom_contour.nc.


Now you are ready to use your Mill One to mill a PCB!


STEP 4: Mill it out!


Step 4.1: Cut Out a Board

Use an end mill to cut out the PCB board to the appropriate shape. You can usually find a end mill specifically designed to cut PCBs such as corn cob end mills. The G-code can be generated regularly by creating a 3D model of the board shape you would like and then generating the G-code using a CAM program such as Kiri:Moto or MakerCAM.


Step 4.2: Mill Out a Slot in Wasteboard

(If your PCB is single-sided, skip this step)

Next switch out the bit for a regular mill bit, and mill out a slot into a board for your PCB to fit inside, using the same method mentioned above.

The reason we are milling out a slot is to be able to accurately realign the PCB with the mill when flipping the PCB to mill the copper traces on the other side of the board.


Step 4.3: Engrave Top Copper Traces

After that, use double-sided tape to secure the PCB in the slot.

NOTE: If you find that the tape is not strong enough to hold the board down, you can use hot glue, but beware of the board warping.

Make sure you align the corner of your PCB to the corner of the slot. Once the PCB is secured, change the bit to your engraving bit and zero the mill. After zeroing the mill lift off the z-axis by 0.2mm and reset the z-axis’ zero. In order to achieve an optimal cutting depth, go through the following process:

  1. Bring down the z-axis by 0.05mm and reset the z-axis’ zero
  2. Run the G-code (top_contour.nc for double-sided boards or bottom_contour.nc for single-sided boards) and check if it cut through the copper
    • If the copper is not cut all the way through, stop the program, lift the z-axis, return to zero and then repeat the process
    • If the copper is cut all the way through and you are satisfied with the depth of the cut, let the G-code run


  1. After the x and y axes have been zeroed, they should not be zeroed again throughout the entire milling process so that all the layers line up.
  2. To ensure that the machine does not move between bit changes, enter the command “$1=255” within the command line in the Universal G-code Sender and move the mill in any direction to activate it. This command ensures that the motors are always on, even when a job is not running, so that the mill’s position is fixed. You can undo this command by typing the command, “$1=35” and moving the mill in any direction (35 is an arbitrary number, you can choose any number between 1 and 254).


Step 4.4: Drill Holes

Once the top traces have been engraved, bring up the z-axis and reset the z-axis zero, remove the engraving bit and replace it with a thin drill bit. The drill bit should be between 0.8-1.0mm. Return to zero, zero the z-axis to the new bit and then run the drill G-code (top_drill.nc for double-sided boards or bottom_drill.nc for single-sided boards).


Step 4.5: Engrave Bottom Copper Traces

(If your PCB is single-sided, skip this step)


Now remove the board from the slot, remove the tape and tape the other side. Flip the PCB the way you specified in the Cam Processor within EAGLE and secure the PCB once again in the slot, aligning it to the same corner as before. Then change the bit to your engraving bit and repeat the same process used when engraving the top traces.


Step 4.6: Remove Excess Copper

In many cases this step is not necessary, but it can really help when trying to solder components onto your PCB later.


To remove the excess copper use a utility knife and your nails to try and get under the copper layer. It is easier to start at a corner. Once you have a hold of the copper, peel it back carefully.

Repeat this process until all the copper around your traces is gone. If need be, you can sand off any copper burrs coming off your traces.


Now you are done and your PCB is ready to be soldered!


Sienci Labs_ PCB Milling Tutorial (Download this tutorial in .PDF)