

Battery management system for 4-series li-ion packs
- Size
- 100 × 67 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 52
- Nets
- 39
- Pads
- 181
- Tracks, vias
- 332, 59
- Pours
- 8
- Routed
- Yes
- KiCad
- KiCad 5 (file 20170123)
- Created
- 7 Aug 2017
- Updated
- 16 Jun 2021
Overview
Bms is an open-source printed circuit board by scttnlsn, from the scttnlsn/bms repository on GitHub. It is a 2-layer board of 100 × 67 mm with 52 parts on 39 nets, routed with 332 tracks and 59 vias.
It is built around the 24LC256-I/P. Its parts include 16 resistors, 15 capacitors, 6 connectors, 4 ICs and 3 transistors. It belongs with the power boards of this library.
Main components
1README
README.mdBMS
Integrated battery management system for 4-series li-ion packs (based on the BQ76920 from Texas Instruments).

- programmable over/under voltage protection for each cell
- programmable short-circuit detection
- auto cell balancing
- cell voltage monitoring
- coulomb counting for accurate state-of-charge tracking
- status available over BLE
Hardware
Full schematic and PCB layout available in the hardware directory.
- TI BQ76920 analog front-end
- Nordic nRF51822 ARM Cortex-M host controller
- FETs for enabling or disabling charge/discharge
- shunt resistor for current measurement
Firmware
The host controller firmware is based on the Zephyr RTOS. It communicates with the BQ76920 via I2C and handles various error states that may occur in the BQ76920. It also exposes a BLE peripheral for wireless monitoring.
Build
Requirements:
- GNU ARM Embedded Toolchain
- OpenOCD
- Zephyr RTOS (included as submodule)
- elftools
Setup:
git submodule update --init./setup.sh
Compile and flash:
makemake flash
Configuration
There are various configuration options which can be specified via Kconfig. Run make menuconfig to browse the available options and override any of the default values.
CONFIG_BMS_BOOT_DEVICE(default:GPIO_0)CONFIG_BMS_BOOT_PIN(default:21)CONFIG_BMS_ALERT_DEVICE(default:GPIO_0)CONFIG_BMS_ALERT_PIN(default:22)CONFIG_BMS_BLINK_DEVICE(default:GPIO_0)CONFIG_BMS_BLINK_PIN(default:18)CONFIG_BMS_OVP_ENABLE(default:3550mV)CONFIG_BMS_OVP_DISABLE(default:3350mV)CONFIG_BMS_UVP_ENABLE(default:3000mV)CONFIG_BMS_UVP_DISABLE(default:3100mV)CONFIG_BMS_SCD_DELAY(default:10000ms)CONFIG_BMS_OCD_DELAY(default:10000ms)
BLE Protocol
The BMS implements a Bluetooth Low Energy peripheral for monitoring cell voltages, current draw and state-of-charge. All status data is part of a single characteristic.
Peripheral UUID: 8D9D7800-5B61-412A-AB71-5C7E0E559086
Characteristic UUID: 8D9D7801-5B61-412A-AB71-5C7E0E559086
Value structure (MSB to LSB):
- status [1 byte]
- cell 1 (mV) [2 bytes]
- cell 2 (mV) [2 bytes]
- cell 3 (mV) [2 bytes]
- cell 4 (mV) [2 bytes]
- current (mA) [2 bytes signed]
- charge used (mAs) [4 bytes signed]
- state of charge (percent) [1 byte]
Parts
52| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 100n | Capacitors_SMD:C_1206_HandSoldering | C1, C2, C3, C4, C5, C6, C11, C12, C13, C14 |
| 5 | 47R | Resistors_SMD:R_1206_HandSoldering | R1, R2, R3, R4, R5 |
| 4 | 1K | Resistors_SMD:R_1206_HandSoldering | R7, R8, R11, R12 |
| 4 | 1M | Resistors_SMD:R_1206_HandSoldering | R6, R13, R14, R15 |
| 2 | 10u | Capacitors_SMD:C_1206_HandSoldering | C10, C15 |
| 2 | 1u | Capacitors_SMD:C_1206_HandSoldering | C7, C9 |
| 2 | CONN_02X09 | Pin_Headers:Pin_Header_Straight_2x09_Pitch2.00mm | P5, P6 |
| 2 | NMOS | TO_SOT_Packages_SMD:TO-252-2 | Q1, Q2 |
| 1 | 100R | Resistors_SMD:R_1206_HandSoldering | R9 |
| 1 | 1N4148 | Diodes_SMD:D_SOD-123 | D1 |
| 1 | 200mA | Fuse_Holders_and_Fuses:Fuseholder5x20_horiz_SemiClosed_Casing10x25mm | F1 |
| 1 | 24LC256 | Housings_SOIC:SOIC-8_3.9x4.9mm_Pitch1.27mm | IC3 |
| 1 | 330 | Resistors_SMD:R_1206_HandSoldering | R16 |
| 1 | 4.7u | Capacitors_SMD:C_1206_HandSoldering | C8 |
| 1 | 5m | Resistors_SMD:R_2512_HandSoldering | R10 |
| 1 | BAT | BMS:MKDS_5-2-952 | P1 |
| 1 | BQ76920 | Housings_SSOP:TSSOP-20_4.4x6.5mm_Pitch0.65mm | IC1 |
| 1 | CONN_01X05 | BMS:Molex_89401-0510 | P3 |
| 1 | CONN_02X06 | Pin_Headers:Pin_Header_Straight_2x06_Pitch2.54mm | P4 |
| 1 | LD1117S33TR_SOT223 | TO_SOT_Packages_SMD:SOT-223 | IC2 |
| 1 | LED | Resistors_SMD:R_1206_HandSoldering | D2 |
| 1 | LOAD | BMS:MKDS_5-2-952 | P2 |
| 1 | PMOS | TO_SOT_Packages_SMD:SOT-23 | Q3 |
| 1 | TSR 0.5-2450 | TO_SOT_Packages_THT:TO-220-3_Vertical | U1 |
The 47 most common of 52 parts.
Questions
How big is the Bms PCB?
It measures 100 × 67 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Bms use?
52 parts, built around the 24LC256-I/P. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Bms KiCad files?
From the scttnlsn/bms repository on GitHub, at the commit this page was made from: the board is hardware/bms.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Bms design in my own project?
Its repository states no licence, so its author keeps all rights: ask scttnlsn before reusing the design.
Similar boards
- 2 layers90.2 × 48.3 mm

- 2 layers160 × 100 mm

CodyComputer
fjmilens3/cody-computer
Design files and source code for the Cody Computer.
59 parts64GPL-3.0 - 4 layers100 × 49.8 mm

- 2 layers81.3 × 96.5 mm

- 4 layers63.6 × 67.5 mm

PropellerPCB
tomkinsc/open-spectrometer
Code, mechanical designs, and electronic plans related to the OpenSpectrometer project.
76 parts30 - 2 layers108.4 × 70 mm

User Expansion
Ashet-Technologies/Home-Computer
A retro-inspired home-computer project.
858 parts20CERN-OHL-P-2.0 - 2 layers136.8 × 87 mm

- 2 layers65 × 56.5 mm

Ex2device
dstl/srup
The Secure Remote Update Protocol (SRUP) is a secure & confirmable command-and-control (C2) protocol for the Internet of Things (IoT), based on MQTT.
24 parts14MIT