PCB Designing and Isolation Milling Using Only Free Software




In this Instructable I will show you how to design and fabricate your own PCBs, exclusively using free software that runs on Windows as well as on a Mac.

Things you need:

  • computer with internet connection
  • cnc mill/router, the more accurate the better
  • 45°/20° V-Bit
  • 0.8mm drill bit
  • 3mm endmill
  • copper clad board
  • double-sided adhesive tape

Step 1: Get the Software

You need the following software:

Click on the links, download and install the software on your computer. Makercam doesn't need to be downloaded/installed since it runs directly in your browser.

Step 2: Designing in Fritzing

Start Fritzing and start a new sketch.

Go to breadboard view by clicking on the breadboard tab on the top of the window.

On the right side is your part-library, select the components you want in your circuit and drag&drop them into the breadboard window. Make sure the parts have the desired specs such as pinout, value and size. You can change these variables of the selected component in the Inspector to the lower right of your screen.

In this example I'm making a circuit that uses an Arduino Nano for switching a 12V relay. For this i need a transistor with a resistor to the base as well as a catch diode in parallel to the relay coil and two screw terminals.

The connections/wires between the components are made by clicking and dragging on a leg/pin of the component. Bendpoints in the wires can be made by clicking and dragging inside a wire.

Make all the connections you need and would do on a real breadboard for the circuit to work.

Step 3: Schematic View

Now navigate to the Schematic View.

You will see a wiring diagram with all your components and their connections. Tidy things up by dragging the components in a reasonable order and clicking and dragging the dashed connection lines so they're not intersecting themselves.

Step 4: PCB View

Go to PCB View.

Drag your components in a reasonable order. A good rule of thumb is to place the components with the most pins to the center and the other components around. Try to get a compact distribution.

The parts lock automatically to the grid you see in the background. For changing the grid size go to View -> Set grid size.

Step 5: Autoroute

Click on Routing -> Autorouter/DRC settings and select custom production type. Now you can set the trace width to the desired thickness depending on your machine/endmill/circuit. I used 48mil. Click "OK".

Select the grey rectangle (the PCB Board) and in the Inspector change the layers-dropdown to "one layer (single sided)".

Now hit the Autoroute-button in the bottom of the window and let the computer do the routing work!

Step 6: Some More Routing

When the Autorouting is complete, tidy up the traces by clicking and dragging their bendpoints. Right click on the bendpoint and select remove bendpoint for removing it.

Sometimes there are connections the Autorouter cannot route. You have to route them by hand by clicking and dragging the dashed connection lines. Use Jumpers from the parts library for jumping over traces you otherwise would intersect.

You can also add text/logos that will show up in the copper mask by dragging "Silkscreen Image" or "Silkscreen Text" from the library to your board. Select your logo and in the Inspector under Placement - pcb layer dropdown menu select "copper bottom". you can load your own .svg files too by clicking on "load image file" in the inspector.

Step 7: Check Your Circuit

If you think you are ready with the routing click on Routing -> Design Rules Check for automatically checking your creation for missed connections / overlapping or intersecting traces.

Try to eliminate all errors and repeat the DRC until there are no more problems. Design is finished!

Export your PCB as .svg files by clicking on "Export for PCB" on the bottom. Click on the small arrow on the Export button and select "Etchable (SVG)".

You will get a bunch of svg's exported in your selected directory but we will only use two of them:

  • *yourfilename*_etch_copper_bottom_mirror.svg
  • *yourfilename*_etch_mask_bottom_mirror.svg

All other files can be deleted.

Step 8: Inkscape

Open the *yourfilename*_etch_copper_bottom_mirror.svg in Inkscape, select everything and repeatedly press ctrl+shift+g until everything is ungrouped.

Select view -> display mode -> outline. You will now see only the vectors without fill or stroke.

Select all traces and go to Path -> Stroke to Path.

Select all traces and go to Path -> Union.


The file is now ready for CAM!

The other .svg we exported from fritzing doesn't need to be processed in Inkscape.

Step 9: Makercam

Open your browser and go to makercam.com.

Go to Edit -> Edit preferences and change the SVG Import default resolution to 90 ppi.

Go to File -> Open SVG file, navigate to your directory and select the "*yourfilename*_etch_copper_bottom_mirror.svg" file.

Step 10: Isolation Milling

Select all your traces (but not the inner circles of the pins) and go to CAM -> profile operation.

If your CNC is GRBL based you may want to do all CAM in makercam in imperial units (see here for further reference). So you have to convert all your millimeters to inches before typing them in.

If you're using a 45° V-Bit with 0.2mm tip for the isolation milling process and dive 0.25mm into the material, the effective tool diameter at the surface of your copper clad board is 0.39mm. This converts to 0,015354331 inches, Yayy!

As said, we want to go 0.25mm deep in the board, so we're typing -0.0098425197 inches as our target depth. The step-down value should be bigger than that so the cutter goes through in one single pass.

I found a feed rate of 150mm/min and a plunge rate of 50mm/min to be working well on my machine.

Click OK.

Step 11: Logo

Select the logo/text and go to CAM -> follow path operation.

For more detail in the logo, I used a 20° 0.2mm V-Bit. Since with this operation the center of your cutter follows the paths (as opposed to the profile operation where the "edge" of the cutter follows the path), it's not critical what you type in as for tool diameter.

Target depth is this time -0.2mm (for more detail).

