Testing Cr2032 Coin Cell Batteries with μA to mA pulsed duty cycles

Cr2032 Internal Resistance vs mAh [Fig6 from SWRA349] Our peak load of ~8 mA while writing data to the EEprom creates a voltage drop across the battery IR. The load induced transient on the 3v Cr2032 can’t fall below 2.775v or the BOD halts the 328p processor. This limits our useable capacity to the region where battery IR is less than 30 ohms. This also makes it critical to control when different parts of the system are active to keep the peak current as low as possible.

Reviewers frequently ask us for estimates based on datasheet specifications but this project is constantly walking the line between technical precision and practical utility. The dodgy parts we’re using are likely out of spec from the start but that’s also what makes our 2-module data loggers cheap enough to deploy where you wouldn’t risk pro-level kit. And even when you do need to cross those t’s and dot those i’s you’ll discover that OEM test conditions are often proscribed to the point of being functionally irrelevant in real world applications. The simple question: “How much operating lifespan can you expect from a coin cell?” is difficult to answer because the capacity of lithium manganese dioxide button cells is nominal at best and wholly dependent on the characteristics of the load. CR2032’s only deliver 220mAh when the load is small: Maxell’s datasheet shows that a 300 ohm load, for a fraction of a second every 5 seconds, will drop the capacity by 25%. But if the load falls below 3μA then the battery develops high internal resistance, reducing the capacity by more than 70%.

Voltage Under EEprom load VS date [runtime hours in legend] with red LED on D13 driven HIGH for 1.4mA sleep current, 30second interval, 8-byte buffer. These are serial tests performed on the same logger. 1.4mA continuous is probably is not relevant to our duty cycle.

Surprisingly little is known about how a CR2032 discharges in applications where low μA level sleep currents are combined with frequent pulse-loads in the mA range; yet that’s exactly what a datalogger does. Normal run tests take so long to complete that you’ve advanced the code in the interim enough that the data is stale. Another practical consideration is that down at 1-2μA: flux, finger prints, and even ambient humidity skew the results in ways that aren’t reproducible from one run to the next. So a second question is “How much can you accelerate your test and still have valid results?” Datasheets from Energiser, Duracell, Panasonic and Maxell reveal a common testing protocol using a 10-15kΩ load. So continuous discharges below 190μA shouldn’t drive you too far from the rated capacity. Unfortunately, that’s well below what you get with affordable battery testers, or videos on YouTube, so we are forced yet again to do empirical testing.

The easiest way to change our base load is to leave the indicators on: all three LEDs will add ~80μA to the sleep current when lit using internal the pullup resistors. 80μA is ~16x our normal 5μA sleep current (including RTC temp conversions). A typical sampling interval for our work is 15min so changing that to 1 minute gives us a similarly increased number of EEprom saves. With both changes, we tested several brands to our 2775mv shut-down:

Cr2032 Voltage Under EEprom Load VS Date: Accelerated Cr2032 run tests with 3xLED lit with INPUT_PULLUP for ~80μA sleep current although each unit was slightly different as noted, 1min sampling interval. Blue Line = Average excluding Hua Dao. CLKPR reduced system clock to 1MHz during eeprom save on this test to reduce peak currents to about 6mA.
BrandRun Time (h)Cost / Cell|BrandRun Time (h)Cost / Cell
Panasonic1500$ 1.04|Duracell1298$ 1.81
Voniko1448$ 0.83|AC Delco1223$ 0.79
Maxell1444$ 0.58|Nightkonic1186$ 0.24
Toshiba1325$ 0.64|MuRata1175$ 0.45
Energiser1307$1.28|Hua Dao642$ 0.14
Note: With the slight variation between each loggers measured sleep current, the times listed here have been adjusted to a nominal 80μA. Also note that the price/cell is highly dependant on vendor & quantity.

Despite part variations these batteries were far more consistent on that 20 ohm plateau than I was expecting. This 16x test gives us a projected runtime of more than two years! That’s twice the estimate generated by the Oregon Embedded calculator when we started building these loggers. We did get a 30% delta between the name brands, but these tests were not thermally controlled and we don’t know how old the batteries were before the test. The rise in voltage after that initial dip is probably the pulse loads slowly removing the passivation layer that accumulates during storage. The curves are a bit chunky because the 328P’s internal vref trick has a resolution of only 11mv, and we index-compress that to one byte which results in only 16mv/bit in the logs.

One notable exception is the no-name Hua Dao cells, which I tested because, at only 14¢ each, they are by far the cheapest batteries on Amazon. We have many different runs going at any one time, and to make those inter-comparable you need to start each test with a fresh cell. Even if the current run test doesn’t need a batteries full capacity sometimes you just need to eliminate that variable while debugging. You also use a lot of one-shots for rapid burn-in tests so it makes sense for them to be as cheap as possible. Now that I know Hua Dao delivers less than half the lifespan of name brand cells, I can leverage that fact to run some of the tests more quickly. I had planned on doing this with smaller batteries but the Rayovac Cr2025 I tested ran for 1035 hours – much longer than the Hua Dao Cr2032!

Cr2032’s used since January for bench testing.

