Measuring multiple batteries without a common ground

Hi all,
I have been racking my brain to come up with a solution for this to no avail and searching has not been fruitful either. My task at hand is measuring the voltage of 4 different series/parallel batteries, each having 3 readings each for a total of 12 readings. I need to monitor the voltage of either cell and the cells in series of a series/parallel battery pack.

This is the battery that I am dealing with. It has 3 terminals where the left most is positive, the right most negative, and the center either the positive or negative for either side. Measuring the left terminal and the center gives the voltage of one cell, the center and the right most terminal gives the voltage of the right cell, and measuring the left and right most gives the series voltage of the two.

The series voltage isn't crucial since it can be extrapolated from the two other voltages, however, in this application, it is critical that the left and right cells of each of the 4 batteries be monitored independently and simultaneously.

Now obviously the issue here is that the ground is not consistent so simply grounding the signals together and running the positives into the analog inputs is not an option. I know I need to isolate these readings so that I can feed them into the Arduino analog inputs but I am just at a loss as to the best solution. I am thinking that a dc-dc isolated converter can be used but I have not found one that I know for sure will do the job. I'm not very familiar with onto-isolators or any isolator for that matter and I am in desperate need of some help here.

Any guidance or suggestions would be greatly appreciated! Thank you all!

-Blake

I hope that I did understand your problem. I'm no expert on the matter but why not use mosfet to decouple the batteries that are not measured at the moment? Three Mosfet per battery, each activated by a single digital PIN of the Arduino.
You got the idea? But maybe does not work for some reason.

Best

I suppose that is a pretty viable option. I currently have the Arduino reading the current voltage at the top of the main loop but I suppose I could just have my read function cycle through each signal, coupling and decoupling it as it reads the voltages into an array. I doubt the additional delay will really be an issue. I am driving a bunch of stepper motors as well but I think it should be able to process the data fast enough not to miss a step.

I will look into that further. Thanks for the suggestion.

What voltages are we talking?

It might simplest just to connect the most negative to ground and measure all the other
terminals (via voltage divider if needed) by their own analog pin.

Ground the most negative terminal (right). Measure the voltage across left and right which gives you both cells in series with one analogue input (A1) - Call it V1. Measure the Right and Center to give you the value of one cell with another Input (A2)- Call it V2

The remaining cell V3 = V1 - V2

Wow, thank you all so much. I can't believe I haven't thought of that yet but that will work beautifully!

Well, after further testing I've discovered that the batteries are not common grounded with the arduino and it is not an option to ground them so I am back to needed to isolate them. Any ideas?

Standard differential amplifier circuit, but switching the input resistors with analog multiplexers?

The issue I'm having is getting a 1-1 transfer through the optocoupler. IS that how they function? All the things I have looked at so far seem to be more of an on/off that 1-1. If I feed 3.4v into one side I need 3.4v out and I need that for anything from 3v-4v.

blf0005:
Well, after further testing I've discovered that the batteries are not common grounded with the arduino and it is not an option to ground them so I am back to needed to isolate them. Any ideas?

You might use that module:
http://www.ebay.de/itm/DC-Voltage-Sensor-Transmitter-Isolated-Output-4-20MA-Din-Rail-Module-/172255440584

You will put relays upfront to multiplex the measurement.

You will need to provide around 24V to the sensor

You get a 4-20mA signal that you will convert to 0,2-1V using a 50Ωresistor or 1-5V voltage with 250Ω.

Hi,
What are the batteries installed in?
What is their part number?

Can you draw a diagram of how the batteries are interconnected?

Thanks.. Tom.. :slight_smile:

I am monitoring the voltage of Nissan Leaf batteries. Each pack is made of 4 cells in series/parallel and I need to monitor 4 packs. So a total of 8 values, two from each pack.

In regards to the picture of the pack above, the center terminal acts as the positive for one side of the parallel and the negative of the other.

These batteries are isolated from the vehicle itself, and each other. Creating a common ground loop between the arduino and the batteries is out of the question. I need to read the voltage of the most negative terminaland most positive (~8v) and the most negative and the center terminal (~4v) so one voltage will be min 2.8v to max 4.2v and the other voltage will be min 5.4v to max 8.4v.

This voltage must pass through some sort of isolation before the arduino can read it. That is the big challenge.

Does that explain the scenario well enough?

blf0005:
This voltage must pass through some sort of isolation before the arduino can read it. That is the big challenge.

Did you understand the solution I have provided?
It provides a perfect isolation of every reading.
Have you got objections against it?

Hi,
A rather complicated way but feasible is to use capacitors and relays to convey charge from battery to controller.

Tom... :slight_smile:

RIN67630:
Did you understand the solution I have provided?
It provides a perfect isolation of every reading.
Have you got objections against it?

I don't really understand what that module does or what inputs it needs. I don't see the data sheet anywhere. What voltage in and out does it provide and what is the 24v for?

blf0005:
I don't really understand what that module does or what inputs it needs. I don't see the data sheet anywhere. What voltage in and out does it provide and what is the 24v for?

The proposed module is an industrial voltage sensor.
It is self powered by a current loop, which has been an industry standard for more than 50 years.

But Tom George's idea to switch capacitors is probably cheaper and easier to implement.
His schematic diagram was however drawn in a way that does not make its function easy to understand.
That arrangement is probably more self-explanatory:

You will need 24 relays for 12 readings, since the relays with two contacts of Tom George's design are not common in the Arduino world.

To read the first battery you will switch R1 and R2, that will move the capacitor away from the battery, and switch it to the measurement circuit, then wait 100mS and read the A0 input, release the relays.
To read the next one, switch R3 and R4, wait 100mS and read A0 input again,
... and so forth until the last battery.
That isn't rocket science.

Fortunately, you have got some interesting boards with multiple relays built in, three of those seem perfect to do the job:

Since the relay module is provided with optocouplers and relay drivers, you might just wire the input 1&2, 3&4,... etc. together, since you will always drive two relays together.

So you we need 12 digital outputs; remember: the unused analog inputs A1 to A7 can be used as digital outputs as well.

Enjoy!

Hi,

You will need 24 relays for 12 readings, since the relays with two contacts of Tom George's design are not common in the Arduino world.

You don't use the Arduino relay modules, you BUILD the assembly using DPDT relays to ensure isolation with the switching, thats why I included the MOSFET coil driving.

Thanks.. Tom... :slight_smile:

TomGeorge:
Hi,
You don't use the Arduino relay modules, you BUILD the assembly using DPDT relays to ensure isolation with the switching, thats why I included the MOSFET coil driving.

Thanks.. Tom... :slight_smile:

I did it that night:


:stuck_out_tongue:

Hi,

RIN67630:
I did it that night:

:stuck_out_tongue:

The thirteenth relay along the top row, COM terminal needs tightening. :slight_smile: :slight_smile: :slight_smile:
Nice....

I'm probably out of my depth here but, could this work? Essentially, mount a voltmeter for each cell and read them through I2C.