Pages: [1] 2   Go Down
Author Topic: Batteries, howto make a board that can run a year?  (Read 2623 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino boys & girls,

To put it simple, how to power the Arduino as long as possible with a battery, accu, or whatsoever as long as it's not connected to the net supply? I already asked this in the past in this thread:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1275053486

that was quite a while ago though. Didn't had proper time to really work it out. But basically the advise was to put the board & XBee asleep as much as possible. That makes sense of course, but when we measured the board, it was still using 10 mA in sleepmodus I believe. It could be a little bit lower or higher, I don't precisely remember anymore. But the conclusion was that the average fat 9Volt battery would only last for a week or so.


Now I'm just a programmer, so maybe you guys have some tips to either reduce the power consumption further, or extreme batteries. Space is not a problem, we can easily place 8 AA batteries inside the box if that would be needed. Or maybe chosing another Arduino board could help as well (though I'm not sure if it can interface with the XBee & sensor then).



The situation for this particular device:
---------------------------------------------------
- Mobile logging device (captures temp & humid, sends it to a server). Box can be placed anywhere (which is why we can't use netpower)
- Battery should live for about a year if possible
- Arduino Duemilanove
- XBee shield on top
- 5 Volt Humidity / Temperature sensor (interface via serialport)
- Module should send a few packets to the server each ~10 minutes
- If possible, it should take a few (4 to 10) samples over those 10   minutes to make an average. That means it has to wake up for  a short while, but without needing the XBee.

Cheers,
Rick
Logged

Game hobby project: Tower22

Lancashire, UK
Offline Offline
Edison Member
*
Karma: 9
Posts: 1991
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Go down to your local breakers yard and get a car battery that will still turn an engine over.  Protect it from excessive cold and don't draw too much current from it with extras and it should last a year without charging . You'll probably need sleep mode as well.....
« Last Edit: April 14, 2011, 04:14:08 am by pluggy » Logged


Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 220
Posts: 13846
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
If possible, it should take a few (4 to 10) samples over those 10   minutes to make an average
Why not do a sample every minute and send them all to the server, you get a much more data on the server, once there is connection you better put a bit more data through.

That said, with some clever compression you can minimize data .

e.g. measurements:
<start>T 14.6  <stop> (one measurement = start stop T + 1 float = 7 bytes)
<start>T 14.5 14.5 14.5 14.5 14.3 14.5 14.6 14.7 14.9 14.6 <stop>   (start stop T + 10 floats ~= 43 bytes) could become
<start>T 14.5  0     0     0      -2      0     1      2      4     1 <stop>    (start stop T + 1 float + 9 deltas ~=22 bytes)

in this example there is one reference temperature and the others are byte values that indicate the offset in 0.1 wrt the reference. The max temp delta that can be send is +- 12 degrees (within one minute this is quite a lot! can be worked around by defining one code as special, eg. a value > 120 means next value is a complete float again) 

So with 3x as much bytes (22) one can send 10 times as much data.

BTW - you should add some monitoring of the car battery status
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Well, sending more data is not a problem, and the packets are really small already. But it would also mean the XBee (this one consumes most of the power) has to wake up more often. That's basically the reason to do it that way.

A car battery... I said space is not an issue, but a car battery is pretty large though smiley It's not impossible of course, but do similar devices really need that kind of batteries? You can buy plug & play temperature/humidity loggers, and they are as big as half a fist. Sure, they don't send data wireless, and their circuits are far more optimised than my hobby project. But using a car battery on the hand sounds quite drastic.
Logged

Game hobby project: Tower22

The Netherlands
Offline Offline
Full Member
***
Karma: 2
Posts: 178
Beep!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You could get a motorcycle battery instead, they are much smaller and these come in pretty high capacities as well.
Don't know if you could get them up to a year, but I think with the right precautions (sleepmode etc.) you can get it to last a long time.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hehe, I just find the idea of driving a little microcontroller with a big motor battery weird. Never heard of it (asides from the computer INSIDE an engine). Then again, I'm just a beginner smiley-wink

Nevertheless, I just checked a little bit. Motorcycle battery dimensions are somewhere around 15 x 7 x 10 cm or something. Still pretty big. Plus they are heavy with ~3 KG or more. These loggers usually hang somewhere on a ceiling in a warehouse or (clean) production corridors. The price of them isn't that bad though... 35 to 100 dollars is ok. Uhm, if you can recharge them after a year that is, instead of throwing away. Well, that should be possible smiley


But seriously, do all remote Arduino projects use car/tractor/boat battery's? Sorry if I sound silly smiley

Rick
Logged

Game hobby project: Tower22

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 220
Posts: 13846
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

what you can do is the math for your device. If you know what it consumes per hour you can calculate the size of the battery .... Maybe one car battery is not enough smiley-wink



Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Just found this:
http://www.faludi.com/2008/01/08/projects/
It includes a table with battery lifetimes related to Arduino & Xbee... not very hopeful. 117 hours at best. Well at least I don't have to feel I'm doing something incredibly wrong with the Arduino / XBee.

I don't have the hardware at hands now, but we could measure it again of course. We did that a year ago, and came roughly to the same conclusions as that table. Maybe a car/motor battery isn't such a weird idea after all! Or maybe the engineers shouldn't be that lazy and make sure netpower is withing reach everywhere smiley-wink

I wonder though, a device like a thermostat can run for a long time as well. It doesn't have a XBee, but yet it should regulate all the time, power a (dimmed) LCD, switch a relays. Are they doing something completely different then?
« Last Edit: April 14, 2011, 05:49:47 am by RickN » Logged

Game hobby project: Tower22

The Netherlands
Offline Offline
Full Member
***
Karma: 2
Posts: 178
Beep!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A thermostat usually has access to a constant powersupply if it isn't a wireless solution.
If you run a heating system, you're gonna need a wire to your thermostat anyways, why not get an extra wire for power as well?
Logged

Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Duemilanove and the 'official' Arduinos in general are not designed with power management in mind, so to go lower than 10-17mA may require hacking it a bit or use of a nonstandard board. The big power drains on the Duemilanove are the USB-serial converter (powered all the time, even when a USB port is nowhere near), power LED and the CPU. You kind of need the CPU ;-) but the rest can go. Attaching a real-time clock like the DS1337 will let you put the CPU to sleep (<0.5uA) between measurements and wake it back up via an alarm interrupt. Without a way to tell it to wake up again, using the sleep modes in any meaningful way is tough. If you can't put a realtime clock / use sleep mode, if you can swap the (16? 20? MHz) crystal for a slower one, a software delay loop will use less power. IIRC you may be able to switch to the ATmega's internal oscillator via software control, not sure about this though. Either way, for timing-sensitive things like delay() and Serial to work correctly, you will have to edit boards.txt also to tell it the new speed you are using.

