IoT Power Budget Worksheet
Use this template to model your device's power consumption, set a battery life target, and identify where the current is actually going.
Step 1 — Define the duty cycle
Describe your device's repeating behavior as a timeline of states:
| State | Duration | Frequency | |---|---|---| | Active (MCU + radio TX) | ___ ms | Every ___ s | | Active (MCU only, processing) | ___ ms | Every ___ s | | Sleep (stop/standby) | ___ s | ___ | | Radio RX window | ___ ms | Every ___ s |
Fill in durations from your firmware design or measure with a scope.
Step 2 — Measure current per state
Use a power profiler (Nordic PPK2, Otii Arc, or a shunt resistor + oscilloscope) to measure:
| State | Current (mA or µA) | |---|---| | Active (peak) | ___ mA | | Active (average) | ___ mA | | Sleep (stop mode) | ___ µA | | Sleep (standby) | ___ µA | | Peripheral quiescent (sensors on, not sampling) | ___ µA |
Step 3 — Calculate average current
For each state: contribution = current × (duration / cycle_period)
Sum contributions across all states for your average current (I_avg).
Step 4 — Estimate battery life
Battery life (hours) = Battery capacity (mAh) / I_avg (mA)
Battery life (days) = Battery life (hours) / 24
Apply a 0.7–0.8 derating factor for temperature, self-discharge, and end-of-life capacity loss.
Step 5 — Find the biggest offenders
Sort states by contribution. The top 1–2 typically account for 80%+ of consumption. Common culprits:
- Radio TX — spikes to 10–30 mA; reduce duty cycle or use BLE vs. Wi-Fi
- Peripheral quiescent — sensors left on between samples; add a load switch
- Leakage through GPIO — floating inputs on deep-sleep devices; set all unused pins to output-low or input with pull-down
- Regulator inefficiency — linear regulators waste voltage headroom as heat; switch to a buck converter if
V_in >> V_out
Quick rules of thumb
| Target life | Max I_avg (2000 mAh cell) | |---|---| | 1 year | ≤ 228 µA | | 2 years | ≤ 114 µA | | 5 years | ≤ 46 µA | | 10 years | ≤ 23 µA |