A solar supercap powered Moteino (15Farad charged by BQ25504)

Started by WhiteHare, February 07, 2017, 05:31:03 PM

Felix

Just a blocking shottky. Here's the cap and solar cell that charges the supercapacitor and an 8mhz Moteino with a ceramic antenna for comparison. Hopefully I get some time soon to run some tests with this charged cap.

Not sure if I missed anything, but have you thought what's a good strategy to keep this from charging above 3.6v?


perky

Quote from: Felix on March 04, 2017, 08:39:18 PM
Not sure if I missed anything, but have you thought what's a good strategy to keep this from charging above 3.6v?

I would imagine a shunting zener plus low value resistor would do (sized properly for power).

Mark.

Felix

Quote from: perky on March 04, 2017, 09:08:32 PM
I would imagine a shunting zener plus low value resistor would do (sized properly for power).

Isn't that effectively acting as a regulator? How would you configure that to be better than say the 1.6uA quiescent current of the MCP1700? They can regulate down to 1.2v with input limit of 2.3V.

WhiteHare

Quote from: Felix on March 04, 2017, 08:39:18 PM
Not sure if I missed anything, but have you thought what's a good strategy to keep this from charging above 3.6v?

Since you're using a blocking diode anyway, one approach would be to use a 4v panel and a blocking diode that drops 0.4v.  Then, the max it can charge to is 3.6v.

Part of the fun is that there are many possible solutions, and the more people give it a try, even more solutions will get thought of.

For instance, since energy stored is proportional to V^2, there may be cases where an argument could be made for  storing at a higher voltage and using a SEPIC to convert the stored energy to, say, 1.8v, for use by the Moteino. 


WhiteHare

