It took a few revisions, but I finally am happy with the schematic and layout of my BMS boards. I ended up going the modular route for now, each board handles 3-6 cells, and can be expanded up to 192 cells via a standard 10-pin (2x5) cable. The stack of BMS boards fits onto an Arduino Uno.
The only missing part before it could go on a bike (or elsewhere) is a power supply. I'm currently powering the Arduino board through my computer's USB port, but am working on a design to step down the full pack voltage to 5V to power the Arduino. It will bypass the inefficient 5V regulator on the Arduino, thereby substantially lowering the power draw. I'm estimating around 50-100uA of average draw from the battery pack when using the ATmega's sleep modes. (Using one of those portable cell phone battery chargers with a USB port to power the Arduino instead, main pack draw can theoretically be as low as 12uA due to the BQ76PL536A chips). It will be limited to 140V main pack voltage, which is enough to get up to ~32S lipo. And because I know someone will ask... Yes, the current draw is even across all the cells, so it will not cause imbalance of the pack.
Sample of the board readings below. The two numbers after cell readings are temperature, the first is an on-board thermistor to monitor BMS temp and the second is off-board for monitoring cell temps (not connected at the moment). When I took the readings below the board was cooling down after a test of the balance resistors, hence the decreasing temperature readings. A reading of 4500 corresponds to about 25C, or 76F:
Code:
Cell 1: 3284.00mV
Cell 2: 3290.38mV
Cell 3: 3279.31mV
Cell 4: 3280.84mV
4508.00
30.00
---
Cell 1: 3285.00mV
Cell 2: 3290.38mV
Cell 3: 3279.31mV
Cell 4: 3280.84mV
4506.00
29.00
---
Cell 1: 3285.00mV
Cell 2: 3290.38mV
Cell 3: 3279.31mV
Cell 4: 3280.84mV
4504.00
28.00
---
Cell 1: 3285.00mV
Cell 2: 3290.38mV
Cell 3: 3279.31mV
Cell 4: 3280.84mV
4502.00
30.00
---
Cell 1: 3284.00mV
Cell 2: 3290.38mV
Cell 3: 3279.31mV
Cell 4: 3280.84mV
4500.00
29.00