Monitoring individual cell voltages (Smart BMS, Balance charger)

Copying my esk8.builders post + minor updates.

I believe there’s value in knowing the voltages of individual cells (or parallel groups) in a battery pack. If nothing else, knowing that your cells are well balanced and don’t tend to drift away will give you a peace of mind.

I’ve been looking into what options there are. This is a write up of my findings. I hope this is useful info for some. I also hope for people to chime in and help to complete the list.

Possible solutions can be divided into two main groups – measuring inside the enclosure and outside the enclosure.

1. Inside the enclosure

The cell voltages are measured by a device sitting inside the battery enclosure. The information is either wirelessly transmitted to a mobile phone or is viewed on a display that is a part of the enclosure.

1.1. DieBieMS + Metr Pro

These probably don’t need any introduction. Great products made by community members. DieBieMS is a smart BMS that supports various communication interfaces. It can be connected to a VESC via CAN. Using Metr, you can get the DieBieMS data routed to your mobile phone. Both Android and iPhone are supported.

Pros

  • tech support (products of active community members)
  • Android, iPhone
  • DieBieMS can be used as charge/discharge
  • DieBieMS provides an e-switch

Cons

  • fairly expensive
  • DieBieMS is a big BMS

1.2. LLT Power Smart BMS + bluetooth module

Relatively cheap Chinese Smart BMS that supports UART communication and comes with a bluetooth module. An Android app that can display cell voltages as well as other useful information is available. It’s a very basic app. The UI is by far not as polished as Metr, but it does provide all the info anyone may care about. There’s also a number of configuration options.

A third party iOS app is available for $1. I like the UI better than the on the Android app but it lacks some of the Android app features, mainly the ability to change the BMS settings.

Update: The iOS app now has a Pro version (~$7) which does allow reading and changing the BMS settings. It still has the same nice UI so it’s now better than the Android app in all aspects.

There are three versions of the BMS – for 20A, 30A, and 60A discharge current.

The BMS is available for 10-15S. It’s all the same hardware, which comes pre-configured for a certain number of cells. It can be relatively easily re-configured (I have done it) for a different number of cells. It requires a PC module, which costs additional ~$7 and the software only runs on Windows. The software configuration is straightforward. The hardware configuration is a trivial soldering task.

Pros

  • cheap
  • many features
  • reasonably small
  • supports 10-15S

Cons

  • limited documentation / tech support

1.3. LLT Power Smart BMS + DIY

The smart BMS comes with a UART port and the communication protocol is somewhat documented (though deciphering the documentation is only marginally easier than reverse engineering the protocol :sweat_smile:). I managed to get it working with an Arduino, or more specifically, with my DAVEga hardware, which is essentially a simple Arduino with a display.

It wouldn’t be a problem to use an Arduino board (Nano or Mini) with a smaller display, such as the 128x32 OLED, which is small enough to be attached to a side of a battery enclosure (if someone designed a panel mount for it).

Also, the Smart BMS could be hooked up with a WiFi/Blueetooth enabled development board (ESP32 and ESP8266 dev boards are cheap and widely available) along with a simple mobile app in Blynk. If you don’t know Blynk, do check it out. It’s awesome!

With ESP32 board and Blynk, an iPhone app for cell voltage monitoring would be easily available. I believe it can be done in less than one day.

1.4. DIY cell voltage monitoring module

It would be really nice to have a module that only does one simple task – read individual cell voltages and communicate the values over UART or I2C. This would likely be a tiny module, much smaller than any BMS. Similarly as the Smart BMS, it could be hooked up with DAVEga or with Arduino + OLED display or with ESP32 + Blynk. It could be an addition to a “dumb” BMS. The ones with li-ion packs who like to live dangerously could even skip the BMS completely. Some say that the li-ion batteries don’t require balancing, though keeping an eye on cell voltages is recommended.

The question is what would be the best way to create such module. One option I discussed with @deucesdown in another thread is using a simple voltage divider along with ADC module with sufficient resolution/accuracy (possibly the ASD1115).

Another option that @deucesdown suggested is using a BMS chip without the BMS components not needed for voltage monitoring, which would likely result in a much smaller device than a traditional BMS. It doesn’t seem trivial though.

1.5 Neptune 20 Lite

Neptune 20 Lite is a BT enabled cell voltage monitoring module with a very small footprint (41x35x7mm). It comes with a very cool looking Android app with a ton of features. Unfortunately no iOS (yet?).

1.6 Other smart BMSes

I don’t know these, so I’ll just put the links here (thanks @deucesdown).

2. Outside the enclosure