The problem with the 5ms period on the listen-mode is that it's just so damn energy intensive.  0.64ma may not sound like much of a current draw, but it is for a supercap.  To illustrate, I charged a 50F supercap to 2.7v and hooked it to a Moteino doing the 5ms (0.64ma) energy draw, and then started logging the voltage measurements at 5 minute intervals:
685,[Sender:2],000,[RX_RSSI:-44]
686,[Sender:2],269,[RX_RSSI:-48]
687,[Sender:2],268,[RX_RSSI:-48]
688,[Sender:2],266,[RX_RSSI:-49]
689,[Sender:2],265,[RX_RSSI:-49]
690,[Sender:2],265,[RX_RSSI:-48]
691,[Sender:2],264,[RX_RSSI:-48]
692,[Sender:2],263,[RX_RSSI:-50]
693,[Sender:2],263,[RX_RSSI:-49]
694,[Sender:2],262,[RX_RSSI:-50]
695,[Sender:2],262,[RX_RSSI:-49]
696,[Sender:2],260,[RX_RSSI:-50]
697,[Sender:2],260,[RX_RSSI:-50]
698,[Sender:2],260,[RX_RSSI:-50]
699,[Sender:2],259,[RX_RSSI:-50]
700,[Sender:2],259,[RX_RSSI:-49]
701,[Sender:2],259,[RX_RSSI:-49]
702,[Sender:2],258,[RX_RSSI:-49]
703,[Sender:2],257,[RX_RSSI:-50]
704,[Sender:2],256,[RX_RSSI:-50]
705,[Sender:2],256,[RX_RSSI:-50]
706,[Sender:2],256,[RX_RSSI:-50]
707,[Sender:2],256,[RX_RSSI:-49]
708,[Sender:2],254,[RX_RSSI:-49]
709,[Sender:2],254,[RX_RSSI:-51]
710,[Sender:2],253,[RX_RSSI:-51]
711,[Sender:2],253,[RX_RSSI:-51]
712,[Sender:2],253,[RX_RSSI:-51]
713,[Sender:2],253,[RX_RSSI:-51]
714,[Sender:2],252,[RX_RSSI:-50]
715,[Sender:2],251,[RX_RSSI:-51]
716,[Sender:2],251,[RX_RSSI:-52]
717,[Sender:2],251,[RX_RSSI:-53]
718,[Sender:2],249,[RX_RSSI:-52]
719,[Sender:2],248,[RX_RSSI:-52]
720,[Sender:2],250,[RX_RSSI:-51]
721,[Sender:2],249,[RX_RSSI:-51]
722,[Sender:2],248,[RX_RSSI:-51]
723,[Sender:2],248,[RX_RSSI:-51]
724,[Sender:2],247,[RX_RSSI:-52]
725,[Sender:2],247,[RX_RSSI:-51]
726,[Sender:2],247,[RX_RSSI:-52]
727,[Sender:2],247,[RX_RSSI:-52]
728,[Sender:2],246,[RX_RSSI:-51]
729,[Sender:2],244,[RX_RSSI:-51]
730,[Sender:2],245,[RX_RSSI:-51]
731,[Sender:2],244,[RX_RSSI:-51]
732,[Sender:2],243,[RX_RSSI:-51]
733,[Sender:2],244,[RX_RSSI:-51]
734,[Sender:2],244,[RX_RSSI:-50]
735,[Sender:2],243,[RX_RSSI:-50]
736,[Sender:2],243,[RX_RSSI:-50]
737,[Sender:2],243,[RX_RSSI:-50]
738,[Sender:2],242,[RX_RSSI:-49]
739,[Sender:2],242,[RX_RSSI:-50]
740,[Sender:2],241,[RX_RSSI:-49]
741,[Sender:2],241,[RX_RSSI:-49]
742,[Sender:2],240,[RX_RSSI:-50]
743,[Sender:2],238,[RX_RSSI:-49]
744,[Sender:2],238,[RX_RSSI:-50]
745,[Sender:2],238,[RX_RSSI:-49]
746,[Sender:2],238,[RX_RSSI:-49]
747,[Sender:2],238,[RX_RSSI:-50]
748,[Sender:2],238,[RX_RSSI:-50]
749,[Sender:2],236,[RX_RSSI:-50]
750,[Sender:2],236,[RX_RSSI:-50]
751,[Sender:2],236,[RX_RSSI:-50]
752,[Sender:2],236,[RX_RSSI:-49]
753,[Sender:2],235,[RX_RSSI:-50]
754,[Sender:2],235,[RX_RSSI:-50]
755,[Sender:2],235,[RX_RSSI:-50]
756,[Sender:2],234,[RX_RSSI:-50]
757,[Sender:2],234,[RX_RSSI:-50]
758,[Sender:2],234,[RX_RSSI:-48]
759,[Sender:2],233,[RX_RSSI:-49]
760,[Sender:2],233,[RX_RSSI:-50]
761,[Sender:2],233,[RX_RSSI:-49]
762,[Sender:2],233,[RX_RSSI:-50]
763,[Sender:2],233,[RX_RSSI:-49]
764,[Sender:2],232,[RX_RSSI:-50]
765,[Sender:2],232,[RX_RSSI:-49]
766,[Sender:2],231,[RX_RSSI:-50]
767,[Sender:2],231,[RX_RSSI:-48]
768,[Sender:2],230,[RX_RSSI:-50]
769,[Sender:2],230,[RX_RSSI:-49]
770,[Sender:2],230,[RX_RSSI:-50]
771,[Sender:2],229,[RX_RSSI:-50]
772,[Sender:2],229,[RX_RSSI:-50]
773,[Sender:2],228,[RX_RSSI:-50]
774,[Sender:2],228,[RX_RSSI:-49]
775,[Sender:2],228,[RX_RSSI:-50]
776,[Sender:2],227,[RX_RSSI:-50]
777,[Sender:2],226,[RX_RSSI:-50]
778,[Sender:2],227,[RX_RSSI:-50]
779,[Sender:2],226,[RX_RSSI:-49]
780,[Sender:2],226,[RX_RSSI:-49]
781,[Sender:2],225,[RX_RSSI:-50]
782,[Sender:2],225,[RX_RSSI:-50]
783,[Sender:2],224,[RX_RSSI:-50]
784,[Sender:2],223,[RX_RSSI:-50]
785,[Sender:2],223,[RX_RSSI:-49]
786,[Sender:2],223,[RX_RSSI:-50]
787,[Sender:2],223,[RX_RSSI:-49]
788,[Sender:2],222,[RX_RSSI:-49]
789,[Sender:2],222,[RX_RSSI:-49]
790,[Sender:2],221,[RX_RSSI:-49]
791,[Sender:2],220,[RX_RSSI:-50]
792,[Sender:2],221,[RX_RSSI:-49]
793,[Sender:2],220,[RX_RSSI:-50]
794,[Sender:2],220,[RX_RSSI:-49]
795,[Sender:2],220,[RX_RSSI:-50]
796,[Sender:2],219,[RX_RSSI:-50]
797,[Sender:2],219,[RX_RSSI:-50]
798,[Sender:2],219,[RX_RSSI:-47]
799,[Sender:2],218,[RX_RSSI:-50]
800,[Sender:2],216,[RX_RSSI:-48]
801,[Sender:2],217,[RX_RSSI:-50]
802,[Sender:2],217,[RX_RSSI:-49]
803,[Sender:2],216,[RX_RSSI:-50]
804,[Sender:2],216,[RX_RSSI:-49]
805,[Sender:2],216,[RX_RSSI:-49]
806,[Sender:2],215,[RX_RSSI:-49]

