Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The task is to measure the voltage of individual cells in a 48-cell battery pack of AA cells in series. The measurements serve to log performance statistics, warn the user if/when a cell dies, or that a cell is otherwise unbalanced compared to the whole pack. I'm thinking about how to wire this up to the MCU. My current design idea is as follows: connect the minus of the battery pack to GND, and then place a voltage divider from each tap of the pack towards ground, so that the voltages of the taps are brought within the 0..5V range. After that, place 6 analog multiplexers of 16:1 configuration, so that any two taps can be addressed individually. These two selected channels are amplified with an opamp in differential fashion, and fed to a PIC. The analog muxes, the opamps and the PIC are powered by a battery/LDO combo.

It isn't hard, it just seems overly complicated, so I wonder if I miss a simpler solution?

share|improve this question
How many cells are there in series and parallel? If you have many cells in series, your measurement resolution on the highest cells will be very poor and you should use another method. – user36129 Mar 10 '14 at 9:28
Yes, I forgot to mention that. They're all in series. I'm editing the original question to clarify. – anrieff Mar 10 '14 at 9:37
up vote 3 down vote accepted

Use high voltage multiplexers first then get one pair of signals that can be fed into a single (albeit expensive) high-common-mode differential amplifier.

The MAX14802 is an analogue switch (16 channel) that uses 200V technology and typically can be run from +/-100V or +200V/0V or +40V/-160V etc.. Digital interface is 3.3V/5V.

It has a data input that controls which switch is active and using 2 devices you can select the individual battery/cell to be measured. Obviously, for 48 cells you'll need 6 devices but because they are high voltage devices you'll only need one set of high-precision resistors and an instrumentation amplifier to do the measurements.

enter image description here

I think the AD8479 looks like it'll get close to being accurate for the differential/instrumentation amplifier and is only a few dollars.

share|improve this answer
The suggestion to use 6 total HV muxes may not really be necessary. Since the junction of each series battery + connects to the next battery - terminal you bring a total of 48 wires from the pack (not counting GND) down to the MUX array. If all the odd numbered wires were connected to one MUX bank and the even numbered wires connected to another MUX bank then you could get by with just four HV mux parts. This scheme would cause every other battery monitor to be inverted polarity but that could be accomodated by having two of the instrumentation amps, one for each polarity. (continued) – Michael Karas Mar 10 '14 at 13:54
(Continued from above) Other schemes could also be used to adjust for the polarity reversal too. A simple cross over mux at the amplifier could swap the inputs into the amp. Also the A/D converter could be configures to read both polarities. – Michael Karas Mar 10 '14 at 13:57

The biggest problem you will have is the bad resolution and accuracy of cells on top of the stack. With 48 alkaline cells your top voltage will be approximately 72V. If you reduce this to 5V, you need a 15:1 resistive divider, which will effectively reduce your resolution by a factor of 15 as well. With a 10-bit ADC in a typical PIC, even with perfect resistive dividers, your measurement resolution on the top cell will only be 70mV. That is not enough to get any meaningful state-of-charge (SoC) information.

Worse still, resistor mismatch and drifting over time and temperature, as well as variability in the analog mux switch resistance will introduce very large measurement errors. You will definitely have to use muxes with a very low resistance compared to the resistance of your dividers. Also, you will have to calibrate out the initial error of your dividers and use resistors with low temperature drift. Furthermore, to increase your resolution you can introduce a noise source on your ADC input and average out many consecutive conversions to get an effective higher resolution. However, this may make the total sweep time prohibitively because of the sheer amount of cells you are trying to measure. Also take into account that you need a fairly long settling time as you will be using high-value resistors for the dividers (to avoid sucking the batteries dry with all those resistors constantly attached).

Other ways to perform this measurement are not necessarily 'easier'. I designed such a system very long ago to monitor ultracapacitors in an electric race car, and used a Maxim high-voltage multiplexer that could switch any cell into a voltage-to-current converter (standard opamp circuit). This fed into a ground-referenced resistor that in turn fed into a standalone ADC. This system was very easy to expand to very high voltages, but it requires expensive high voltage multiplexers and is definitely more involved and more complex than just resistive dividers.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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