The Art of PCB Design

From Stanford SSI Wiki
Revision as of 06:35, 23 August 2022 by Timv (talk | contribs) (Timv moved page How to produce a good PCB to The Art of PCB Design: dumb name)
Jump to navigation Jump to search

There are many useful tutorials on this wiki (Category:Altium), covering everything from Altium Installation, to footprint design, to DFM. But it's possible to follow those tutorials exactly and still end up with very sketchy PCBs. The purpose of this guide is to help you become a better electrical engineer and PCB designer. Hopefully it will help you design PCBs that are aesthetically pleasing, functional and reliable.

Step 0: Product Design

The most often skipped step in designing a PCB is the design itself. Most EE's don't take product design classes, but it's an important skill to develop. Putting together a comprehensive design will push you to answer the following questions:

  • What are the functional requirements of my PCB?
  • What are the major components you will need on your board to achieve that functionality?
  • In what ways will these components be interconnected? (SPI, UART, I2C, CAN)
  • How will power be managed on your PCB? How much power do you need, and where will it come from? How long do your batteries need to last, and what kind will you use?
  • What physical and thermal requirements do you need to satisfy? Will there by high acceleration or low temperature? How will you test these factors?
  • What shape/size does your PCB need to be? How will it be mounted?
  • What things need to connect to your PCB? What kind of wires will you use? What kind of connectors? Will you be able to quickly integrate and de-integrate your PCB from the system?
  • What failure modes could your board exhibit, and which could hurt mission success or pose a safety risk? How can you mitigate these risks in your board?
  • In what ways could misuse/abuse of your board destroy it, and how can you add protections from the stupid behavior of your future self?
  • How can I prototype different parts of my circuit on a breadboard with breakout boards to verify it works as intended?
  • What code will run on this board, and how can software development done in parallel to PCB layout?

Because SSI is a large team with many projects and members, You should also consider the Extensibility of your design:

  • How can your design leverage existing PCB schematics to speed up the design process?
  • How can you use the flight heritage of existing circuits to reduce the chance of your system not working?
  • Has any past project developed modularity that you can build upon?
  • Can you add modularity to your design that future projects can build upon?
  • Can your design be made more flexible or configurable for future missions?

The answers to some of these questions might be "no", but you should try to think about them. Here are a few case studies of past SSI boards that were designed on paper

Valbal EE 9

ValBal EE 9.1 Changelist

ValBal EE 9.1+ plans

ValBal Payload Interface Specification

SpaceSalmon Stack

Fishy Business

Board to Board Connections

Hardware Overview

Thunderguppy

ThunderGuppy Battery Issue

ThunderGuppy Initial Design

ThunderGuppy Spec

Buddy V3

Buddy v3 Design

Step 1: Pick the Parts

Step 2: Napkin Sketch

Step 3: Schematics

Schematic Design is the process of specifying the symbolic representation of your circuit in a format that both the computer and a human can understand.

  • You should make your schematic clean enough that another human can read it. If no one else can read it, they won't be able to catch your mistakes
  • You should make heavy use of existing schematics for past SSI projects, especially those you understand and have flight heritage
  • You should use a strict hierarchical schematic sheet tree, with sheets nested within other sheets to reduce complexity

Step 4: Footprints

See Making Parts for PCB Libraries

  • If possible, design your circuit to use parts that have heritage, and have footprints in the library
  • Take the time to track down 3D models for components, it will help prevent dumb ME issues later on

Step 5: Layout Parts

Before you start laying out traces, try to get a rough layout of all your parts done. Traces can always be re-routed to other layers, but physical components can't be easily moved once placed. Keep in mind your mechanical design constraints. Make sure your switches and connectors are accessible at the edge of the board, etc.

Step 6: Layout Traces

Laying out traces is not something that happens linearly, nor quickly. Computers can beat humans in Chess, and in Go, but no computer has ever reliably been better at PCB routing than a good human. It's best to tackle large or complex layout projects during uninterrupted time, when you can really really get into a Zen state. Big projects tend to get routed during breaks. You may have to revisit Step 3 above when you find the the way you were envisioning the traces being routed doesn't work out. This is fine. PCB design doesn't fall into the strategy of "rapid prototyping" yet, and so you're better off taking your time, getting everything neatly aligned.

Step 7: Layout Memes

Take deep breath as you feel yourself emerge from the tunnel of layout. Perhaps you still have things to touch up, but the end is in sight. Take some time to think about what you want on your board, other than the electronics. There are a few things you need to have:

  • Board Name
  • Engineers Names ("T. Vrakas" is the usual format)
  • Year
  • Sponsor Logos (ask in #altium if you don't know)
  • Labels on all connectors, switches and LEDs

And also many things you may want to add. Namely: Memes! Keep it PG, because we have to send the boards to BAC, and we don't want them giving us weird looks. (TODO: attach pictures of past memes)

Step 8: DFM

Step 9: Prototype