View Full Version : Current consumption in sleep
dp7896
09-10-2008, 01:32 PM
I am using the sleep function to sleep for 10 seconds and wake back up long enough to measure temperature and go back to sleep. Before sleep I disable the rx(False) and make all pins inputs. I am reading roughly 1.7~1.8mA during sleep. Is there anything else I need to do to get lower current draw?
Thanks.
msellers
09-10-2008, 02:19 PM
Corrected: Are you using sleep mode 1 ? It is the lowest power if sleeping for more than 1 tick. Also, what board is the engine installed in? If the proto board, you can remove the jumpers that power and connect the RS-232 driver to save more.
dp7896
09-10-2008, 04:16 PM
It is just the module it self hooked up to 2 AA batteries. Then a thermistor on ADC channel 6. I am using sleep(0,0). I am reading 1.7~1.8mA. I have attached my code as well.
msellers
09-10-2008, 04:18 PM
What is the other end of the thermistor connected to? It is going to use some current generate a temperature reading. What current draw do you see when the thermistor is removed?
dp7896
09-10-2008, 04:32 PM
With only the batter connected and all other pins I get 1.7~1.8mA. Not sure why it is so high. When I first put it to sleep it goes up to 2.2ma and down to 1.9ma and then it eventually goes down to 1.8mA~2.0mA. It is an RFET. I have also tried an RFE and little bit lower current, like 1.5mA. I also added before the sleep command a rx(False) and still same current.
dp7896
09-10-2008, 04:50 PM
These modules are from the EK1500 with updated firmware, the latest. I pulled a module out of the EK2500 and loaded it with the same code and now it is down to .48mA. Is this correct or should it be in the nA?
kbanks
09-10-2008, 04:56 PM
I also added before the sleep command a rx(False) and still same current.
There is no need to do a separate rx(False) before going to sleep. When the node goes to sleep, it puts the radio to sleep too.
Also, if sleeping for more than one second at a time (like your 10 seconds), sleep mode 1 actually draws less current than mode 0.
msellers
09-11-2008, 04:13 PM
We've tried some here and are getting microA readings. If you email your info to support@synapse-wireless.com, we will send you another RFE to test with.
I admit that I am new to Python. However, I did not see in the SleepTest.py file anywhere that all of the GPIO pins were controlled. I tried the same code but added a couple of lines to make all of the pins outputs. I am now reading around 7 - 8uA. Out of curosity, why is the current higher (~2mA) when I set the pins to input, then when I set the pins to output?
msellers
09-19-2008, 02:31 PM
As an input mode, left unterminated and floating, the inputs could be switching in a noisy environment, consuming current. Also there are pullup resistors that can be switched on which prevent the floating but use current. Lowest current will be as outputs with them all set to 0.
Hmm. I should have known that. Thank you.
capr1c0rn058
07-07-2010, 04:13 PM
I am running SNAP on Atmega128RFA1 paltform. I am able to acheive a sleep current of ~2.5mA. From what i see, there are ways to acheive lesser sleep current than this. I turned all my LEDS off and i am not monitoring Pins. Why is it that i am able to acheive only that much sleep current.
Aren't the output pins and input pins with internal/external pull-up driven low by default. If not do i have to drive all pins lows in my SNAPpy code?
kbanks
07-08-2010, 03:17 PM
Aren't the output pins and input pins with internal/external pull-up driven low by default.
No! SNAP has no way of knowing what the different pins are tied to!
All pins (except UART, which you enable/disable separately) default to inputs.
Your script needs to either 1) enable pullups via setPinPullup(pin, True) or 2) make them outputs driven low by using setPinDir(pin, True) and writePin(pin, False).
It's also important to make sure you are not "fighting" with external hardware. For example, if a pin is tied high externally, trying to drive it low to save power will actully consume more.
rbreesems
07-29-2010, 01:06 PM
I have a RF Engine RFET module that is using mode 1 for sleep. My sleep current is ~ 45 uA. I am assuming that this current is coming from the radio being used as the sleep timer. I have a PIC24F that in the system as well, but that only consumes ~4 uA in sleep mode (these are actual measurements from the system).
As stated previously, on the RF engine (actually, any CMOS CPU), it is important to configure any unused pins as inputs with the pullups enabled so they don't float. I also did this for the UART1 RX pin as well on the RF Engine since I was not using that input.
Before I enabled the pullups, I had sleep currents in the 200-300 uA range.
So, I logged on to the forum to see if anybody had lower sleep current than ~45 uA in mode 1, and if yes, how did you achieve this.
Thanks.
gre7g
07-29-2010, 03:45 PM
45uA is the typical sleep current for mode 1 of the RF100. You can get down to 5uA by using mode 0, but then your time base for the timed sleep is pretty imprecise.
To get a lower sleep current, I recommend upgrading to the RF200. The RF200 has a timed sleep as low as 1.37uA and an untimed sleep of 0.37uA.
rbreesems
07-29-2010, 04:06 PM
45uA is the typical sleep current for mode 1 of the RF100. You can get down to 5uA by using mode 0, but then your time base for the timed sleep is pretty imprecise.
To get a lower sleep current, I recommend upgrading to the RF200. The RF200 has a timed sleep as low as 1.37uA and an untimed sleep of 0.37uA.
Great! Thanks for the tip.
EDIT: I see those will be available Sept 2010 -- I hope that timetable holds!
vBulletin® v3.7.5, Copyright ©2000-2010, Jelsoft Enterprises Ltd.