Low power consumption of an embedded system is an important aspect when designing a battery powered product. There is no single rule which can be followed universally for all type of requirements. It is certainly a mix of system design, circuit design, and firmware design. So, how should a design engineer go about it?
Before initiating work on low power embedded design, there two things to do first:
- Know the available power budget: Understand the overall power budget of your low power embedded design. For example, it should consume less than 500mA. If it is powered by battery, what is the back-up time required like 4 hours, 2 days or 10 days?
- Estimate the power consumption: A block diagram of the embedded design should be created. Block-diagram will help you identify the main components and their power consumption. Information about device power consumption could be found in the datasheet and application notes.
The power budget and estimated power consumption on the basis of high-level embedded design will help embedded design engineer build the right power saving strategy to achieve the target.
This will also help the engineer understand (early in design phase) if given battery capacity is sufficient or not. When using a battery, always consider self-discharge of the battery, practical capacity and not the capacity specified in the datasheet. Read this article for some useful tips on selecting the right battery for a low power embedded system design.
There are various techniques which can help reduce power consumption, some of them I have personally used in the past while working on different projects.
10 tips for designing low power embedded system are mentioned below:
1. Operating voltage of the circuitry: Keep the overall operating voltage low for the whole board as power consumption is directly proportional to the operating voltage. Use the lowest voltage level possible. Example, if all the chips can go as low as 2.7, keep a small margin and set that voltage for the whole board. If there is a need to have two set of power-rails (example: 3.3V, 2.5V) on the embedded board and considerable power saving is there then it make sense to do that, although an extra DC-DC converter and some digital level translation chips will be required to do so.
2. Operating voltage of power-hungry devices: Operating power-hungry devices at lower voltage will reduce the power consumption but may need external voltage level translator and extra dc-dc converter/LDO to interface with the other circuitry (operating at different voltage level). Consider the wake-up time, power saving, extra effort and extra cost required before making a choice.
3. Selection of components/chips ( ADC, DAC, Relays, etc. ): Selecting the right ICs considering overall power consumption budget is very important. Pick ICs with low power (active / Idle) consumption and with the low operating voltage rating. There are other factors which are important to be considered. Read more details in the article how to select electronic components.
4. Other Interface Modules: There may be a requirement where you will pick readymade modules. Consider the power consumption of communication interfaces (RS232/RS485), IoT Modules (WiFi, Bluetooth, Sub GHz RF, etc.), Camera, Sensors, etc. while selection. Ideally, it is good to compare their power-up time, active power consumption, idle power consumption parameters. Selecting the right technology is also critical. For example, if you need to use RF in order to transfer data, think about which technology out of WiFi, ISM RF, BLE, Zigbee, etc. will be more suitable, both from user experience as well as from power consumption point of view. Many times if you select the wrong technology it will be difficult to optimize power consumption later.
5. Power gating the peripherals (ON/OFF control): In design, the power control mechanism can be incorporated to put OFF a device when not in use. Some examples could be keeping communication modems ON all the time could be expensive from a power consumption point of view so if the power ON/OFF control is available, the device could be power down when not in use. Putting OFF Printer/LCD when not in use or even smaller components like ADC, sensors, etc. could be powered off when not in use. Please do consider power consumed during power-up (during this time device cannot be used) and the time it will take to fully power up. In certain requirements, it might not be possible to power OFF due to these constraints.
6. Power Supply
- Selecting the right input voltage to the embedded board is important. Whether it is a battery input or a DC input from a power supply adaptor. If all the circuitry on the board is powered by 5v or 3.3V then using 6V power input is better than using a 12/24V DC input or battery input. Power loss will be proportional to voltage difference.
- For onboard voltage conversion use switching DC-DC converter instead of LDO/Linear regulator, if it is not limiting the performance of the circuit. Linear regulators are very inefficient in power conversion, they work on dissipation mode where power equivalent to voltage difference x current is dissipated as heat.
7. LED: LEDs onboard can easily consume 1-5mA per LED, if there are LEDs on board you can do the following:
- remove LEDs if possible
- reduce the number of LEDs
- reduce the brightness by using higher series resistance value
- blink LED instead of making it full time ON. You can indicate with 10% time LED ON
- let it be OFF and only show when required or when user interact with the device.
8. Display: There are various options for an engineer to choose from like 7 Segment display, Paper Display, OLED, Character LCD, Mono Graphic LCD, Glass LCD, TFT, etc. In general, the display can contribute to more than 50-60% of the total power consumption. If a design is using a display, it is important to select display carefully, considering power consumption budget. If the high power-consuming display is mandatory, other techniques like power gating backlight, full display, right color scheme (dark, the grayscale mode) can help reduce the power consumption significantly. Size of the display will also impact power consumption.
9. Pull-ups: The optimal value of pull-ups can help reduce power consumption. Pull-ups are mainly used for I2C, keys, etc. Each pullup can contribute to a few milliamps saving. For example, consider using 22k/10K pullup instead of 4.7K or 1K pull-up (if performance is not affected). At 3.3V when the pin is at zero, the pull-up will drain 3.3mA if the value is 1K and 330uA if pullup is 10K.
10. Microcontroller (software control in MCU)
Select the right MCU. If MCU’s power consumption is considerable (>20%) compared to the overall embedded board power consumption, the selection of the right low power MCU is critical. As per my experience, MSP430 is the lowest power consumption MCU available in the market.
If board’s power consumption is, say 500mA and an average MCU is consuming just 10mA (2% of the total), putting too much effort on selecting the lowest power MCU will not bring any significant impact. Focusing on the peripherals might bring bigger saving by choosing the right peripheral or power gating it via appropriate hardware & code flow control.
Some of the other MCU related factors are:
- Floating input pins can consume more power, always set the input level to a defined low or high state.
- Do not enable pull-up for unused MCU input pins.
- Operate MCU at the lowest required clock frequency. MCU’s power consumption depends on its clock frequency. MCU datasheet shows this with a graph, how power consumption increases with the higher frequency.
- Put the internal MCU modules OFF if not in use or control (ON/OFF) it dynamically in the code.
- Use MCU power saving/sleep modes.
- Use best practices for writing efficient code, which will improve the CPU idle time and hence power consumption. Read some of them on EDN.
- Avoid blocking delays. Use RTOS or interrupt-based task scheduler.
Code execution flow strategies: Basically, one needs to optimize on how to write a code such that user needs are met with minimal use of internal or external modules to enable power saving. Some of the use cases are:
- Reducing the ADC sampling rate might impact power consumption.
- Collecting data in RAM for long and only a few times sync over cloud could save significant power as modem need to be ON for fewer times.
- Compressing data packet size (number of bytes per transaction (Rx / Tx)) will also have an impact on the power consumed during communication.
- In the case of MPU (running embedded Linux or Windows CE or Windows IoT), make sure boot-time is minimized. Power consumed during boot time is not useful. Put some effort to remove unnecessary software components and reduce the OS footprint (smaller memory) and reduced boot-time. Consider an embedded board which consumes 200mA @5V and its boot time is 60 seconds. During boot time power loss will be one Watt for a minute. If it is required to be put OFF/ON many times in a day, think about how much power (battery capacity) is lost during multiple boots.
Additional benefits of low power embedded system design are:
- Less heat is good for the environment. One watt per device power saving equals one KWH (1 unit electricity) for 1000 devices.
- Improves reliability. The working life of the embedded system is improved due to less power wastage/heat and components are ON for limited time only.
- In some cases, it may reduce the production cost due to the selected part is economical or low wattage power supply design is simpler and cheaper, etc.
There are many ways to conserve power, but all may not be suitable for every use-case. Consider various aspects like user-experience, response time, design complexity, size, cost, etc. before making a choice.
All these considerations while designing low power embedded system are fine but you must measure actual power consumption using some measuring equipment or circuit. Once you know actual power consumption you will be able to make an informed decision on what action to take in order to further control it.
There are several ways to measure power. The manual way is to set up a multimeter to measure voltage & current then calculate the power. Set a condition on the embedded board and measure it manually via meters. This is not the best way to measure power but it may work in some situations. Ideally, you must buy one DC power meter (example here) having data output on PC so that you can monitor/log the power consumption over the period of time and analyze it.
Testing of any embedded product in a real scenario or simulated stress condition is very important for its reliable operation in the field. Make sure you are creating such conditions while testing your low power embedded system.
You can use this article as a guideline document at the start of the design or as a checklist before finalizing the design.
Happy learning to you!