LowPowerLab Forum

Hardware support => Low Power Techniques => Topic started by: joelucid on January 30, 2016, 04:36:01 PM

Title: A new sleep mode using 225 nA
Post by: joelucid on January 30, 2016, 04:36:01 PM
Hey guys,

As by-product of a low-power project I'm working on I came up with an idea:

What if a Moteino could cut it's own power supply? You could get rid of the LDO, put the radio to sleep and enter powerDown mode with neither the brown out detector nor the watchdog timer. Your Moteino would then run on its 10uF cap on ~150nA for the 328p + 100nA for the radio in sleep.

As the Moteino draws down the power from the cap it will reach the power-on reset threshold of 1.3V and trigger a reset. If you could then power up it up again the process would start from the beginning.   

Now how could you cut and restart power? Well check this out:

(http://s11.postimg.org/80kuoolk3/vcccut.png)

It's just a high side switch with an inverter in front.

When the 328p is in reset the GPIO pins are put into tri-state and the pull-down pulls down the gate of the first mosfet. This will power up the Moteino. Then you query your sensors and send your data to the gateway. And finally you switch on the GPIO port (a simple digitalWrite( port, HIGH) will do) and thereby cut your cord.

It's amazingly simple when compared to approaches like https://hallard.me/category/ulpnode/. Plus as I tested today it actually works. And you can do it with parts you might have lying around. An added benefit is that your Moteino comes up clean every time - no possibility of getting stuck due to problematic sleep code.

When I use this circuit with a normal Moteino, LDO removed, running at 8Mhz, powered at 2.6V I get a rather convenient cycle time of about 70 seconds. Which is actually much better than I would expect: dU * C / t = I. I get a reset at 1.3V, so dU = 1.3V. The bulk cap on the Moteino is 10uF and I cycle in 70 seconds. So I = 185 nA, which is pretty amazing. Actually you have to add something like 40nA for R10 which is powered from VCC, so total 225 nA.

Clearly this doesn't work for everything. Anything that actively needs to react to time critical interrupts etc in real-time won't. Listen mode isn't included etc - so I doubt I will use it too much in practice. But I still thought it was cool enough to share.

The huge size of the pull-ups is obviously a worry. If you use conformal coating or potting it might work long term without humidity issues. Anybody up for a cord cutting circuit that's simpler than this?

http://ambiqmicro.com/am18xx-ultra-low-power-rtc could do it. But discretely?


Cheers, Joe
Title: Re: A new sleep mode using 225 nA
Post by: emjay on January 30, 2016, 06:02:39 PM
@joelucid,

Neat idea, but may not give the savings you anticipate.  There is an energy cost for waking up from a complete cold start.
For example, the RF Module goes through a bunch of houskeeping once Vdd ramps up for several ms with a current draw of many mA. So the uCoulombs consumed can easily outweigh leaving the module initialised, but asleep - depending of course on the overall length of the desired sleep period.
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on January 30, 2016, 06:35:34 PM
Quote
So the uCoulombs consumed can easily outweigh leaving the module initialised, but asleep - depending of course on the overall length of the desired sleep period.

That's of course correct. It seems from what I've seen so far though that the 328p goes into power-on reset before the radio, possibly avoiding this pitfall. I'll look into this and into radio startup costs and share what I find.

If restart costs are prohibitively high for a 70s cycle you could add a larger cap for slower nodes or switch power to the radio using a mosfet, too. Actually there's really no good reason to keep the radio on during sleep if you need to restart it at the end of the cycle anyway.
Title: Re: A new sleep mode using 225 nA
Post by: TomWS on January 30, 2016, 06:49:37 PM
If restart costs are prohibitively high for a 70s cycle you could add a larger cap for slower nodes or switch power to the radio using a mosfet, too. Actually there's really no good reason to keep the radio on during sleep if you need to restart it at the end of the cycle anyway.
You could power the radio directly from the load switch and use a blocking diode to isolate the Moteino with Cap leaving them as the only load on the the cap.  A larger cap wouldn't take much space either.

What do you plan to use for persistent storage so that you know how many cycles you've run before contacting your gateway?  I'm assuming that you're not going to do that every power cycle.

ISTM, if you're giving up Listen Mode and restarting the proc/radio, then the RTC approach is not only much lower power, but also more accurate and much longer intervals between power ups.  You do have to calibrate that RTC if you want accurate time keeping.  It's good enough to be sufficiently accurate over a few hours(~200PPM), but needs calibration beyond that.

Tom
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on January 30, 2016, 10:38:16 PM
I'm curious to know how the total energy consumed by the 70 second version of this compares with the energy consumed by  the 65 second radio noise wake-up method (https://lowpowerlab.com/forum/index.php/topic,1325.0.html), since the two are of similar duration.  The radio noise method has the virtue of not needing any extra parts, but Joe's new method has the virtue of being extensible to longer sleep periods and, it sounds like,  potentially greater energy savings.

Title: Re: A new sleep mode using 225 nA
Post by: joelucid on January 31, 2016, 04:17:46 AM
Quick update:

I tested power consumption during restart by writing a simple sketch that initializes the radio, sleeps it and cuts the power. To my dismay restart took around 20ms and was very costly. I then drilled into the details of radio initialization and distilled the minimum required to sleep it. This is what remains:

Code: [Select]
#include <SPI.h>
#include <RFM69.h>
#include <RFM69registers.h>
#include <LowPower.h>

#define SELECT ( 1 << 2 )
#define CUTPOWER ( 1 << 5 )

void setup()
{
  // shut off ADC
  ADCSRA = 0;
  // shut off all units not needed
  PRR = _BV( PRTWI ) | _BV( PRTIM0 )| _BV( PRTIM1 ) | _BV( PRTIM2 ) |
    _BV( PRUSART0 ) | _BV( PRADC );

  // Setup slave select
  PORTB |= SELECT;
  DDRB |= SELECT;
 
  // set up SPI
  SPI.begin();
  SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV2);
 
  // Sleep radio
  while( true ) {
    PORTB &= ~SELECT;
    SPI.transfer(REG_OPMODE | 0x80);
    SPI.transfer(RF_OPMODE_SLEEP);
    PORTB |= SELECT;
    PORTB &= ~SELECT;
    SPI.transfer(REG_OPMODE & 0x7F);
    if( SPI.transfer( 0 ) == RF_OPMODE_SLEEP) break;
    PORTB |= SELECT;
  }
 
 
  // cut power
  PORTD |= CUTPOWER;
 
  LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF );
}