It seems like all my posts lately are spamming for my low-power Arduino project ;-) but these are pretty much the things I changed to make it work. Take the Duemilanove schematic (actually the Sanguino because I wanted more I/O), rip off that inefficient linear regulator and always-on LED, tie the USB-serial chip's power lines to the USB port rather than Vcc, and add a realtime clock. This gets it down to <1uA during sleep mode (including the realtime clock) and you can schedule the next wakeup anytime in 1-second increments.

If you can, using a "bare bones" board like the RBBB will get you most of the way there by getting rid of the USB-serial, LEDs and usually the big linear regulator. Feed it with a low-power regulator and a good-size battery (D cells, or 6V lantern battery if an automotive battery is too big), and it should go for quite a while.

Hope this helps!
Logged

0
Offline Offline
Sr. Member
****
Karma: 2
Posts: 360
I'm 15. I like making things. I like breaking things better.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Not to steer you away from Arduinos, but you can accomplish this pretty easily with TI's MSP430. I know the Xbee uses a lot of power, but an msp430 itself can run a few years years on a coin cell battery!

http://focus.ti.com/mcu/docs/mcuorphan.tsp?contentId=61835&DCMP=MSP430&HQS=Other+OT+ulp

http://focus.ti.com/lit/an/slaa151/slaa151.pdf
Logged

Alice asked the Chesire Cat, who was sitting in a tree, "What road do I take?"
The cat asked, "Where do you want to go?"
"I don't know," Ali

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Those are useful tips! I'm going to sit comfortable & read through it.

As much as I would love to play around all day with boards, a little problem is that I'm doing it in the spare hours at work (I'm the only programmer here so there are always 100 things going on at the same time). So there isn't that much time to experiment. That's why we go for the Arduino: user-friendly & ready-to-go. Nevertheless, I'll read into this. Stripping the board or even using another options seems to be the only realistic solution, (If the boss still wants to go with batteries).

Thanks!
Rick
Logged

Game hobby project: Tower22

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3495
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

If you want to go low power do not use an Arduino. Use the raw chip. Do not use a crystal, use the RC oscillator. Put down frequency to 1MHz such that you can run at low voltage. Or even go down to 128kHz watch dog oscillator. Put it to sleep as much as possible. As already suggested by others you could use an RTC for waking it up. If you do not want to push the limits though you may want to have a look at the well known nightingale example: http://interface.khm.de/index.php/lab/experiments/sleep_watchdog_battery/.
However with an RTC and sleeping most of the time it should not be to hard to beat this.

Notice that the Nightingale Example misses the fact that the Arduino IDE can directly access an ISP --> no need for a bootloader --> no need for 16 MHz either --> everything can be done with RC oscillator this saving both components and power. If you go down to 1Mhz you can even decrease the voltage reducing current consumption further.
« Last Edit: April 15, 2011, 12:32:56 pm by Udo Klein » Logged

Check out my experiments http://blog.blinkenlight.net

0
Offline Offline
Full Member
***
Karma: 1
Posts: 225
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jean-Claude Wippler has done a lot of work on similar systems.  Dig around at http://jeelabs.org/
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@Udo & Chaos
Thank you too!

If we want to go seriously for batteries, we need to dig a little bit deeper in the bare electronics. Not sure if the boss would like that (having one or two guys assembling custom boards every time costs time & money), but that at least I have arguments and guidelines now, thanks to you guys!

Ciao
Logged

Game hobby project: Tower22

Pages: [1] 2   Go Up
Jump to: