Take the 2-minute tour ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

I'm working on a Arduino project that takes measurements from the environment and sends them to a remote server over WiFi. The circuit should be battery powered and I've measured that what I have at the moment takes about 160mA of current, which makes it impossible to run on battery longer than couple days. The good thing is that it is enough to power the circuit once an hour and run it for approximately one minute and then power it off.

So I was thinking of creating a very low power timer circuit that would power my main circuit for one minute every hour. Unfortunately I don't have any idea how to do that :). I tried to research and I think it might be possible with IC 555, but if I understood the data sheet correctly it draws around 3-6mA of current which is little bit too much.

Does anyone have any ideas to point me to right direction?

share|improve this question
    
Can I suggest that if you do not mind your processor running the whole time, you can simply use Millis() to get time stamp, and just do the power on/off cycle every 3600 seconds ( * 1000 for milliseconds, all unsigned long variable datatypes!) –  KyranF Jun 7 at 13:35
    
otherwise learn how to make your arduino go to sleep, and use the external interrupt pin and do what Motoprogger suggests with a 555 timer and wake up and count + 1 each time you wake up, once per second, until counter variable reaches 3600 and then do your operation for 1 minute as required, then return to sleep-wait-count operation –  KyranF Jun 7 at 13:36
add comment

3 Answers 3

An hour is too much for a 555 timer or any other oscillator. A better solution could be a 1 Hz multivibrator (a 4011 chip consumes less than 0.5 mA at 1 MHz, and even less at 1 Hz) and a counter to count to 3600.

share|improve this answer
    
that's a pretty cool idea, I agree with this one. I hope by counter you mean the Arduino just counts the number of times that pin goes high (rising edge count, or just wake-up-on-interrupt and count++, then sleep if not >= 3600) –  KyranF Jun 7 at 13:31
    
If you are not satisfied with 555's 6 mA current consumption, would you be satisfied with always-on Arduino's? –  motoprogger Jun 7 at 14:20
    
why not have the arduino wake up on external interrupt triggered by the 1Hz (or even 0.2Hz, doesnt matter) 555 timer signal, do a count, and then sleep if not count >= 3600? –  KyranF Jun 7 at 14:23
add comment

If you have an Arduino and are after such lengths of time, why not purchase a RTC addon for the Arduino. They are not that much and that way you can get decent accuracy over long periods of time.

http://playground.arduino.cc/Main/DS1302

share|improve this answer
add comment

The ATmega on the arduino board has some sleep functions, which will make it use practically no power.

The ATMega328 has a watchdogtimer build in. You can set it to up-to 8 seconds. Just put it in SLEEP_MODE_PWR_DOWN, and the watchdog will wake it up again in 8 second. Do this 450 times, and you got an hour worth of sleep, with only a few ms of CPU time.

The other thing is getting the Wifi module to sleep too.

And maybe desolder some of the leds on the arduino board to reduce power usage.

share|improve this answer
    
It's a good option to disable the sensors in addition to wi-fi before setting the microcontroller to sleep. –  motoprogger Jun 8 at 3:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.