Routing balance wires outside of the enclosure opens many possibilities, such as using a balance charger or check cell voltages manually with a multimeter. It’s a lot of wires to be routed. Let’s first have look at how it can be done.

2.1. Wire routing

Many people use 12S batteries and that means routing at least 13 wires outside of the enclosure if you want to measure individual cells or balance charge. The SP21 IP68 connectors have up to 12 pins. I personally use one and I have seen @SkaterBoy58 use one. The 12 pin version is rated 5A.

This works for 10S (or 11S), but is one pin short for 12S.

The SP21 is also available with the panel mount on the female part, which is a better option since it reduces the risk of shorting out in case the connector gets damaged.

Other connectors:

  • GX20 - up to 15 pins, small, cheap, max 5A
  • SD28 - 14 pins, bit too bulky

@oriol360 pioneered the idea of using a VGA port (15 pins) for balance charging. This has since been used by other people as well.

@billappleton simply used JST connectors and a cable cover on his Hellboy.

Here’s another use of JST connectors. Probably not exactly waterproof though.

2.2. Balance chargers

The easiest way to monitor individual cell voltages while charging is to use a balance charger. The problem is that balance chargers for 10S or even 12S are rare and expensive. They do exist though.

  • Chargery C4012B is a monster 12S 1500W charger that you can feed directly from an AC supply. It costs astounding $350. I believe that @billappleton has one, so you can ask him if it’s worth the money.
  • iCharger 1010B+ is a 10S 300W charger for more reasonable $139. You need an additional DC power supply though.

  • iCharger 4010 Duo – 10S, 2000W, two chanel, $385. External DC power supply needed.
  • EVPEAK A9 is a 12S 1350W charger and it costs around $200. It also requires a DC power supply (11-32V).

It’s also possible to use two 6S balance chargers, which are widely available. It’s critical to feed them from two isolated DC power supplies though, otherwise you’ll short your battery over the common ground and you don’t want to do that. Charging 12S with two 6S balance chargers is shown in the same video I linked above. The iMax B6AC chargers come with an integrated DC power supply and thus are safe for the purpose. You could just use any other chargers, though, as long as you feed them from two different DC supplies.

2.3. “Frankenstein” charger

@Luuke has built this charger, which is awesome. It’s basically 10 independent single cell chargers.

2.4. External BMS

The BMS doesn’t need to be inside the enclosure to be used for charging. @Skaterboy58 has built this impressive charger using DieBieMS.

I use a DIY external charger based on the LLT Power Smart BMS.

2.5. No balancing

Jehu Garcia claims in this video that the li-ion batteries actually don’t need to be balance charged. He specifically mentions that he doesn’t use a BMS for his electric Volkswagen bus. And that’s one hell of a battery.

He also mentions that checking individual cell voltages is worthwhile. It can simply be done with a multimeter if you have access to the balance wires. There’s also a variety of cheap cell voltage checkers, such as this one from HobbyKing. One that I want to specifically mention is the Chargery BS12 since (1) it supports up to 12S, which is rare, and (2) it has a charge alarm that’s triggered if any cell voltage exceeds 4.22V. This seems like a very handy thing to have when using a brick li-ion charger with no BMS since you get notified you should disconnect the charger.

Selection_071

53 Likes

Love seeing this here. So much tasty esk8 knowledge. Thanks, @janpom .

5 Likes

Great thread, I actually started collecting knowledge for the no BMS adc option, I’m in contact with a professor at work specialized in electronics, liion and fuel cell tech already. I’m using the graupner Ultramat 18 for balance charging up to 12s btw, it’s missing in the list.

4 Likes

Absolutely incredible write-up. Thank you so much for taking the time to do this.

4 Likes

That LLT Power Smart BMS is using this IC:

http://www.ti.com/lit/ds/symlink/bq76920.pdf

Essentially just an analog front end for measuring cell voltages and performing active balancing. That BMS uses the IC alongside an atmel processor like whats on an arduino nano and some proprietary FW. If all you wanted to was actively balance cells and run charging current but bypass discharge the BMS could be made MUCH tinier.

It is also possible I reckon to simply add an I2C connection to this, connect to arduino or vesc and balance without onboard MCU but that seems a bit more sketchy to me.

7 Likes

Really detailed thanks Jan, basically I need an Android phone or PC. Currently the only way to do it with an iPhone is Metr/DieBieMS which is a problem space-wise on max batt builds…love both of ‘em mind. I wasn’t aware of the option of a LLT Power Smart BMS with a 3rd party app, the DaveGA option is amazing!

Maybe an old dedicated Android, everyone has one in a drawer somewhere.

Can’t imagine how much work went into this. Professionally this report would cost multiple €k’s!

1 Like

