INA219 battery overheats on ESP32, no voltage readings

Customer:

I bought the Voltage & current sensor INA219 breakout and am trying to connect it to an ESP32 to measure voltage.

I connected everything according to the instructions and code.

When I connect the battery to measure it, the battery overheats and I get no results.

Code:

#include "INA219-SOLDERED.h"

INA219 ina;

void setup() {
Serial.begin(115200);
 if (!ina.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
 ina.configure(INA219_RANGE_32V, INA219_GAIN_320MV, INA219_BUS_RES_12BIT, INA219_SHUNT_RES_12BIT_1S);
 ina.calibrate(0.1, 2); // Rshunt = 0.1 ohm, Max expected current = 2A
 Serial.println("INA219 Initialized and Configured");
}

void loop() {
float busVoltage = ina.readBusVoltage();
Serial.print("Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
 delay(6000);
}

Connections: d21 and d22 to 3.3V and GND

Log output:

ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load: ,len:13260
load: ,len:3028
entry 0x400805e4
INA219 Initialized and Configured

What am I doing wrong?

Original message (Croatian)

kupio sam Voltage & current sensor INA219 breakout i pokušavam ga spojit na esp32 da bih mjerio voltažu.

Sve sam spojio prema upustvima i kod.

Kad spojim bateriju da idem izmjerit pregrijava se baterija i nema rezultata.

Kod:

#include “INA219-SOLDERED.h”

INA219 ina;

void setup() {

Serial.begin(115200);

if (!ina.begin()) {

Serial.println(“Failed to find INA219 chip”);

while (1) { delay(10); }

}

ina.configure(INA219_RANGE_32V, INA219_GAIN_320MV, INA219_BUS_RES_12BIT, INA219_SHUNT_RES_12BIT_1S);

ina.calibrate(0.1, 2); // Rshunt = 0.1 ohm, Max expected current = 2A

Serial.println(“INA219 Initialized and Configured”);

}

void loop() {

float busVoltage = ina.readBusVoltage();

Serial.print("Bus Voltage: ");

Serial.print(busVoltage);

Serial.println(" V");

delay(6000);

}

d21 i d22 3.3v i gnd

log:

ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:1

load:0x3fff0030,len:1184

load: ,len:13260

load: ,len:3028

entry 0x400805e4

INA219 Initialized and Configured

možete li mi pomoć sa što radim krivo?

Originally submitted via email support on 16 April 2024. Migrated to the forum for community visibility.

Soldered Support:

This breakout is essentially an ammeter, but it can also measure voltage drop across a load via a shunt resistor. If you connected a battery to it because you want to measure voltage, the battery is actually being shorted. A battery is a voltage source, not a load.

Carefully check if the battery is damaged, especially if it’s Li-Ion or similar—these batteries are sensitive to faults and can be dangerous if damaged.

You can measure voltage from a battery using analogRead. If you have an ESP32 you must also use a voltage divider. Here is a useful article about this: Monitoring Battery Voltage | Details | Hackaday.io

Original message (Croatian)

konzultirao sam se s kolegom u vezi ovoga. Taj breakout je u suštini amperimetar ali može mjeriti i pad napona na nekom trošilu preko shunt otpornika. Ako si spojio bateriju na njega jer želiš mjeriti napon, ona je u stvari je shortana. Baterija je izvor napona, ne trošilo.

Oprezno pogledaj je li baterija oštećena, ako je Li-Ion ili slična, te baterije su osjetljive na kvarove i mogu biti opasne ako se oštete.

Možeš mjeriti napon s baterije pomoću analogRead-a, ako imaš ESP32 moraš koristiti i voltage divider, evo korisnog članka za ovo: Monitoring Battery Voltage | Details | Hackaday.io

Nadam se da je ovo bilo informativno.

Customer:

It’s clearer now. What can I use to measure current voltage?

Original message (Croatian)

Hej,
sad mi je jasnije.
S čim mogu mjeriti trenutno voltažu ?
LP [name removed]

Soldered Support:

What do you mean—which breakout or which pin or function on the microcontroller? Which microcontroller do you have? If I understand correctly, you want to measure the current voltage level on the battery. Please provide some details with your question so I can give you a better answer.

Original message (Croatian)

Bok, kako misliš, s kojim breakoutom ili s kojim pinom ili funkcijom na mikroupravljaču? Koji imaš mikroupravljač? Ako sam dobro shvatio, želiš mjeriti trenutnu razinu napona na bateriji. Molim te napiši neke detalje uz pitanje da ti mogu dati što bolji odgovor :slight_smile:

Customer:

I wrote those details in my first message:

  • ESP32
  • INA219

I want to measure voltage on a 12-14V battery and notify a REST API if the voltage drops below a predefined threshold.

Original message (Croatian)

Hej,
napisao sam te detalje u prvom mailu :

  • esp32 - ina219
    želim mjeriti napon na bateriji od 12-14v i želim obavijestiti REST API ako napon padne ispod predefiniranog napona.

LP [name removed]

Soldered Support:

Now I understand. You don’t need an additional breakout for this. You can use a voltage divider with different resistor values than shown in that article.

Here is the schematic:

If you use R1 33kOhm and R2 10kOhm, a voltage of 14V will be 3.25V on the ESP32 pin, which is acceptable. A voltage of 12V will be 2.7V. Connect Vout to an ESP32 pin and use analogRead there.

There is one drawback to this—it draws a small constant current from the battery to be able to measure it. You can reduce this by using larger resistors that maintain the same ratio.

Original message (Croatian)

Aha, sad mi je jasno, ne treba ti dodatni breakout za ovo, možeš koristiti voltage divider, što je iz ovog članka što sam pisao, samo s drugačijim vrijednostima otpornika.

Ovo je shema:

Ako koristiš R1 33kOhm, R2 10kOhm, napon od 14V će se biti 3.25V na pinu ESP32 što je dozvoljeno. Napon od 12V će biti 2.7V. Vout se spaja na ESP32 i tu radiš analogRead.

Ima jedan nedostatak ovoga - a to je da crpi malu struju iz baterije konstantno da se može mjeriti. Možeš ovo umanjiti tako da koristiš veće otpornike koji su u istom omjeru veličina.

Attachment omitted in migration: image.png

Customer:

I have 3 batteries to measure and an RPM sensor which is an analog resistor that varies depending on acceleration amount. What about in that case—same principle?

Original message (Croatian)

Hej,
hvala na brzom odgovoru.
Imam 3 akumulatora koja trebam mjerit i RPM koji je analog otpor varira ovisno o količini ubrzanja.
Što u tom slučaju, isti princip?
LP [name removed] Protrka

Soldered Support:

Analog resistance cannot be measured with analogRead. What you can do is measure resistance using Ohm’s law R=V/I and through calibration calculate the RPM value at that moment from the voltage.

Which resistor values you need to use on the voltage divider depends on what voltage range you read. I’m not sure if it can be achieved exactly that way—I think it would require experimentation.

I would first incrementally measure the voltage on one motor in isolation, increasing RPM by 100 and then measuring voltage with a multimeter. That way you can see if there’s a graph or formula you can use to extract RPM from voltage. This is just a suggestion. I haven’t measured RPMs using resistors before, so I’m just showing the process of how I would approach the problem.

Original message (Croatian)

nema na čemu. Analogni otpor se ne može mjeriti s analogRead-om, ono što možeš je mjeriti otpor koristeći ohmov zakon R=V/I i kroz kalibraciju izračunati vrijednost RPM-a u trenutku preko napona.

O tome koliki napon ćeš čitati ovisi kolike otpornike moraš staviti na voltage divider. Nisam siguran može li se to točno tako postići, mislim da bi zahtjevalo eksperimentaciju.

Ja bi prvo postupno na jednom motoru izolirano mjerio napon i povećavao RPM za 100 i onda mjerio napon multimetrom, tako možeš vidjeti postoji li graf/formula s kojom možeš preko napona izvući RPM, samo prijedlog. Nisam na preko otpora mjerio RPM-ove, pa samo pokazujem proces razmišljanja kako bi ja pristupio problemu.