The logged interval is a 10 hour timespan.  So, it's debatable whether even a 50F supercap is enough to make it through the night at this burn rate.

The 50F supercap I used was this one:  https://www.digikey.com/product-detail/en/avx-corporation/SCCV40B506MRB/478-10021-ND/6166281

A more energy efficient approach might be to have the Moteino ping the gateway once every, say, 100ms, and wait for an acknowledgment.  Since the response time should be deterministic, it wouldn't need to switch from standby to receive mode until just before the response is expected.  If the acknowledgment is just an ACK, then go back to sleep.  If, on the other hand, it contains an instruction to do something, then it facilitates the desired remote control functionality.  I think I'll try this next.

joelucid

QuoteNot sure if I missed anything, but have you thought what's a good strategy to keep this from charging above 3.6v?

With these small panels I'm sure just putting the radio into RX when voltage creeps above 3.6v should be a pretty effective strategy to avoid overcharging - saving the planet one component at a time.

I like the simple approach without integrated charger. But one thing that needs to be figured out is how to prevent the moteino from starting up until VCC exceeds 1.8V. Otherwise you'll never make it since both the radio and the 328p draw quite a bit while trying to start up. That's where the "power good" pin of the charger comes in handy.

Joe


perky

Quote from: WhiteHare on March 05, 2017, 06:58:10 AM
The problem with the 5ms period on the listen-mode is that it's just so damn energy intensive.  0.64ma may not sound like much of a current draw, but it is for a supercap.  To illustrate, I charged a 50F supercap to 2.7v and hooked it to a Moteino doing the 5ms (0.64ma) energy draw, and starting logging the voltage measurements at 5 minute intervals

Using t = C(Vs - Vf)/ I, where Vs = start voltage and Vf = end voltage, and assuming linear discharge, you should get
t = 50(2.7 - 1.8 )/0.00064 = ~70000 seconds, or 19 hours. In your logs your end voltage was 2.15V, so plugging that in gives
t = 50(2.7 - 2.15)/0.00064 = ~43000 seconds, or 12 hours. About right.

Mark.

WhiteHare

