Skip to the content
2 layers82.8 × 63 mmBldc BMS, the printed circuit board in 3D

Battery management system for a VESC

Size
82.8 × 63 mm
Copper layers
2
Thickness
1.6 mm
Parts
175
Nets
118
Pads
545
Tracks, vias
1,199, 161
Pours
12
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
24 Jun 2018
Updated
23 Aug 2019

Overview

Bldc BMS is an open-source printed circuit board by mpater, from the mpater/bldc-BMS repository on GitHub. It is a 2-layer board of 82.8 × 63 mm with 175 parts on 118 nets, routed with 1,199 tracks and 161 vias.

It is built around the STM32F072C8T6, TJA1042T/3/1J and MIC5219-3.3YMM, with the MIC5239-5.0YM, BQ76200PW and 1N4148W among its other parts. Its parts include 65 resistors, 38 capacitors, 27 diodes, 12 transistors and 8 connectors. It belongs with the power and robots and motor control boards and the STM32 boards of this library.

Main components

10

README

readme.md

VESC BMS

Overview

Battery Managment System (BMS) for (but not limited to) an Electronic Speed Controller, specifically for a longboard controller (VESC).

Current battery pack specifications are LiFePO4 (3.2V nominal, ~2.6Ah) in a 6s2p, giving 19.2V with 5Ah (96Wh). Continuous discharge is about 20A (384W) with 30 second pulse discharge of 52A (1kW) and charge current of 5.2A (21.9V), for a 2p configuration.

Scope of the project is to design a BMS to meet the above specifications using off-the-shelf ICs for the battery managment section. A microcontroller circuit would also be incorperated to allow communication between the BMS and controller (SMBus/I2C), contrller and PC (USB-serial) and contrller and VESC (CAN bus).

Texis Instruments (TI) appears to have the most comprehensive set of battery managment systems offerings. These appear to be split up into two main sections: cell monitors and gas gauges. The bq769x0 seires will be used for the cell monitoring, offering bq76920, bq76930 and bq76940 based on the pack size. Currently the top candidats for the gas gauge are bq78350-R1 and bq34z100-R1 but more research is needed to determine which one is better suited.

BMS

  • Cell Monitor
    • Measure cell voltages and pack current (Coulomb Counter)
    • Cell and temperature measurment
    • Charge Limit (over-voltage and over-amperage)
    • Discharge Limit (under-Voltage and over-amperage)
    • Balancing circuitry and autobalancing mode
  • 'Gas Gauge' and Battery Managment Controller
    • Estimate pack State of Charge (SoC)
    • Estimate pack State of Health (SoH)
    • Estimate time-to-empty
    • Lifetime datalogging
    • Aging compensation (optional)
    • Self-discharge compensation (optional)

Cell Monitor

bq76930

  • 6-19 cells, various chemistries
  • 0x08 I2C Address (7-bit), 2.5V LDO, No CRC, 30-TSSOP (PW)
  • PN bq7693000DBT

Gas Gauge

bq78350-R1 - Gas Gauge via CEDV

See Technical Reference Sections:

  • 9.1.11 - EDV Age Fator - Compensate for cell aging
  • 9.1.12 - Self Discharge - estimate self-discharge
bq34z100-R1 - Gas Gauge via Impedance Track

'Impedance Track' module from TI give aging compensation and self-discharge compensation -> not true, bq78350 also has this. This module does not interface with cell monitor and reads only pack volage, how does it konw self-discharge issues?

Microcontroller

The MCU provides a communiciton bridge between the gas gauge and PC (serial via USB) and gas gauge and VESC (CAN bus). The MCU does not need to be powered when either of these functions are not used, thus power to operate the MCU should come from either one of these communiciton ports. (or have MCU sleep when USB-serial timeout or CAN timeout? Wake-up via interrupt on button or USB-serial or CAN? Seems complicated.)

Firware updates done via SWD or Device firmware update via USB DFU.

STM32F072C8T6TR CAN, HDMI-CEC, I²C (SMBus), IrDA, LIN, SPI, UART/USART, USB IC MCU 32BIT 64KB FLASH 48LQFP ARM® Cortex®-M0 STM32F0 Microcontroller IC 32-Bit 48MHz 64KB (64K x 8) FLASH 48-LQFP (7x7)

Reference Projects

  • TI Reference Design - TIDA-00449
  • TI Reference Design - TIDA-00792
  • TI Reference Disign - TIDA-00255
  • LibreSolar
    • Also using bq769x0 for cell monitor but no gas gauge, that function is done by the MCU (STM32F072)

