Optimizing the Power Consumption of Embedded Systems

Power consumption – a challenge for mobile electronic devices developers

Power consumption is a key specification to which designers must pay close attention when developing an embedded system and, at the same time, a challenge both for the hardware engineers and the software developers. Energy efficient operation also makes it possible to eliminate fans or other schemes designed to remove heat.
The industry employs microcontrollers in many types of systems for many different markets (consumer, medical, industrial, computer, and others) and many of these systems are battery powered. Designers have a choice of many highly-integrated microcontrollers that offer multiple operating and sleep modes which can reduce the power consumption from milliamps(mA) to mere nanoamps(nA) in standby.

In software development, pins configuration, operating modes of embedded controllers (fully active, low-speed idle, and sleep), reducing the clock speed, and clock gating are some solutions for embedded software developers to reduce the power consumption.

Regarding optimizing the power consumption of embedded systems, in hardware development of battery powered devices, engineers performs improvements for schematic design, traces routing and use low/ultra-low power components.
Standby power consumption is another factor which determines battery life for an embedded system. Generally, this kind of applications spends most time in standby mode and the major contributor towards total system power consumption is the standby current rather than the active current. Wrong schematic design can make the controller consume more current in standby mode.

Wireless temperature sensor – battery powered

Fig. 1. EM357 – Integrated ZigBee/802.15.4 System-on-Chip

The rest of the article will focus on a ZigBee temperature sensor, which uses the EM357 chip (Fig. 1) designed by Silicon Labs and it’s powered by 2 AA batteries. EM357 is a low power  ARM Cortex-M3 based microcontroller with  2.5 GHz IEEE 802.15.4 RF radio transceiver:
– Active mode: Tx current – 31 mA / Rx current – 26mA
– Sleep mode: Low deep sleep current without/with sleep timer – 400 nA/800 nA

How to choose the power supply module

The sensor is battery powered and require to use a Step-Up (Boost) Converter  instead of LDO voltage regulators because the LDO dissipates the voltage difference as heat. In addition, the boost converter output voltage may increase when the battery voltage drops

Low ADC measuring range

The developer wants to monitor the battery voltage and the output voltage from an analog temperature sensor, and for this will use two ADC input channels (Eg.: PB5 & PB7) from EM357 chip. He has a problem: the measuring range of the ADC (0V to 1.2 V) is lower than the voltage at the battery terminals (0V to 3V) and the temperature sensor output.

Solution: resistive dividers are required (Fig. 2).

To minimize power consumption in related circuit (resistive dividers), high value resistors are recommended  – hundreds of  KΩ or MΩ for a current limit of mA or μA.

ADC input
Fig. 2. ADC input – resistive divider for the battery monitor


The ADC measuring errors

In this case the current passing through the divisor is 2 μA, the input voltage matches with ADC measurement range (0 V .. 0.84 V), but another problem occurs: the ADC high input impedance that is comparable with R2 (500 KΩ). This means that the ADC measurement will be inaccurate because the resistive divider value will be changed.

Solution: the developer must use resistors with 2-3 orders of magnitude lower. (Fig. 3)

Fig. 3. The battery monitor circuit with fixed issue for the ADC impedance


Same conditions for the temperature sensor circuit (Fig. 4):

Temp sensor
Fig. 4. The temperature sensor circuit with fixed issue for the ADC impedance


The power consumption in sleep mode

Decreasing the order of resistors magnitude for resistive divider removes the conflicts with the ADC input impedance, but the current leaks are increased (from 2 μA to 200 mA for the battery monitor resistive divider).

In the same time in sleep mode the current consumption of the chip has increased from 1 μA (typical) to 10 μA.

EM357 like almost all controllers is based upon CMOS logic and  power is consumed primarily during MOS transistors switching. In sleep mode the GPIO pins of EM357 are configured as inputs pulled down and a leakage current flows through to GND because the input voltage for the ADC determines MOS transistors to be in linear zone.

Solution: decoupling the circuits from the ADC inputs during sleep mode.

The developer decide to supply the temperature sensor with power from a GPIO pin that provides the required current (PA6 – sources high current-8 mA) and enable the battery monitor with PA2 using a decoupling circuit with two MOS transistors (Fig.5).

Fig. 5. Circuit optimized for battery voltage monitoring and temperature sensor data acquisition


Now, when the controller is in sleep mode, the temperature sensor is unpowered, the resistive divider from the battery monitor is decoupled and the current consumption for EM357 is about 1 μA.

For battery monitoring, EM357 is woken up, and the pins are activated: PA2 (software, pin is set as output pull up) enables the resistive divider and PB7 is set as ADC input. After the measurement is ready, the controller goes back to sleep. The temperature sensor is powered in the same way from PA6 and the output voltage is measured on PB5.


  • we use Boost Converter instead of LDO voltage regulators for the power supply module, to maintain constant voltage when the battery is low

  • we use high-values resistors (hundreds of KOhms or MOhms) for resistive dividers when possible, for a current limit of mA or μA

  • we will disconnect related circuits for GPIO pins in sleep mode to minimize current consumption, if there are no other constraints

Leave a Reply

Notify of
Inline Feedbacks
View all comments