Electrical – LiFePO4 16-cell stack precision dc volt measurement LTC2400 MUX

batterieslifepo4precisionvoltage

I would like to build a highly precise volt meter (5 digits; e.g. +/- 1mV) to measure each cell voltage in a LiFePO4 battery stack of 16 cells (<60V).
I am content with measuring the cell between 3 and 4 Volts (1V range) if possible / doable.

I selected an LTC2400 for the precision A/D conversion, and thought that a 16-channel MUX would allow me to measure one cell after the other; but it appears this would not work. I thought I could use 1 or 2 MUX to loop the pos/neg connection per cell to the Volt meter.
Another option would be 16 volt meters (one per cell) but it seems like a lot of duplication of gear, hence, a silly approach.
An Arduino would to some calculations and comms.

I did not want to use a high Voltage MUX due to accuracy/resolution constraints, but rather measure each cell (and am not interested in the total V).

It is sufficient to measure the 16 voltages within one second disregarding any Amp fluctuations — as the battery system has pretty stable current flows.

Any hints / pointers are much appreciated; thanks.

Best Answer

The problem is that most of the cell voltages are higher than the A/D (and MUX?) can handle, so you need some way to get it in range. You could just put a voltage divider on each cell tap, but then you have to individually scale each tap voltage and subtract them to get the cell voltages, which is difficult to do accurately.

The solution used in many chargers is an op amp configured as a differential amplifier, like this:-

schematic

simulate this circuit – Schematic created using CircuitLab

This example shows one of the identical circuits that would be used to get the voltage on each cell in the pack.

Op amp OA1's output is proportional to the difference between voltages at each end of cell 3. The op amp can only accept a maximum of 6V on its inputs, so R1 and R2 divide the + (non-inverting) input voltage by 3. R3 and R4 have the same ratio so the voltage on the - (inverting) input is also divided by 3, and the equal ratios ensure that differential balance is maintained (so voltage changes on lower cells have no effect). The gain of the op-amp is set at 0.5 by the ratio of R4/R3, so the useful output voltage range is reduced from 1V (3-4V) to 0.5V (1.5-2V).

The circuit shown above works for up to 4 cells, but for higher voltage you either need higher voltage op amps (and Vcc) or a higher division ratio.

This technique is commonly used for up to 6 cells, but I don't know how successfully it could be extended to 16 cells. Theoretically your A/D converter has enough resolution to handle the smaller voltage range, but in practice it may be quite difficult to get the precision you want. You could amplify the signal with another op amp, but then you may run into offset and drift issues.

Another option might be to wire a precision voltage to frequency converter across each cell, couple the output pulses via opto-couplers, and measure the frequencies using a counter/timer in the Arduino. The V/F converters would draw some power out of the cells, but if they have high capacity it shouldn't significantly affect their capacity.

However I would probably go for the much simpler approach of 16 voltmeters. I would just get 3 of these 6S lipo monitor/balancers. Or if I only needed to check the voltages occasionally, I would just get one 6S meter and wire some balance cables onto the battery to plug it into.