Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.
Photo

Sizing a Battery?


  • Please log in to reply
15 replies to this topic

#1 Josh

Josh

    New Member

  • Members
  • Pip
  • 1 posts

Posted 01 September 2010 - 11:19 PM

Guys, Is there any data on standby & active power use of the netduino? I'm looking at putting togeather a remote "weather" station for the verious rooms in my house.. I don't want to have to run 12vdc all over the house or have a bunch of wall-warts so I am trying to get an idea of what size battery I would need to "estimate" I need? how many mWh/s it will need.. Obviously I have load when I am aquiring and sending data to the computer.. but Im more conserned about the energy cost when I am dormant. Thanks Josh Handel

#2 Chris Seto

Chris Seto

    Advanced Member

  • Members
  • PipPipPip
  • 405 posts

Posted 02 September 2010 - 04:20 AM

Well, you could use 7.4 - 8.4 volt NiMh RC car batteries in the 2.4Ah to 3.5Ah range. They are really cheap and will last for a very long time powering something like a Netduino. Of course, you will still need to charge it every so often. I guess it really depends on how much you have to spend.

#3 CW2

CW2

    Advanced Member

  • Members
  • PipPipPip
  • 1592 posts
  • LocationCzech Republic

Posted 02 September 2010 - 07:00 AM

Is there any data on standby & active power use of the netduino? I'm looking at putting togeather a remote "weather" station for the verious rooms in my house.

The best way is to plug in a meter and measure the actual consumption. The AT91SAM7X512 specs (pdf) states ~44 mA in Active mode (clock 50 MHz, A/D activated, all peripheral clocks activated, USB transceiver enabled) and 26 µA in Ultra Low Power mode (core idle, features off). Most of the features can be selectively disabled to save power, you'd need to dig into the firmware source code to see, how exactly is the low power mode implemented.

Just out of curiosity, what features will a "weather" station have? To me personally, using 48 MHz ARM7 processor (with all the features) for temperature measurements seems a bit overkill... I understand benefits of .NET Micro Framework programming, though.

#4 Szymon

Szymon

    Advanced Member

  • Members
  • PipPipPip
  • 108 posts
  • LocationPoland, Krakow

Posted 02 September 2010 - 07:56 AM

Just out of curiosity, what features will a "weather" station have? To me personally, using 48 MHz ARM7 processor (with all the features) for temperature measurements seems a bit overkill... I understand benefits of .NET Micro Framework programming, though.


I agree with CW2. I built my weather stations using Arduino clone called JeeNode from http://news.jeelabs.org/. It has a built in low-power radio. It also uses modular design for and specifc "plugs" many sensors and devices are already available in his shop http://shop.jeelabs.com/. There is also lot of discussion about low-power requirements on his blog and forums.

