Go Down

Topic: Ardunio with Power Management System (Read 2609 times) previous topic - next topic


As the Internet of things is taking a rapid approach, wouldn't we require a Arduino which has a power management system. Yes, there are already power modes available in the software but the board which can perform those operations is partially available like I can use it on an Arduino micro.
If a board integrated with the following is available would it really make a difference.
1. A battery charger - Already present in Lillypad
2. A Switching regulator which a 3.3V or 5V output
     Seems its speed vs power
3. An Atmega328p with select able crystal option. Internal vs External
4. An RTC Clock (with 32.768khz crystal). According to AVR134 doc.
5. A current sensor already present
6. The AVR is already connected to batteries voltage and the current sensor to monitor status directly
7. Completely integrated into a single PCB (sized for wearable)
8. Arduino would enable the regulator output where as it itself switches between battery and switching regulator output.
9. Can power up another board or used independently to make a system for Internet of things or just anything.

Internet of things is just the second step with the primary step being that it will run on a battery (if external supply isn't available to drive a fridge  ;) ). My prototype is on its way.

Would really appreciate your inputs on it...


2 - why do you want a regulator, instead of just operating the AVR off of (say) the nominal 4.2V LiPo battery (ala lilypad)
3 is doable on any current arduino board; just because an external crystal is present, doesn't mean you have to use it.
4/5 requires that you give up some of the existing pins, if you continue to use a m328.
6:  an arduino can already computer its own operating voltage, by reading the bandgap reference with the vcc-referenced ADC.
AVR is not well suited to doing IoT applications, IMO, except maybe via proxy gateways.  Even with a smart TCP chip like Wiznet or C3000 (either of which will consume enough power to make your other suggestions largely irrelevant), most internet protocols tend to be very "verbose" compared to the 32k code size of an m328.
Have you seen the JeeNodes?  http://moderndevice.com/product/jeenode-v6-kit/


Thank you for your suggestion and I completely agree to your points westfw.
2. Basically I was targeting at a Buck / Boost regulator. Lets say if I want to run at 12MHz or greater I need a voltage equivalent. I cannot fully use my Lipo for it. I would be overclocking it. If I switch off avr I will loose RTC.

3. If I do it on any other board I need to maintain the crystal according to the supply voltage.

4/5 I would be loosing max of 3 pins since for ADC of battery voltage and current I am using additional adc which an available on smd package. I am still having 4 ADC, SPI, I2C, UART enough to make it run. Even the battery adc is started via the avr and the current adc is just a few ua when the external regulator is switched off.

6. To avoid losses I am using only internal reference as the vref pin is just decoupled with a capacitor.

Yes AVR are not IOT ready. We may require an external IC's. Just as an example the new coming IC WINC1500 from avr can bring down WiFi in wait mode to 1ma. But if my avr continues to work in active mode taking more than 5ma (again depends on the external use of I/O ports) then it is irrelevant. But the same if I run just for RTC (Power save mode) and use interrupt to wake up it will bring down to 5ua thus giving a battery life as such required. I know ATSAM processor will be best as Arduino Zero would be available soon. 


The 'ATXmega' processors (which are 'enhanced' AVRs) are capable of changing their clock frequencies via software, assuming you use the internally-generated clock.  Reducing clock frequency during idle loops saves power.  This doesn't mean it won't cause problems, though, and wouldn't require some special code to accomodate it.  These processors ALSO have a real time clock that you can use to periodically wake a sleeping CPU.  So to save power, you'd set up some interrupts (and maybe the RTC) to wake up the CPU when you get, let's say, an internet packet or serial traffic or whatever, then respond to it, then go back to sleep.  Sleep mode on these CPUs uses signficantly less than 1ma, depending on how you manage it in your code.  I've already worked on a battery operated project that takes advantage of these kinds of features.

it is also possible to wake an ATMega on an interrupt, but it doesn't have a built-in real time clock.

(I'm working on a project that lets you use the Arduino IDE for an XMega processor, appropriately named 'XMega For Arduino' on github, 'http://github.com/XMegaForArduino')

Go Up