void loop()
{
}

With this code restart now takes less than 500us and very little power.

To measure current during restart I hooked up a 220uF tantal cap to the power supply and cut the cord. See the following scope trace. Channel 1 is voltage at the tantal ac coupled, channel 2 is voltage over the moteino.

(http://i.imgur.com/YVifobK.jpg)

As you can see voltage at the tantal drops around 65mV as the Moteino is recharged. Using dV * C / t = I again I get an average current of 200nA - even better than estimated earlier.

This might actually be for real!

Title: Re: A new sleep mode using 225 nA
Post by: joelucid on January 31, 2016, 04:28:29 AM
Tom,

Quote
What do you plan to use for persistent storage so that you know how many cycles you've run before contacting your gateway?  I'm assuming that you're not going to do that every power cycle.

So far this is just exploratory, but eeprom would be the obvious choice for persistent storage.

Quote
ISTM, if you're giving up Listen Mode and restarting the proc/radio, then the RTC approach is not only much lower power, but also more accurate and much longer intervals between power ups.  You do have to calibrate that RTC if you want accurate time keeping.  It's good enough to be sufficiently accurate over a few hours(~200PPM), but needs calibration beyond that.

First I have no intention of dropping listen mode. My current project is all about making listen mode work in a lifetime mote (as in a mote that will never require a battery change in your lifetime). That project requires switching off a buck converter during sleep which is where the circuit originates. It then just hit me that it could be used the way I presented.

I have an alternative design for the lifetime mote using the RTC but it requires more components and spoils the form factor a bit. So I'm glad that I can get (not quite) similar power savings with the cutting the cord approach should I ever want to.

If one just wants to go very low power as simply as possible few approaches can beat http://www.ti.com/lit/ds/symlink/tpl5010.pdf.

Joe 
Title: Re: A new sleep mode using 225 nA
Post by: TomWS on January 31, 2016, 07:45:33 AM
Joe,
I guess I'm missing how you would integrate Listen Mode and this shutdown technique.  Also, maintaining a counter (or state information) in EEPROM could quickly wear it out unless you move it around using a load leveling technique.

I still prefer the RTC approach because it allows you to schedule when you want to go to listen mode, when you want to report on a scheduled post basis, or when you want to simply 'sleep' (AKA powered off) for months on end...  It also has 256 bytes of battery backed up ram that you can use for persistent data.  And, given its power management hooks, it's simple to attach to a P MOSFET or LoadSwitch depending on your power source. 

If anyone is interested in this approach I might be able to post a reference design with just the proc, radio, and RTC (in a separate thread, of course  ;)

Tom
UPDATE: AND Coin Cell Battery, of course!
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on January 31, 2016, 11:18:55 AM
Quote
I guess I'm missing how you would integrate Listen Mode and this shutdown technique.

I think how it would work is when using the shutdown technique the Mote would regularly phone home to send data or status, pretty much like we did prior to listen mode. After each update the client would listen for a command from the server for a short period of time, also like earlier. I'd make one modification: I wouldn't just leave the client in rx after tx, but wait a couple ms and the switch on listen mode for a single rx cycle. If the server has something it sends back, it now sends a short burst of packets to ensure the client sees it.

Given this underlying dialog it would be easy to switch on listen mode selectively when you need it if you're very battery constrained.

Quote
Also, maintaining a counter (or state information) in EEPROM could quickly wear it out unless you move it around using a load leveling technique.

Ha - good point. I should have known there was a catch to your question  ;). For the counter this is easily solved though. Lets say we want the Mote to run for 100 years. That's about 53 million minutes. Each byte of EEPROM can be erased and written 100k times according to spec. If you think about it each erase / write cycle gives you 9 states: set each bit individually and then erase the byte. So we need 53m / ( 9 * 100k ) bytes for 100 years, which comes out to 59 bytes. 59 * 9 is 531 which would represent around 8 1/2h, so you could just set bits going from low to high bytes, the erase again left to right and take the count mod an appropriate number.

