by Brad Campbell
This guide outlines how I organize and create board files for eagle. You may not agree or like my particular style, but the upside is I have many convenient scripts that automate packaging and converting files.
Also see our tips page for tricks when actually designing a board.
When creating board files, I start by creating a hardware
(or sometimes eagle
) folder in the project folder or repository. Inside of that folder, all of the folders are names of the boards I create. Let's say I'm creating a PCB called “First Board”. I would then create the first_board
folder inside hardware
.
Now, we know that boards often need to be updated, changed or fixed. Therefore, we must support revisions of our boards. To handle this I create folders like rev_[a|b|c|…]
inside of the particular board folder. For the first revision I create the folder rev_a
.
At this point the folder tree looks like:
<project repo> -- hardware -- first_board -- rev_a
Then I create the eagle .sch
and .brd
files. I name these first_board.sch
and first_board.brd
.
When designing schematics I always start with the frame from the shed/eagle/lbr/frames.lbr
library. This frame has a built in block M, is designed for letter sized paper, and is very compact.
The frame supports three global attributes in order to fill in its fields. In Eagle, go to the Edit
menu then Global Attributes
. The REV
attribute should be set to A, B, C… depending on the revision. The TITLE
attribute should be set to the name of the board, in this case First Board
. The AUTHOR
attribute should be set to the name of the creator of the board.
This guide is not going to go into how to design or layout PCBs. Places you might want to look:
Once you are happy with the board you need to create gerber files you can send to a board house. I use sunstone's CAM process. In the board editor run (for two layer boards) shed/eagle/cam/2LPlus-Sunstone.cam
and shed/eagle/cam/excellon.cam
..
Creating a Bill of Material is crucial for being able to assemble a board in the future. To get a start, in Eagle Schematic mode go File → Run ULP
then select bom.ulp
. Change “List Type” to “Values” and “Output Type” to “CSV”. Then save that to a file (like first_board.csv
.
Open that CSV file in Libre Office or Excel. Now you want to clean it up. I always start by sorting by the “Parts” column. Warning, anal-retentive: Then I manually update the part names (of resistors, capacitors and inductors) so that the larger the part name the larger the value. For instance, if I had two capacitors, one 1nF and one 1uF, I would make the 1nF cap C1 and the 1uF cap C2. This is maybe a bit extreme, but it does turn out to be very nice to all discrete parts of the same value in consecutive numbers. That is, all the 1uF caps might be C4-C10. This helps when assembling boards.
Make sure all the parts are accurately represented in the BOM. There should be a DIGIKEY column that contains the digikey part numbers for all of the parts. If a different place carries the part then add that as a column as well. For instance maybe only mouser sells a part. Then add a column called MOUSER and put the part number in that column.
Save the bom as <board name>_bom.xlsx
. In my example this would be first_board_bom.xlsx
. Yes, it's a little weird to use Excel format, but it is the industry standard. All assemblers will accept and understand it and that just makes everything easier.
Once you have done all the setup work, it's time to let my scripts take over. These scripts will do several things:
grep
.To run them, simply:
github.com/lab11/eagle/scripts/eagle.py
in the same folder as the .brd
and .sch
files.
Viola!
We often use Sunstone Circuits, Advanced Circuits and QuickturnPCB. I would avoid Streamline Circuits.