This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to achieve current draw in the range of uA for a specific period of time ("sleep") on Thingy 91?

Hi,

sorry if this is a trivial issue, but I've been strugling with this for a while, so I decided to just ask for help.

For context, I'm trying to create an application for Thingy 91 that will take measurements and publish them over MQTT every 15 minutes/1 hour/ couple hours and in the meanwhile consumes the least power. In the future I'd most likely try to do it on a cutom board built around nrf9160, powered by a battery.

Playing around with sample apps I couldn't see the current draw go below a few mA, so I decided to test a blank app (basicaly void main(){} ), trying to apply as many power saving options I could find on this forum and the result was around 600 uA. I've tried using:

  • k_sleep
  • k_cpu_idle
  • NRF_REGULATORS->SYSTEMOFF = 1;
    for(;;){}
    
    as suggested here
  •     CONFIG_POWER_OPTIMIZATION_ENABLE=y
    	CONFIG_USE_UI_MODULE=n
    	CONFIG_LIGHT_SENSOR=n
    as suggested here
  • config options generated by the Online Power Profiler

but to be fair, as the current draw was around 600 uA from the start, those options didn't make much impact.

I've also modified the mqtt_sample application, so that it doesn't subscribe to an topics, but just publishes and goes to sleep for 30 seconds a few times and the current I've measured during the period of sleep was varying between 1 mA and 20 mA (although mostly stayed below 5 mA).

I've also seen this thread, which was very insightful, but ultimately didn't help me find a solution (or at least how to implement it, or at the very least, I didn't understand it well enough I guess).

Are there any power saving options that I'm missing? Any more modules that I could disable? Is it possible to reduce the current draw dramaticaly for a specific amount of time and not having to rely on external interrupt? Maybe any other suggestions how I could implement an application like what I've described at the begining?

Best regards,

Paweł

  • Hi Pawel and Raj

    Great discussion going on here! I'm here to fill out some blanks:

    1. I would suggest using the power saving features (PSM and eDRX) instead of turning off the modem entirely like you do with lte_lc_offline(). 

    2. This somewhat depends on your application I think, but as stated in the User Guide, the nRF52840 is used for USB, Bluetooth, and NFC for instance. So if you're using the USB connector for instance the Thingy:91 will be connected through the USB interface of the nRF52840.

    4. If you want to measure current on just the nRF9160 for instance, please check out section 7.11.2 in the User guide, showing you how to measure current on either one of the nRF SoCs or both.

    Best regards,

    Simon

Related