Point taken though. When you don't have RAM retention and no external RAM things are a bit more challenging. 

Quote
I still prefer the RTC approach because it allows you to schedule when you want to go to listen mode, when you want to report on a scheduled post basis, or when you want to simply 'sleep' (AKA powered off) for months on end...  It also has 256 bytes of battery backed up ram that you can use for persistent data.  And, given its power management hooks, it's simple to attach to a P MOSFET or LoadSwitch depending on your power source. 

I like the RTC, too. As I said I have an alternative schematic with the RTC. I'm not decided between both, yet. A lot depends on how the boards will layout. Like you say the RTC has a big advantage in my use case: it can serve as voltage supervisor and switch the buck on periodically to avoid a reset. That's clearly more elegant than the approach of either waiting for a reset, or (if using listen mode) periodically triggering recharges from the 328p.

Quote
If anyone is interested in this approach I might be able to post a reference design with just the proc, radio, and RTC

Oh, definitely. I'd like to see it. I'd like to cross check what I've done. I plan to post my designs here as well when they are ready.

Joe
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on January 31, 2016, 12:51:01 PM
Just a thought, but I wonder how it would compare if you hooked the interrupt pin from the radio to your Moteino power-up circuit and let both the circuit and the atmega328p go dead while the radio ran directly from the battery, but in a listen-mode with a very long sleep cycle (100na while asleep).  It would be similar to the old way of doing listen-mode, but the atmega328p and flash would be totally powered off rather than sleeping.
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on January 31, 2016, 02:13:22 PM
Quote
in a listen-mode with a very long sleep cycle (100na while asleep)

Unfortunately the rfm69hw draws 1.2uA in idle. So saving 150nA for the 328p isn't really worth the trouble. That's why finding another wake mechanism gives such a nice payoff. We've come a long way since using the wdt with 4uA!
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 09, 2016, 03:31:58 AM

As the Moteino draws down the power from the cap it will reach the power-on reset threshold of 1.3V and trigger a reset. If you could then power up it up again the process would start from the beginning.   


Cheers, Joe

Is it safe to run the atmega at 1.3v?  I had thought anything lower than 1.8v was chancing corruption.

BTW, I wonder if two or three of these could be put in series to make a high efficiency charge pump?  For instance, maybe I could convert a dumb  solar LED garden light, which runs on one AA Ni-Cad battery, to power a Moteino without frittering away most of its stored energy on an inefficient boost converter.
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on February 09, 2016, 05:18:55 AM
Quote
Is it safe to run the atmega at 1.3v?  I had thought anything lower than 1.8v was chancing corruption.

