Difference between revisions of "The Art of PCB Design"

From Stanford SSI Wiki
Jump to navigation Jump to search
m (Linked new page in steps 3 and 4)
 
(7 intermediate revisions by 3 users not shown)
Line 15: Line 15:
 
* How can I prototype different parts of my circuit on a breadboard with breakout boards to verify it works as intended?
 
* 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?
 
* 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 [https://en.wikipedia.org/wiki/Extensibility| Extensibility] of your design:
+
Because SSI is a large team with many projects and members, You should also consider the [https://en.wikipedia.org/wiki/Extensibility Extensibility] of your design:
 
* How can your design leverage existing PCB schematics to speed up the design process?
 
* 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?
 
* How can you use the flight heritage of existing circuits to reduce the chance of your system not working?
Line 25: Line 25:
  
 
=== Valbal EE 9 ===
 
=== Valbal EE 9 ===
[https://docs.google.com/document/d/1ZqCeDwD2tvel5EY0Tf7ifroEml3FEVMDf8KcTDa47p0/edit| ValBal EE 9.1 Changelist]
+
[https://docs.google.com/document/d/1ZqCeDwD2tvel5EY0Tf7ifroEml3FEVMDf8KcTDa47p0/edit ValBal EE 9.1 Changelist]
  
[https://docs.google.com/document/d/1qUs500_CiNvGZa_pNxVXRHfVZONEzjOnMHjTuYiBOjw/edit| ValBal EE 9.1+ plans]
+
[https://docs.google.com/document/d/1qUs500_CiNvGZa_pNxVXRHfVZONEzjOnMHjTuYiBOjw/edit ValBal EE 9.1+ plans]
  
[https://docs.google.com/document/d/1bBLZtZPUD5KbMAy4ByeYykShZlYhj96Qz9vydWjgE5A/edit| ValBal Payload Interface Specification]
+
[https://docs.google.com/document/d/1bBLZtZPUD5KbMAy4ByeYykShZlYhj96Qz9vydWjgE5A/edit ValBal Payload Interface Specification]
  
 
=== SpaceSalmon Stack ===
 
=== SpaceSalmon Stack ===
[https://docs.google.com/presentation/d/10tnuvgWhj59NeUBxJNxlRW7EjcLI8pYms1Hf9A7qRLU/edit| Fishy Business]
+
[https://docs.google.com/presentation/d/10tnuvgWhj59NeUBxJNxlRW7EjcLI8pYms1Hf9A7qRLU/edit Fishy Business]
  
[https://docs.google.com/spreadsheets/d/1-VdcZ4H2OCiGasRVfo6jHaaTqtyZaqoEV8z7C4GdDbo/edit| Board to Board Connections]
+
[https://docs.google.com/spreadsheets/d/1-VdcZ4H2OCiGasRVfo6jHaaTqtyZaqoEV8z7C4GdDbo/edit Board to Board Connections]
  
[https://docs.google.com/document/d/11-6qBFXdFuhDwf6qMIAIUr1ztXR1aTiMrxCtl4si8iQ/edit| Hardware Overview]
+
[https://docs.google.com/document/d/11-6qBFXdFuhDwf6qMIAIUr1ztXR1aTiMrxCtl4si8iQ/edit Hardware Overview]
  
 
=== Thunderguppy ===
 
=== Thunderguppy ===
[https://docs.google.com/document/d/1FlarsfEBXSJtyWvuBv_gb6-OZofqeSfMBd3gmK6JoQs/edit| ThunderGuppy Battery Issue]
+
[https://docs.google.com/document/d/1FlarsfEBXSJtyWvuBv_gb6-OZofqeSfMBd3gmK6JoQs/edit ThunderGuppy Battery Issue]
  
[https://docs.google.com/document/d/1hhX1bpbs2kfcCbvq6EctOQAsNXkiz7CeYOaI4Ki6hTQ/edit| ThunderGuppy Initial Design]
+
[https://docs.google.com/document/d/1hhX1bpbs2kfcCbvq6EctOQAsNXkiz7CeYOaI4Ki6hTQ/edit ThunderGuppy Initial Design]
  
[https://docs.google.com/spreadsheets/d/1MUmFg8R-3JiZXi5GyeJWyJ3OQy3XObGrAN3LtbTdxLI/edit| ThunderGuppy Spec]
+
[https://docs.google.com/spreadsheets/d/1MUmFg8R-3JiZXi5GyeJWyJ3OQy3XObGrAN3LtbTdxLI/edit ThunderGuppy Spec]
  
 
=== Buddy V3 ===
 
=== Buddy V3 ===
[https://docs.google.com/document/d/13fy2KAYhqTLVAPye0ETRxe1ajy-SXyLccdFxlEEXSSw/edit| Buddy v3 Design]
+
[https://docs.google.com/document/d/13fy2KAYhqTLVAPye0ETRxe1ajy-SXyLccdFxlEEXSSw/edit Buddy v3 Design]
 +
 
 +
== Step 1: Pick the Parts ==
 +
This is the most arduous process of all. All components must have suitable ratings and must all communicate/interact with each other.
 +
 
 +
Some websites useful for finding parts and specifications of parts:
 +
 
 +
# [https://www.mouser.com/ Mouser Electronics]
 +
# [https://www.digikey.com DigiKey]
 +
 
 +
Manufacturer sites for even tighter specifications and datasheets:
 +
 
 +
# [https://www.analog.com/en/index.html Analog Electronics]
 +
# [https://www.ti.com/ Texas Instruments]
 +
# [https://www.st.com/content/st com/en.html ST Microelectronics]
 +
 
 +
When picking parts, also make sure to look for evaluation boards, which are breakout boards for microcontrollers to test that their components work. [[/www.digikey.com/en/products/detail/stmicroelectronics/STM32F411E-DISCO/5131480|Example]]
 +
 
 +
== Step 2: Napkin Sketch ==
 +
 
 +
== Step 3: Schematics ==
 +
See [[Altium Schematics and Footprints Guidelines]]
  
== Step 1: 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.
 
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 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 make heavy use of existing schematics for past SSI projects, especially those you understand and have flight heritage
 +
** If the schematic you are looking for is not available in Altium, they need to be imported or created. You can find the schematics of most components on product pages of the websites listed in Step 1.
 
* You should use a strict hierarchical schematic sheet tree, with sheets nested within other sheets to reduce complexity
 
* You should use a strict hierarchical schematic sheet tree, with sheets nested within other sheets to reduce complexity
  
== Step 2: Footprints ==
+
== Step 4: Footprints ==
 
See [[Making Parts for PCB Libraries]]
 
See [[Making Parts for PCB Libraries]]
 +
 +
See [[Altium Schematics and Footprints Guidelines]]
 
* If possible, design your circuit to use parts that have heritage, and have footprints in the library
 
* 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
 
* Take the time to track down 3D models for components, it will help prevent dumb ME issues later on
  
== Step 3: Layout Parts ==
+
== 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.
 
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 4: Layout Traces ==
+
== 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.
 
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 5: Layout Memes ==
+
== 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:
 
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
 
* Board Name
Line 75: Line 98:
 
(TODO: attach pictures of past memes)
 
(TODO: attach pictures of past memes)
  
== Step 6: DFM ==
+
== Step 8: DFM ==
  
== Step 7: Prototype ==
+
== Step 9: Prototype ==

Latest revision as of 07:09, 19 January 2024

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

This is the most arduous process of all. All components must have suitable ratings and must all communicate/interact with each other.

Some websites useful for finding parts and specifications of parts:

  1. Mouser Electronics
  2. DigiKey

Manufacturer sites for even tighter specifications and datasheets:

  1. Analog Electronics
  2. Texas Instruments
  3. ST Microelectronics

When picking parts, also make sure to look for evaluation boards, which are breakout boards for microcontrollers to test that their components work. Example

Step 2: Napkin Sketch

Step 3: Schematics

See Altium Schematics and Footprints Guidelines

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
    • If the schematic you are looking for is not available in Altium, they need to be imported or created. You can find the schematics of most components on product pages of the websites listed in Step 1.
  • 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

See Altium Schematics and Footprints Guidelines

  • 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