Whether we are talking about wearable devices that send information to your smartphone, or network-connected motion detectors in a home alarm system, the Internet of Things (IoT) has put extended battery life at the top of the requirements list for new products. There are several battery life optimization strategies to consider during device development: the power management plan, mapping power states, managing power transitions, and automated unit testing.
The power management plan
The power management plan created during the architecture design phase must balance power consumption and device performance. These “usual suspects” are nothing new to embedded systems designers, but due to the extremely long battery life relative to performance requirements of many IoT devices, the trade-offs here become even more critical in many sensor-based data acquisition devices.
System performance and power consumption are usually proportional, so the architecture plan needs to weigh the benefit gained from the power consumed across all system blocks. Common tradeoffs include power management hardware, processor clock frequencies, and voltage supply.
During the architecture design phase, designers will also need to determine how they will manage the system power and provide functions such as power sequencing, power-source selection, and voltage scaling. Many designers choose to use power management ICs, which can provide these functions within a single component.
Mapping the power states
The power consumption during “sleep” or “hibernate” modes is a critical metric for low-power designs.
For systems using a single microcontroller, these states can be obtained from the device datasheet. Components designed for portable applications (such as the TI MSP430), will have a variety of low-power modes for ultra-low power consumption. An interrupt in software can wake up the device from the low-power mode, service a request, and restore the device back to low-power mode once the event is complete.
For more complex systems with multiple processors, analog interfaces, and various hardware blocks, mapping the power states will be considerably more difficult. It is highly recommended to test the power states using a development platform or prototype hardware.
Managing power transitions
Once the power states have been mapped, designers will need to consider how the transitions between power states will be managed. In a single-threaded application this could be as simple as a set of stand-alone function calls made in appropriate places. In a multi-threaded environment with many independent tasks, a separate thread or module may be dedicated to arbitrating power requirements between tasks.
It is often easiest to implement transition management as a logic-only process at an “everything on” power state before introducing hardware state transitions, since normal debug infrastructure may be unavailable due to gated clocks and disabled hardware.
Automated unit testing
It’s challenging to properly test a device with many power event sequences and transitions over long time scales. Automated unit tests are extremely useful for IoT devices, as they provide the ability to isolate problematic events. Standard lab equipment typically offers several remote communications interfaces, which can be used to rapidly set up automated test suites.
Following these guidelines will help to maximize battery life for portable connected devices, while still achieving the required system performance goals.