[Logo] Anarduino and HopeRF Community Forum
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics     [Groups] Back to home page 
[Register] Register / 
[Login] Login 
MiniWireless sleep mode power consumption  XML
Forum Index » Anarduino
Author Message
obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

When putting a MiniWireless with RFM69, Memory and RTC to sleep do we need to put the Memory and RTC to sleep also? If so, how do you put them to sleep or powerdown?

I'm sleeping with the following code:



But I'm still measuring 3.9 mA in sleep mode, so I'm guessing not all the components are sleeping/powered down properly.

There's nothing else connected to the board, just 5V VCC and GND through the multimeter.

what is the proper sleep procedure the get close to the

MiniWireless with 128Mb MEM,RTC, on-board RTC supercap, and supporting extreme low power hibernation < 50nA


quoted description?

This message was edited 1 time. Last update was at 05/12/2014 08:55:19

obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

After lots of searching I found the below code to put the SPI Flash memory to sleep on the Moteino forum.

With that the sleep power consumption is now 0.380 milliAmps, which is better than before but still too high by a factor of about 100.

Just one good sample code on how to put all the Anarduino MiniWireless components into lowest power sleep would be really helpful!

obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

Partly out of curiosity and partly out of frustration I butchered one of my MiniWireless boards and desoldered the flash, RTC and RTC crystal to see if that helps lowering the sleep power consumption. Unfortunately, this is not the case, it is still quite high at around 0.38-0.4 milliAmps. I also tried powering directly via 3V3 in case the voltage regulator was wasting too much power, but got the same result.

For comparison I took a cheap chinese Pro Mini 3V3 board, added a RFM69HW module and used the same sketch sleeping the wireless and the arduino, which results in only 0.045 milliAmps sleep power consumption. Not great, but still better than the MiniWireless by a factor of 10.

I would really appreciate any help at all to lower the MiniWireless sleep power consumption.
stevech



Joined: 07/07/2014 18:07:27
Messages: 91
Offline

The Moteino uses a different part for the SPI flash so the commands may differ from the Spansion chip used on the Anarduino boards.

Is it possible that the software you're using to sleep the AVR is not using the right methods?

This message was edited 1 time. Last update was at 16/12/2014 10:55:03

obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

I've tried using Lowpower, Narcoleptic as well as the native avr/sleep & avr/power libraries, all yield exactly the same results.

the flash sleep command using the moteino spiflash library also worked, as the power was reduced accordingly, and also is the same when the flash is sent to sleep or is physically removed.

unfortunately I'm completely out of ideas now, and am hoping to find some help here....
siew



Joined: 30/05/2014 22:27:10
Messages: 3
Offline

Hello,

Is your Serial driver active when you are trying to sleep?
It seems to me I noticed doing a Serial.end() made a big difference.
obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

I've also tried completely without any Serial output, so not even a Serial.begin, and it didn't make any difference.

would also be interested to read about what kind of sleeo power consumptions others achieve with their MiniWireless Anarduinos, and the relevant sleep code.

thanks!
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

I'm experiencing the same issue with very similar readings (0.38-0.4mA).

Interesting part is that powering through 3V3 pin increased drain by ~50uA, [450mA total] (tried both with and without regulator soldered).
However, when powering circuit with 5V on VIN pin everyting seems to work fine draining 1.5uA in sleep mode.

the code i'm running for test is:


There are no additional components attached to board during test.
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

It seems that the cause of my problem is radio module.

I've desoldered every unnecessary piece from the board one by one, measuring power consumption between each step.
After desoldering RFM69W, consumption dropped to ~1uA.
I thought it might be damaged, so i've replaced it with a spare one. Consumption went back to 350uA.
It seems that separate circuit to power on/off RFM69 is necessary
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

Just read that sleeping RFM69 module should drain 1uA at most, so there's something really wrong...
stevech



Joined: 07/07/2014 18:07:27
Messages: 91
Offline

maybe the wrong commands to the RFM69 are being used for deep sleep?
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

stevech wrote:maybe the wrong commands to the RFM69 are being used for deep sleep?

Maybe.
Currently I'm using LowPowerLab RFM69 library, which seem to handle switching modes quite similarly to RadioHead. There is some strange bit-magic happening though.
RadioHead

LowPowerLab


