On this Arduino Day 2014, I thought I would investigate very low power operation of the ATmega328P-PU.
This post is inspired by Nathan Seidle's Spark Fun post of 2011 "Adventures in Low Power Land".
Nate wanted to get a ATmega328 to run at the lowest possible sleep current whilst used in a digital watch application.
I wondered whether by a combination of low power techniques it would be possible to run the Arduino at a greatly reduced clock speed, and at a lower voltage, and still have the microcontroller running code and communicating via the UART.
I followed Nate's example and configured the device as an Arduino Pro 3V3 8MHz using the internal 8MHz oscillator. I also turned off the Brown Out Detector (BOD) because I soon realised that this would prevent the IC running at low voltages.
I decided to divide the 8MHz internal clock oscillator using the maximum prescaler value of 256. This meant that the code was executing at 31250 Hz, or 1/512 of the usual execution speed.
By setting Serial.begin(76800), I was able to get 300 baud communications from the new divided clock frequency.
Unfortunately, I didn't have access to a variable low voltage power supply, so I charged up a 0.22F super capacitor and ran the ATmega from this, monitoring the voltage and current drawn, as the super capacitor slowly discharged. Using this method I was able to show that code was still running at 1.71V supply and 55.8uA average consumption - printing serial to the terminal every second or so.
I quickly learned that the CP2102 serial adaptor was supplying current to the application via the Rx line. I disconnected this, to ensure that measurements were accurate.
So the ATmega328P-PU will still run code at 1.71V consuming about 95 microwatts of power.
So why is this important? It means that we can have very low power consumption from Arduino based hardware, making it compatible with Bluetooth low energy. A simple interrupt from the BLE module can wake the '328 to whatever clock frequency is needed to handle the RF data.
Additionally, it allows new power sources to be developed, such as energy harvesting devices, or even a small 3" x 2" photovoltaic collector, illuminated by ambient lighting is sufficient to power the microcontroller.
Photos and more detail to follow.
This post is inspired by Nathan Seidle's Spark Fun post of 2011 "Adventures in Low Power Land".
Nate wanted to get a ATmega328 to run at the lowest possible sleep current whilst used in a digital watch application.
I wondered whether by a combination of low power techniques it would be possible to run the Arduino at a greatly reduced clock speed, and at a lower voltage, and still have the microcontroller running code and communicating via the UART.
I followed Nate's example and configured the device as an Arduino Pro 3V3 8MHz using the internal 8MHz oscillator. I also turned off the Brown Out Detector (BOD) because I soon realised that this would prevent the IC running at low voltages.
I decided to divide the 8MHz internal clock oscillator using the maximum prescaler value of 256. This meant that the code was executing at 31250 Hz, or 1/512 of the usual execution speed.
By setting Serial.begin(76800), I was able to get 300 baud communications from the new divided clock frequency.
Unfortunately, I didn't have access to a variable low voltage power supply, so I charged up a 0.22F super capacitor and ran the ATmega from this, monitoring the voltage and current drawn, as the super capacitor slowly discharged. Using this method I was able to show that code was still running at 1.71V supply and 55.8uA average consumption - printing serial to the terminal every second or so.
I quickly learned that the CP2102 serial adaptor was supplying current to the application via the Rx line. I disconnected this, to ensure that measurements were accurate.
So the ATmega328P-PU will still run code at 1.71V consuming about 95 microwatts of power.
So why is this important? It means that we can have very low power consumption from Arduino based hardware, making it compatible with Bluetooth low energy. A simple interrupt from the BLE module can wake the '328 to whatever clock frequency is needed to handle the RF data.
Additionally, it allows new power sources to be developed, such as energy harvesting devices, or even a small 3" x 2" photovoltaic collector, illuminated by ambient lighting is sufficient to power the microcontroller.
Photos and more detail to follow.