From Open Source Urbanism
We have been building our prototype Bike POV on the Arduino Diecimila powered by a 9V battery. The device draws about 43 milliAmps at 9V. If the 7 LEDs were on 100% of the time current usage would rise to about 200mA, with no LEDs lit it's around 38mA. A 9V alkaline battery is rated at about 900mAh so one battery should power the device for approximately 20 hours. It would be good to try and improve on this.
Choosing a Battery
9V batteries are small and easily connected to the Arduino Diecimila but they are expensive and the on-board voltage regulator that converts 9V to 5V dumps some of this power as heat. There are better battery options.
Rob Faludi has conducted some real-world battery tests with some interesting results. The stand-out winner in these tests are the AA NiMH rechargeable batteries, particularly when 4 batteries are used without the 5V step-up circuit.
Each NiMH cell gives 1.2V, connected in series this makes 4 x 1.2 = 4.8V. Although the Arduino's onboard regulator delivers 5V the ATmega168 microcontroller will run on anything between 2.7V and 5.5V (although the data sheet does note that EEPROM writes become unreliable at under 4.5V on Rev.A chips - not sure how to tell the chip revision?). To run the Arduino Diecimila on something other than 5V you bypass the onboard voltage regulator and plug your power source directly into the 5V and GND header pins on the board. Just don't supply these pins with more than 5.5V (or maybe 6V, there is some confusion in the data sheet about this) or you may fry the processor.
The Bike POV seems quite happy to run from 3 AA alkaline batteries connected in series providing 4.5V. At this voltage (bypassing the voltage regulator) the device draws approximately 35mA. A typical alkaline battery holds around 2000mAh so this setup should last about 50 hours. Running from AAAs would probably cut this by half but would reduce size and weight.
Bypassing the voltage regulator means you avoid the losses associated with voltage conversion. Our next version of the Bike POV will be constructed using the low cost RBBB Arduino compatible board. These boards have voltage regulators that can be removed, reducing overall board size and component count.
Turning Itself Off
It may be useful if the Arduino could turn itself off when not in operation. This forum post has some suggestions as to how this may be achieved. The best solution seems to be this MOSFET design from Randy Jones, it consumes a meagre 0.17 mA when on and this should drop to near zero when off.
Another way to conserve power would be to put the Arduino into sleep mode. It would be good if the Bike POV automatically sensed activity (maybe via the magnetic sensor) and if the wheel was dormant for a set period it could enter sleep mode.
Details on sleep mode can be found here.
There are a couple of problems with implementing this with the current design:
- wake from sleep can be triggered via digital pin 2 or 3 however the shields we've made use these pins to drive LEDs (we would have to redesign the shields).
- to wake the Arduino you need a digital signal on the interrupt pin, this means that the analogue hall effect sensor wont work (or will need extra hardware to work) - we could investigate reed switches
- waking from sleep can take some time (up to a second but this may not be a problem)
There may be other benefits apart from saving power:
- using an interrupt pin to sense the wheel movement might simplify the timing code (we could go back to using a delay() function. Details on this can be found here