Open BMS

3-8S Standalone BMS Desing. Open Source Software/Hardware

Similar projects worth following
BMS design for 3-8 cells LiPo/LiFePo3/Li-ion.
Built around the ISL94202 for the BMS frontend and an MSP430 for the GUI.
Two board construction, baseboard has the actual BMS can run fully standalone once setup. The upper board holds the LCD and MSP430 for configuration, can be permanently mounted or socketed.

With the growing availability of cheap Lithium based batteries, having both portable off grid and fixed off grid power is becoming more attractive. Most of the BMS units commonly seen online are usually based on using TL431 based balancing circuits which while functional leave more to be desired for larger battery banks.


The system is designed around the ISL94202 being used to control the main BMS functions, and to allow standalone functionality. This is a relatively new part on the market, that integrates a 14Bit ADC, voltage reference, and monitoring engine etc. It also provides a 2.5V output that we use to run the front panel.

This BMS is being designed for smaller off-grid power or for portable applications (such as powering equipment in the field). Thus 3-8S are supported, which allows for 12V or 24V on both LiPoly and LiFePo4.


The GUI is built out of an MSP430 + 128x64 Graphical LCD. This allows for a flexible menu layout, leaving options open to future development. The MSP430 is very low power, so even operating modes where it has to stay active and out of sleep are not a major concern.


The most critical features really.

The unit maintains the cells in the pack by monitoring and balancing the cells as required, and providing the critical feature of controlling (dis)charge via the mosfets. This prevents the pack being damaged by over charge or over discharge conditions.

