The two-year number is a system spec, not a battery spec
“Lasts two years on a coin cell” is a line on a product brief, but it is really a constraint on your firmware, your radio schedule, your enclosure’s thermal behavior, and your regulator topology—the battery is just where the bill comes due. Almost every two-year miss we have debugged was not a bad cell; it was a sloppy budget around the cell: a sleep current that was triple the datasheet figure, a self-discharge line nobody wrote down, or a design that assumed room temperature on a product that ships to Minnesota. Get four numbers honest—average current, self-discharge, temperature derating, and the reserve you never spend—and the cell almost picks itself.

1. Average current, honestly
You cannot size a battery from a peak number or a vibe. You build a current budget from a duty-cycle table: every state the device sits in, the current it draws there, and the fraction of an hour it spends there. Sum the charge (current × time) for each state, divide by the hour, and you have a true average.
A minimal table for a sensor that wakes once a minute looks like this:
- Sleep: 8 µA for ~3599 s every hour. This is the floor—the MCU in deep sleep, the RTC ticking, leakage through every pull-up and the regulator’s own quiescent draw.
- Active (wake + sense + compute): 12 mA for ~0.9 s per wake.
- Radio TX burst: 30 mA for ~0.5 s while a BLE advertisement or a LoRa uplink goes out.
Here is the counterintuitive part: the sleep floor usually dominates a two-year product, even though it is the smallest number on the page. Multiply it out. A 10 µA leak running continuously is 10 µA × 8760 h ≈ 88 mAh per year—176 mAh over the life, which is most of a CR2032 gone before the device has done anything useful. In the worked example below, sleep is over half the entire energy budget while the radio is on air for 12 seconds a day. If you want a long-life product, you optimize the floor first and the bursts second.
This is also where designs quietly die. The datasheet “typ” sleep current is marketing-adjacent fiction for your board. It assumes one specific configuration, 25 °C, and a clean rail. Your real number includes the sensor that never fully powers down, the level-shifter biased through a resistor, the I²C pull-ups, and the flash chip that draws 50 µA because a pin floats. Measure it. You need a meter with µA resolution that does not burden the rail—a current-sense instrument that auto-ranges from nanoamps to hundreds of milliamps (a “power analyzer” / source-measure unit), not a handheld DMM on its 200 mA range, which will introduce enough burden voltage to brown out your MCU and lie to you besides. Measure a full duty cycle, capture the bursts, and integrate the real waveform. The gap between the spreadsheet and the bench is routinely 2–5×.
2. Self-discharge: the cell leaks even when your firmware is perfect
A battery loses charge sitting on a shelf, doing nothing, because chemistry does not respect your sleep mode. You must budget this separately from load current, because for an ultra-low-power device it can be the same order of magnitude as everything the circuit consumes.
- Lithium primaries (Li–MnO₂ coin cells, Li–FeS₂ AA): roughly 1–3% per year at room temperature. This is why they own the long-life market—a good CR2032 still has most of its capacity a decade later.
- Li-ion / LiPo (rechargeable): meaningfully worse, commonly 2–5% in the first month then a few percent per month thereafter, plus a fixed parasitic load from the protection circuit and fuel gauge that can be tens of microamps on its own.
- Alkaline: low self-discharge but a sloping voltage and poor pulse behavior—fine for slow loads, painful for radios.
Heat roughly doubles self-discharge for every ~10 °C. A cell that loses 2%/year at 25 °C can lose 8%+/year baking at 45 °C inside a sun-exposed enclosure or next to a warm power supply. If your product lives outdoors, on a motor, or in an attic, derate accordingly and write the number down.
3. Temperature derating: the cell that reads “full” and browns out anyway
Rated capacity is quoted at 20–25 °C into a gentle load. The real world is neither. Two things move with temperature, and both work against you in the cold:
- Usable capacity falls. A coin cell at −10 °C may deliver 50–70% of its nameplate; some chemistries fall off a cliff below freezing.
- Internal resistance climbs—sharply. A CR2032 that is ~10 Ω warm can be 30–100 Ω cold. That resistance is in series with your load, so every current pulse pulls the terminal voltage down by I×R.
This produces the classic field failure: the device reports a healthy voltage at idle, then the radio fires a 30 mA burst, the cold cell’s internal resistance drops the rail by a few hundred millivolts, the voltage punches through the brown-out threshold, and the MCU resets mid-transmission—on a battery that is, by coulombs, nearly full. The user sees random disconnects in winter. Your voltage cutoff and your worst-case internal resistance interact: set the cutoff with cold I×R sag in mind, add bulk capacitance across the cell (see peak vs average below), and validate the whole thing in a freezer, not on a warm bench.
4. The 20% you never spend
Do not design to 0–100%. Design to a usable window and keep the top and bottom as reserve. You are protecting against three things at once: aging (primary cells lose a little capacity as they sit; Li-ion fades with every cycle and can be down 20% after a few hundred cycles), the cold-day TX peak that needs voltage you only have when the cell is fresh, and graceful degradation—you want enough left at the “low battery” warning to actually send the warning, reduce reporting rate, and limp for weeks rather than die silently. A practical rule: plan on ~80% of nameplate being usable, and have firmware step down its duty cycle as voltage sags so the last 20% buys time instead of evaporating.
Putting the four numbers together
The sizing relationship is simple once the inputs are honest:
Required capacity ≈ (average current × hours of life) ÷ (1 − self‑discharge fraction − temperature derating fraction) ÷ 0.8
—and then you re-check peak current against terminal voltage at the worst-case cold temperature, because a cell can have plenty of coulombs and still be unable to deliver a single burst.
A fully worked example
Take the sensor above: BLE node, wakes once a minute, two-year target, lives indoors but unconditioned (down to ~0 °C).
Step 1 — charge per hour, by state. Charge = current × time, in ampere-seconds (A·s):
- Sleep: 8 µA × 3598.6 s ≈ 0.0288 A·s
- Active: 12 mA × 0.9 s = 0.0108 A·s
- BLE burst: 30 mA × 0.5 s = 0.0150 A·s
- Total per hour ≈ 0.0546 A·s
Note the split: sleep is ~53% of the budget, the BLE burst ~27%, the active wake ~20%. The floor wins even here.
Step 2 — average current. 0.0546 A·s ÷ 3600 s ≈ 1.516×10⁻⁵ A = ~15.2 µA average (0.0152 mA).
Step 3 — raw consumption over two years. Hours in two years = 2 × 365 × 24 = 17,520 h. So 0.0152 mA × 17,520 h ≈ 266 mAh of actual charge moved.
Step 4 — apply the losses. Use a lithium primary’s self-discharge of ~1%/yr → ~2% over two years, a modest cold-derating allowance of ~8%, and the 0.8 usable factor:
266 mAh ÷ (1 − 0.02 − 0.08) ÷ 0.8 = 266 ÷ 0.90 ÷ 0.8 ≈ 369 mAh required.
Step 5 — pick a cell. A CR2032 is ~225 mAh—not enough, and its internal resistance struggles with the 30 mA cold burst anyway. A single AA lithium primary (~3000 mAh) clears 369 mAh with ~8× headroom, holds a stiff voltage under the burst, and shrugs off the cold. The honest budget turned “two years on a coin cell” into “two years, comfortably, on one AA”—and told you so before you cut the enclosure for a CR2032 holder.

