When I made the decision to use lithium ion batteries, I knew I needed a rugged battery management system (BMS). A couple of options were commercially available, but several had been accused of actually causing battery fires! Most of the available options put balancing first and safety second, so I decided to make my own. I won’t pretend it’s my best work, but it gets the job done.
A master unit communicates with 10-cell modules via a multidrop asynchronous serial bus with galvanic isolation. Each module is based around the LTC6802 battery management IC. An 8-bit AVR microcontroller is responsible for managing the IC and communicating with the master unit. The master and slaves have fully redundant capability to disconnect the charger from the AC mains in the event of a bad cell reading or a system malfunction. All cell connections are fused. Balancing capability is roughly 1% per hour.
There is a PC interface to the master unit via bluetooth (UART) which supports debugging and data collection. The master and slave firmware is written in C. The PC software is written in Objective-C (Cocoa/Mac OS X).
Here is telemetry of the system correcting a significant cell imbalance (y axis is millivolts):