Introduction: PCB Milling (easy and Cheap)

Picture of PCB Milling (easy and Cheap)

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

Feel free to correct my bad English, and help me to do It better.

Step 1: Instruments: Router

Picture of 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).

Step 2: Instruments: Router Electronic

Picture of 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.

Picture of Instruments: FR4 Single Side Copper Clad Plate.

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

eBay

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).

Picture of Instruments: V Style Bit (10° Angle and 0.1mm Tip).

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

eBay

Step 5: Instruments: Fritzing

Picture of Instruments: Fritzing

A beautiful program to prototype board.

http://fritzing.org/home/

Step 6: Instruments: FlatCam

Picture of Instruments: FlatCam

A specified program to create gcode from Gerber file.

http://flatcam.org/

Step 7: Instruments: Universal GCode Sender.

Picture of Instruments: Universal GCode Sender.

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

http://winder.github.io/ugs_website/

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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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: Set Correct Versus

Picture of FlatCam: Set Correct Versus

Now we must flip the draw.

  1. Open the panel to check the side (Tool --> Double-Sided PCB Tool).
  2. Set "Mirror Axis" to Y and "Axis location" to Box, and set "Point/Box" to contour.gm1.
  3. Now select one to one all the Bottom Layer and click to "Mirror Object", so you flip all layers.

Step 23: FlatCam: Generate Geometry (copperBottom)

Picture of FlatCam: Generate Geometry (copperBottom)

Now double click to select copperBottom and "Generate geometry".

FlatCam draw a red line to the perimeter of copperBottom image, pay attention where the line is not close, at the end of routing you must break that point(if you want to close the line, set the "Tool dia" to a smaller size like 0.55).

Step 24: FlatCam: Generate Geometry (silkBottom)

Picture of FlatCam: Generate Geometry (silkBottom)

For better comprehension sometime is usefully add text:

  • Select silkBottom, change tool diameter (like 0.4) to reduce margin. Reducing the margin of "red line" is a simple trick to reduce size of the area, then we can use generated area to cut inside.
  • Then one by one we must create the geometry to milling letter inside by:
    • Select silkBottom.gbo_iso than look at "Paint area" panel.
    • Reduce "Tool dia"(if needed) to generate a complete geometry inside the letter. Like image 4.
    • Do it for all the shapes (or letters) that you want milling.
  • Now select all iso paint generated.
  • Then Edit --> Join Geometry (create Combo file with all geometry).

Step 25: FlatCam: Generate Geometry (countour)

Picture of FlatCam: Generate Geometry (countour)

Then select contour and go to generate border geometry.

Put 0.1 to margin to reduce distance.

Step 26: FlatCam: Generate CNC Job (drill)

Picture of 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 27: FlatCam: Generate CNC Job (copperBottom)

Picture of 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 28: FlatCam: Generate CNC Job (silkBottom)

Picture of FlatCam: Generate CNC Job (silkBottom)

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

Step 29: FlatCam: Generate CNC Job (contour)

Picture of 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 30: FlatCam: Generate Gcode File

Picture of FlatCam: Generate Gcode File

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

Step 31: Universal GCode Sender

Picture of 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 32: Universal GCode Sender: Simulation

Here a simulation of Universal GCode Sender.

Step 33: Put Copper Clad on Router

Picture of 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 34: Start Routing

Picture of Start Routing

After positioning Zero coordinate, start routing.

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

Step 35: Start Routing: Video

Finish copper bottom routing.

Step 36: Dirty Result

Picture of 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 37: Sanding Board

Picture of 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 38: Copper Clad Milled

Picture of Copper Clad Milled

Now we have our first view of PCB

Step 39: Soldering Component

Picture of Soldering Component

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

Step 40: Final Result

Picture of Final Result

The result It's ok.

Step 41: Examples: I2c LCD Adapter

Picture of Examples: I2c LCD Adapter

Link to library here.

Step 42: Examples: Pcf8591 Prototype Board

Picture of Examples: Pcf8591 Prototype Board

Link to library here.

Step 43: Examples: ESP-01 Prototype Board

Picture of Examples: ESP-01 Prototype Board

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

Step 44: Examples: Pcf8574 Prototype Board Minimal Versione

Picture of 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 45: Thanks

Comments

Overlord7987 made it! (author)2018-01-16

I would highly recommend checking out chilipeppr for making PCBs. It allows for gcode sending over local or other networks and has a great feature where you can drag an eagle .brd file into your browser and it will automatically create the required gcode. The board below is the first board I created. I used a UV soldermask (well worth the 2 euro I spent). This particular board I messed up thus the wires soldered straight to the IC, but I was very happy with the results of the PCB.

xxreef (author)Overlord79872018-01-16

It's a beautiful work.

I didn't know this framework, I am a front-end developer, and in the future I'd like to create cloud services to interface with microcontrollers as progressive web app, but as you have show to me there is already a base to work on.

I'll implement some web management interface as exercise, maybe I'll write an instructable ;).

JacSjoerd (author)2018-01-13

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

xxreef (author)JacSjoerd2018-01-15

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

About This Instructable

2,790views

54favorites

License:

Bio: Software developer but I like electronics, wood, nature, and everything else as well.
More by xxreef:PCB Milling (easy and Cheap)I2c Device CommunicationArduino Remote/wireless Programming and Power Bank Homemade
Add instructable to: