Heltec ESP32 LiPo battery charge controller limitation

I’m doing a project with the Heltec ESP32 dev board with built-in WiFi / BLE (not LoRa) and built-in LiPo battery management. All I really cared about was WiFi and LiPo; the OLED display on it is a gratuitous extra for me.

I know that the charge controller is a CV/CC controller, and that it stops charge at 4.2V once the current reaches a programmable minimum, to prevent over-charging. However, I couldn’t find documentation of what the minimum voltage was where it would disconnect the battery to prevent excessive discharge. So I calibrated the battery voltage monitor sketch Heltec provided, and watched it slowly discharge.

I’m impressed with battery life. I have a 1000mAh 3.7V nominal LiPo cell, and it ran continuously, with the OLED display always running, and without into any sleep mode, from before 8AM until after 9PM. So about 13 hours. Since my application is intended to spend almost all its time in deep sleep and to keep the OLED fully unpowered, I can probably get a week or more of use without charging. This is great for battery life. I just need to keep a little bit of data in low-power RTC memory, and connect to WiFi maybe a few times per hour.

I got distracted as the battery voltage got down to about 3.2V, and a little bit later I looked over and saw that the OLED was no longer lit. I measured the battery voltage to determine what the cutoff voltage was, and got 2V.

That couldn’t be right. It must be a problem with reading the battery voltage in circuit when it is powered down, so I disconnected the LiPo cell, and measured it directly.

Still 2V.

Apparently the battery management chip has no feature to prevent over-discharge; the next most important thing after protecting against over-charge, and no way that I can find to turn off the battery and shut down the board all the way.

I guess now I know why those LiPo cells come in four-packs.

I suppose I’ll keep using the compromised cell while I’m doing development, and then when I’m ready to button up the case, make sure that I have some battery protection in place in software and substitute a fresh LiPo cell.

Aha! Someone kindly responded to me on the Heltec forum pointing out that the battery protection on the LiPo cell itself often has low-voltage cut-off. So I checked, and it has a 2.75V cut-off. I’d rather it were 3V for longer battery life, but now I know I probably didn’t kill it.

I’ll probably go into the deepest sleep I can at something like 3.5V, which should give me lots of remaining battery life at a very small power draw until I plug it back in to recharge.

Hi…the battery the board part previously included charge and release the board, battery full insurance, and so on. It is a different part, and this capacity is done freely by the TP4054 chip, so ESP32 doesn’t influence it when it dozes.

pcb design for manufacturing checklist

1 Like

Yeah, I knew it was a separate chip (“Apparently the battery management chip has no feature to prevent over-discharge”).

I should have found a magnifying glass to read the part number off the board and read the data sheet. Thanks for pointing me to the TP4054. Reading the datasheet, 3.4V minimum 3.6V typical 3.8V maximum Vuv undervoltage lockout. Given that I was reading approximately 3.2V before shutdown, it looks like tolerances might be loose. :slight_smile: