We've recently been integrating our battery monitor system with the rest of the system, and it has been illuminating.
First the hardware. Our battery monitor is a modification of the STM32-based motor controller we built. The processor power is isolated with a DC-DC converter, talking to the CAN bus through a Si8421 digital isolator and standard CAN transceiver. Up to 12 cells are monitored per controller using the on-chip 12 bit A/D converter, with the remaining four channels used for temperature and charge current monitoring. We get a fresh sample of all channels every millisecond.
One of the things we discovered is that the cell voltages sag quite a bit while driving. We got a hint from the whole-pack voltmeter, but our high sample rate catches the extremes. Even with a freshly charged battery, the cell voltages will drop below the nominal shut-off voltage level (which is specified at zero load) during acceleration.
The high load sag combined with the discharge voltage curve being very flat makes it very difficult to use a whole-pack voltmeter to track discharge. You can't distinguish between the expected voltage sag and a nearly dead cell. And a stand-alone cell monitor can't tell if the voltage is sagging from load, or because the cell is mostly discharged.
You pretty much need a battery monitor that tracks the weakest cell. Better, a monitor that knows the discharge current and uses that to set the alarm voltage threshold. Ideally with a way to advise the motor controller to incrementally lower the power limit to match the weakest cell's capability.
|