#127 SleepMode
Test sleep mode with an ATtiny85 processor on a breadboard.
Here’s a quick video of the circuit in action:
Notes
This is a little test of sleep mode with an ATtiny85 microcontroller (8-pin DIP).
I’m using an Arduino Uno as an in-system programmer, using the technique described in the ProgrammingWithArduinoISP project.
Once the ATtiny is programmed, the Arduino Uno ISP is detached, and it will run independently. The ATtiny85 requires 1.8-5.5V to operate. I successfully tested with 3.3V and 5V supplies.
A push-button is attached to normally pull D2 high (pin 7 of the chip) and a hardware interrupt service routine activates on LOW signal. The interrupt acts as a “wake-up” call to the CPU.
The standard loop
simply runs an LED sequence (for demo purposes) and then sends the processor to sleep.
The AVR library set_sleep_mode
function and sleep_mode
macro are use to put the processor to sleep.
Using SLEEP_MODE_PWR_DOWN
.. apparently the most power-efficient, I measure power consumption falling to about 238µA at 3.3V
when asleep. Not bad, but definitly not as low as you’d like for long periods of inactivity.
Lately I’ve been reading Sparkfun’s Adventures in Low Power Land, with some excellent coverage of how to get power consumption down to 1µA! The main extra change is to disable brownout detection, which requires a change to the chip fuses. A test for another day!
Construction
Credits and References
- ATtiny85 datasheet
- ArduinoSleepCode
- <avr/sleep.h>: Power Management and Sleep Modes
- Adventures in Low Power Land - excellent sparkfun tutorial