The balancing of the cells is software configurable and is performed with external fet's. Using around 80mA of balancing current is not massively high for large battery banks, but prevents any high temperatures occurring that could cause other issues. As the ISL monitors the cell voltages, if a cell is too high it will disconnect the charger while the balancing continues to run, allowing the balancing circuit to catch up. The use of external pass fets also allows any cell balancing, which prevents the issue that occurs on some of the TI chips, where adjacent cells cannot be balanced at the same time.

  • 1 × ISL94202 BMS from Intersil
  • 1 × MSP430G2755 Microprocessors, Microcontrollers, DSPs / Microcontrollers (MCUs)
  • 1 × UC1701X 128x64 LCD (JLX12864G-086-PN) LCD Screen that appears to support 2.5V Operation

  • New PCBs! (New display + power hub)

    Ben Brown08/16/2017 at 10:32 0 comments

    The awesome free PCBs from Elecrow arrived this morning. Around 2 weeks for the delivery (to Australia). Which is the same or faster than OSHPark. I ordered 5 each of the new display board (In black soldermask) and the XT30 hub (In yellow). I recieved 7 of each, which was a nice surprise :)

    I will be doing a small review video on the board quality as part of the deal for the free pcbs. However initially I am very, very impressed with the quality. I was expecting a lot worse for the money ($5 USD per set). However they are really quite good. Not the amazing gold of oshpark, but overkill for almost all of my projects. All the traces looked good with no copper issues. The solder mask on the yellow is really nice. Its more of a mustard yellow or burnt gold. Sort of a pity its not just a little bit brighter to match the XT60 plugs. Nothing on these boards would have pushed the technology at all, but they did turn out well.

    Only slight issue is the black solder mask flakes of a little bit easily. (A little bit visible in the last image, after soldering). But I do also use a rather scratchy soldering iron tip.

    Now its just waiting for the LCD to turn up and alot of code to write :)

  • Revised front panel sent off

    Ben Brown07/29/2017 at 06:50 0 comments

    Elecrow recently offered coupons for free PCBs so I have sent off to them the revised design. This design mostly just fixes the footprint for the MSP430, and also re-arranges the LEDs into a linear line.

    Once these arrive back I will review the quality of manufacture as well as hopefully have a working display :)

  • Frontend works!

    Ben Brown07/25/2017 at 12:31 0 comments

    The PCB's arrived a few days ago, but it took me a day to find the one IC I had left from my two samples.

    Building the board was a fairly normal deal, I used hot air to mount the ISL and MOSFET, and then just hand soldered the rest with the TS100 with the new C series tip.

    Powering up the IC using a current limited supply looked good, and no shorts showed up testing with a multimeter (apart from the jumpers on the back, as I was setting this up for 3S, I had to short all the jumpers).

    Once you connect a battery to the balance connector and the main power connector, you need to provide some voltage on the charging input to wake the unit up out of sleep mode.

    The AFE powered up and allowed the battery voltage out the first time!

    Using the testing code for the Arduino to talk to the unit, I programmed all the settings to suit my Lithium battery packs and the unit seems to be testing well.

    After building up the AFE board I realised my layout mistake on the front panel board where I have used the wrong package for the MSP430. Derp.

    I will probably send off a new front panel to Oshpark to have a new version made for testing soon.

  • Initial designs sent off to fab!

    Ben Brown07/11/2017 at 12:17 0 comments

    The initial designs as published on the Github repository have been sent off to seeed to be manufactured. I have also (attempted) to sample the BMS frontend IC from Intersil which would be rather nice, however if this falls through I will purchase some to test out the design.

    More updates coming when the boards arrive (probably 2-3 weeks away now)

  • Front panel layout done

    Ben Brown07/08/2017 at 09:45 0 comments

    The front panel of the unit has been routed and looks to be complete.

    This is mostly just a microcontroller with buttons and LEDs.

    The plan is to use the 3 switches at the bottom to naivgate and edit the menu, and use the LEDs for status of the system when the lcd is off.

  • Why the MSP430G2755?

    Ben Brown06/18/2017 at 07:48 0 comments

    The main driving reason behind selecting an MSP430 over other brands / styles of IC was mostly because of the excellent low power modes available. Also I have a fair few of these already around.

    This model does not have a DMA so I will eventually be implementing an interrupt based I2C and SPI driver to help speed up communications while keeping the low power that made the IC desirable in the first place.

    The LCD I plan to pair this up to needs the SPI interface, so unfortunately if a UART is added for external communications, it will be using a software driven driver instead of the hardware.

    The plan is the have the LCD screen + 3 buttons to allow for entering and viewing the system status and a rough estimated state of charge (Voltage based initally). If space allows adding a set of LED's is also desired as a method of showing the status from a distance.

  • Rough Design of Frontend

    Ben Brown06/18/2017 at 07:16 0 comments

    The rough design pass of the front end has been completed.

    This is mostly based on my previous breakout board for this IC, which was just a transfer of the EVM with only single path mode supported. Also pre-charge support is dropped due to size constraints.

    This design adds support for all 8 cell inputs on the IC, and converts the balancing connection to a 2x5 0.1" header block. This was done mostly as JST XH connectors take up a lot of room, and this allows for an IDC connector to be used if desired.

    The Power In/Out connectors are using large wire holes, with a spacing to allow an XT60 to also be soldered on if desired. I would recommend a 12 AWG breakout cable be used to reduce the stress on the PCB during plug/unplug events.

    A small 2.0mm pitch header is used to provide a mount for the GUI board (Yet to be designed), and M3 mounting holes round out the design.

View all 7 project logs

Enjoy this project?



Hiro wrote 11/03/2023 at 15:41 point

How do you charge the batteries? Do you use P- P+ or will there be a dedicated port?

  Are you sure? yes | no

Per Jensen wrote 04/01/2022 at 21:20 point

I believe there's a typo in the title: "Desing".

  Are you sure? yes | no

Behnam wrote 03/25/2022 at 03:50 point

Hey guys, where do I find the download links for this design?

  Are you sure? yes | no

Mark wrote 04/19/2022 at 16:32 point

It's here -

  Are you sure? yes | no

Richard wrote 09/15/2019 at 04:01 point

Hi Ben,  Did you have any problems reading/writing to the eeprom?  Specifically, did you need to connect the batteries to get the chip into "normal" mode?



  Are you sure? yes | no

ntsarb wrote 03/06/2019 at 17:13 point

Hi, this is very interesting indeed! I'm building a small droid and I found your project while searching for any open hardware BMS designs, especially because I'd be interested in integrating its features with the rest of the system.

What is the current state of development? Would be very interested to better understand the objectives of the project and any indicative timeframe, if available.

Also, in case I can help, e.g. as an alpha/beta tester, firmware/software development, etc, happy to discuss.

  Are you sure? yes | no

hamedty wrote 03/08/2018 at 22:30 point

Hi Ben,

How many batteries in parallel can be used? Or in other words what will limit the current here?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates