Measure voltages with ADS1115 with load get bad readings


I have a 7S battery (made out of 168 x 18650, 24 each bank) and each bank goes into a voltage divider to make a safe voltage read into two ADS1115. Each ADS1115 has it right address and works fine reading.

the only problem I'm facing is in the first bank (which has no voltage divider and measures between 3,3 and 4,2V (good health of 18650 Lithium battery) is that it reads fine when no charge is being applied to the hole battery, but when charging the voltage get slightly off by a 0,015v.

all the other bank reads well with the charging state.

should I use a voltage divider as somehow needs a load resistor de ADS1115?

should I use a capacitor between A0 and ground to stabilize readings? (I make 50 readings and average them for each bank every loop to have a consistent value)

Is the first battery connected to the ADS1115 or the Arduino ?

Could you apply the charging and measure the GNDs ?
What is the voltage between the minus of the first battery and the ADS1115 GND ?
What is the voltage between the minus of the first battery and the Arduino GND ?

Please post a wiring diagram. Hand drawn is fine.

As I see, the DC/DC converter from 28V to 5V for the Arduino has a 50 ohms resistor between grounds (input ground/output ground)

So I don't have the Ground of the 7S24P battery to the ground of the Arduino. Should I connect it for testing?

Ground of the Arduino es 2,2mV of the Ground of the battery

(the DC/DC converter is the XL4015)

The ground connection is required, at all times, to both the ADC and the Arduino.

The diagram needs to show the voltage dividers.

Ground is connected, but the ADS1115 and the Arduino is connected to the negative output of the DC/DC converter... should I Join all the ground anyway?

All grounds should be connected, at a single point if possible.

This statement is not consistent with your latest schematic. Please post the correct, complete schematic.

Ground is connected, but the ADS1115 and the Arduino is connected to the negative output of the DC/DC converter

That is a very small error. My guess is that its due to charging current flowing through a path with a small resistance. You may want to look at how your grounds are connected, especaially your charging circuit - which is not shown in the diagram.

well, all grounds are connected by wire, "star ground" , now.

when no charge is being applied (no solar panel connected) I got 1,9mV from ground of battery to ground of charging circuit which I asume is almost zero.

but when connecting the solar panel to the charging , just being connected is 9mv off and when charging full blast (just 1,5A at 28v) it could get from 29 to 44mV off

So you are saying: we are getting there, but we are not there yet :wink:

I think that the resistors of the voltage dividers are too high in value.
The ADS1115 has a input impedance in the range of MegaOhms, and a input leakage current of -10 to +10µA.

Do you know the internal leakage current of your batteries ? If you lower the resistor values and are still below 10% of the leakage current of the batteries, then you would almost not notice it.
Can you add a protection resistor at the input of ADS1115 for the first battery ? Perhaps the ADS1115 is damaged because of a missing protection resistor. For example 10kΩ in the signal line between the battery and the input of the ADS1115.

Which internal voltage reference of the ADS1115 do you use ? I hope you don't use the 5V of the Arduino as voltage reference. That would be bad in more than one way.

A "star ground" is better than randomly connected GND wires, but it is still not ideal.
You measure the + side and the - side of every battery, except for the first battery. You also need to know the voltage of the - side of the first battery. If that is lower than the GND of the ADS1115, then you have a problem.

bingo, the voltage of the - side of the first battery is negative compared to the ground of the Arduino+ADS1115 which makes the voltage reading drift when charging (connected to the solar panels)

without the solarpanel connected It is just 0.

Get better wire.


The ADS1115 can't use that. It always uses it's internal reference.
That should be 4.096volt (PGA1), not the default 6.144volt (with a lower resolution).
That means battery#1 also needs a voltage divider.

It's only a matter of connecting ADS ground directly to the negative terminal of the battery (Kelvin connection), not a grounding scheme as drawn on the diagrams.
Because the ADS (in single-ended mode) measures between the inputs and it's ground.
You can (should) connect other (Arduino) grounds to the same point.

1 Like

Sry, I misunderstood.

I thought the OP was measuring significant voltage between points that were wired to ground, which should mean 0 volts potential.

So with wire that was better, that significant voltage would go away.


Sure, you can reduce ground differential with heavier wire, but it's better to eliminate.
By measuring the voltage where it originates from (+ and -).
Replace every wire in the diagrams with a (1 ohm) resistor, and you'll see what I mean.

Add a capacitor at A0 and set the ADS1115 to the slowest measurement time.

this seems like a funny advice until I tried just a few minutes back with a second parallel wire from ground of the battery to the ground of my solar controller Arduino and with easy I got from 20-30mV to just 5mv or so, also values where more near TRUE values of a good multi tester

so It seems that having not so much cable or good cable or short cable works agains the current flow in my circuit.

will try with better-shorter-wider cable to see what happens

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.