Modular EV Battery Management System
UVA ECE Fall 2020 Capstone Project design for a modular battery management system (BMS) for use in electric vehicles. This repository contains the embedded systems code for the Main Node and Cell Node boards.
- The PCB layouts and associated schematics for the Main Node and Cell Node boards can be found on the associated repository on CADLAB.io.
- The Main Node uses the STM32G473 MCU.
- The Cell Node uses the STM32F042 MCU.
- The Cell Node board is designed to attach using nickel strips to a pair of standard 18650 battery cells connected together using the Vruzend V2.1 battery connector kit.
- Photos demonstrating the attachment of the Cell Node board to the battery cells can be found here.
- Both the Main Node and Cell Node were designed to run off an external 12V supply, such as a lead-acid battery, rather than directly off the battery pack.
- This choice was made to avoid the potential complexity created by the addition of a buck-boost converter for a design without an external supply.
- Both the Main and Cell Nodes run Mbed OS v6.
- The Cell Node's STM32F042 MCU has an extremely limited amount of flash memory. As a result, a large number of features must be removed from the build.
- Macros built into the code allow for the enabling and disabling of features (such as
printf) as needed.
- The instructions on the UVA Solar Car Team Website were used to help set up this project.
- The PlatformIO Core, which includes the PlatformIO CLI, must first be installed.
- The PlatformIO IDE can be optionally installed as either a Visual Studio Code or Atom extension.
- On Windows, the driver for the ST-Link debugger will be needed to upload programs. This driver can be found here.
srcdirectories are split into
CellNodesubdirectories will only include .cpp and .h files specific to the Cell Node, while the
MainNodesubdirectories will only include .cpp and .h files specific to the Main Node.
Sharedsubdirectories will include .cpp and .h files that are common between the two boards.
- All testing code that can be run on both boards will be located in
- William Zhang
- Dipesh Manandhar
- Nripesh Manandhar
- Nikilesh Subramaniam
- Phillip Phan
We would like to thank Dr. Harry Powell and Prof. Adam Barnes for their valuable help and support throughout the development of this project.