Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Starter project link: https://github.com/lhr-solar/StarterProjects

Background:

The Problem

When we draw current from a battery it also produces heat, which induces a high current draw. If a battery gets hot enough, it will enter a thermal runaway where it gets so hot that it draws much more current than normal, producing more heat and drawing more current until the battery explodes (not good). There are a lot of preventative measures you can take to avoid thermal runaway like passive cell balancing. The simplest option to prevent the battery from getting too hot is controlling fans to dissipate heat in the battery box.

...

My recommendation for starting this is to lay out every component you know you need, we know we have 4 2-pin connectors, 1 6-pin connector, and some number of MOSFETs. Place those components first and the vision will be clearer

For the NMOS use the IRLM0030 IRLML0030 symbol

Symbol Libraries:

We have many shared components for our boards, so we decided to have a separate repository just for storing shared components.

...

Steps to add the UTSVT-KiCAD Libraries repo to your repository.:

  1. Travel to your PCB directory in Git Bashimage-20240927-143532.png

  2. Get the clone link of the UTSVT-KiCADLibraries repo

  3. Type this into bash:

    Code Block
    git submodule add [clone link of the UTSVT-KiCADLibraries repo]
  4. Go to the schematic editor of the starter project

  5. Go to Preferences->Manage Symbol Libraries

  6. Go to the “Project Specific Libraries“ page

  7. Press the + button at the bottom left of the screen

  8. In Library path, select the “utsvt-chips.kicad_sym” and change the nickname to usvt-chips

    1. {KIPRJMOD} is a variable that changes depending on the user.

    2. Make sure to use the {KIPRJMOD} variable instead of your /Users/[username] directory

  9. Repeat step 8 for every .kicad_sym file

  10. Press “Ok“

  11. To test if it worked, in the menu to add symbols type the nickname for one of the libraries you added and see if there is a symbol in that section

...

Panel
panelIconId2753
panelIcon:question:
panelIconText
bgColor#DEEBFF

Why don’t I just download thee UTSVT-KiCAD Libraries as a zip and then copy and paste it into the repo?

Footprint Libraries:

  1. Go to the PCB editor

  2. Preferences → Manage Footprint Libraries

  3. Go to Project Specific Libraries

  4. Add each .pretty folder

    1. Make sure the nickname stays as the the name of the footprints foder (without the .pretty name)

Protections:

Bypass capacitors:

...

During layout keep the capacitors close to the pins you’re trying to filter noise to.

Add 2 100 uF capacitors in parallel with the 12V and GNDPWR line

Current Limiting:

The gate to drain of a mosfet acts as a weak capacitor (cuz semiconductor physics don’t ask me), so for various reasons, we need to limit current on the input of the gate, so add a resistor in series with the gate ( a 100k ohm resistor works fine).

Panel
panelIconId2753
panelIcon:question:
panelIconText
bgColor#DEEBFF

Look up the equation for current through a capacitor, given that equation why does switching the mosfet on and off induce high instantaneous current (assume current capacitance is staying constant).

Pullup Resistors:

...

To mitigate this we set the gate voltage of the gate to another voltage when no signal is being applied . Through through a pull-up resistor or pull-down resistor. A pull-up resistor pulls the signal to some voltage (usually VCC →, in this case, it’s 12V). A pull-down resistor pulls it down to GND.

Pullup resistor

Pulldown resistor

Pulls a voltage to Vcc12V

Pull a voltage to GND

image-20240927-184845.png

image-20240927-184647.png

Panel
panelIconId2753
panelIcon:question:
panelIconText
bgColor#DEEBFF

You only need a pullup or a pulldown, why did you choose one

...

Stuff like motors and fans acts as an inductor, meaning they store current and then dump it all out. When we suddenly switch off an inductive load, the inductor will try to dump out all this stored current (because by opening the switch we’ve removed the current source essentially). To prevent this dump from causing big current spikes through our system we add a flyback diode in parallel with the inductive load (also called snubber diode, freewheeling diode, etc).

...

To hold the boards down mechanically in the enclosures, we use mounting holes to screw into them. We need 4 mounting holes. The symbol is called Mouting Hole (the unconnected one).

Setting footprints:

We try to use SMD components when we can since they are smaller, easier to solder with a heat gun, and you usually end up getting a better electrical component.

We use “0805“ components, which means they are .08 in by .05 inches (very small). We use that for most passive components (resistors, capacitors, etc).

The footprint name is formatted like this [footprint library]:[footprint name]

View the footprint menu by going to Tools → Assign Footprints.

Info
  • Mounting hole footprint → MountingHole:MountingHole_3mm

  • 2 pin fan connectors → UTSVT_Connectors:Molex_MicroFit3.0_1x2xP3.00mm_PolarizingPeg_Vertical

  • LEDs → LED_SMD:LED_0805_2012Metric

  • Resistor → Resistor_SMD:

...

  • R_0805_2012Metric

  • 6 pin connector → Connector_Molex:Molex_Micro-Fit_3.0_43045-0612_2x03_P3.00mm_Vertical

Final Checks:

When debugging problems, it’s nice to have status LEDs so add one for 12V power (make sure to add a current limiting resistor)

...

PCB:

Make things symmetric :0

Footprint Libraries:

Make sure you do the symbol libraries setup step before this step

...

Go to the PCB editor

...

Preferences → Manage Footprint Libraries

...

Go to Project Specific Libraries

Add each .pretty folder

...

Setting up constraints:

The PCB manufacturer we use (JLCPCB) has specific machining requirements that we need to follow to have them order the board.

...