All other values are the same as for the isolation milling.

Click OK.

Step 12: Contour Pass

Now we want to cut our PCB out of the stock copper clad board.

Select the outer contour and type in the required values.

I used a 3mm 4-flute bit with a feed of around 400mm/min and a plunge of 50mm/min. Step down was 0.4mm.

Click OK.

Go to CAM -> calculate all.

Go to CAM -> export gcode.

Export every operation in a single file. Since every operation needs another tool, it's best to name the files after the tool.

Step 13: Drilling

Reload the page so you're starting a "new project".

Open the "*yourfilename*_etch_mask_bottom_mirror.svg" file. Don't forget to change the SVG-scaling to 90ppi before doing so!

Select all holes.

Go to CAM -> drill operation.

I used a 0.8mm drill bit. My board was 1.5mm thick, so for a clean hole i used -2mm for the target depth. Peck distance should be bigger than this value for the drill to go through in a single pass. I used a plunge rate of about 50mm/min.

Click OK and all holes get automatically detected.

Go to CAM -> calculate all.

Export your gcode.

Step 14: Preparing the Machine

Use some strips of double-sided tape to glue down the copper clad board to the spoilboard of your machine.

Make sure that this part of the spoilboard is completely level, for example you can level it with milling a pocket (just needs to be 0.5mm deep) into it.

Or use an autoleveller. For the GRBL users this can be done by using chilipeppr.

Step 15: Start Milling...

Load the 45° V-Bit

The zero location of the gcode files is on the lower left corner and on top of the stock surface.

So navigate your machine near to the lower left corner of the stock and lower the spindle so the tip of the bit barely touches the surface. Set this as your zero location and start the isolation milling.

Step 16: ...drilling...

Change the tool to a 0.8mm drill bit and set your new Z zero when the tip is touching the surface. Start drilling the holes.

Step 17: ...engraving

Change the tool to the 20° V-Bit and start the follow path operation for engraving the logo/text.

Step 18: Cut Out

The last step is to cut the PCB out of the stock material.

Use the 3mm endmill and the second profile operation to do so.

Step 19: Success!

There you go with your new homemade PCB!

If you're fast (and your design is not too complex) you can make it from idea to product in under 1h.

I hope this Tutorial helps you in your projects and if you want you can vote for me on the top of this page or here. Thank you!

Mind for Design

Second Prize in the
Mind for Design



    • Backyard Contest

      Backyard Contest
    • Growing Beyond Earth Maker Contest

      Growing Beyond Earth Maker Contest
    • Sew Tough Challenge

      Sew Tough Challenge

    52 Discussions

    A great instructable. I'm really grateful that you took the trouble to publish this. This is one to save. Many thanks.

    I'm also grateful to the other viewers who have mentioned their own experiences with this process.


    Question 1 year ago

    Why didn't you use flatcam?


    1 year ago

    Thank you, it's very useful


    Question 1 year ago on Step 7

    how to connect cnc with makercam


    1 year ago

    This product is awesome on the grounds that we as a whole need to make something great and astounding for a decent things to do distribute of things

    Hotline Miam Jacket

    1 year ago

    I qould love to do this, but I am a mac user and to use inkscape I would have to download XQuartz, which for me is not an option. Is there some other piece of software that does the same exact thing that can run on my mac without any extra software?
    Cyborg Cosplay Jacket


    1 year ago

    Cool. Have you at any point taken a stab at utilizing EagleCAD (which is free for littler sheets) and after that dragging/dropping the Eagle BRD document coordinate into ChiliPeppr to process your board utilizing just 2 stages?

    Justice League varsity Jacket

    1 year ago

    So glad I found this thanks so much I have the same setup. Great job


    4 years ago on Introduction

    Cool. Have you ever tried using EagleCAD (which is free for smaller boards) and then dragging/dropping the Eagle BRD file direct into ChiliPeppr to mill your board using only 2 steps?

    1 reply

    2 years ago

    Cool, but I have one question. I am not milling my board with a machine, but rather printing the PCB layout onto a plasic sheet and using it to make boards using the photoresist method. Unfortunautly my dry film is negative, meaning the background needs to be black and the traces need to be left alone. I have looked everywhere on the fritzing program and there doesn't seem to be a way to do this. Is there any way to make the background black and the traces white/transparent by using some other piece of software?

    4 replies

    Reply 2 years ago

    You can do this easily in Inkscape. Just switch the black color to white and put a rectangle with a black fill in the background.


    Reply 2 years ago

    I qould love to do this, but I am a mac user and to use inkscape I would have to download XQuartz, which for me is not an option. Is there some other piece of software that does the same exact thing that can run on my mac without any extra software?


    Reply 2 years ago

    Then you should get yourself a copy from Adobe Illustrator. Or Affinity Designer.


    Reply 2 years ago

    Does Adobe Illustrator have the same functions as Inkscape?


    3 years ago

    Good work


    3 years ago

    Dude, Thank You! i have been trying to find a reliable way to produce G code that didn't involve a million steps for like a month. You sir are awesome!


    3 years ago

    Did you build this cnc mill?


    Can you explain this part?

    "If you're using a 45° V-Bit with 0.2mm tip for the isolation milling process and dive 0.25mm into the material, the effective tool diameter at the surface of your copper clad board is 0.39mm. This converts to 0,015354331 inches, Yayy!"

    I'm getting an effective diameter of 0.2879mm, not 0.39mm.