Easy and Cheap PCB Milling




Introduction: Easy and Cheap PCB Milling

About: Software developer but I love electronics, wood, nature, and everything else as well.

I write this guide because I think It's helpful starter tutorial to milling PCB in a very simple way and low budget.

You can find complete and updated project here https://www.mischianti.org/category/tutorial/milling-pcb-tutorial/

Step 1: Instruments: Router

If you have some passion for homemade things you must build a router.

To build It you need arduino an old scanner and an old printer.

I write old in bold because new device sometime haven't a stepper motor but brush motor with feedback device.

Than If you have at home a dremel like It's perfect to complete your CNC.

My CNC is that (a mix of drawer guides, epson gt-8700 and Lexmark x642e all completed with plexyglass).

Finally I upgrade my router:


Step 2: Instruments: Router Electronic

Component of CNC

  • Arduino UNO.
  • CNC Shield (eBay).
  • DRV8825 (eBay).
  • Stepper from Scanner and Printer.
  • Relay to activate Dremel (eBay).
  • You must create a board to eliminate noise from limit switch.
  • I use HC-05 bluetooth to control the CNC because the noise of dremel is very high and I prefer control from another room (eBay) (Explain connection here).

Program/firmware on Arduino

  • You can find here the program to upload to arduino (I must change some property of code to use without speed regulator, my dremel is activated or deactivated without PWM).

Step 3: Instruments: FR4 Single Side Copper Clad Plate.

For the project I select a single side Copper clad plate 1.5mm thin.


Exists 2 variant one with yellow (laminate) and other white material (Glass Fiber), the second one is better for milling.

Step 4: Instruments: V Style Bit (10° Angle and 0.1mm Tip).

It's very cheap bit I buy 10pcs for 3$, and work well.


Step 5: Instruments: Fritzing

A beautiful program to prototype board.


Step 6: Instruments: FlatCam

A specified program to create gcode from Gerber file.


Step 7: Instruments: Universal GCode Sender.

This program is what I like to use to control my CNC but you can use what you want.


Step 8: Starting Project.

To start we need a project, I like to create a fast prototype board for my IC, and I like to program with ESP01, I like to work with only two wire (so I can use Serial olso), so PCF8574 IC a I/O port expander via i2c protocol is my first prototype board.

The input female pin is GND, VCC, SDA and SCL, the dipswitch-03 is for setting address of i2c.

Then there are 8 female pin for I/O (P0-P7) and a Interrupt pin near SDA SCL pin.

You can find library to use in a simple manner the IC here and the instructable here.

Step 9: Fritzing: Project

For first you must create your prototype on breadboard.

As you can see the only difference from a "normal prototype board" is that I add a female pin.

I add that because so I have that pins to the PCB schema.

If you want you can create a schema for better comprehension, but It's not needed.

Step 10: Fritzing: Start Draw PCB

Than in the third tab you have a scrambled PCB and here we must work.

Positioning is very simple, so I add only some advice.

Step 11: Fritzing: Select Correct Layout of PCB

For first select a gray PCB and in the right panel select one layer PCB.

Step 12: Fritzing: Use Jumper to Overlap

Than start to positioning element over the PCB.

Than connect element, when you have a overlap you can use a jumper element, you can find It at the end of core parts with some other useful instrument for create PCB.

Step 13: Fritzing: for Bigger Hole Ring

I need to connect 2 elements but 2 wire is in the middle so you can use a jumper wire to doing that.

Sometime I don't use jumper wire because I like to create hole bigger than normal.

You can specify size, when I can I create 0.8 0.8 hole (for bigger hole ring).

Step 14: Fritzing: Set PCB Size to Reduce Waste

The blank PCB that I buy is 7cm x 5cm.

To have a better milling surface I prefer use few 45° angle copper wire and I'm going to use a bigger surface with minimal waste so I select a sub-multiple dimensions like 1/2 of the size 3.5cm x 5cm.

Step 15: Fritzing: Use Bigger Size of Copper Wire

When you use few 45° angle you can create a thick copper wire.

Bigger copper wire is more safe when you are going to route PCB.

So select copper wire and "extra thick" on panel.

Step 16: Fritzing: It Is Not Always Necessary Create Components

In this project I need a dipswitch 03 but in Fritzing you have 02 and 08, if you want you can create the component or you can overlap 2 of that to create a single dipswitch 03.

Step 17: Fritzing: Some Text on PCB

If you want add some text on PCB you can use a text instrument.

Now we create a single side PCB so to write something like second image.

You must select silkscreen bottom, and to have a good readability I think you must set 4mm text height.

Step 18: Fritzing: Connect All Elements

At the end when you connect all elements and write what you want.

The typical result is in the Image.

Step 19: Fritzing: Generate Gerber File

In Fritzing we can export the gerber file from the menu File-->Export-->for Production-->Extended Gerber.

Select a folder and go.

The name of the generated file is quite readable.

Step 20: FlatCam: Settings

First I set some default value on my FlatCam.

I set 0.57 for tool dia[meter] because it is the max tool size without too many overlaps.

For Excellon (drill information), I set it to 1.5mm because this is the thickness of the copper clad that I buy.

Paint area I set overlap (0.01) and margin (0.1) very low to create small letter.

Border put 0.1 to margin, other value is reccomended.

Step 21: FlatCam: Import File

You must import in FlatCam so:

File --> Open Gerber

  • copperBottom.gbl
  • silkBottom.gbo
  • contour.gm1

File --> Open Excellon

  • drill.txt

Step 22: FlatCam: Generate CNC Job (drill)

The last one is drilling but Excellon is already geometry.

I don't want to change the bit; I've use the same bit all along and a punching tool to enlarge the smallest part of the V hole. Or if can set low dept and finish hole with a 0.75mm bit.

