Author Topic: Efficient use of coin cells  (Read 9465 times)

TomWS

  • Hero Member
  • *****
  • Posts: 1883
Re: Efficient use of coin cells
« Reply #30 on: August 14, 2015, 03:17:42 PM »
I certainly wasn't complaining about the lack of battery impact data, especially at this stage!  My main point was to try to figure out HOW or WHAT we even gather data pertinent to determine impact!   I'm not sure what would be important or what to instrument...

That's an excellent point. I don't even know where to start either. How do we measure without starting from a fresh cell for each trial? It would help if the state of a coin cell were completely defined by its current voltage under a given load but I doubt even that is true. If it were we could measure the discharge curve of one brand and then test how far different load structures bring us down the curve.

This feels strangely attractive - probably first order of business is NOT to get drawn into extended battery studies. I think my criterion will be that I expect no load voltage to return to its level before install some time after install. An install should not cost more that 1/100th volt. That probably won't work for a completely fresh battery - but it should for one in the 3v area.
From what I've seen in practice and from the data in the article you referenced, under no load even a practically dead battery will approach 3.0V.  I think the battery needs to be measured under a consistent load to monitor its health.  The load also needs to be present long enough to get the internal chemistry 'flowing' (might not be accurate description, but, I think, 'useful'). 

I'd entertain running a series of batteries, maybe from a few mfrs, with pulsed loads and measuring the voltage under load.  If done correctly, (at least two different pulse models), we should have enough data to extrapolate a useable model.  It would have to be aggressive enough to get data before WE are on Version 127 of our code  ;) but not so aggressive that we overstress the battery.  I'm thinking of maybe a Mega with 8 batteries tied to analog inputs and two different loads controlled by the SW.  One load to represent a 0.xxx mS x 16mA load every 3 seconds to represent listen mode and then a 45mA load for XmS every N minutes to represent a data transmission.

Ideas here would be useful...

Tom

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #31 on: August 15, 2015, 09:47:24 AM »
Quote
I'd entertain running a series of batteries, maybe from a few mfrs, with pulsed loads and measuring the voltage under load

Ha! Luckily someone has already done this - check this out. A fascinating read:

https://www.sics.se/~lmfeeney/publications/Files/wons14feeney.pdf

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #32 on: August 15, 2015, 10:37:58 AM »
One of the biggest still unanswered practical questions I have after reading these two papers is how load profile switching affects capacity. There is a paragraph in the first paper that suggests that as I switch from discharge curve a to b after using capacity c I should simply expect to move down curve b from the voltage implied by c. Meaning if I go to 0.3mA I will still reap specified capacity even after initially abusing the cell. That would be great since I could switch from burst downloads to simple downloads if the battery is old without any downside.

That could be easily tested and if true would drastically change the concept I had of a coin cell.

TomWS

  • Hero Member
  • *****
  • Posts: 1883
Re: Efficient use of coin cells
« Reply #33 on: August 15, 2015, 04:06:02 PM »
Joe, VERY interesting article! Thanks!

One of the key observations that I got from this last paper is that, for a given average current (ie, pulse current x duty cycle), you're able to draw MORE capacity from the coin cell with the higher pulse current (lower duty cycle).  This is very good news from an operating perspective.  The problem, as you say, is how to correlate this to your OTA programming model.  Clearly the battery can handle the high current for SOME duration as long as you have a sufficiently long recovery time. 

As you've pointed out, how long the battery can sustain the high current can be first order observed by measuring the VBat after each high current pulse (AKA downloaded packet) and deciding how close to the cutoff voltage you dare go before resting.  Since presumably you need a response to stop the flow, you need enough remaining voltage to make that transmission (unless you need a response to send the next block - but I suspect that uses more current in burst download mode). 

The next important metric would be how long does it take to recover enough to do another burst.  This might be the tricky part as you would need to wake up and do a VBat sample to see how much it has recovered.  The good news is that you'll never 'accidentally' measure the no load voltage - by virtue of the fact that you'll draw a few mA just to take the reading, so this should show you how much the battery has recovered and, with some amount of experimentation, allow you to project how long before you can check again... a simple heuristic should be able to converge on an adequate recovery time with just a few samples.

Unfortunately, it doesn't take long for the battery voltage to sink down to the low 2.xxx volts so it would be interesting to see if you could do more than 4 1024 byte blocks without resting.  However, I wouldn't think you'd need to go to any extremes WRT resting.  As long as you can recover enough to get the next 4K block to the device, once it's fully loaded, the device will be able to rest and recover most of its lost voltage, apparently without losing very much capacity.

Even if OTA did adversely affect your overall battery life, being able to do four OTA updates, for example, and still get several months of life it would be a great solution.

