As title, I have 3 batteries connected in series composed by 7 cell each. I have several Arduino nano and I want to use one on each battery pack to measure all cells voltage. Then they will be queried by I2C protocol to get cells values.

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:


simulate this circuit – Schematic created using CircuitLab

How can I avoid this? Is there a simply solution like place a diode on each GND line?

  • \$\begingroup\$ Use one nano powered per pack and send data RF or BT. I2C dedicated 2 analog inputs (?). \$\endgroup\$
    – Antonio51
    Nov 5, 2021 at 14:50
  • \$\begingroup\$ You need an AC-coupled signal - coupled with capacitors or transformers \$\endgroup\$
    – user253751
    Nov 5, 2021 at 15:32

1 Answer 1


Move the GND wires from the top two units to the same GND net on the lower unit. This would be the same as having one Pro Mini with 21 ADC inputs, if it existed. There are a few issues with this approach though.

First, the divide resistors in the top two units need to be adjusted to accommodate the higher voltage, assuming full potential for each cell (3.2V) from the lower cells.

Second, which is more fundamental to your design, is that the accuracy of each ADC measurement is dependent on that of the lower units. Take the very top ADC input for example, it should read 67.2V (all cells @ 3.2V) divided by the resistor network, to shift this to the ADC max input voltage of 3.3V or 5.0V depending on your model. The voltage of the top cell can only be calculated by knowing the lower measurement, and subtracting this out from the top measurement. This method will have more error than the lower units.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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