Powering WiPy in deepsleep from a capacitor?

  • As many others my application is solar powered, with a 12V battery. My current workflow is a pretty simple:

    • measure ADC input
    • convert and send out over TCP socket
    • deepsleep for a few minutes

    I'm not an expert but it looks like most 12v-15v converters, even the most efficient types a) are much less efficient at very low output currents and b) have a zero load current much higher than the WiPy2 should have in deepsleep i.e. you are loosing a lot of the benefit of deepsleep since the converter drawing more power than it technically needs.

    The converter I'm looking at has an enable input, so I was wondering about, when the WiPy goes into deepsleep, powering off the converter and just maintaining the WiPy using a capacitor for a few minutes. When the timer fires to wake up the WiPy, enable the converter so the WiPy when drawing more current is being powered directly and at the same time charge up the cap. In this way the converter is being drive to probably a few hundred mA - where it is much more efficient but only running for a few percent of the time. Has anyone tried this or can anyone point me to a good starting point to try?


  • @robert-hh - Thanks - I'll get a couple and take a look. Since I only do this stuff for my own use, my volume scale is usually 1!

  • @guyadams99 About the form factor: The Pololu devices @Eric24 mentioned come in on a pretty small PCB, about to220 package sized, with part only on one side.

  • @Eric24 I have discovered an interesting artefact of my shoddy design. If the cap is discharged, there is no way to turn the whole system on - the buck is only turned on by the wipy, but this can't be powered up because the buck is off and the cap is empty. I ended up adding a momentary button from the battery +ve to the buck enable which you have to hold for a second or two to prime the capacitor to a high enough voltage to bring the wipy on to hold the buck enable pin high - but not really a good design. Perhaps I will look more at these low power bucks and try and find one in a form factor I can use (i.e. no surface mount soldering!)

  • @robert-hh Agreed. I only see the Pololu modules as prototyping parts (I have dozens of them for that purpose), not as anything that would go to production, so I'm less concerned about those details. However, I realize that some projects are small enough that using these kinds of modules in production is appropriate, so that's where the details--like you mention--start to matter.

  • @Eric24 The Pololu devices are nice and I like to use them. But there is a special aspect regarding it /SHDN input. It is connected by a 100k resistor to Vin. At 12V, when shut down, this resistor alone will cause a current of 120 µA. For this special application, that may not be an issue. But if you are fighting for every µA, that may be a surprise.
    (Sorry @guyadams99 for taking away the discussion a little bit)

  • @Eric24 I gave it a try with a LoPy, which worked fine down to 3V, at which point I stopped. The ESP32 data sheet gives a range of 2.3V - 3.6V for VDD.

  • @guyadams99 The regulator at Vin of xxPy switches to bypass mode if Vin is less than 3.4 V with a voltage drop of <60mV. L01 devices have no internal regulator.

  • @robert-hh Just a note on the Vin requirements--I can only comment on my personal experience, and I have not tried to power a XxPy on anything other than 5V when using the module's on-board LDO or 3V3 when bypassing the LDO (and 3V3 when powering an L01). So lower voltages may certainly work, I just haven't tried.

    @guyadams99 And definitely, if you power the module with less than the LDO's output rating, you are essentially passing through whatever the input is (less some small drop).

  • @robert-hh Good to know, thanks! I presume if Vin <3.3 V the 3V3 voltage will drop commensurately as well?

  • @guyadams99 OK. What you're using and the TI parts are miles apart. I now understand the problem. :) TI has (almost too many) low-IQ buck, boost, and buck/boost regulators--here's just one type (for 12V inputs): http://www.ti.com/lsds/ti/power-management/buck-converter-integrated-switch-products.page#p238max=12;42&p236typ=0.0003;100

    The one I referenced is suitable for a pycom OEM module. If you want to use a XxPy, you will need more voltage, but there are other variants of that same part that are 5V or adjustable (the same data sheet talks about all of them). I have (and currently) do use that exact part for an L01 module, and it works very well. The bad news is that you won't likely find it on a prefab module anywhere, so you will ultimately need to build a PCB. But in the mean time, TI offers "eval modules" for most/all of their parts (pricey, but OK if you only need one or two).

    If you need a prefab module long-term, you might check out Pololu's range of buck modules (many of them are based on TI or MAXIM low-IQ chips): https://www.pololu.com/category/131/step-down-voltage-regulators

  • @guyadams99 Vin can be as low as 3V. 3.3V works well.

  • @Eric24 - probably a bad one! I can't find the exact link, but very similar to http://www.ebay.co.uk/itm/272491103349. The TI one looks much better although - the part number you referenced is a 3.3V - have you had success with that (I was under the impression that Vin needed to be >3.4V) or were you just using this as an example? Thanks!

  • @guyadams99 Very interesting. I'm curious about the buck converter you're using. Have you looked into some of the ultra-low power parts from TI? Something like a TPS62132 with an IQ of 17uA?

  • @Eric24 - the current cap I'm using is a PowerStor: http://uk.rs-online.com/web/p/electric-double-layer-capacitors/7637826/. I agree there will be some energy loss and inefficiencies added here. My issue is less the lower efficiency of the buck converter at low output, and more the absolute no load current it has. I have my WiPy2 'power on time' down to <1 second so will have ~299 seconds of deepsleep in every 300 where I should be needing well under 1mA (i'm measuring 615uA, but I suspect I am at the resolution limit of my multimeter!). However the no load draw of my buck converter is about 20mA (and this is on the input side, i.e. 12V), so I'd be drawing roughly 20mA at 12V for 299 seconds that I don't need. I don't actually have the buck converter with the enable pin at the moment, it's in the post, so I have mocked up simply by using a GPIO (set to 1 at the start of boot.py and set to 0 just before the deepsleep) to energise a relay on the 12V input to the buck converter i.e. the relay is only energised and and the buck converter only sees an input voltage for the ~1 second the WiPy is on and for rest of the time it's in deepsleep and powered by the cap. This is horribly inefficient (the relay takes about 75mA to energise!) but serves as a proof of concept and even with this inefficiency the ~1 second of power up time is enough to bring the cap back up to the same voltage each time i.e. it's sustainable.

    I don't have any empirical comparisons at this point and my measurement gear isn't really very good, but once I get the proper buck converter what I plan to do is run for a week each with and without the "cap plus buck input power switching" with a full battery charge at the start for each and measure the overall voltage drop for each.

  • @guyadams99 I'm curious to know what exact cap you're using. It's a creative solution, but one thing that comes to mind is that there will be some energy loss from constantly charging and discharging the cap (i.e. nothing comes for free), which might be "optimized" by choosing the smallest cap you can get away with that meets your requirements, as well as choosing a cap with very low leakage. So the question is whether the overall power usage is lower using the cap approach vs. the converter (in spite of its inefficiency at lower power levels). Have you done any tests comparing the two over time?

  • I went the whole hog and stuck in a 3F supercap and it's running for a good 15 mins before the Brown Out kicks in - plenty of overhead for a 5 minute duty cycle.

  • @guyadams99 Sure. It's just a matter of capacitor size, current and acceptable voltage swing. You could also use a small LiPo battery. Example: If you use a 1F capacitor, at a current of 1 mA/100µA leakage and a voltage drop of 1V, you'll get about 900s runtime. t ~ C * dU/I. That's a charge of about 250 mAh, which is a pretty small LiPo battery. 1 F/5V Capacitors are also easily available. So you can ponder what's easier to handle.

Pycom on Twitter