My nodes last for more than a month on 3xAA batteries. Each uses a Room Board (http://shop.jeelabs....ucts/room-board) with temperature, humidity, motion and light sensor. I put them inside Airwick Freshmatic Mini enclosures: http://cid-4c7ec0c21...tal electronics

I think it might be worth using such devices for the sensor nodes but use Netduino with Ethernet shield as a central interface. It could be plug into a PC via USB or report data directly to a cloud service such as http://www.pachube.com/ via the Ethernet shield.

#5 greg

greg

    Advanced Member

  • Members
  • PipPipPip
  • 169 posts
  • LocationChicago, IL

Posted 02 September 2010 - 11:32 AM

I agree with CW2. I built my weather stations using Arduino clone called JeeNode from http://news.jeelabs.org/. It has a built in low-power radio. It also uses modular design for and specifc "plugs" many sensors and devices are already available in his shop http://shop.jeelabs.com/. There is also lot of discussion about low-power requirements on his blog and forums.

My nodes last for more than a month on 3xAA batteries. Each uses a Room Board (http://shop.jeelabs....ucts/room-board) with temperature, humidity, motion and light sensor. I put them inside Airwick Freshmatic Mini enclosures: http://cid-4c7ec0c21...tal electronics

I think it might be worth using such devices for the sensor nodes but use Netduino with Ethernet shield as a central interface. It could be plug into a PC via USB or report data directly to a cloud service such as http://www.pachube.com/ via the Ethernet shield.


Ok - I'd never seen that Pachube website before. Thats kind of neat.

I have no idea how they plan on monetizing that website but either way it's neat.

#6 CW2

CW2

    Advanced Member

  • Members
  • PipPipPip
  • 1592 posts
  • LocationCzech Republic

Posted 02 September 2010 - 11:47 AM

The best way is to plug in a meter and measure the actual consumption.

Here are some illustrative power consumption values - measured current on USB VCC line (Fluke 179):

  • 30 mA - Idle (no application), Thread.Sleep(Timeout.Inifinite)
  • 32 mA - Thread.Sleep() with onboard LED on
  • 45 mA - Running while(true);
  • 48~50 mA - Deployment (flash programming)
I have some difficulties with PowerState.Sleep(...) method, it seems not to be working properly, I could not get below 30 mA - it would require further investigation to see how exactly power saving mode is implemented (if at all).

#7 TheFuzzyOne

TheFuzzyOne

    New Member

  • Members
  • Pip
  • 1 posts

Posted 03 September 2010 - 02:20 AM

Here are some illustrative power consumption values - measured current on USB VCC line (Fluke 179):

  • 30 mA - Idle (no application), Thread.Sleep(Timeout.Inifinite)
  • 32 mA - Thread.Sleep() with onboard LED on
  • 45 mA - Running while(true);
  • 48~50 mA - Deployment (flash programming)
I have some difficulties with PowerState.Sleep(...) method, it seems not to be working properly, I could not get below 30 mA - it would require further investigation to see how exactly power saving mode is implemented (if at all).

Thanks for the reply CW2. I just got my boards in and will let Josh (OP) have at it with a meter. It might convince him to get cracking on his project! :rolleyes:

#8 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 03 September 2010 - 04:17 AM

I have some difficulties with PowerState.Sleep(...) method, it seems not to be working properly, I could not get below 30 mA - it would require further investigation to see how exactly power saving mode is implemented (if at all).


Power management is a project we'll be looking at later this fall. We'll also be doing a power audit to make sure things like SPI interfaces get turned off when you stop using them, etc.

Chris

#9 GB30

GB30

    Member

  • Members
  • PipPip
  • 10 posts

Posted 07 September 2010 - 03:29 AM

I have the same need, i.e. power management in order to have less than 30 mA in "idle" mode.
But can I write ARM register with microframework ? I mean: in C language I can use Assembler directive, but here how can I work with uP register?

thanks



Power management is a project we'll be looking at later this fall. We'll also be doing a power audit to make sure things like SPI interfaces get turned off when you stop using them, etc.

Chris



#10 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 07 September 2010 - 03:36 AM

I have the same need, i.e. power management in order to have less than 30 mA in "idle" mode.
But can I write ARM register with microframework ? I mean: in C language I can use Assembler directive, but here how can I work with uP register?


Hi GB30, welcome to the Netduino community!

You can write C++ code and compile it into the Netduino firmware. There are lots of examples in the source as to how to write to the ARM MCU's registers (i.e. writing data to an address related to that register in memory).

Perhaps we should also think about creating a managed C# object in the future which allows direct access to the registers? I know that's a bit on the dangerous side :)

Chris

#11 GB30

GB30

    Member

  • Members
  • PipPip
  • 10 posts

Posted 07 September 2010 - 12:08 PM

Hi Chris! Thank you very much! I'm studyng the possibility of using Netduino under the 30 mA, using Low Power mode of Atmel MCU, but I don't find the solution with C++. You said that Power State Class, in particular Sleep method doesn't work. So have you some ideas about this problem? Have you some examples of C++ code? Thanks a lot

#12 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 07 September 2010 - 04:03 PM

Hi Chris! Thank you very much!
I'm studyng the possibility of using Netduino under the 30 mA, using Low Power mode of Atmel MCU, but I don't find the solution with C++. You said that Power State Class, in particular Sleep method doesn't work. So have you some ideas about this problem?
Have you some examples of C++ code?

Thanks a lot


Hi GB30,

While the AT91SAM7X512 chip used on the Netduino is already fairly low-power, we will be enhancing its power footprint in our power audit. Unfortunately, I don't have any easy answers today as to what those numbers might look like or sample code as to how one might implement power-saving functionality. The best place to start might be to look at the MCU's datasheet, in particular to the power controller. I hope that helps.

Chris

#13 CW2

CW2

    Advanced Member

  • Members
  • PipPipPip
  • 1592 posts
  • LocationCzech Republic

Posted 08 September 2010 - 08:26 AM

I'm studyng the possibility of using Netduino under the 30 mA, using Low Power mode of Atmel MCU, but I don't find the solution with C++.

I am also interested in this, especially in using Netduino in battery powered scenarios.

You said that Power State Class, in particular Sleep method doesn't work. So have you some ideas about this problem? Have you some examples of C++ code?

I have not had enough time to dig into details yet, but quick overlook reveals that there is already code for Power Management Controller (PMC) functionality (see AT91_PMC.h in DeviceCode\Targets\Native\AT91\DeviceCode) used for example during board initialization and even switching to Idle mode function is there (AT91_SAM_Driver::Sleep() in AT91_SAM.cpp). Thus it may be as easy as calling the driver's Sleep() function at right moment in PowerState class methods (shouldn't it be there already?).

Additionally, peripherals can be selectively enabled/disabled by manipulating bits in PMC control registers, so the biggest 'problem' is to carefully choose what to disable in what power state, because it is being left "to be determined by the hardware vendor". Or simply provide a managed method with parameters which peripheral to enable/disable, something like PowerManager.Switch(UsbController | UnusedPins, Off), where UnusedPins means all the I/O pins not accessible on Netduino board (not exposed via headers).

#14 GB30

GB30

    Member

  • Members
  • PipPip
  • 10 posts

Posted 08 September 2010 - 12:01 PM

I am also interested in this, especially in using Netduino in battery powered scenarios.


I have not had enough time to dig into details yet, but quick overlook reveals that there is already code for Power Management Controller (PMC) functionality (see AT91_PMC.h in DeviceCode\Targets\Native\AT91\DeviceCode) used for example during board initialization and even switching to Idle mode function is there (AT91_SAM_Driver::Sleep() in AT91_SAM.cpp). Thus it may be as easy as calling the driver's Sleep() function at right moment in PowerState class methods (shouldn't it be there already?).