TODO

  • Determine pack size and output - see intro
  • Determine cell monitor - bq76930
  • Determine gas gauge - bq78350-R1 or bq34z100-R1
  • Determine MCU - STM32F072 (USB-to-serial, USB bootloader, I2C, CAN)
  • 100% - Schematic capture
    • Add pre-charge circuit
    • Change balancing circuit from PNP to NPN
    • Change power-stange layout to POS rail on top of sheet
    • Setup for 6s? or have populated bypass for this layout
    • Press button to show SoC LED display with gas-gauge?
    • Jumper for MCU to be powered by pack
  • 100% - BoM and footprint selection for PCB
  • 1000% - Determine PCB footprint size constraights (multiple of 26650 cell size)
  • 100% - PCB capture
  • 0% - write driver for gas gauge on MCU
  • 0% - write interface module for MCU to PC
  • 100% - Order PCB and components
  • 100% - Assemble components on PCB
  • 100% - Hardware validation testing
  • TI SMBus to PC moudule is very expensive, looking for something similar to view BMS status

PCB_2019-06 TOFIX

  • Swap I2C's on STM32F0 as I2C1 only support SMBus for bq78350-r1
  • Mirror STM32F0 debug conn pinout
  • Assemble and test PCB

Parts

175
QtyValueFootprintReferences
150.1uFCapacitor_SMD:C_0603_1608MetricC1, C3, C4, C6, C7, C8, C9, C28, C30, C31, C35, C36, C37, C38, C39
121uF 10VCapacitor_SMD:C_0603_1608MetricC2, C10, C13, C14, C15, C18, C19, C20, C21, C22, C23, C27
11100kResistor_SMD:R_0603_1608MetricR7, R8, R50, R53, R55, R57, R60, R63, R69, R70, R71
91k 1%Resistor_SMD:R_0603_1608MetricR27, R28, R31, R32, R33, R34, R37, R38, R39
810kResistor_SMD:R_0603_1608MetricR40, R43, R44, R45, R48, R49, R51, R52
8Q_NMOS_GSDPackage_TO_SOT_SMD:SOT-23Q6, Q9, Q10, Q11, Q14, Q15, Q16, Q18
75.6VDiode_SMD:D_SOD-323D7, D10, D11, D12, D15, D16, D21
7GREENLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD5, D9, D23, D24, D25, D26, D27
6100RResistor_SMD:R_0603_1608MetricR1, R2, R4, R16, R54, R56
62kResistor_SMD:R_0603_1608MetricR11, R64, R65, R66, R67, R68
633RResistor_SMD:R_2010_5025MetricR17, R20, R21, R22, R25, R26
5220RResistor_SMD:R_0603_1608MetricR6, R9, R15, R73, R74
41N4148WDiode_SMD:D_SOD-323D17, D18, D20, D22
31kResistor_SMD:R_1206_3216MetricR12, R13, R14
33.3VDiode_SMD:D_SOD-323D2, D3, D19
215pFCapacitor_SMD:C_0603_1608MetricC12, C16
21MResistor_SMD:R_0603_1608MetricR5, R10
21kResistor_SMD:R_0603_1608MetricR62, R75
22.2uFCapacitor_SMD:C_0603_1608MetricC32, C33
222RResistor_SMD:R_0603_1608MetricR76, R77
2300kResistor_SMD:R_0603_1608MetricR58, R59
24.7nFCapacitor_SMD:C_0603_1608MetricC25, C26
2CSD18531Q5APackage_TO_SOT_SMD:TDSON-8-1Q2, Q3
2Conn_01x04Connector_JST:JST_PH_S4B-PH-K_1x04_P2.00mm_HorizontalJ1, J5
2Jumper_NOJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1, JP2
2SW_PushButton_Switch_SMD:SW_SPST_PTS810SW1, SW2
10.005RResistor_SMD:R_2512_6332Metric_Pad1.52x3.35mm_HandSolderR3
10.01uFCapacitor_SMD:C_0603_1608MetricC5
1100mAFuse:Fuse_0805_2012MetricF1
1100uFCapacitor_SMD:C_1206_3216MetricC34
1120RResistor_SMD:R_0603_1608MetricR78
1220kResistor_SMD:R_0603_1608MetricR61
13.3VTestPoint:TestPoint_Pad_D1.5mmTP8
13.3uFCapacitor_SMD:C_0805_2012MetricC29
14.7uFCapacitor_SMD:C_0805_2012MetricC24
1470nFCapacitor_SMD:C_0603_1608MetricC11
15VTestPoint:TestPoint_Pad_D1.5mmTP9
18MHzCrystal:Crystal_SMD_5032-4Pin_5.0x3.2mmY1
1BAT+TestPoint:TestPoint_Pad_D1.5mmTP6
1BAT-TestPoint:TestPoint_Pad_D1.5mmTP10
1BLUELED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD13
1BQ78350-R1Package_SO:TSSOP-30_4.4x7.8mm_P0.5mmU3
1Conn_01x02Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ9
1Conn_01x06Connector_JST:JST_PH_S6B-PH-K_1x06_P2.00mm_HorizontalJ8
1Conn_01x07Connector_JST:JST_PH_S7B-PH-K_1x07_P2.00mm_HorizontalJ2
1D_TVS_x2_AACbldc-BMS:D_SOT-23_TVSD29
1Jumper_NC_SmallJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP3
1LOAD+TestPoint:TestPoint_Pad_D1.5mmTP7
1MIC5219-3.3bldc-BMS:SOT-23-5U4
1MIC5239-5.0Package_TO_SOT_SMD:SOT-223U5
1MMSZ5246B-7-FDiode_SMD:D_SOD-123D4
1MURS360T3GDiode_SMD:D_SMCD6
1Net-TieNetTie:NetTie-2_SMD_Pad0.5mmNT1
1Q_PMOSPackage_TO_SOT_SMD:SOT-23-6Q5
1REDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD8
1REGOUTTestPoint:TestPoint_Pad_D1.5mmTP3
1SCLTestPoint:TestPoint_Pad_D1.5mmTP1
1SDATestPoint:TestPoint_Pad_D1.5mmTP4
1SMBCTestPoint:TestPoint_Pad_D1.5mmTP2
1SMBDTestPoint:TestPoint_Pad_D1.5mmTP5
1SMCJ45ADiode_SMD:D_SMCD1
1STM32F072C8Package_QFP:LQFP-48_7x7mm_P0.5mmU7
1TJA1042T-3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU6
1USB_B_Microbldc-BMS:USB_Micro-B_Amphenol_10103594-0001LF_Horizontal_circularJ10
1XT60_FEMALEbldc-BMS:XT60PW-F20J6
1XT60_MALEbldc-BMS:XT60PW-M20J3
1ZXMP10A13FTAPackage_TO_SOT_SMD:SOT-23Q17
1bq76200Package_SO:TSSOP-16_4.4x5mm_P0.65mmU1
1bq76930Package_SO:TSSOP-30_4.4x7.8mm_P0.5mmU2