Tom

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #34 on: August 16, 2015, 12:57:43 PM »
Ironically the practical implication of the paper is that you don't need a cap at all to pull down (more than) specified capacity under a pulsed load with low duty cycle. Which is great - simpler circuit. Also I'm going to take the opposite position of my earlier assumption: the over-proportional voltage decrease under larger load is fully reversible and so as you imply in your message all you need to do in software is prevent voltage temporarily breaking below minimum operating voltage.

In other words we can have all the luxuries of better batteries (like burst downloads etc) until we hit the bottom. Then we just wait until voltage recovers. Happiness!
« Last Edit: August 16, 2015, 03:00:16 PM by joelucid »

TomWS

  • Hero Member
  • *****
  • Posts: 1883
Re: Efficient use of coin cells
« Reply #35 on: August 16, 2015, 02:26:12 PM »
In other words we can have all the luxuries of better batteries (like burst downloads etc) until we hit the bottom. Then we just wait until voltage recovers. Happiness!
Unless you go too far and you can't programmatically rest.  Then you're toast.  I do agree that it seems as if the battery will support this usage model and we're on the right track to something very useful (and tiny!).

On a somewhat related note, I have had my TTH Mote stop responding to wake up bursts on two occasions in the last week.  I normally generate the wake up burst every ten minutes from my gateway but I can also generate a wake up burst from my Snooper.  I tried this as well, but this also did not wake up the mote.  I'll have to put a scope on it to see if its still going through listening cycles when it's not responding, but wondering if you've seen this at all.

This is potentially the downside of ONLY listen mode - no way to wake up a Mote refusing to listen.

Tom

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #36 on: August 17, 2015, 09:47:42 AM »
Quote
So if a wake up burst hasn't happened within the counting window, you treat it as a 'wake up' anyway, yes?

Yes, this is because I'm not using the burst wake-ups instead of the WDT to save power yet in production. I've only used them to interact with my nodes more quickly so far. Of course I do hope to do this when my coin cell motes are ready. Did you find out if the listen spikes were still occurring?

Quote
also change my BOD bits to 1.8V BOD, rather than disabled

I would definitely use this to prevent the mote from hanging if voltage goes too low. You need a clean reset instead of a rogue mote!

Quote
With my version 2 circuit I can keep the radio completely powered off if I find that the voltage is too low on startup to risk a transmission.  I can then go into an extended recovery period until there seems to be enough power to, at least, report the low battery condition...

You could do this without the switch for transmissions of course. They key benefit of your circuit is that you can start the system if the coin cell is too weak to get over the 2.5mA or so bump the rfm69hw requires to start. Of course since we're moving towards no bulk caps on board it's questionable whether any hope of transmission with such a cell is reasonable - but maybe it is with a temporarily impaired battery that just needs some time out.

BTW, I read a couple of other papers on coin cells and I haven't found a single one by other authors that found high current, low duty cycle discharge capacity to be superior to continuous discharge using the same average current. I have found others that confirm that higher current gives better results than lower (e.g. http://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=4587&context=etd) - but at best approaching continuous discharge capacity.

So I think it's likely that this result is bogus. I'm particularly skeptical after finding the following comment in an earlier paper by the same authors (https://www.sics.se/~lmfeeney/publications/Files/wwic13_rohner.pdf):

Quote
Experimental data from our battery testbed. The mA-h that can be taken from
the battery (at a given voltage) depends on the load pattern. CI9 has a slightly shorter
load duration (mean current 262ľA) due to a limitation in the testbed
.

For the other loads they use 300uA - so this is more than 10% less! And it's the only load that managed to be better than continuous discharge in the other paper.

There is another caveat: they don't use constant current, but just several different resistors which at 3V result in the stated nominal currents. This means that as the battery gets old and voltage breaks down they are really kind to it by drawing lower currents. That's clearly different from what the rfm69w will do.

Still I think the conclusion that with super low duty cycles a large bulk cap makes little sense likely holds true.

TomWS

  • Hero Member
  • *****
  • Posts: 1883
Re: Efficient use of coin cells
« Reply #37 on: August 17, 2015, 10:20:11 AM »
Did you find out if the listen spikes were still occurring?
No, I haven't had time to set this up.  I may  have to scurry to try to measure this if the mote hangs again, however.

I've modified my code (but haven't loaded yet) to do the counting listen cycles and added a battery check on start up with the processor still at 1MHz clock.  I stay in this sleep/check loop until the battery level gets above the threshold hopefully giving me enough 'juice' to report the low battery condition.  I'm starting with a low battery threshold of 2.700V since this seems to be a reasonable 'knee' for a lightly loaded weak battery and will refine it as time goes on.

