4

In order to reduce power consumption, I want to resume my Arduino from standby mode every 10 seconds. For this a hardware interrupt is necessary.

Is there such a device that can create a quick impulse to trigger that interrupt? It can be anything from 10ms to 2 seconds; doesn't matter. My first thought was to use a 555 timer, but this one can only be on for 10 seconds and off for the same amount of time.

The best solution for me would be an already assembled device that I just have to wire with my Arduino since my knowledge in electronics is very low. Or a detailed assembly plan, then I would be able to build it myself I guess?

UPDATE: I was now able to put the Arduino into standby-mode using the Low-Power library. At first it seemed like it didn't work, because I wanted to print out a text over the serial connection. Instead, I tried to let the internal LED blink every 8 seconds, and this works perfectly.

sa_leinad
  • 3,218
  • 2
  • 23
  • 51
Cowboy_Patrick
  • 174
  • 1
  • 16

4 Answers4

12

A 555 doesn't have to generate a 50% duty cycle. Even if you do want to use a 50% duty cycle, the edge can be RC coupled into the interrupt to reduce the pulse width.

An Arduino can use a slow clock like a 32kHz watch crystal, then it's very low power indeed. This slow one can be used to wake-up your more power-hungry Arduino.

The lowest power and tidiest external solution would be to use a CD4060. These are designed to be very low power, very long period timing devices.

The correct way to do it is to use the internal Watchdog Timer to wake itself up from sleep. This uses an independent internal hardware 128kHz low power oscillator. The longest this can be programmed to wait is 8s. However, if you program it to 5s, then the Arduino can choose to do work, or go straight back to sleep again, on each interrupt.

Neil_UK
  • 404
  • 2
  • 12
10

The best solution for you is to use LowPower library which does not require any external parts. It supports up to 8 seconds sleep. If you need exactly 10 seconds you can write a loop with 5 cycles and call powerDown with 2 seconds sleep.

If you still want to use external interrupt, see this for some chip options.

Also, see this article for some good ideas on reducing power consumption, and this article on how to run Arduino for a year on coin cell.

Maple
  • 221
  • 2
  • 6
4

I believe that the LTC2956 was made exactly for this purpose. Directly from the datasheet:

The LTC2956 is a micropower, wide input voltage range, configurable wake-up timer with pushbutton control.

It periodically wakes up and turns on a connected system to perform tasks like monitoring temperature or capturing images. After completing the task, the LTC2956 turns the system off to conserve power. The wake-up timer period can be adjusted from 250ms to 39 days using configuration resistors

You can find the datasheet here: LTC2956. It is probably considered expensive at 1.98$ in 1000+ quantity.

0

Along the lines of mr_sunshine's answer, another chip you could use is commonly known as a 556 timer - it's two 555 timers in a single package. Run one timer on the normal 50% duty cycle (astable), and have it trigger the other timer in monostable mode to send a short pulse of voltage. Look for a schematic for a servo controller based on a 556 or two 555's, and change the values to get your 10s delay. Here's a link to one such page, found with a google search: Servo Exerciser

IronEagle
  • 101
  • 2