Additionally, peripherals can be selectively enabled/disabled by manipulating bits in PMC control registers, so the biggest 'problem' is to carefully choose what to disable in what power state, because it is being left "to be determined by the hardware vendor". Or simply provide a managed method with parameters which peripheral to enable/disable, something like PowerManager.Switch(UsbController | UnusedPins, Off), where UnusedPins means all the I/O pins not accessible on Netduino board (not exposed via headers).




Thank you for the reply. But I don't understand how to manipulate bits in PMC control register throught microframework.
How can I find AT91_PMC.h? I don't find in Netduino documentation.

Thanks

#15 CW2

CW2

    Advanced Member

  • Members
  • PipPipPip
  • 1592 posts
  • LocationCzech Republic

Posted 08 September 2010 - 12:35 PM

Thank you for the reply. But I don't understand how to manipulate bits in PMC control register throught microframework. How can I find AT91_PMC.h? I don't find in Netduino documentation.

Unfortunately, it is not possible to directly manipulate registers in managed code, until there is a managed class that exposes such functionality (I am currently writing one, though). I was referring to the Porting Kit, which contains firmware source code - sorry for the confusion.

#16 Chris Seto

Chris Seto

    Advanced Member

  • Members
  • PipPipPip
  • 405 posts

Posted 08 September 2010 - 06:09 PM

Not right now, but I would hope register access will be added in the near future.

On an on topic note, I am using an 3Ah 8.4V RC battery to power my Netduino. I just got done soldering the wire harness, and although I have tested it for continuity and against shorts with the 'meter, I have not hooked the Netduino up to it yet. I hate pushing my blog everywhere, but there are something like 3 posts on the topic now. At least there are no ads anywhere on it :rolleyes:. I still need to update it with pictures of the assembled harness.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.