Hopefully you can add FlexBMS soon. shows a vital part of ESK8 maintenance and monitoring is a lack of suitable convenient options with out a high level of knolage

3 Likes

This thing is tasty!

I guess I should put this here too. I’ve been playing around with talking to the smart bms via raspberry pi onboard BTLE and python. The idea being to remote scrape pack health periodically, graph, and alert. This is actually really useful if you have multiple boards with this bms.

2 Likes

For 10S it also exists a 2000W version of the 1010B+.called 4010 Duo. 70 amps in synchronous mode. 40 amps on each channel in asynchronous mode.

2 Likes

I have been using the LLT Power smart BMS for quite a while now in a few builds and highly recommend it. seems reliable and runs cool. Being able wireless connect and see bms voltages is invaluable.

It also seems like a great starting point for a open source BMS. It uses a standard arduino MCU and has the programming headers already broken out on the PCB. There is already example arduino code for using the bq76920 chip and even another open source BMS firmware designed to run on the LLT power BMS hardware (designed for scooters).

I would love to see a way to connect this to VESC / Unity and see this data within their respective apps. it would also be great if the VESC / Unity was able to use this data and do its battery level throttling based on lowest single cell voltages rather than whole pack voltages. This feature would save a lot of dead battery packs and be far safer. Something like the Unity seems like the ideal companion for a BMS like this as it already has the built in ewsitch.

A micro charge only, Unity compatible Open Source BMS would be a real game changer.

8 Likes

Thanks for the well organized write up.
I have some questions regarding the LLT bluetooth BMS.
What balancing accuracy settings do you recommend?
The default values seem a bit on the low side, in terms of accuracy, for me.
I use the BMS wired for discharge and have to drain the battery before riding to avoid over voltage cut outs while braking. Since you can set the over voltage limit, up to which value would it be save to accept short over voltage during braking eg. 4.3V, 4.4V?

1 Like

This is fantastic @janpom thank you! May I suggest that you include the words ‘smart bms’ in the title?

I would love to see some other people’s experience with different Smart BMS’s. I currently have one from Aliexpress called an ANT BMS but I havent put it to use yet. Will be sure to post here with as much info as i can once I get it up and running.

2 Likes

I just ordered 5pcs of the bq76940 9-15s version on aliexpress. If anyone in the EU interested is I’ll sell 2 when they are here :wink:

1 Like

The balancing range seems okay to me? It’s ±0.03v, right? The software shows you so many digits of precision that it confuses my brain. :slight_smile: But realistically the system (balance wires, contacts, etc) will not allow for accurate measurements of cell voltage to 3 digits. At least for me every method of measurement seems to give different results. Nice high end multimeter, cheap lipo monitors, high end hobby chargers… Plus the more time you spend balancing minute differences, the more arguably unnecessary wear you’re putting on your batteries.

Unless you desperately need the capacity, wouldn’t it be far better to terminate charge at 4.1v/cell? I believe the bms with default settings will still balance.

2 Likes

Yes, I want to mainly charge only to 4.1V but even at this voltage the BMS will cut regen brake charging. I did a bit of research but couldn’t find anything useful about the safe margin of overcharging 18650 cells.

Ah I see where you’re coming from.

I wanna say back off charge voltage .05v at a time until you get to a spot where bms doesn’t mess with you. Or take a quick uphill run before commencing with the ride? That usually sheds the extra voltage enough for me, for regen to not be a concern.

It’s a slippery slope, defeating bms protections one by one to get what we want. This is why we remove bms from the discharge path, so there’s no chance of interruption of power/braking. But if you do that, really, you’re giving up most of the protection. You’re left with pack overvoltage and cell overvoltage during charge. And balancing. Arguably the bms remains only to do balancing.

At that point I’d rather have just cell level monitoring/alerting, and do manual balancing offline when needed.

3 Likes

The chip, or whole bms? Isn’t the chip like $7 on mouser/digikey? EDIT ah I see it’s like $10 for 5pc in ali-e

I also wondered why flexibms, diebiems went with LTC6308 which appears to be a lot more expensive.

If you’re doing something cool with the chip plz make a thread!

1 Like

For sure :slight_smile: I’m new to pcb layout so I need some feedback. I have help at work as I said but more eyes won’t hurt :wink: In the datasheet seems to be most info that I actually need to achieve this btw :slight_smile: I want to do a balance charge connector variant first for testing and when I’m sure everything works a thin but long version fitting a single layer battery heightwise since my decks are usually overcrowded :wink:

3 Likes

Good idea, done.

1 Like

I added it the list. Honestly though, for the price I would much rather get the Chargery C4012B since it supports up to 12S and doesn’t require external DC power source.