Look at you, you nerd!
The math is based on charge consumption per hour in mAh/hr, computed from each event and then summed.
Arithmetic
- For each event: event_mAh_per_hour = (current_mA × duration_s) / interval_s
- Active total: sum all event mAh/hr values.
- Sleep time fraction: max(1 - sum(duration_s / interval_s), 0)
- Sleep contribution: sleep_current_mA × sleep_time_fraction
- Self-discharge per hour: battery_capacity_mAh × (self_discharge_pct_per_year / 100) / (365.25 × 24)
- Total draw per hour: active + sleep + self_discharge
- Derated capacity: battery_capacity_mAh × (efficiency_pct / 100)
- Battery life in hours: derated_capacity / total_draw_per_hour
- Convert to days/months/years by dividing by 24, 30.44, and 365.25.
Caveats
- Inputs are treated as steady averages. Real systems often have short transients and startup spikes not captured here.
- Battery behavior is temperature and pulse-load dependent. Capacity and internal resistance can change significantly in cold conditions.
- Self-discharge and efficiency are simplified constants. In practice, both can vary over time, state-of-charge, and battery chemistry.
Recommended practice: keep a design margin by increasing modeled load or decreasing usable capacity before finalizing a product claim.