Not sure where that 0xE3 came from, but it appears that it filters out every OPMODE down to 0. (So all in all both implementations should be doing the same thing).
Anyway, i'll try with just writeReg(1, 0);
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

empeka wrote:Anyway, i'll try with just writeReg(1, 0);

No difference. Switching to RadioHead lib completely also didn't help
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

Ok, so the cause is 10K pullup resistor between D2 and 3V3. (located near RX/A7 pins on the board).
Power consumption fell to ~16uA after desoldering it. As far as i know it's not required when using RFM69 module.

This message was edited 1 time. Last update was at 22/12/2014 14:27:17

stevech



Joined: 07/07/2014 18:07:27
Messages: 91
Offline

What does Dr. Ohm say to Dr. Ampere about 3.3 / 10,000?
empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

stevech wrote:What does Dr. Ohm say to Dr. Ampere about 3.3 / 10,000?

Right, 330uA
And the remaining 16 is drained by SPI Flash in standby mode (which is nice, as if I identified chip correctly, it drains 70uA typically).
2.2.2.6 Deep Power Down
The Deep Power Down (DPD) function is not supported in FL-S family devices.

So... anyone knows some low power replacement?


// EDIT
Answering my own question:
W25X40CL supports Deep Power Down with <1uA current.
I'ts a lot smaller than Spansion (4Mbit vs 128Mbit), but still enough for wireless flashing.
W25Q128FVSG is a bit pricey, but has 128Mbit with 1uA (typ.) power-down current

This message was edited 2 times. Last update was at 27/12/2014 16:09:49

Rick



Joined: 30/05/2014 22:08:56
Messages: 93
Offline

Thanks for your posts and such.

The 10K pullup on D2 is indeed unnecessary, and will henceforth be omitted.

BR/-Rick
obstler



Joined: 04/12/2014 09:48:01
Messages: 8
Offline

Thanks for figuring this out, I now get the following results with this setup:



sleep current when powered from 4x AA NiMH Eneloop on VIN: 0.02 mA (19.8 uA to be exact)

I can definitely live with that, should allow for quite some battery life time.

This could probably still be improved by bypassing the voltage regulator and powering straight to VCC, but definitely good enough for now to finally deploy a battery powered wireless field node
bobp



Joined: 11/12/2014 09:53:31
Messages: 1
Offline

Nice job working this out!

Ran across this recent report from Jack Ganssle on ultra-low power ...

Hardware and Firmware Issues in Using Ultra-Low Power MCUs, Dec 2014

Lot's of interesting info on sleep current vs. sleep time, technique to check voltage as you ramp up frequency/clock from wake-up, battery droop, choosing de-coupling capacitors carefully, and more. He emphasizes "successful low-power design requires careful analysis of every component used ...", which folks have clearly flushed out here.
haqthat



Joined: 16/02/2015 16:14:47
Messages: 3
Offline

I have desoldered the pull-up resistor as mentioned, but I still see .40ma current draw.
I am doing a:

RadioHead library: radio.sleep();
LowPower library: LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);

That's as low as I can get my board to go, it has a rfm69 on it.

What could I be doing wrong?
haqthat



Joined: 16/02/2015 16:14:47
Messages: 3
Offline

Additionally trying to sleep the flash seems to lock up the board.
All Serial output stops even if I try to init the flash.
The best I've been able to achieve so far is .4mA by sleeping the radio and the mc

Any ideas?

empeka



Joined: 21/12/2014 05:56:01
Messages: 18
Offline

I'm pretty sure your flash's manufacturer id is not 0.
Fix this and you should be fine
stevech



Joined: 07/07/2014 18:07:27
Messages: 91
Offline

Spansion is ID 1 in all I've worked with.
haqthat



Joined: 16/02/2015 16:14:47
Messages: 3
Offline

empeka wrote:I'm pretty sure your flash's manufacturer id is not 0.
Fix this and you should be fine


That seems to have been it.

changed to:


and it worked.

.04ma during sleep now.
srusha



Joined: 03/06/2015 12:36:37
Messages: 2
Offline

Hello, I'm also trying to lower my power consumption with no success so far,

I followed this entire thread, but I only get 6.8ma, I have the miniwireless with rfm92w.

this is my code:

any help would be greatly appreciated.

Thanks!

This message was edited 2 times. Last update was at 03/06/2015 12:40:04

 
Forum Index » Anarduino
Go to:   
Powered by JForum 2.1.9 © JForum Team