Chemistry selection: match the cell to the load, not the slogan
The four numbers tell you how much energy you need; chemistry tells you how to store it and whether it can deliver the peaks. The big trade is energy and shelf life (primaries) versus recharge-ability and current capability (Li-ion/LiPo).
- CR2032 coin cell: tiny, cheap, ~10-year shelf life, but only ~225 mAh and high internal resistance—great for a thermometer that beacons gently, wrong for anything with a real radio burst unless you add a cap.
- AA primary (alkaline or, better, Li–FeS₂): the workhorse for multi-year sensors—huge capacity, low self-discharge, user-replaceable, good cold performance (lithium AA especially).
- 18650 Li-ion: ~3000 mAh at 3.6 V (≈10 Wh), high peak current, rechargeable—ideal when you have a charge path and need to run a power-hungry duty cycle, but it self-discharges and ages.
- LiPo pouch: arbitrary form factor, high peak current, rechargeable—the default for wearables and anything thin, at the cost of a charger IC, protection circuitry, and tighter mechanical/safety constraints.
Peak vs average current: coulombs you have, amps you don’t
Your battery budget is about average current. Whether the device functions is about peak current. A CR2032 with ~10–30 Ω of internal resistance simply cannot source a +100–200 mA radio inrush without its terminal voltage collapsing—Ohm’s law is not negotiable: 100 mA through 30 Ω is a 3 V drop on a 3 V cell. The fix is not a bigger battery, it is a local energy reservoir: a bulk capacitor (tens to hundreds of µF) or a supercapacitor placed right at the load, sized to supply the burst while the high-impedance cell trickles in the average. The cell sees a smooth small current; the radio sees a stiff rail. Size the cap from the charge in the pulse and the voltage droop you can tolerate (ΔQ = C × ΔV). Skip this and a perfectly adequate battery will appear “dead” the instant the radio keys up.
mAh vs Wh: stop comparing batteries by mAh alone
Milliamp-hours are charge; watt-hours are energy, and energy is what runs your product: Wh = Ah × V. A 3000 mAh AA at 1.5 V holds ~4.5 Wh; a 1000 mAh LiPo at 3.7 V holds ~3.7 Wh—closer than the 3× ratio in mAh suggests. When you compare across chemistries with different nominal voltages, or when your regulator converts voltage, always do the math in Wh. mAh-to-mAh comparisons across different cell voltages are a classic way to size a pack 50% wrong.
Regulator efficiency: the tax between the cell and the chip
Energy leaves the cell at the battery’s voltage and arrives at your MCU at the rail voltage, and the regulator takes a cut. The topology matters enormously at microamp loads:
- LDO: drops the difference as heat—efficiency ≈ Vₜₒₜ ÷ V℅ₙ. Running a 1.8 V rail off a 3.6 V cell through an LDO throws away half your energy. But a good LDO has sub-microamp quiescent current, so for a device that sleeps 99.9% of the time it can still win.
- Buck/boost (switcher): 85–95% efficient under load and lets a boost run your system down to a nearly-empty cell—but many switchers burn tens to hundreds of microamps of their own quiescent current, which can dwarf your 8 µA sleep budget.
The right choice depends on your duty cycle: quiescent current dominates sleepy designs; conversion efficiency dominates active ones. Read the regulator’s Iₜ at your light-load condition, not its headline peak efficiency.
Common mistakes and failure modes
- Trusting the datasheet sleep current. Your board’s real floor is 2–5× the “typ” once leakage, pull-ups, and half-asleep peripherals are counted. Measure it with a µA-resolution instrument.
- Forgetting self-discharge. For a sub-20 µA device, the cell’s own leakage can rival the load. Budget a line for it—and double it if the product runs hot.
- Sizing for room temperature. Capacity and internal resistance both move against you in the cold; the cell that passes on the bench browns out in the field.
- No peak-current headroom. A high-impedance cell cannot deliver a radio burst. Add bulk/super-cap, or pick a stiffer chemistry.
- Designing 0–100%. No reserve means no graceful low-battery state, no aging margin, and no cushion for the cold-day peak. Plan on ~80%.
- Comparing cells by mAh across voltages. Do it in Wh or size the pack wrong.
Quick-reference: chemistry at a glance
| Chemistry | Nominal V | Typical capacity | Peak current | Self-discharge | Rechargeable |
|---|---|---|---|---|---|
| CR2032 (Li–MnO₂) | 3.0 V | ~225 mAh (~0.7 Wh) | Low (~few mA cont.) | ~1%/yr | No |
| AA alkaline | 1.5 V | ~2500 mAh (~3.8 Wh) | Moderate | ~2–3%/yr | No |
| AA lithium (Li–FeS₂) | 1.5 V | ~3000 mAh (~4.5 Wh) | High, good cold | ~1%/yr | No |
| 18650 Li-ion | 3.6 V | ~3000 mAh (~10.8 Wh) | High (amps) | ~3–5%/mo | Yes |
| LiPo pouch | 3.7 V | ~1000 mAh (~3.7 Wh) | High (amps) | ~3–5%/mo | Yes |
Two-year battery life is won in the current budget, not the cell: nail the sleep floor, self-discharge, cold derating, and a 20% reserve—then check that the cell can still deliver the burst when it’s freezing—and the right battery picks itself.