Power Management for Embedded Systems: Modes, DVFS, and Measurement
Power Management for Embedded Systems
Design strategies and measurements for meeting battery targets.
Modes
- Active, idle (WFI/WFE), sleep/stop, ship; wake sources; retention RAM.
DVFS and duty cycling
- Schedule heavy work near charging; reduce sensor/ML rates when unplugged; coalesce wakeups.
Measurement
- Use power analyzer; log mA vs. mode; compute Wh/day; set budgets per feature.
Example budget table (per hour)
- BLE idle: 2 mA; IMU 100 Hz: 1 mA; Wi‑Fi bursts: 50 mA for 1% duty; MCU active: 8 mA for 10% duty → avg ≈ ~3.3 mA.
Common Scenarios
1. IoT Sensor Node (Temperature/Humidity Logger)
Use Case: Battery-powered sensor that reports data every 5 minutes to a gateway.
Power Profile:
- Sleep: 5 µA (RTC + retention RAM)
- Wake: 15 mA for 200 ms (sensor read + BLE TX)
- Average: ~10 µA
Strategy:
// Pseudo-code
void sensor_node_loop() {
while (true) {
// Deep sleep for 5 minutes
enter_deep_sleep(300000); // 300 seconds
// Wake on RTC interrupt
wake_on_rtc();
// Read sensor (50 ms @ 5 mA)
float temp = read_temperature();
float humidity = read_humidity();
// Transmit via BLE (150 ms @ 20 mA)
ble_transmit(temp, humidity);
// Return to sleep
}
}
Power Budget:
- Sleep (299.8s): 5 µA × 299.8s = 1.5 mAs
- Active (0.2s): 15 mA × 0.2s = 3 mAs
- Total per cycle: 4.5 mAs
- Daily: 4.5 mAs × 288 cycles = 1.3 As ≈ 36 µAh
- Battery life: 2000 mAh / 36 µAh/day ≈ 55,000 days (with 80% efficiency: ~44,000 days)
2. Wearable Fitness Tracker
Use Case: Continuous heart rate monitoring with periodic BLE sync to phone.
Power Profile:
- Sleep: 50 µA (sensor polling + minimal processing)
- Active: 8 mA (sensor read + processing)
- BLE TX: 12 mA for 50 ms every 5 seconds
- Display: 2 mA when active (user interaction)
Strategy:
- Use low-power sensor interrupt mode
- Batch process sensor data
- Aggressive duty cycling: 1% active, 99% sleep
- Display only on user interaction
Power Budget (per hour):
- Sleep (3597s @ 50 µA): 180 mAs
- Active (3s @ 8 mA): 24 mAs
- BLE TX (720 × 50ms @ 12 mA): 432 mAs
- Display (30s @ 2 mA): 60 mAs
- Total: ~696 mAs/hour ≈ 0.19 mAh/hour
- Daily: ~4.6 mAh
- Battery life: 100 mAh / 4.6 mAh/day ≈ 21 days
3. Edge AI Camera (Motion Detection)
Use Case: Battery-powered security camera that wakes on motion, runs ML inference, and uploads images.
Power Profile:
- Deep sleep: 100 µA (PIR sensor in interrupt mode)
- Wake: 500 mA for 2 seconds (camera + ML inference)
- Wi-Fi TX: 200 mA for 1 second (image upload)
Strategy:
- PIR sensor triggers wake
- Run inference immediately (no buffering)
- Compress image before transmission
- Return to deep sleep after upload
Power Budget (assuming 10 events/day):
- Deep sleep (23h 58m @ 100 µA): 8.6 As
- Active (20s @ 500 mA): 10 As
- Wi-Fi TX (10s @ 200 mA): 2 As
- Daily: ~20.6 As ≈ 5.7 mAh/day
- Battery life: 5000 mAh / 5.7 mAh/day ≈ 877 days (2.4 years)
4. Remote Control Device (BLE Keyboard/Mouse)
Use Case: Wireless input device that must respond instantly to user input.
Power Profile:
- Idle: 500 µA (BLE advertising)
- Active: 8 mA (key scan + BLE TX)
- Sleep: 10 µA (only during extended inactivity)
Strategy:
- Always-on BLE advertising (low power)
- Wake on key press interrupt
- Immediate transmission (latency critical)
- Enter deep sleep after 30s inactivity
Power Budget (assuming 2 hours active use/day):
- BLE idle (22h @ 500 µA): 11 As
- Active (2h @ 8 mA): 57.6 As
- Daily: ~68.6 As ≈ 19 mAh/day
- Battery life: 500 mAh / 19 mAh/day ≈ 26 days
5. Data Logger (Environmental Monitoring)
Use Case: Standalone device logging sensor data to SD card, no wireless.
Power Profile:
- Sleep: 2 µA (RTC only)
- Wake: 25 mA for 100 ms (sensor read + SD write)
- Logging interval: Every 10 minutes
Strategy:
- Deep sleep between logs
- Batch writes to SD card (reduce wear)
- Use low-power RTC for scheduling
Power Budget:
- Sleep (599.9s @ 2 µA): 1.2 mAs
- Active (0.1s @ 25 mA): 2.5 mAs
- Per cycle: 3.7 mAs
- Daily (144 cycles): 533 mAs ≈ 0.15 mAh/day
- Battery life: 2000 mAh / 0.15 mAh/day ≈ 13,333 days (36 years)
6. Smart Door Lock (BLE + Wi-Fi)
Use Case: Battery-powered lock with BLE for phone unlock and Wi-Fi for cloud sync.
Power Profile:
- Sleep: 20 µA (BLE scanning + RTC)
- BLE active: 8 mA (unlock operation)
- Wi-Fi sync: 150 mA for 5 seconds (every hour)
- Motor: 500 mA for 1 second (unlock)
Strategy:
- BLE always scanning (low power mode)
- Wi-Fi only when needed (scheduled sync)
- Motor only during unlock
- Aggressive sleep between operations
Power Budget (assuming 10 unlocks/day):
- Sleep (23h 55m @ 20 µA): 1.7 As
- BLE (10 × 2s @ 8 mA): 0.16 As
- Motor (10 × 1s @ 500 mA): 5 As
- Wi-Fi (24 × 5s @ 150 mA): 18 As
- Daily: ~25 As ≈ 7 mAh/day
- Battery life: 5000 mAh / 7 mAh/day ≈ 714 days (2 years)
7. GPS Tracker (Asset Tracking)
Use Case: Battery-powered device reporting location every 15 minutes via cellular.
Power Profile:
- Sleep: 5 µA (RTC only)
- GPS fix: 50 mA for 30 seconds
- Cellular TX: 200 mA for 2 seconds
Strategy:
- GPS cold start (no hot/warm start to save power)
- Transmit immediately after fix
- Deep sleep between cycles
Power Budget:
- Sleep (899s @ 5 µA): 4.5 mAs
- GPS (30s @ 50 mA): 1.5 As
- Cellular (2s @ 200 mA): 0.4 As
- Per cycle: ~1.9 As
- Daily (96 cycles): 182 As ≈ 51 mAh/day
- Battery life: 2000 mAh / 51 mAh/day ≈ 39 days
Scenario Comparison
| Scenario | Avg Current | Daily Consumption | Battery Life (2000 mAh) |
|---|---|---|---|
| Sensor Node | 10 µA | 36 µAh | 55,000 days |
| Data Logger | 6 µA | 0.15 mAh | 13,333 days |
| Fitness Tracker | 0.19 mA | 4.6 mAh | 435 days |
| Smart Lock | 0.29 mA | 7 mAh | 286 days |
| Edge AI Camera | 0.24 mA | 5.7 mAh | 351 days |
| Remote Control | 0.79 mA | 19 mAh | 105 days |
| GPS Tracker | 2.1 mA | 51 mAh | 39 days |
Key Takeaways
- Deep sleep is critical: Even 10 µA vs 100 µA makes a 10× difference
- Duty cycling matters: 1% active vs 10% active = 10× power savings
- Wireless is expensive: BLE (2-12 mA) < Wi-Fi (50-200 mA) < Cellular (100-500 mA)
- Measure everything: Use power analyzer to validate assumptions
- Optimize the hot path: Focus on frequently executed code
- Batch operations: Reduce wake-up frequency by batching work