Running it at 1.3v is certainly not safe. But it seems the 328p can snooze in powerDown at (slightly above) these levels without problem if you reset afterwards. I haven't found anything in the data sheet on this question but it does seem to be at least conceptionally supported by the fact that you can disable the BOD during powerDown.

Quote
BTW, I wonder if two or three of these could be put in series to make a high efficiency charge pump?

I don't think that charge pumps are generally more efficient than boost converters. Plus you have the bootstrap problem. The way to achieve voltage conversion with very high efficiency at ultra low currents is to only run the converter intermittently and smartly disconnect it in between.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 09, 2016, 12:10:25 PM
Thanks!  Now I just need to find an energy storage vessel with a ultra low leakage current or else the benefit of running everything else on mere nanoamps will be just a rounding error.  The best Maxell supercap that I know of has a 6uA leakage current, which is a lot of waste in comparison to a 35nA RTC or a 150nA atmega328p.

BTW, you may or may not be interested in these:  http://www.cymbet.com/products/enerchip-real-time-clocks.php
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on February 09, 2016, 12:14:08 PM
Just use a 100uF ceramic. They are available even in 0806, have super low esr and <30nA leakage. Capacity degrades with DC bias so gong for at least 6v rated voltage is recommended even if it will increase size a little.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 09, 2016, 03:00:23 PM
Thanks for the suggestion!  Of potential interest, I notice that jcw (the jeelabs guy), who has a related objective and constraints with his RFM69 + mcu project, started with 100uF caps for energy storage but later decided to upgrade to 470uF:  http://jeelabs.org/2015/05/13/micro-power-snitch-success/index.html
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on February 10, 2016, 08:33:11 AM
Quote
started with 100uF caps for energy storage but later decided to upgrade to 470uF

That obviously depends on what the cap will be driving. His project is also different in that leakage doesn't matter. 470uF electrolytic caps are not low leakage.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 11, 2016, 01:27:36 PM
The way to achieve voltage conversion with very high efficiency at ultra low currents is to only run the converter intermittently and smartly disconnect it in between.

