In my case I'm using a Zivan NG3 with the TS90 battery management
system (BMS) from evpower.com.au.
For interest, the charging algorithm for lithiums is Constant Current,
Constant Voltage (CCCV), which basically just means the charger needs to
limit both voltage and current. It might be easiest to understand this from
a graph.. I did a report a while back on LiFePO4 performance which
shows charge curves:
http://www.zeva.com.a
u/tech/LiFePO4.php
The tricky part is where charging a whole lot of slightly different capacity
cells in series (no two ever are identical), means some hit peak voltage
sooner than others. As such you need a means of shunting off the charge
current to prevent this cell going above its max voltage while the other
cells come up to full. (This is a job for the BMS)
The other essential function of a BMS is to prevent any cell going below
minimum voltage. Weaker cells will will hit their low voltage cutoff sooner
than others, and you basically have to stop when the first cell hits its
minimum voltage.
To stop the BMS shutting down the battery pack due to voltage sag (under
heavy acceleration for example), the speed controller I built for the MX5
dynamically restricts its power output to keep pack voltage above some
programmed minimum voltage. (This way you can still limp home safely if
your pack is starting to get low!)