Files
-
BatteryBoard / _autosave-PrechargeCircuit_NEW.kicad_sch
-
BatteryBoard / BatteryBoard.kicad_pcb
-
BatteryBoard / BatteryBoard.kicad_sch
-
BatteryBoard / BatteryBoard.sch
-
BatteryBoard / CANCommunication.kicad_sch
-
BatteryBoard / CANCommunication.sch
-
BatteryBoard / Connectors.kicad_sch
-
BatteryBoard / Connectors.sch
-
BatteryBoard / CurrentSensing.kicad_sch
-
BatteryBoard / CurrentSensing.sch
-
BatteryBoard / ExternalClocks.kicad_sch
-
BatteryBoard / ExternalClocks.sch
-
BatteryBoard / Extra_IO.kicad_sch
-
BatteryBoard / ExtraAnalogIn.kicad_sch
-
BatteryBoard / ExtraDigitalOut.kicad_sch
-
BatteryBoard / Fan.kicad_sch
-
BatteryBoard / Fan.sch
-
BatteryBoard / InputProtection.kicad_sch
-
BatteryBoard / InputProtection.sch
-
BatteryBoard / InputProtectionFanTach.kicad_sch
-
BatteryBoard / InputProtectionFanTach.sch
-
BatteryBoard / LightsTeam.kicad_sch
-
BatteryBoard / LightsTeam.sch
-
BatteryBoard / MCU.kicad_sch
-
BatteryBoard / MCU.sch
-
BatteryBoard / PowerPathing.kicad_sch
-
BatteryBoard / PowerPathing.sch
-
BatteryBoard / PowerTeam.kicad_sch
-
BatteryBoard / PowerTeam.sch
-
BatteryBoard / PrechargeCircuit.kicad_sch
-
BatteryBoard / PrechargeCircuit_NEW.kicad_sch
-
BatteryBoard / Reset.kicad_sch
-
BatteryBoard / Reset.sch
-
BatteryBoard / STLink.kicad_sch
-
BatteryBoard / STLink.sch
-
BatteryBoard / SwitchingLogic.kicad_sch
-
DriverBoard / CANCommunication.kicad_sch
-
DriverBoard / Connectors.kicad_sch
-
DriverBoard / CurrentSensing.kicad_sch
-
DriverBoard / CurrentSensing.sch
-
DriverBoard / DriverBoard.kicad_pcb
-
DriverBoard / DriverBoard.kicad_sch
-
DriverBoard / ECU_inputs.kicad_sch
-
DriverBoard / EXAMPLE.kicad_sch
-
DriverBoard / ExternalClocks.kicad_sch
-
DriverBoard / InputProtection.kicad_sch
-
DriverBoard / inputs.kicad_sch
-
DriverBoard / IO.kicad_sch
-
DriverBoard / LightsTeam.kicad_sch
-
DriverBoard / MCU.kicad_sch
-
DriverBoard / outputs.kicad_sch
-
DriverBoard / PowerPathing.kicad_sch
-
DriverBoard / Reset.kicad_sch
-
DriverBoard / STLink.kicad_sch
-
DriverBoard / Boost Converter Practice / Boost Converter Practice.kicad_pcb
-
DriverBoard / Boost Converter Practice / Boost Converter Practice.kicad_sch
-
DriverBoard / Simulation / PCB_Protection / LongWireSwitching.sch
-
DriverBoard / Simulation / PCB_Protection / MicroController.sch
-
DriverBoard / Simulation / PCB_Protection / PCB_Protection.kicad_pcb
-
DriverBoard / Simulation / PCB_Protection / PCB_Protection.sch
-
MotorBoard / CANCommunication.sch
-
MotorBoard / Connectors.sch
-
MotorBoard / DigitalPot.sch
-
MotorBoard / ExternalClocks.sch
-
MotorBoard / file604B3F08.sch
-
MotorBoard / InputProtection.sch
-
MotorBoard / IsoCANCommunication.sch
-
MotorBoard / MCU.sch
-
MotorBoard / Motor.kicad_pcb
-
MotorBoard / Motor.sch
-
MotorBoard / PowerPathing.sch
-
MotorBoard / PWM.sch
-
MotorBoard / Reset.sch
-
MotorBoard / STLink.sch
-
MotorBoard / switchingLogic.sch
-
PrechargeBoard / PrechargeBoard.kicad_pcb
-
PrechargeBoard / PrechargeBoard.kicad_sch
-
Template / CANCommunication.kicad_sch
-
Template / Connectors.kicad_sch
-
Template / EXAMPLE.kicad_sch
-
Template / ExternalClocks.kicad_sch
-
Template / InputProtection.kicad_sch
-
Template / MCU.kicad_sch
-
Template / PowerPathing.kicad_sch
-
Template / Reset.kicad_sch
-
Template / STLink.kicad_sch
-
Template / Template.kicad_pcb
-
Template / Template.kicad_sch
-
Template / Simulation / PCB_Protection / LongWireSwitching.sch
-
Template / Simulation / PCB_Protection / MicroController.sch
-
Template / Simulation / PCB_Protection / PCB_Protection.kicad_pcb
-
Template / Simulation / PCB_Protection / PCB_Protection.sch
FilesTemplateDocumentation | |
---|---|
.. | |
Importing.md | |
Layout.md | |
Libraries.md | |
Pins.md | |
TemplateDocumentation.md |
Layout.mdLayout
This document describes guidelines for PCB footprint selection and board layout.
Footprint Selection
If possible, try to use components whose footprints are available on Mouser. This allows for an easier method of adding the footprint to the team's Libraries as described in the libraries docs. If a component is available on Mouser but it has no ECAD model, there is an option to request the ECAD model (schematic symbol, footprint, and 3D model) to be made by SamacSys for free through Mouser. This process is very quick, they will often get back with the requested part within 24 hours.
Downloading ECAD models from other sources (such as UltraLibrarian via DigiKey) is also an option, but requires manual edits to the Library files, and should thus be avoided.
Resistors and Capacitors
The first thing you want to ensure before picking footprints for resistors and capacitors is that all capacitors 1uF or larger should be polarized. The schematic symbol should also reflect this (use the CP symbol instead of the C symbol).
Now, we can assign footprints to the resistors and capacitors by going to
Tools > Assign Footprints...
. If the entire schematic has not yet been annotated, KiCad will ask you to do so now before continuing to the Assign Footprints menu (note that this step may take a long time to load the first time, as KiCad has to load all footprints in its global and project-specific libraries).Once the Assign Footrints menu is loaded, it may ask you about a "missing lib nickname"; just accept the autogenerated changes by clicking OK.
This menu is where you can check to see that every component has an assigned footprint, and change the assigned footprint for all your components. For all resistors and non-polarized capacitors (< 1uF), we select the SMD 0805 package. For all polarized capacitors (>= 1uF), we select the Tantalum 3216-18 package. For all of these SMD packages, make sure to select the "HandSolder" version to make it easier to manually solder.
The described sizes for resistors (0805) is only a reccomendation, as it will typically cover many use cases, but to determine the exact resistor size you need, refer to the table below:
Package | Typical Power Rating |
---|---|
2512 (6332 Metric) | 1 W |
2010 (5025 Metric) | 3/4 W |
1210 (3225 Metric) | 1/2 W |
1206 (3216 Metric) | 1/4 W |
0805 (2012 Metric) | 1/8 W |
Note that these are typical maximum power ratings. If you know the maximum power your resistors will need to dissipate, it is good practice to ensure your components only reach about 50% of their maximum power rating. This increases reliability of the system.
For example, if you know your resistor will be using 0.2 W, instead of using a 1/4 W resistor, you should use a 1/2 W resistor, or a 1210 package.
Layout
Currently, there is not Template layout example, so each team will design their own for now. If we feel it is necessary, we may add in a starter/example for the Template board.
General Rules
Spend a lot of time considering placement/positioning of components so we can save time on routing, as well as make more elegant traces.
When positioning components, always remember that the goal of the placement is to remove as many tangles in the rat's nest as possible.
We generally start with the power lines and ground (for both positioning and routing), working on the power supplies (regulators) before continuing to the MCU and other devices.
For routing, we can either use a ground plane or traces on both copper top and bottom. With the latter option, you typically use horizontal traces on one layer and vertical traces on the other layer. The ground plane option helps reduce noise in the system by making the entire board seem like a giant capacitor, which is favorable for high-speed devices. If you choose to not use the ground plane method, it is still a good idea to include a ground plane (just draw a small square/rectangle on a copper layer and connect it to GND) underneath high-speed or high-power devices (such as the MCU, CAN transceivers, and regulators).
Often, datasheets will include guidlines for PCB layout of their components, so it would be a good idea to follow those.
For better thermal dissipation (which is especially important for high power devices, like the regulators), adding vias to the ground plane helps.
Before Layout
Before starting your board layout, make sure that all components have a footprint. The easiest way to confirm this is while viewing the schematic, go to Tools > Assign Footprints...
(note that you will need to annotate your schematic first, when annotating, make sure that "Use the entire schematic" and "Reset existing annotations" are both selected). In the Assign Footprints menu, make sure each component listed has an associated footprint. If one does not have an associated footprint, follow the guidelines outlined in the section Footprint Selection.
You will also want to ensure that you are including test points wherever necessary. The file PowerPathing.sch
shows example test points to use. Simply copy these test points to wherever you need to add them. Note that it is easier to copy the symbol for these test points than to add it yourself from KiCad's Place Symbol menu, as the footprint we are using is not automatically linked to the symbol (the link to the footprint will copy over along with the symbol if you copy the test point instead of adding a new one).
Also, make sure that no pins on the MCU are left floating (except for the ones marked with an "X" for No Connect). The unused pins on the MCU must be pulled up to VDD
using a 100 kOhm resistor. A resistor network example is shown in the file MCU.sch
. Use resistor networks for any pins that are physically close together.
In Connectors.sch
, make sure to separate the 12V, CAN HI, CAN LO, and GND from the rest of your connectors, as these four pins will be put on a special CAN connector.
Setting up Pcbnew for Layout
Import any schematic changes by going to Tools > Update PCB from Schematic
. Ensure that "Keep existing symbol to footprint associations" is selected, and that there are no warnings or errors in the log. Then hit "Update PCB".
Go to Preferences > Preferences...
and click PcbNew on the left side. Change the units from millimeters to inches.
Go to File > Board Setup...
and click Text & Graphics on the left side (under the Layers Dropdown). Change the default slik layer line thickness to 6 mils, the text width and text height to 60 mils, and the text thickness to 6 mils. Go to Net Classes on the left side (under the Design Rules dropdown). Change the default track width to 10 mils, the via size to 30 mils, and the via drill to 15 mils. Go to Tracks & Vias on the left side. Add pre-defined track widths of 10, 30 and 50 mils and vias of 30/15 mils and 60/30 mils (in size/drill order). Click OK.
Along the top of the screen, there should be 3 dropdown menus: one for Track, Via, and Grid sizes. You should now see the added Track and Via sizes availble to select from. It is reccomended to keep the Grid size as a multiple of 10 mils, as that is the smallest track size we will use when routing.
In the Layers Manager on the right side of the screen, it is recommended to keep the Dwgs.User
, Cmts.User
, and F.Fab
layers invisible during layout and routing, as those layers will not be printed on the final board.
Go to Edit > Edit Text and Graphic Properties...
and select "Footprint references", "Footprint values", and "Set to layer default values". Click OK to change the text size of all footprints on the board.
Now that all the global settings are configured for Pcbnew, we need to ensure each footprint only has its Reference shown on silkscreen top (F.SilkS
), and noting else on silkscreen top. All other fields (such as the Value field), with the exception of any symbols used to indicate polarization, should be changed to the F.Fab
layer (or Dwgs.User
and Cmts.User
). Make these changes to all components in your board's library, then update the board by going to Tools > Update Footprints from Library
. Select "Update all footprints on board", "Remove text items which are not in library footprint", and "Reset text layers and visibilities". Make sure that the "Reset text sizes, styles and positions" option is NOT selected, it will reset the silkscreen sizes to the library defaults, which are too small to print legibly. Click Apply.
Now the board should be ready to start Layout.