Testing revealed another complicating factor when doing battery tests: With metal prices sky-rocketing, fake lithium batteries are becoming more of a problem. We’ve been using Sony Cr2032’s from the beginning of the project but the latest batch performed more like the Hua Dao batteries. This result was so unexpected that I dug through the bins for some old stock to find that the packaging looked different:

Fake (left) vs Real (right)

On closer inspection it didn’t take long to spot the fraud:

Fake Sony Battery : laser engraved logo
Real Sony Battery: Embossed logo

More tests are under way so I’ll add those results to this post when they are complete. A couple of the 80μA units have been re-run after removing the 227E 25V 220μF rail buffering caps, confirming that the tantalum does not extend overall run time on good quality batteries very much because their internal resistance rises very slowly, but they can more than double the lifespan with low quality batteries like the Hua Dao. 1000μF rail caps have higher 1μA leakage so they start reaching the point of diminishing returns for long deployments: only adding about 35% to total runtime unless you have a high drain sensor. It’s also worth mentioning that the spring contacts on those RTC modules are quite weak and may need a bit of heat shrink tubing behind them to strengthen the connection to the flat surface of the coin-cell.

Northern caves hold near 5°C all year round, so the current set is running in my refrigerator. I will follow that with hotter runs because both coin cell capacity AND self-discharge are temperature dependant. We also plan to start embedding these loggers inside rain gauges which will get baked under a tropical sun .

Addendum 2023-08-01

This summers fieldwork required all of the units in my testing fleet so I only have a handful of results from the refrigerator burn down tests [at an average temp of 5°C]. The preliminary outcome is that, compared to the room temperature burns, the lithium cell plateau voltage lowers between 80-100mv (typically from 2995mv to 2890mv). Provided the loggers were reading a low drain sensor the ‘cold’ lifespan was only about 20% shorter because the normal 50-70mv (sensor reading / eeprom save) battery droop only becomes important after the battery falls off its 20 ohm plateau. This is approximately the same lifespan reduction you see running at room temp without a rail buffering capacitor – as the buffer also only comes into play when the battery voltage is descending. This is also the reason why the larger 1000μF rail capacitors usually only provide about 15-20% longer life than the 220μF rail caps as the reduced battery droop with the larger cap only matters when the cell is already nearing end of life. Net result is that increasing to 1000μF rail buffer almost exactly offsets the lifespan losses at colder ambient temps around 5°C . But at normal room temps the 2μA leakage of a 6v 1000μF [108j] tantalum removes most of it’s advantage over the 25v 220μF [227e] which has ~5nA leakage at 3 volts. And whenever you see anomalously high sleep currents on a logger, your first suspect should be a defective or over-heated tantalum rail buffering capacitor. Also note that some caps seem to need a few hours to ‘burn in’ before they are saturated enough to measure their leakage properly. A final gotcha to be aware of is that some DS3231 RTCs will assert an alarm on SQW even if the alarm enable bits in the register have been properly cleared. This will draw a constant 680-700μA through the 4k7 pullup resistor on the module until an I2C bus transaction sets a new alarm or halts the RTC oscillator.

The freezer results are an entirely different situation where are only seeing a few days of accelerated 100μA sleep current operation because at -15°C the coin cell plateau is below our 2775mv shutdown cutoff. So the logger only operates for the brief span of time where the new CR2032 is still above its rated nominal voltage. Even the 1000μF cap will not fix that problem – you need a different battery chemistry. With the loggers drawing the normal 2-5μA sleep current they run ok in the freezer, in fact we use waters 0C phase transition as a physical reference when calibrating onboard NTC thermistors.

3 thoughts on “Testing Cr2032 Coin Cell Batteries with μA to mA pulsed duty cycles

  1. Kevin Walters

    I’ve been doing some CR2032 testing for fun and noted the same thing as your investigation, many casual tests are performed at atypical continuous high currents due to impatience or limits in the tools used.

    My results are in https://www.instructables.com/Battery-Capacity-Measurement-Using-Kitronik-Invent/

    That’s an interesting find on the Sony batteries. Was that from same supplier? A reputable one? I had hoped to find some counterfeits but I think I just found some old, poorly stored Maxells.

    Reply
    1. edmallon Post author

      I think I ordered the batteries from Amazon – so no – not from a reputable supplier as the big A is essentially the same as ordering from eBay at this point. Once I get above about 200uA continuous the sorting of best to worst on these brands changes significantly so I don’t think the high drain tests tell me anything useful about our complicated duty cycle. I thought about building a custom testing rig to make sure they were all tested at ‘exactly’ the same current levels, but decided that the loggers themselves were the easiest way to run different thermal environments simultaneously. And one lesson I’ve learned over the years is that anything I can do to increase the chances of producing ‘interesting anomalies’ in large test batches usually teaches me more in the long run than I’d learn from things working perfectly… so again we just use the loggers themselves despite the part variability error. BOD thresholds are higher than what most people quote.

      Reply
  2. Pingback: Testing CR2032 Coin Cell Batteries with μA to mA pulsed duty cycles #Batteries #Power « Adafruit Industries – Makers, hackers, artists, designers and engineers!

Leave a comment