Introduction: Open-source 3/4/5S Lithium BMS
In this Instructable the design of the BMS345 will be explained. The design is fully open-source, the design files can be found in the GitHub link in the last step. There is also a limited supply available on Tindie.
The BMS345 is a BatteryManagementSystem that supports 3, 4 and 5 cells lithium-ion packs. If you build/buy a pack with unprotected cells, this PCB can be added to handle protection and charging. This includes:
- Under/overvoltage protection
- Overcurrent (/shortcircuit) protection
- Cell balancing
- MPPT charging
The documentation will be divided into:
- Protection
- Charging
- Configuration
- The end product
Enjoy :)
Step 1: Protection
The protection is handled by the TI BQ77915.
- The input resistors are 1K, which sets balancing current to 4mA/cell
- The header is the commonly used JST-XH 4/5/6P depending on the configuration
- A NTC can be connected to header J5, but this features is disabled by default by R26
- The negative connection is switched by a dual N-channel mosfet (NVMFD5C466NL)
- The current sense resistor is 2x8m (4m equivalent) ohm, setting the current protection to 15A
Step 2: Charging
The charging is handled by the TI BQ24650
- D1 shows the charging status, an external LED can be connected via J4
- R30 sets the charge current to 1A
- Temperature sensing is disabled by R13/R14/C14
- MPPT voltage is set to 17.2V by R22 and R28
- The mosfets are the same dual-package type as is used in the protection circuit
- The default charge voltage is 4.2V, which barely trips the overvoltage protection of the BQ77915. It is recommended to populate R36 with 22M to lower the charge voltage to 4.05V/cell. This avoids false over-voltage triggering.
Charging can be done from a 24V 1A supply or even a solar panel (only for 3/4S configurations).
Step 3: Configuration
This header can be just with jumpers to set the configuration.
Step 4: End Product
You can add the PCB to a Vruzend system as seen in the picture, but it is also suited for RC lipo and regular spot-welded packs.
Link to Tindie:
https://www.tindie.com/products/zoudio/bms345-prot...
Link to github
https://github.com/ZOUDIO/BMS345
Thanks for reading.

Participated in the
Sensors Contest
12 Comments
2 years ago
Thanks for having shared the project. I have followed the schematics. Should the pad 6 of J2 be connected to the net PACK+? Thanks
2 years ago
Hi everyone. Why did you need another integrated for charging? Can we meet the requirement of BQ77915?
look
https://www.dideo.ir/v/yt/LfiUsEfSQec/getting-star...
this is for charge and protection. am ı right?
Reply 2 years ago
BQ77915 can only do protection. BQ24650 is needed for charging from PSU.
Reply 2 years ago
oh yes ı got it. So which product code was used? ı mean like BQ7791500?
Reply 2 years ago
BQ7791500PWR
Reply 2 years ago
What is the difference between 50mA and 4mA balancing current?
Reply 2 years ago
Faster balancing, better for bigger packs. But then you need external mosfet to handle the current
Reply 2 years ago
dear so why you choose balancing current is 4mA?
Question 3 years ago
Hi! nice work. can u please provide schematic diagram of this in Proteus or other software format file so we can simulate it for our better understanding? regards.
3 years ago
I just have a doubt here. i am a newbie. In the whole BMS. where to take the output voltage for connecting any load or device? like where to take voltage to power an external device?
Reply 3 years ago
At the PACK+ and PACK- pads
3 years ago
Well done!