Skip to content

LowPower

Haiqiang Xu edited this page Jun 7, 2018 · 1 revision

LowPower is a Lightweight low power library for Arduino, incorporated in the repository as a submodule so we can keep track of future improvements.

Its functionalities is wrapped inside the Common_Lib within a static class CCommon so it can be used very easily from the final projects that needs these functionalities. To sum up, is a library that reduces the power consumption of the Arduino Uno/Nano [ATMega328P] alongside other Atmel chips and used during moments that CPU processing is not needed, e.g., when we are waiting for a user interaction so we can power down the chip to reduce drastically its consumption and extend battery's life and wake it up when user interacts. Here a more technical explanations of why use it:

Comparison power save modes and internal components switched on/off for each mode:

Power mode WDT ADC BOD T2 T1 T0 SPI USART0 TWI Current
Idle On On On On On On On On On 3648.0 µA
Idle Off On On On On On On On On 3643.0 µA
Idle Off Off On On On On On On On *
Idle Off Off On Off On On On On On *
Idle Off Off On Off Off On On On On 3618.0 µA
Idle Off Off On Off Off Off On On On 927.0 µA
Idle Off Off On Off Off Off Off On On 832.0 µA
Idle Off Off On Off Off Off Off Off On 789.0 µA
Idle Off Off On Off Off Off Off Off Off 687.0 µA
ADC Noise Reduction On On On On 651.0 µA
ADC Noise Reduction Off On On On 646.0 µA
ADC Noise Reduction Off Off On On *
ADC Noise Reduction Off Off On Off 584.0 µA
Power Save Off Off Off Off 1.7 µA
Power Save Off Off Off On 416.0 µA
Power Save Off Off On On 435.0 µA
Power Save Off On On On 527.0 µA
Power Save On On On On 531.0 µA
Extended Standby Off Off Off Off 202.2 µA
Extended Standby Off Off Off On 416.0 µA
Extended Standby Off Off On On 436.0 µA
Extended Standby Off On On On 527.0 µA
Extended Standby On On On On 531.0 µA
Standby Off Off Off 201.7 µA
Standby Off Off On 218.5 µA
Standby Off On On 309.9 µA
Standby On On On 313.9 µA
Power Down Off Off Off 1.7 µA
Power Down Off Off On 18.6 µA
Power Down Off On On 110.0 µA
Power Down On On On 113.9 µA

Legend:

  • WDT: Watch Dog Timer
  • ADC: Analog-to-Digital converter module
  • BOD: Brownout Detector
  • T0, T1, T2: Timers 0, 1 and 2
  • SPI: Serial Peripheral Interface module
  • USART0: Serial port module
  • TWI: Two-wire interface (I2C)

Comparison sleep modes power consumption set on setup() with nothing in loop() and with the bare-bone ATMega328 chip + Voltage regulators (for +5V and +3.3V) + USB interface chip (for the USB port) + "power" LED instead of a full equipped Arduino Uno:

  • SLEEP_MODE_IDLE: 15 mA
  • SLEEP_MODE_ADC: 6.5 mA
  • SLEEP_MODE_PWR_SAVE: 1.62 mA
  • SLEEP_MODE_EXT_STANDBY: 1.62 mA
  • SLEEP_MODE_STANDBY: 0.84 mA
  • SLEEP_MODE_PWR_DOWN: 0.36 mA

Time to wake-up if components are disabled:

  • BOD: 60 µs

Wake-up Sources:

  • INT and PCINT: all power save modes. This the preferred method as it can be attached to external interaction with e.g. a joystick/button.
  • TWI address match: all power save modes
  • Timer2: IDLE, ADC, PWR_SAVE, EXT_STANDBY
  • WDT: all power save modes
  • ADC: IDLE, ADC

Source 1

Source 2

Clone this wiki locally