In the last (and first) post in this series, we took a look at Eagle. Specifically, we learned how to create a custom part in Eagle. Our goal isn’t just to make our own parts in Eagle, we want to make schematics, boards, and eventually solder a few PCBs.
The board we’ll be making, like all of the boards made in this Creating A PCB In Everything series, is the Nanite Wesley, a small USB development platform based on the ATtiny85. This board has less than a dozen parts, most of which are through-hole. This is the simplest PCB I can imagine that has sufficient complexity to demonstrate how to make a board.
With that said, let’s get onto the second part of our Eagle tutorial and lay out our circuit board.
The Eagle Workflow
Although this guide to making a PCB in Eagle began with making a part, this obviously isn’t the usual workflow. Hundreds of libraries for almost every part you can imagine already exist, including the fantastic Sparkfun libraries, the Adafruit libraries, Dangerous Prototypes, and Seeed’s Open Parts Library for Eagle. In these libraries, or elsewhere on the Internet, you’ll be able to find just about every part you could possibly need.
The general overview of how to create a board in Eagle is to first create a schematic. This schematic will contain all the parts you’re going to use in your project and all the connections between these parts. After the schematic is complete, we then create the board. The board is the physical representation of a PCB, with parts, pads, and traces. This board file can be sent off to any of the usual board houses (OSHpark, Seeed, or DirtyPCBs), and in a week or two, a pile of printed circuit boards will arrive in your mailbox.
To create a schematic in Eagle, select File -> New -> Schematic in the Eagle control panel. The schematic window pops up. This is where you make your circuit. The toolbar buttons in Eagle changed since version 7, in my opinion for the worse, but here’s an overview of the buttons you’ll need to know:
The ‘add a part’ button. This is how you browse and search through libraries for parts.
The ‘delete’ button. Self-explanatory.
The ‘move’ tool. Also self-explanatory.
The ‘draw a bus’ (blue) and ‘draw an electrical connection’ (green) buttons. For this project, we will only be using the ‘electrical connection’ tool to draw connections between different components. The ‘bus’ tool does effectively the same thing, but allows you to group similar electrical connections together (as in the data or address lines between a CPU and RAM). Ignore the blue button for now.
The ‘name’ tool. This allows you to assign a name to individual components or electrical connections. In every board you make, you’ll want to name every connection between components.
The ‘value’ tool. This tool allows you to assign a value to components. Your board may use the same resistor symbol over and over again, but you don’t need to make a new symbol for 22Ω and 1kΩ resistors. With the value tool, we can just assign the same part different values.
In addition to the toolbar, there’s one additional feature that bears mentioning, but isn’t really relevant to this project. The ‘sheets’ window allows you to spread your schematic over several different pages. These pages all go into the same board in the end, but it is sometimes helpful to split parts of your design up into different sheets. Put your power supply/battery management circuit on one sheet, and your microcontroller wizardry on another, for example. The free versions of Eagle only support up to two sheets, making the utility questionable. When you get to larger designs, more sheets are very helpful.
Laying Down Parts
With that out of the way, it’s finally time to start laying down parts and connecting them together. Click the ‘add a part’ button, and after Eagle thinks about it for a bit, this gigantic window will pop up:
This window is how you browse and search all your libraries. Eagle comes with a few libraries already, but to really get the best bang for your buck, you’ll want to download and install the Sparkfun and Adafruit libraries in your Eagle/lib directory.
Now it’s time to start placing parts. I’d start with the microcontroller in this case, and if you’ve built your part correctly, just type “ATtiny85” into the search box and press enter. Select the part, and drop it on the schematic. For this board, we’re going to need a few more parts to complete the circuit:
- (2) four-pin through hole headers
- (2) through hole Zener diodes
- (4) through hole 1/4 Watt resistors
- (1) ceramic capacitor
- (1) 3mm LED
- (1) tact switch
- (1) micro USB port
- several symbols for ground and VCC rails.
All of these parts can be found in the Sparkfun libraries. When we find and drop all the parts on the schematic, we’ll have something like this:
We already know what this schematic should look like; we’re merely copying the schematic we’re using for all of these Creating A PCB guides. Start by taking the symbol for the ATtiny, the capacitor, VCC, and GND and arranging them like so. Use the ‘make an electrical connection’ button to draw the lines out from the pins.
Now it’s time for the most powerful tool in Eagle. Click the Name button and assign a name to each and every one of the electrical connections on the microcontroller. Again, we’re simply copying this schematic. Name the electrical connections PB0, PB1, PB2, PB3, PB4, and NRES, just like in the schematic. Once we’re done with that, use the Label tool to give these electrical connections a label. With that done, we have a surprisingly large part of our schematic complete:
Since the rest of this schematic building exercise is simply copying the reference design while applying the techniques used previously, do that. When you’re done, you’ll have something like the schematic below. Don’t forget to use the Value tool to assign values to the capacitors, diodes, and resistors.
With a completed schematic, it’s time to move onto the cool part of making a PCB: laying out the board.
Designing the Board
With our schematic complete, we can create the board. To do this, simply save your schematic, and from the File menu, select, Switch to board. Eagle will ask you if you would like to create a board from the schematic. Click yes, and you’ll see something like this pop up:
Yeah, that’s quite a mess, but it all makes sense. Let’s break down what’s going on here.
Every part in Eagle is made of two distinct representations: the package, and the symbol. The symbol is what we use to create the schematic. The package is the physical representation of the part, and what we use when creating a board. Those rectangles with green circles are the packages for every part, and the green circles are the pads — the bits of metal poking up through the soldermask that we apply solder to. You may notice the USB port is red — that’s because it’s a surface mount (SMD) part and doesn’t have holes going all the way through the PCB. The red indicates where we solder an SMD part to the top of the board. If the USB port were blue, we would solder it to the bottom of the board.
The thin yellow lines between each pad are airwires, representations of where electrical connections should go. When we start to draw traces, we’ll connect the pads together by following the airwires.
Now, with that bit of nomenclature out of the way, let’s get down to designing a board. Here are the tools we’ll need to create our board:
This is the Line tool. We use this to create the outline of the board. We don’t use this to draw connections between parts – this tool is only used for laying out the outline of the board.
This is the Route tool. We use this when making electrical connections between pads.
This is the Ripup tool. We use this to remove traces we’ve already made.
This is the Polygon tool. We use this tool when we want to fill an entire area of the board. If you want your board to be completely white, Cover the entire board with the silkscreen layer. I’m sure board houses hate this, although it does look cool.
When using the Line or Route tool, we have an option of drawing only on the top copper layer of the board, on the bottom copper layer of the board, on the silkscreen layer, and even drawing negative space on a particular layer of the board. The Layer dropdown menu is how we select which layer we’re routing or drawing on.
The other tools we’ll be using are the move and delete tool. Let’s begin by first drawing the outline of the board in the Milling layer. Use the Line tool and draw a rectangle on the Milling layer. Then start placing the parts like in the reference board. You’ll get something like this when you’re done:
For the time being, we’re going to ignore VCC and GND. We’re only going to concern ourselves with routing the signals between the parts that aren’t power or ground. Click the Route tool, and we can start laying down traces. We’ll want to start laying down traces on the Top layer of copper, or in Eagle nomenclature, the red layer.
To the right is our first attempt at routing the board. It’s pretty good, but there are still a few airwires hanging around that need to be connected, but that’s going to be a little hard to route. Instead of routing each pin individually, let’s draw a Polygon and do what’s called a copper pour. This is an area of copper electrically connected to a signal, VCC, or GND. In this case, we’re going to do a copper pour on the top layer of the board and connect it to GND. That’s a good idea in this case because the large pads on the USB connector are electrically connected to GND. To do this, just click on the Polygon button, and draw the pour using the board outline as a guide. Name this polygon GND, and click OK. Nothing happens.
All of those GND pins are connected together with a copper pour, but Eagle isn’t showing it. We need to force Eagle to show these changes, and we do that with a button on the toolbar. This button is labeled ‘Calculate shortest airwires’, and the icon makes little sense.
With that done, we can create another copper pour on the bottom copper layer, named VCC. From there, all we need to do is draw one or two traces on the bottom copper layer to connect the rest of the pads together, and we have this, a completed board, ready to be sent off to OSHpark, Seeed Studio, or DirtyPCBs.
If you’re exceptionally clever or are just following along, building this board as you’re reading it, you’ll notice a severe oversight:
One pin on the USB port isn’t connected to anything — there’s a tiny little airwire connecting that pin to the closest pad connected to VCC, telling you this is something you need to route. The naive way of doing this is routing a trace around all your components, but that’s dumb and we’ll get to that in the Fritzing tutorial. The much easier way of connecting this pin to VCC is simply drilling a hole through the board.
This is a via. It’s a hole, or pad, drilled right through the board. The inside of this hole is either electroplated or lined with a copper ferrule (very weird and very rare), and connected to traces on the top, bottom, or inner layers of a board. If you want to send a trace to another layer of the board, you need a via.
To put a via on your board, simply draw a trace to somewhere out of the way, and click the middle button on your mouse. This will change the layer you’re drawing traces on. Draw a little bit on the second layer, and let go. A trace will automagically appear.
The Board’s Done. Save everything, and we’re done creating a board. There’s still more to do, in the next (and final) installment of the Eagle portion of this Creating A PCB series, we’re going to send this board off to a fab. This means Design Rule Checks (DRC), creating Gerbers, checking the Gerbers, and a quick bit on my favorite part of Eagle, putting custom art on a board.
As always, if you have any feedback for this post, or the Creating A PCB series in general, leave it in the comments.