Low Power Embedded System Design is on the rise.
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 use cases. It’s rather a mix of system design, circuit design, and firmware design, and trade-offs.
So, how should a design engineer go about it?
In this article, I am sharing 10 tips which will be very helpful for you when designing low power embedded system.
Before initiating work on low power embedded system design, there two things to do first:
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 a battery, what is the backup time required like 4 hours, 2 days, or 10 days?
System power consumption?
A block diagram of the embedded device should be created. Each block should have typical power consumption and min possible power consumption values noted. This block diagram will help you identify the critical section where you need to focus to reduce the overall power consumption of the system.
Information about device power consumption could be found in the datasheet or from application notes.
The power budget and estimated power consumption on the basis of high-level embedded design will help embedded design engineers build the right power-saving strategy to achieve the target.
The best strategy while working on Low Power Embedded System is to remember that “every uA matters”.
This will also help the engineer understand (early in the design phase) if the given battery capacity is sufficient or not.
When using a battery, always consider the 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
1(a). 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. For 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 sets of power-rails (example: 3.3V, 2.5V) on the embedded board and considerable power saving is there then it makes sense to do that, although an extra DC-DC converter and some digital level translation chips will be required to do so.
1(b). Operating voltage of power-hungry devices
Operating power-hungry devices at lower voltage will reduce the power consumption but may need an external voltage level translator and extra dc-dc converter/LDO to interface with the other circuitry (operating at different voltage levels).
Consider the wake-up time, power saving, extra effort, and extra cost required before making a choice.
2. Selection of components/ICs ( ADC, DAC, Relays, etc.)
Selecting the right ICs considering the overall power consumption budget is very important.
Pick ICs with low power (active / Idle) consumption and with a low operating voltage rating. There are other factors that are important to be considered. Read more details in the article on how to select electronic components.
3. Power consumption of wireless modules
There may be a requirement where you might use ready-made modules.
Consider the power consumption of communication interfaces (RS232/RS485), IoT Modules (WiFi, Bluetooth, Sub GHz RF, etc.), Camera, Sensors, etc. while selecting.
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 a power consumption point of view.
Many times if you select the wrong technology it will be difficult to optimize power consumption later.
4. 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.
For example, keeping a communication modem 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. will save significant amount of power.
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.
5. Power Supply (LDO, Buck, Boost, Quiescent current)
- 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 the 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.
- Just using any dc-dc is not enough, you need to carefully select the right dc-dc converter ic. You need to pick the dc-dc converter which can operate at maximum possible efficiency at all possible load conditions.
- When you are using a DC-DC power supply circuit, the feedback resistor will also be consuming power so you need to optimize values such that your circuit is stable and at the same time consuming the least possible power. There are dc-dc converters available where you don’t need to use an external resistor to set the desired voltage output, please consider using those. Ultimately, we are trying to reduce leakage current as low as possible.
- Boost circuits are generally inefficient. if you have a possibility to use buck conversion, do buck instead of boost. For example, in certain use-cases, a double cell Lithium battery makes more sense than a single cell battery. If at all boost converter is used, use which has highest possible efficiency at the current level you will be using.
- The quiescent current of any power supply circuit is very very important. This is the current that your power supply will consume even if nothing else is ON on your board. Read this article.
LEDs onboard can easily consume 1-5mA per LED depending on the series resistance used. 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 a 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 the user interacts with the device.
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 the power consumption budget. If the high power-consuming display is mandatory, other techniques like power gating back-light, full display, right color scheme (dark, the grayscale mode) can help reduce the power consumption significantly. The size of the display will also impact power consumption.
Watch the videos listed here to get a very good idea about the power consumption of various displays used in embedded system design.
8. Identify and reducing leakage current
There are so many leakage currents everywhere in our circuits which we don’t pay attention to or are unaware of.
They are critical or battery-powered embedded devices and we need to identify all such leakages and try to remove them or reduce them to the minimum possible level.
Some of the examples are:
- The battery charger circuit can have a battery leakage current when the charger is not charging the battery. Watch this short 5 min video to understand more.
- If you are using a battery fuel gauge IC could contribute to leakage current.
- USB to UART IC connection to MCU – current flow from MCU IOs to UART IC can have leakage even if the UART IC is off when the USB cable is disconnected.
- The P-Mosfets or Load Switch used for power gating will also have leakage current even when the MOSFET/load switch is off.
The optimal value of pull-ups can help reduce power consumption. Pull-ups are mainly used for I2C, keys, etc. Each pull-up can contribute to a few milliamps saving.
For example, consider using 22k/10K pull-up 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 pull-up is 10K.
10. Microcontroller (Software Control)
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 knowledge, MSP430 was the lowest power consumption MCU available in the market for a long time but now we have a new company Ambiq Micro manufacturing MCUs that can run @ 4uA current per MHz.
Even ST Microelectronics is coming up with new MCUs with very low current consumption per MHz, I will be creating a separate article listing all low power MCUs. Check their STM32L0, STM32U5 series MCUs
Do you know any other MCU which has such a low power consumption, do let me know?
If the board’s average power consumption is, say 500mA and an average MCU is consuming just 10mA (2% of the total), putting too much effort into selecting the lowest power MCU will not bring any significant impact. Focusing on the peripherals might bring bigger savings by choosing the right peripheral or power gating it via appropriate hardware & code flow control.
But, if your average current is a couple of micro amps or most of the time system is in sleep more, selecting the lowest power consuming MCU is critical.
In low power battery based products, in order get maximum battery back time, you need to focus on reducing the average power consumption.
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.
- ADC input of MCU / Analog voltage sensing could consume a lot of power if you don’t do it properly, sometimes the only way to reduce the power is to add a switch so that you power the ADC part/resistor-capacitor network only when you need to take the readings.
- Put the internal MCU blocks OFF if not in use or control (ON/OFF) dynamically in the code.
- Use MCU power-saving/sleep modes effectively.
- 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 how to write the code such that user needs are met with minimal CPU blocks so as have maximum power saving. Some of the use cases are:
- Reducing the ADC sampling rate will impact power consumption.
- Collecting data in RAM for long and only a few times sync over cloud could save significant power as the 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.
- Communication Protocol: example, HTTP will consume way more power compared to sending data over MQTT
- If possible offload calculation to cloud. You can send raw values and let the cloud application do the calculations before displaying them to the user or putting them into the database.
- 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 that 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
- 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 a 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.
Analyzing Power Consumption
All these considerations while designing low power embedded system are fine but you must measure actual power consumption using some measuring equipment or tool.
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 voltage/current meter having data output on a PC so that you can monitor/log the power consumption over a period of time, at different device operating states 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.
There are a few DC Power/ Energy Analyzers available in the market that can be used during development:
Joulescope (highly recommended), Otii by Qoitech, Nordic Semiconductor Power Profiler Kit 2 (highly recommended).
Read more about them in an article on power analyzers.
You can use this article as a guideline at the start of the design or as a checklist before finalizing the design.
Some more good reads for low power embedded system design
- Improve battery life in Ultra-Low-Power wireless applications
- The Importance of Average Power Consumption to Battery Life
I hope you found this article useful and with this, you will be able to significantly optimize the power consumption of your low power embedded system product.
If you need help in reviewing your embedded system design for low power consumption, you can contact me.
If you like the article, please share it with others. Any suggestions or comments, let me know here.
Read my other articles on embedded system design. Happy learning to you!