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

nRF9160 sleep current to high

Hi there,

I have been testing with the nrf9160 DK for a while now and I cant figure out how to get the device to sleep properly. I have been working with the asset_tracker example and made some modifications to send data to myself and left out any unused parts.

The lowest current draw is around 500 uA, measured on the nrf current measurement pins, which, is way to high. The datasheet shows that it is possible to get around 1~2 uA, which is what I need.

The device needs to be able to sleep for long periods of time, and only wake op on an external interrupt or RTC timer. Does anyone know how to get here? At this moment I am kind of stuck.

Thanks in advance.

Karst

  • Thank you for your reply, I have tried this, but unfortunately without luck.

    Could it be that some functions stay active when put to deep sleep mode?

  • Did you notice a change in the current consumption with that?

    Have you taken a look at the power optimization chapter here & implemented the eDRX or Power Saving Mode?

    I would start with Power Saving Mode, as it seems eDRX may work depending on the carrier you are using.

    It seems you can set the PSM either via the code itself (see here), or via AT commands (see here & here). If you want to do it via the AT commands, I would suggest to either run the AT Client example or include the AT client example functionality in the asset tracker example.

    Please note that there is an active time after connection before we can enter PSM sleep, i.e. power consumption stays on the “idle DRX” level before we move to “PSM level”.

    You may need to wait a few minutes until the nRF91 reaches PSM current level. You can see the value for this timer with the negotiated PSM parameters. Use the AT+CEREG=5 command to "subscribe to unsolicited network state notifications". Take a look at the AT Commands PDF for more info.

    If you ask me, it seems easiest to set the PSM in the code directly in the asset tracker example. Then, I would measure the current consumption after a few minutes when the PSM mode kicks in.

    Otherwise, you could also run the at_client example, set the PSM via the link monitor application & the at commands & then measure the current of the at_client example.

    Also, make sure to keep in mind that the debugger prevents the modem from entering deep sleep. At the moment, you cannot check the sleep level of the modem from the application side.

    Hope that helps!

  • We have tried everything you said here, but we cant get the current consumption low enough.

    What is the lowest current you can get if in sleep? We are, with the asset tracker sample, at lowest drops about 1mA or higher. We also tried to put the device to sleep ourselves where we got about 700uA which is still to high.

    We hope to get the consumption lower then 20 uA, if possible.

    I hope you can help us out.

  • I appear to be having the same issue as the original post with similar amounts of "more current then expected", even with SB44 cut. I cut SB45 after that in an attempt to entirely remove SW10 from the equation. I can make my own post if it's more appropriate for the dev forums or contact you guys directly, but I figure more attention on a shared issue may be better for getting a response.

    What I've done so far:

    I have two devkits, both are exhibiting the same behavior, though I did not cut SB45 or SW10 on the second board. I have enabled power optimization in the project settings, and have also removed all init and processes from the asset_tracking example except for the modem_configure, and I added a lte_lc_psm_req(true) that always goes off once after 30 seconds or so. I have a graphing power meter and can watch the initial power on TAU/connect and the subsequent eDRX pulses that show up until an RRC disconnect happens and the PSM should be taking over, but to no avail.

    I have a graphing current meter and can clearly see the eDRX pulses and the RRC release that should signal entry into PSM. I call k_cpu_idle() a could minutes into the example and then just let the program run. This doesn't seem to have made any real difference when compared to the current consumption between eDRX pulses, which seems a little odd to me. I've probed the SIM card power lines and clock during this PSM time and both are off for further confirmation I'm really in PSM mode.

    I'm powering the devkit off an external power supply connected to the +/- terminals of connector P24 as your link suggests, and I have nothing else plugged in during testing. 

Related