Similar boards

  • 2 layers90 × 70 mmEBoard Sidecar, the printed circuit board in 3D

    EBoard Sidecar

    Govish/EBoard-Sidecar

    A circuit board for my electric longboard that controls soft power, precharge, and LEDs

    119 parts
  • 2 layers79 × 89 mmBms v1, the printed circuit board in 3D

    Bms v1

    azerimaker/BMS_3-5S

    3-5S Battery Management System based on TI bq76920 IC and MSP430 uC.

    175 parts22
  • 2 layers80 × 50 mmChao Recruit, the printed circuit board in 3D

    Chao Recruit

    scottcjx/Chao-Recruit

    137 partsGPL-3.0
  • 2 layers180.3 × 63.5 mmPower Systems, the printed circuit board in 3D

    Power Systems

    nick19curtin/PowerSystemsPL-BMS

    138 parts
  • 2 layers108 × 110 mmBms active hw, the printed circuit board in 3D

    Bms active hw

    NGOQUOC98/ESP32_PCB

    136 parts1
  • 2 layers60 × 90 mmBMS BQ76940, the printed circuit board in 3D

    BMS BQ76940

    tetra-aero/BMS_BQ76940

    82 parts
  • 2 layers68 × 98 mmSpindle driver, the printed circuit board in 3D

    Spindle driver

    dougsthenri/spindle_driver_v1

    PCB project for a BLDC motor driver tailored for CNC spindle motors

    97 parts
  • 4 layers170 × 74.5 mmSupply power, the printed circuit board in 3D

    Supply power

    GarryBGoode/VibeSupply

    USB PD based powersupply developed on vibes (claude)

    253 parts

Questions

How big is the Bldc BMS PCB?

It measures 82.8 × 63 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bldc BMS use?

175 parts, built around the STM32F072C8T6, TJA1042T/3/1J, MIC5219-3.3YMM and MIC5239-5.0YM. 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 Bldc BMS KiCad files?

From the mpater/bldc-BMS repository on GitHub, at the commit this page was made from: the board is bldc-BMS.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bldc BMS design in my own project?

Its repository states no licence, so its author keeps all rights: ask mpater before reusing the design.