I took another pass at this, and it looks as though the savings would accrue from avoiding the quiescent current, which on an LTC3531-3.3 would be 7uA.  Looks as though the WAKE pin on a TPL5010 could simply be wired to the !STDN pin on a LTC3531-3.3 (http://cds.linear.com/docs/en/datasheet/3531fb.pdf), used to charge the cap, and voilà.  The WAKE pulse lasts 20ms, and the turn-on time for the LTC3531-3.3 takes less than 2ms, so it can buck/boost a solid 18ms per cycle with no need to wake the atmega.  So, doing the tally for the "typical" case between wake-ups:
sleeping atmega: 100nA
sleeping RFM69: 100nA
shutdown LTC3531-3.3: 100nA
TPL5010:  35nA
Total: 335nA
So, not as thrifty as your circuit between wake events.  I don't know what the periodicity of the wake-cycle would be, but if I were to go this route, I'd probably use either an RTC or another TPL5010 to wake the atmega as infrequently as possible.  So, that would bring the total to, say, 370nA. 

If those numbers proved out, that would open whole new horizons.     What's next after that?   ;)

Title: Re: A new sleep mode using 225 nA
Post by: TomWS on February 11, 2016, 02:01:53 PM
Looks as though the WAKE pin on a TPL5010 could simply be wired to the !STDN pin on a LTC3531-3.3 (http://cds.linear.com/docs/en/datasheet/3531fb.pdf), used to charge the cap, and voilà.  The WAKE pulse lasts 20ms, and the turn-on time for the LTC3531-3.3 takes less than 2ms, so it can buck/boost a solid 18ms per cycle with no need to wake the atmega.
The TPL5010 doesn't produce a WAKE pulse without receiving a DONE pulse from the MCU - that's the watchdog interlock.  It will produce a periodic RESET, but that's 320mS long.

Tom
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on February 11, 2016, 02:03:37 PM
Quote
shutdown LTC3531-3.3: 100nA

Except you'll find that shutdown will drain the cap - so you need to do a bit more. And if wake is on shutdown how does the system initially bootstrap? On the upside once this works you can put a factor of 1/3rd to your currents when using a 9V battery.

But what I meant with the tpl5010 being the simplest route to very low power is that you could just add it to an existing Moteino and have it provide the wakes. Drop the LDO, run from 2x aaa or coin and expend 280nA. Only takes one chip and doesn't require hugely restructuring your app. It's really simple.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 11, 2016, 05:19:34 PM

But what I meant with the tpl5010 being the simplest route to very low power is that you could just add it to an existing Moteino and have it provide the wakes. Drop the LDO, run from 2x aaa or coin and expend 280nA. Only takes one chip and doesn't require hugely restructuring your app. It's really simple.

Given the complexity of some of the alternatives, simple sounds pretty good.  :)

Is 280nA the number you calculated as the average current spread over a 2 hour cycle (the max period for a tpl5010), including the current from the brief atmega wakeup?  If that's what your math shows, then that does sound hard to beat.

As for a voltage boost scenario, the benefits of avoiding the quiescent current seem like they would be big enough that I wonder if specialized boost chips already exist that incorporate a similar circuit?

[Edit: wait, I just did the math.  If all the atmega does is wakeup once every 2 hours for 3ms (including the wake-up time) at an average current of 2ma during that 3ms, then the that increases the average current drain by just 1 nanoamp over that two hour period.  In that case, the average current drain would be something like 236na (= 100na atmega + 100na RFM69 + 35na tpl5010 + 1na wake-up overhead) amortized over the two hours.]
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on February 11, 2016, 05:57:16 PM
I'm just counting 100nA for the radio, 150nA for the 328p and 30nA for the 5010. Brief awakenings cost next to nothing. Of course measurements and updates are extra.

That works if you don't need a voltage converter. And it's hard to beat unless you use the am1805.

Of course just to play Devils advocate: for my latest th mote I decided to go plain 328p + rfm69 with a new power optimization of listen mode and I'll come out at maybe 1.8uA. Sounds huge - but it still gives you close to a decade on cr2032 and it is less to solder. Which you will appreciate if you ever pass into the zone of custom pcb creation ...
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on February 11, 2016, 06:12:57 PM
Oops, that's right: 150na for the atmega, not 100na.  So, revising my math, that means 286na average current drain, which is in close agreement with your math.   Cool!  :)

[Edit: Even if it were to wake up every minute, then (if the wake-up current assumptions are reasonable), it would increase the average current by just 100na.  i.e. 385na average.  If it were to wake-up every 4 seconds, then the average current drain would be roughly equal to what you calculated above for listen-mode.

So, if one minute granularity were "good enough," I suppose you could afford to request the precise time every so often so as to keep things on track for a scheduled event, like maybe turning on/off some lights at a particular time. For finer granularity, you could switch-over to a more regular low power sleep library when you're within a minute of the event.  If using the RTC without a crystal oscillator, I suppose a similar strategy would also work to compensate for the lower ppm clock accuracy.]
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on October 25, 2016, 04:10:22 PM
I made a breakout board for the Si1869DH, and I can post the gerber and drilling files which are conveniently zipped and ready for fab if anyone would like it.  It would, for example, cost $0.20/board on OSH Park, including shipping (minimum order 3).

The datasheet (http://www.vishay.com/docs/73449/si1869dh.pdf) doesn't include a land pattern, so I used the land pattern for the SC70 on page 44 of http://ww1.microchip.com/downloads/en/PackagingSpec/00049BK.pdf

If there's interest, I can make one for the Si2356DS also (see original post), and then folks can play around with the OP circuit on a breadboard.
Title: Re: A new sleep mode using 225 nA
Post by: perky on October 25, 2016, 05:25:22 PM
I'm afraid the leakage current of the FETs might scupper this idea. The  SI2356DS for example has 1uA max zero gate voltage drain current (Idss) at 25 deg C (admittedly at 40V), and this rises to 10uA at 40V for 55 deg C. It'll be less for lower voltages of course but it's still significant, and your 60M pull-up might not actually pull it up leaving the load switch FET permanently on. You are going to have to find ultra low leakage FETs I think.
Mark.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on October 25, 2016, 06:41:32 PM
I'm afraid the leakage current of the FETs might scupper this idea. The  SI2356DS for example has 1uA max zero gate voltage drain current (Idss) at 25 deg C (admittedly at 40V), and this rises to 10uA at 40V for 55 deg C. It'll be less for lower voltages of course but it's still significant, and your 60M pull-up might not actually pull it up leaving the load switch FET permanently on. You are going to have to find ultra low leakage FETs I think.
Mark.

@perky
Would REG02 serve the intended purpose of the OP circuit?  I made a breakout for it too that I'd be happy to share if anyone wants it.
Title: Re: A new sleep mode using 225 nA
Post by: perky on October 25, 2016, 07:26:13 PM
What is a REG02?
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on October 25, 2016, 07:41:26 PM
What is a REG02?

Sorry, I should have said REG102:  http://www.ti.com/lit/ds/symlink/reg102.pdf

The idea being to charge up the capacitor using the REG102 and then the atmega328p DISABLEs it, similar (if I'm understanding the notion) as to what the OP circuit was doing.  However, the quiescent current of the REG102 in the OFF state (i.e. when DISABLed) is much lower--just 10na.  When the voltage on the capacitor drops low enough, the atmega328p ENABLEs the REG102 again, and the cycle repeats.
Title: Re: A new sleep mode using 225 nA
Post by: perky on October 25, 2016, 08:31:06 PM
That's very interesting. This regulator specifies the output impedance as 600mR when VIN is less than the regulation voltage, which LDOs usually do but not generally specified explictly (it's actually related to the droput voltage and current). There's the ground current and also the enable current which are very low, they're logarithmic with temperature but if its below 50 deg C they're still pretty low. If you can cope with the 600mR output impedance this stands a much better chance of working I think.
Mark.
Title: Re: A new sleep mode using 225 nA
Post by: joelucid on October 26, 2016, 08:46:49 AM
FWIW these fets worked fine when I tested this setup. Generally I've found that the typical values of the various leakage currents are often an order of magnitude less than what's spec'd as max.
Title: Re: A new sleep mode using 225 nA
Post by: perky on October 26, 2016, 10:11:05 AM
The is generally true I think, but no guarantee you won't get a batch that are near their maximums so a bit dodgy for volume stuff. Did you test this at high temperature? There's a non-linear logarithmic relationship with leakage and temperature, that 60M resistor is only going to need 16nA to drop a volt and possibly turn the top FET on.
Mark.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on October 26, 2016, 08:36:40 PM
I  see that Joe has already proven out the REG102 concept, except using a buck regulator instead:  https://lowpowerlab.com/forum/low-power-techniques/making-a-lower-power-moteino/msg13181/#msg13181

I suppose even if the buck regulator circuit had a relatively high quiescent current when turned off, it might still come out ahead of a REG102 simply because the power conversion is more efficient, whereas the REG102 would be burning off as heat all voltage greater than 3.3v.  If there is a buck regulator that can be turned on/off like the REG102, and with a quiescent current when OFF as low as the REG102, it would be pretty cool.
Title: Re: A new sleep mode using 225 nA
Post by: perky on October 26, 2016, 09:45:58 PM
Well here's the thing. If you look at the voltage Vin against Vout curve you'll see it simply passes the voltage through until it regulates, and the spec says it acts like a 0.6R resistor while doing it, so you could just use 2 cells. If it was at 2.2V for Vin it's output would be 2.2V with a 0.6R resistor in series. Similarly for 3V, the output would be 3V with 0.6R in series. Vin doesn't need to be above 3.3V. This is how LDOs usually work, the MPC1703 is not actually typical in that respect (although the MPC1703A now has similar Vin v. Vout curves but the quiescent current is a little high). 
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on November 08, 2016, 10:59:17 AM
I'm afraid the leakage current of the FETs might scupper this idea. The  SI2356DS for example has 1uA max zero gate voltage drain current (Idss) at 25 deg C (admittedly at 40V), and this rises to 10uA at 40V for 55 deg C. It'll be less for lower voltages of course but it's still significant, and your 60M pull-up might not actually pull it up leaving the load switch FET permanently on. You are going to have to find ultra low leakage FETs I think.
Mark.

@perky Just a rough idea, but how about substituting the  SI2356DS with TI's TPS22860 instead?  http://www.ti.com/lit/ds/symlink/tps22860.pdf 
Ultra-Low Leakage Current
– VIN Leakage Current = 2 nA Device Information(1)
– V BIAS Leakage Current at 5.5 V = 10 nA
Would that overcome your concerns?
Title: Re: A new sleep mode using 225 nA
Post by: perky on November 08, 2016, 12:22:32 PM
Mmm. Interesting part, but unfortunately Figure 1 (Ron v. Vout) gives pretty poor output impedance at lower bias voltages. Unless you have a higher Vbias available this would mean a large voltage drop as batteries deplete.

The killer here is always the voltage drop due to resistance when using batteries down to depletion levels, not only have you got higher internal resistance of the batteries themselves to deal with but any load switches or input circuitry resistance as well. It's almost like you really need supercaps to hold enough energy to do a full TX/RX cycle and only gradually top that up between cycles using much lower currents.

Mark.
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on November 08, 2016, 12:51:03 PM
It's almost like you really need supercaps to hold enough energy to do a full TX/RX cycle and only gradually top that up between cycles using much lower currents.


I was leaning that direction anyway--a cap and no battery--just to get a feel for the whole energy harvesting thing by using only ambient light and the power scavanged from a cheap solar cell (canabalized from a $1 garden light).  How much Farad, when fully charged to 3.3V, do you calculate would be needed to support a full transmission?  Order of magnitude is good enough.  I was going to determine an answer experimentally by just plugging in different value caps and seeing which would support a full transmission, but if you have a ballpark on the cap value, it might save a few steps of testing.
Title: Re: A new sleep mode using 225 nA
Post by: perky on November 08, 2016, 01:12:09 PM
OK, back of a fag packet calculation:

Energy in a cap is C(V*V)/2. Let's assume you could have an allowable drop from 3.3V to 2V for a full transmission, which lasts 10ms and takes a constant current of 100mA.

We'll give a very worst case energy used during transmission and say that's at constant 3.3V (voltage is dropping from 3.3V to 2V so this is worst case). Energy is power times time, so that's 3.3*100e-3*10e-3, i.e. 3.3mJ. That has to be equal to the loss of energy in the caps, so:

C*(3.3*3.3)/2 - C*(2*2)/2 = 3.3e-3.

C = (2*3.3e-3)/(3.3*3.3 - 2*2), which is roughtly 958uF. So you're looking at 1mF at least as a ball-park.
Mark.

Edit: Also remember that to charge this cap up you'd ideally want to to do it in an energy efficient manner. Just using a resistor will waste power in that resistor due to the I^2R losses. So some buck-boost regulator might be needed, but one that uses very low current (possibly even a switched capacitor regulator, although I have no real idea how efficient that might be). Unless of course you simply keep it charged up continually by the source and use a load switch to isolate it while transmitting..
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on November 09, 2016, 03:02:41 PM
OK, back of a fag packet calculation:

Energy in a cap is C(V*V)/2. Let's assume you could have an allowable drop from 3.3V to 2V for a full transmission, which lasts 10ms and takes a constant current of 100mA.

We'll give a very worst case energy used during transmission and say that's at constant 3.3V (voltage is dropping from 3.3V to 2V so this is worst case). Energy is power times time, so that's 3.3*100e-3*10e-3, i.e. 3.3mJ. That has to be equal to the loss of energy in the caps, so:

C*(3.3*3.3)/2 - C*(2*2)/2 = 3.3e-3.

C = (2*3.3e-3)/(3.3*3.3 - 2*2), which is roughtly 958uF. So you're looking at 1mF at least as a ball-park.
Mark.

Edit: Also remember that to charge this cap up you'd ideally want to to do it in an energy efficient manner. Just using a resistor will waste power in that resistor due to the I^2R losses. So some buck-boost regulator might be needed, but one that uses very low current (possibly even a switched capacitor regulator, although I have no real idea how efficient that might be). Unless of course you simply keep it charged up continually by the source and use a load switch to isolate it while transmitting..

Thanks, Perky.   :)
Title: Re: A new sleep mode using 225 nA
Post by: WhiteHare on November 15, 2016, 11:41:50 PM
Regarding the original post, I notice that a chip like the LTC2935 (datasheet: http://cds.linear.com/docs/en/datasheet/2935fa.pdf) might also be used to turn the circuit on again.  That way you wouldn't have to wait for the voltage to fall all the way down to 1.3v, but could instead resume at 1.8v (or higher) if desired to stay within spec.

While the quiescent current is low (500na is "typical"), it's not as low as the OP circuit.  Also, it's not as minimalist or as inexpensive as the OP circuit either, and so those are possibly trade-offs.

More simply, though, I wonder if a diode might be used to drop voltage to a pin, say D3, so that the atmega328p can be awakened using pin change interrupt to restart the cycle, yet the atmega328p itself would still be powered at >= 1.8v (so as to stay within Atmel's spec)?