I also use the punching tool to remove the copper connections that aren't removed by the CNC.

  • Select drill.txt on the screen where there is the list of bit sizes, click and select all (Ctrl+a).
  • Then go to generate CNC Job.
  • Cut Z is the dept of the hole, I set It to -1.5mm the height of copper clad.

Step 23: FlatCam: Generate CNC Job (copperBottom)

Tool dia to 0.57 as usual, and set splindle speed if needed (I use dremel with costant speed).

Step 24: FlatCam: Generate CNC Job (silkBottom)

Now select "Combo" element (generated from the joint geometry of silkBottom) then Create CNC Job.

Step 25: FlatCam: Generate CNC Job (contour)

Lastly, select contour.gm1_cutout.

Here I prefer to generate a cut of 0.5mm dept, then I cut to the line with tin scissors, so I set 0.5 of final dept and 0.05 for pass.

Step 26: FlatCam: Generate Gcode File

From FlatCam select one to one the "*_cnc" file and "Export G-Code".

Step 27: Universal GCode Sender

I use to send command to CNC UGS, It's very simple and beautiful.

The common cutting order is:

  • copperBottom
  • label
  • drill
  • border

Step 28: Universal GCode Sender: Simulation

Here a simulation of Universal GCode Sender.

Step 29: Put Copper Clad on Router

I use biadesive to hold copper clad to the surface.

For this part I use a photo of other project that I have directly available.

Step 30: Start Routing

After positioning Zero coordinate, start routing.

For this part I use a photo of other project that I have directly available.

Step 31: Start Routing: Video

Finish copper bottom routing.

Step 32: Dirty Result

When finish the result is quite ugly.

For this part I use a photo of other project that I have directly available.

Step 33: Sanding Board

With sand paper PCB take form.

Then cut border with scissor.

For this part I use a photo of other project that I have directly available.

Step 34: Copper Clad Milled

Now we have our first view of PCB

Step 35: Soldering Component

In a full PCB copper ring thickness is quite thin, but no problem to solder It.

Step 36: Final Result

The result It's ok.

Step 37: Examples: I2c LCD Adapter

Link to library here.

Step 38: Examples: Pcf8591 Prototype Board

Link to library here.

Step 39: Examples: ESP-01 Prototype Board

Very usefully to use all 4 pin of ESP01, and to manage external power supply.

Step 40: Examples: Pcf8574 Prototype Board Minimal Versione

This version is my smallest size of the board, with very thin copper wire at 45° curves.

Link to library here.

Step 41: Thanks

Epilog Challenge 9

Participated in the
Epilog Challenge 9

1 Person Made This Project!


  • Make It Bridge

    Make It Bridge
  • For the Home Contest

    For the Home Contest
  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge



2 years ago

It is a good effort at an instructable, but it lacks detail, particularly in using flatcam.
For example, what does "Now select "Combo" element (generated from the joint geometry of silkBottom) then Create CNC Job." even mean?

I followed the Instructable, but basically am lost. This is something that requires an instructor to do.

I can't make it work.

Update: Author has kindly pointed me at https://www.mischianti.org/category/tutorial/milling-pcb-tutorial/ and also his tutorial for flatcam: https://www.mischianti.org/category/tutorial/flatc...

These are most appreciated, and the author should be commended for his quick, helpful response. Thank you !


5 years ago

Excellent innovation and reuse of parts! I shall be incorporating some of your ideas into my own CNC router, which is primarily for producing PCBs as routing seems to be the most cost effective and reliable way to produce them. My only reservation is the noise as I live in a flat, so I am looking at way to minimise that and had to laugh at your solution (go to another room) and wish it were an option for me. Thanks for taking the time to post all of this.


Reply 5 years ago

Thanks, you are not the only people that notice the reuse of computer trash, other ask me to add on my youtube a playlist to explain recycle (my cnc final cost is about 40/50€ of parts).

A lot of my project (Router table also I reuse some part of an old cabinet and low cost wood) are ideas to reuse some "trash".

For the noise I advise against the use of the dremel, I control my cnc to arduino via bluetooth because I can not stay in the same room: P, but dremel (clone) can raise 28000rpm with high power, low voltage motor have less power.

But next thing to do is an article about "trash".


5 years ago

Wow, I have seen other attempts at explaining PCB with CNC but none explained it as well and comprehensively as you have. Thank you!!

CNC PCB has been on my list for a long time maybe now it is getting closer.



Reply 5 years ago

Thanks, when I have time I try to do some video (whit my bad english) to explain better the process.


5 years ago

Great overview and of process and way to use off the shelf components to build CNC. Neat how you can make an Arduino basically from an Arduino other than the electronic components themselves of course.


Reply 5 years ago

At least, I have that thought after watching this that using the Arduino as an ISP to program the copy of the Arduino used in the design. Price of Arduino isn't so much though and may be more cost effective to save time and buy another for specific use. I wound up downloading Fritzing again and copied over, upgraded and downloaded the latest libraries. Am going to actually use now. Thanks for sharing and inspiring! Grazie per l'ispirazione!


5 years ago

I should have read this 2 months ago. I have students finishing up their PCBs they are making from Frizing > FlatCAM > milling on Carvey CNC machine. I learned the hard way like you said, extra thick traces! I could not find the jumper in Fritzing, now I see! Did not realize you can set the hole size on via either, that would have helped.


Reply 5 years ago

The process is not difficult but some trick help.

If you have had feedback from your students, tell me if there are parts that should be explored or explained better, perhaps adding some videos.


5 years ago

very nice instructable. I’m working on a CNC right now so this will become useful in the future. Thanks for sharing.


Reply 5 years ago

Thanks, I hope this inscructable help you to overcome the problems I encountered.