Quote
There is another caveat: they don't use constant current, but just several different resistors which at 3V result in the stated nominal currents. This means that as the battery gets old and voltage breaks down they are really kind to it by drawing lower currents. That's clearly different from what the rfm69w will do.
They do state that they use the Vmin as the 'voltage' in their plots.  However, they do treat their load as a constant current, rather than resistance so their results will be affected by this. Even so, I do suspect that very short duty cycles or, more precisely, very long recovery times, do allow the battery chemistry to recover capacity that would not be available with a constant drain so I'm not prepared to dismiss these findings yet.
Quote
Still I think the conclusion that with super low duty cycles a large bulk cap makes little sense likely holds true.
Totally agree with this!  So I'm not tossing my V1 PCBs yet!   :D

Tom

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #38 on: August 18, 2015, 02:40:09 AM »
I don't think soldering to the battery case would be healthy for the battery.  In my case the battery holder only adds Z dimension (approximately 4-5mm), it takes no additional X/Y space as it straddles the radio module.

I've got to say I'm starting to like this cr2450 package: http://www.digikey.com/product-detail/en/CR-2450%2FH1AN/P662-ND/2404067

It effectively takes as much space and costs hardly more than the cr2032 with a battery holder but you can solder them directly to the board. And with 620mAh you probably don't need to change them in this life either. Lastly the larger diameter should allow higher pulse currents.

Somehow I really don't like the idea of putting a battery holder that will only be used once on a space constrained board.

TomWS

  • Hero Member
  • *****
  • Posts: 1883
Re: Efficient use of coin cells
« Reply #39 on: August 18, 2015, 09:13:23 AM »
I don't think soldering to the battery case would be healthy for the battery.  In my case the battery holder only adds Z dimension (approximately 4-5mm), it takes no additional X/Y space as it straddles the radio module.

I've got to say I'm starting to like this cr2450 package: http://www.digikey.com/product-detail/en/CR-2450%2FH1AN/P662-ND/2404067

It effectively takes as much space and costs hardly more than the cr2032 with a battery holder but you can solder them directly to the board. And with 620mAh you probably don't need to change them in this life either. Lastly the larger diameter should allow higher pulse currents.

Somehow I really don't like the idea of putting a battery holder that will only be used once on a space constrained board.
Yeah, after I posted that message I remembered seeing CR batteries with tabs and found that the Renata 2450 (CR2450NFH-LF) would actually fit into my battery holder footprint because it has pins instead of the wider tabs that Panasonic has with the same 20mm spacing of the holder.  Renata also has a CR-2477 (960mAH) if you really want your mote to outlive you  ;)
Renata is also closer to your home  :)

The only struggle I have using the holder is the added Z dimension.  In my case, since it's straddling other parts, the holder also serves as a mechanical support and insulator.  It doesn't consume any X or Y space other than its pads, which I would need for these tabbed versions anyway.

Tom

WhiteHare

  • Hero Member
  • *****
  • Posts: 1297
  • Country: us
Re: Efficient use of coin cells
« Reply #40 on: August 27, 2015, 10:05:32 AM »
Amazingly there is no leakage current to speak of at the cap after some charging time.


By leakage current are you referring to self discharge? 

I recently purchased a 310 Farad Maxwell capacitor, the size of a D-Cell and obviously too big for your current project,  just to get a feel for it for some possible moteino supervised solar applications.  I did some quick measurements a few months ago, and although it obviously can hold a good charge, it also loses a lot of it through a very noticeable self discharge rate.  So, if you've found a class of capacitors which don't suffer from that, I'd be very interested to know what type they are.
« Last Edit: August 27, 2015, 10:07:04 AM by WhiteHare »

joelucid

  • Hero Member
  • *****
  • Posts: 869
Re: Efficient use of coin cells
« Reply #41 on: August 27, 2015, 10:58:14 AM »
I think http://www.reichelt.de/SPK-100-000-10/3/index.html?&ACTION=3&LA=446&ARTICLE=43281&artnr=SPK+100.000%C2%B5-10&SEARCH=superkondensator was the one I tested most. It's 0.1F.

I pre-charged it and then hooked it up with a Moteino (without voltage regulator) and a CR2032. I measured the current from the coin cell to the circuit. Initially the current was pretty high - maybe 20-30uA. But after maybe half an hour it was down to about what the Moteino needs without the supercap.

Supercaps are tricky. There are large charge rebalancing effects that look like leakage current. So you want to be sure to wait pretty long if you measure. That also goes for voltage measurements after load. Voltage will drop fairly quickly but recover with if the load is taken off as charges within the cap rebalance.

All that said the current theory is that caps are not needed for coin cell motes: You only need to write your code such that a weak coin cell has time to recover between load pulses. The ~10ms pulses that we typically need from a battery should be possible without caps until very close to EOL of the battery.