Quote from: perky on March 05, 2017, 09:13:52 AM
Using t = C(Vs - Vf)/ I, where Vs = start voltage and Vf = end voltage, and assuming linear discharge, you should get
t = 50(2.7 - 1.8)/0.00064 = ~70000 seconds, or 19 hours. In your logs your end voltage was 2.15V, so plugging that in gives
t = 50(2.7 - 2.15)/0.00064 = ~43000 seconds, or 12 hours. About right.

Mark.

Thanks for the math.  It inspired me to try it just a bit more by pressing the 3.5v panel up against the glass of the window.  Fortunately, it's a rainy, very overcast day here, so it's a good worst case test.  Nonetheless, even with the Moteino attached and in the 5ms Listen-Mode, it is gaining voltage at a very slow rate.  It's just before 9am here, so things should improve as the day goes on.  So, shall be interesting to see if it can make it back to 2.7v before nightfall.

WhiteHare

Well, it did fully recharge, and it's only 1:30pm in the afternoon.  So, evidently, it's viable.   :)

WhiteHare

Quote from: joelucid on March 05, 2017, 07:26:14 AM

I like the simple approach without integrated charger. But one thing that needs to be figured out is how to prevent the moteino from starting up until VCC exceeds 1.8V. Otherwise you'll never make it since both the radio and the 328p draw quite a bit while trying to start up. That's where the "power good" pin of the charger comes in handy.

You raise a good point. On the BQ25504, the threshhold voltages can be set by resistor values.   However, perhaps for the simple approach there's either a load switch or an n-channel mosfet that just naturally switches on/off between 1.8 - 1.9v? 

WhiteHare

No success thus far at receiving packets with the 128usec listen window.  Anyone else had success with that?  If I double it, then no problem.  If I use a 192usec listen window then it's hit or miss.

joelucid

QuoteNo success thus far at receiving packets with the 128usec listen window.

There's variation between modules as well: At 200kbit I used to use 256usec successfully (worked for maybe 20 nodes). But then one module needed 320usec, so that's what I'm using now.

I fully expect you to now implement automatic tuning to run each module at the shortest rx window possible  ;)

Joe

Felix

I suspect the ListenMode discussion can be separate from this supercap thread? If so lets start another thread dedicated to that and I can move the messages there, please let me know.
BTW my supercap has been discharging significantly after leaving it idle on my desk, not getting a lot of light. Now around 3.7V from 4.1V.

WhiteHare

Quote from: Felix on March 09, 2017, 09:10:30 AM
I suspect the ListenMode discussion can be separate from this supercap thread? If so lets start another thread dedicated to that and I can move the messages there, please let me know.
BTW my supercap has been discharging significantly after leaving it idle on my desk, not getting a lot of light. Now around 3.7V from 4.1V.

I posted the above before I had pinpointed the problem.  You can move it to this other thread if you want:  https://lowpowerlab.com/forum/moteino/what-is-the-shortest-framepacket-that-can-be-sent-and-still-received/msg18555/#msg18555

Regarding the supercap, is that the loaded or unloaded voltage you're measuring?  What led me to the original supercap that I posted about on this thread was that its unloaded voltage drop was exceptionally small (IIRC, something like 0.01v per day).  I haven't yet circled back to see what its loaded voltage drop is over time.  I now have the right tool for measuring that, whereas before I didn't.  I suspect that for less energy intensive applicatiions, it might still be a good choice, both for that reason and because of its relatively small size.

Felix

Quote from: WhiteHare on March 09, 2017, 09:33:33 AM
Regarding the supercap, is that the loaded or unloaded voltage you're measuring?  What led me to the original supercap that I posted about on this thread was that its unloaded voltage drop was exceptionally small (IIRC, something like 0.01v per day).  I haven't yet circled back to see what its loaded voltage drop is over time.  I now have the right tool for measuring that, whereas before I didn't.  I suspect that for less energy intensive applicatiions, it might still be a good choice, both for that reason and because of its relatively small size.
It's with the diode and solar cell attached, as seen in the photo I posted above.