How to read cell voltage of multiple series pack

As title, I have 3 or 4 batteries connected in series composed by 7 cell each. I have several Arduino nano and I want to use one on each battery to measure all cells voltage.

Since this batteries are connected in series and all Arduino have a common power supply source, I'll get a short between + and - on each battery if I use this common configuration:

I can't use a single Arduino board because:

  • Doesn't have enough Analog ports;
  • It's "integrated" to battery;

Also I need a common GND between Arduino boards since there will be communication between them.

How can I solve this problem?

Use opto couplers for the communication between the controllers.

Looking again.... It looks like home brew.
What is the difference between Arduino minus and Arduino GND? I will say they are the same and You get a real short circuit.

Search for 'flying capacitor', it's what you need to measure battery voltages when they are in series like you have.

About to go out for beer and food, otherwise I'd give a more complete answer.

You can either use:
a DPDT relay
several H11F1TVM Opto FETs


You might find if you do the sums that you get enough resolution by just taking the input direct from each cell - either switched in or direct to a number of analog inputs .

Eg a 12v battery , where 12v =1024 in an analog read , means you can resolve to 10mv , that might be good enough to check the voltage of a 2v cell making up that battery

7*4 = 28 cells
each (say) 1.2 V = 36V
you would need: 28 voltage dividers - each taking current from the batteries.
You could use analog multiplexers - but cheaper and simpler to use 3 or 4 nanos.

I'd suggest you rethink your requirements - do you REALLY NEED to measure each cell? After all if they are in series you can not use or charge them independently.

Make hell sure to only activate one relay when all relays are off. Else there will be smoke, or even poff....

Good question. Will this thing ever be built and used?

1 Like

Not only that, they will call you sparky for the rest of your life !

This application will be practically used and I need to measure each cell voltage.

Optoisolator will not be enough since require also separate power sources.

About this solution? Diodes should do the trick.

No, diodes won't do the trick. Why do you think they will?

The analogue inputs measure the voltage with reference to the Arduino 0V, adding a diode does not change that.

plus LCD switch for 21 screens, so by pressing the button you will see voltage of each cell

Can you explain why?
AFAIK there is NO simple solution to measuring 28 mutually dependent voltages.
Also be aware that the cell voltages will be affected by the current through the cells unless they are off load.

This is funny to me. Around 25 years ago I had to do the same thing: measure cell voltages on large battery packs. We used differential analog multiplexers into a single ADC back then. Weird to realize that it's easier to use multiple microcontrollers these days :slight_smile:

I can think of a few reasons that you would want to monitor the voltage of each cell in a series pack. Just ask any Chevrolet Volt owner who is waiting for a BEC module from GM. (Battery Energy Controller). The BEC in a Volt measures individual cell voltages while the car is driving.

I found this circuit which used a linear optoisolator:


You really need isolation, flying capacitor would be the simplest to use with small low power relays.

multiple cell measurement I2C isolator

You will find many other methods also look for SPI isolation systems.

Tom.. :smiley: :+1: :coffee: :australia:

Have a look at battery monitoring IC ‘s instead , it might be more fruitful - especially if you want to measure the voltages for charge balancing circuits .

You can still do this…but not if you have a common 0v line

What type of cells?