1
\$\begingroup\$

I need to monitor 16 LiFePO4 cells. Their Voltage during operation measures from 3.0 to 3.7V which I would like to measure accurately with 3 decimals. I was thinking of using a 16 port multiplexer like the 74HC4067, and connect its output to an LTC2400, a Linear Technology’s LTC2400 24 Bit Analog to Digital Converter, and then data log the voltages with the Arduino. While this conceptually work, I lack the experience to make a judgement, whether this works in practice, or if there are more things to consider. In particular the accuracy of the Voltage... I would like 3 digits after the decimal to me as precise as possible.

\$\endgroup\$
  • \$\begingroup\$ 1- A 24bit AD with a 5V Vref will give you a theoretical 0.2uV precision. 2- LTC2400 works via SPI so I don't see any use for the mux 3- To measure 1mV in a 5V depth of scale you need 5000 points so you're OK starting from a 13bit AD 4- You need a stable Vref to operate the AD which can derive from the main 5V supply. \$\endgroup\$ – Manex Jun 4 '15 at 9:12
  • \$\begingroup\$ why would you need such an accuracy in the first place? \$\endgroup\$ – Vladimir Cravero Jun 4 '15 at 9:14
  • 1
    \$\begingroup\$ "these days" and your fancy short YTEOL components :) some of us have to deal with 25years and still use TLO84 OPAMPS (at least now it's TLE). \$\endgroup\$ – JonRB Jun 4 '15 at 11:32
  • 1
    \$\begingroup\$ You might have a look at high common-mode voltage difference amplifiers such as TI INA148-Q1 (note one of the applications listed is "Stacked-Cell Monitors"). You might also have a look at LTC6804-1/LTC6804-2 - Multicell Battery Monitors or other parts from Linear Technology. \$\endgroup\$ – Tut Jun 4 '15 at 12:01
  • 1
    \$\begingroup\$ @Tut : these are good alternatives. The LTC solution simplifies the "fully floating system" alternative, and I didn't consider the high CMR approach, but one INA148 per cell could be cost-competitive with switching. \$\endgroup\$ – Brian Drummond Jun 4 '15 at 12:35
4
\$\begingroup\$

I am going to suggest a 50V-rated switch per cell, connecting any one cell at a time to a single attenuator of about 10:1 (if your ADC can tolerate 5V in) and an ADC of at least 16 bits real accuracy.

Single attenuator. Attenuators are only as accurate as their resistors - typically 1 % but for a price you can buy resistors trimmed or matched to 0.1% or better. If you measure both ends of a cell with the same attenuator, both measurements have the same percentage error, so the error is largely cancelled out. And as there is only one attenuator, the impact of expensive components is minimal.

50V-rated switch. Possibly a reed relay per cell. Simple and avoids worrying about MOSFET ratings or gate drive requirements. Connect a medium value resistor (say 100R or 1k) in series with each switch to limit current if you inadvertently enable two switches at once. Perhaps make that a feature, and enable switches at both ends of a cell if you need to actively balance cells in a controlled manner.

16-bit or better ADC. To read 1mv per cell across 50V, you need 50,000 counts, i.e. 16 bits giving you 65536. Your proposed 24-bit ADC should be good for about 20 bits in practice, though you need to pay attention to error sources (Vref stability, where the ground currents run, etc) to get close to this in practice.

To calculate a single cell's voltage, read the tap at one end, then the other end, and subtract. (Re-read the first end as a consistency check). I recommend being able to read both ends of every cell, so you need 17 taps not 16.

The alternative is a fully floating measurement system, which I think will be more complex.

\$\endgroup\$
  • \$\begingroup\$ Thank you kindly. I am not sure I get the attenuator bit... there are 16 cells, 3.2V (nominal) each, forming a 50+V battery. I know the V of the battery (measured by two devices, which agree). I need the cell Voltages, which vary from 3.275 (30% SoC) and 3.400 to 3.600V when SoC = 100%. What switches the reeds? \$\endgroup\$ – MaxG Jun 4 '15 at 11:33
  • 1
    \$\begingroup\$ The Arduino would have to do that, via relay drivers for example, when it decides to measure a voltage. To measure Cell 11, it would measure tap 10 (say 32V), then tap 11, (say 35.201V), then subtract, giving 3.201V. After the attenuator the measurements would be 3.2V and 3.5201V \$\endgroup\$ – Brian Drummond Jun 4 '15 at 11:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.