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

nRF9160 Low Power Example

Hi,

I'm currently trying to evaluate the nRF9160 for one of our projects.

One key requirement is the power consumption when using eDRX.

I have tried profiling the at_client sample, but the lowest I've manged with the nRF9160DK is about 900uAs.

Additionally, the power profile does not seem to show the expected paging windows when eDRX is configured.

Is there any low power example, or documentation which can help me with this?

Parents
  • Hi,

     

    I have tried profiling the at_client sample, but the lowest I've manged with the nRF9160DK is about 900uAs.

    Most of this is due to the UART RX being enabled, which will keep the peripheral clock tree running in sleep. Disabling the UART will lower the floor current, but will also make this specific example non-working.

    Is there any low power example, or documentation which can help me with this?

    Unfortunately, we do not have a power optimized example showing the lowest consumption possible at this stage in the engineering phase. The closest is the asset_tracker example, where you can enable power optimization (PSM or eDRX), but you will also need to tweak other parts, such as disabling serial in both secure_boot and the application itself.

     

    Kind regards,

    Håkon

  • Dear Håkon,

    We are also trying to evaluate the nrf9160 DK low power level with regular PSM-sent communications with a server.

    Is there a way for us to be notified (by email or other preferred means) when such an example (PSM or eDRX) will be available from Nordic?

    Thank you very much for your help.

    Best,

    Étienne

  • Hi Étienne,

     

    I'd recommend that you watch the github repo in order to stay updated on samples/applications:

    https://github.com/NordicPlayground/fw-nrfconnect-nrf

     

    As mentioned, you can still enable PSM/eDRX in asset_tracker (see readme.rst), but the sample secure_boot and asset_tracker has serial enabled (CONFIG_SERIAL and CONFIG_BSD_LIBRARY_TRACE_ENABLED) which needs to be disabled in order to keep the floor current low.

     

    Kind regards,

    Håkon

  • Thank you for your quick answer! We'll make sure to stay updated and keep using the latest master branch of this repo.

    Regarding the asset_tracker example, it runs fine on our board. Unfortunately, when we activate PSM on asset_tracker and that we disable uart on both secure boot & asset_tracker, the current consumption is never lower than 1mA and can randomly spikes to 20 mA.

    Best,

    Étienne

  • That sounds similar to what I am seeing.

    To check the idle current, add this to the top of the main function:

    while(1) k_sleep(1000);

    The program will then just enter sleep after initializing all drivers/libs. This should be around 30 uA (due to SIM clock stop) if all UARTs are disabled properly.

    Here's the prj.conf diff I used: 

    diff --git a/applications/asset_tracker/prj.conf b/applications/asset_tracker/prj.conf
    index 80dcf9f..3aeef79 100644
    --- a/applications/asset_tracker/prj.conf
    +++ b/applications/asset_tracker/prj.conf
    @@ -1,7 +1,7 @@
     # General config
     CONFIG_NEWLIB_LIBC=y
     CONFIG_TEST_RANDOM_GENERATOR=y
    -CONFIG_ASSERT=y
    +# CONFIG_ASSERT=y
     CONFIG_REBOOT=y
     
     # Network
    @@ -15,10 +15,10 @@ CONFIG_MQTT_LIB_TLS=y
     CONFIG_MQTT_MAX_PACKET_LENGTH=2048
     
     # LTE link control
    -CONFIG_POWER_OPTIMIZATION_ENABLE=n
    +CONFIG_POWER_OPTIMIZATION_ENABLE=y
     CONFIG_LTE_LINK_CONTROL=y
     CONFIG_LTE_AUTO_INIT_AND_CONNECT=n
    -
    +CONFIG_USE_AT_HOST=n
     # BSD library
     CONFIG_BSD_LIBRARY=y
     
    @@ -34,10 +34,10 @@ CONFIG_DK_LIBRARY=y
     CONFIG_DK_LIBRARY_INVERT_LEDS=n
     
     # Console
    -CONFIG_CONSOLE_SUBSYS=y
    -CONFIG_CONSOLE_HANDLER=y
    -CONFIG_CONSOLE_GETCHAR=y
    -
    +# CONFIG_CONSOLE_SUBSYS=y
    +# CONFIG_CONSOLE_HANDLER=y
    +# CONFIG_CONSOLE_GETCHAR=y
    +CONFIG_UART_CONSOLE=n
     # Main thread
     CONFIG_MAIN_THREAD_PRIORITY=7
     
    @@ -45,3 +45,7 @@ CONFIG_MAIN_THREAD_PRIORITY=7
     CONFIG_HEAP_MEM_POOL_SIZE=16384
     CONFIG_MAIN_STACK_SIZE=8192
     CONFIG_GPS_SIM_THREAD_STACK_SIZE=1024
    +
    +#
    +CONFIG_SERIAL=n
    +CONFIG_BSD_LIBRARY_TRACE_ENABLED=n
    

    With the default settings at my end it stabilizes to ~1.5 mA.

    The current examples are not power optimized, and the release notes for the modem states this:

    - nRF9160 power consumption has not been fully optimized.

    Kind regards,

    Håkon

Reply
  • That sounds similar to what I am seeing.

    To check the idle current, add this to the top of the main function:

    while(1) k_sleep(1000);

    The program will then just enter sleep after initializing all drivers/libs. This should be around 30 uA (due to SIM clock stop) if all UARTs are disabled properly.

    Here's the prj.conf diff I used: 

    diff --git a/applications/asset_tracker/prj.conf b/applications/asset_tracker/prj.conf
    index 80dcf9f..3aeef79 100644
    --- a/applications/asset_tracker/prj.conf
    +++ b/applications/asset_tracker/prj.conf
    @@ -1,7 +1,7 @@
     # General config
     CONFIG_NEWLIB_LIBC=y
     CONFIG_TEST_RANDOM_GENERATOR=y
    -CONFIG_ASSERT=y
    +# CONFIG_ASSERT=y
     CONFIG_REBOOT=y
     
     # Network
    @@ -15,10 +15,10 @@ CONFIG_MQTT_LIB_TLS=y
     CONFIG_MQTT_MAX_PACKET_LENGTH=2048
     
     # LTE link control
    -CONFIG_POWER_OPTIMIZATION_ENABLE=n
    +CONFIG_POWER_OPTIMIZATION_ENABLE=y
     CONFIG_LTE_LINK_CONTROL=y
     CONFIG_LTE_AUTO_INIT_AND_CONNECT=n
    -
    +CONFIG_USE_AT_HOST=n
     # BSD library
     CONFIG_BSD_LIBRARY=y
     
    @@ -34,10 +34,10 @@ CONFIG_DK_LIBRARY=y
     CONFIG_DK_LIBRARY_INVERT_LEDS=n
     
     # Console
    -CONFIG_CONSOLE_SUBSYS=y
    -CONFIG_CONSOLE_HANDLER=y
    -CONFIG_CONSOLE_GETCHAR=y
    -
    +# CONFIG_CONSOLE_SUBSYS=y
    +# CONFIG_CONSOLE_HANDLER=y
    +# CONFIG_CONSOLE_GETCHAR=y
    +CONFIG_UART_CONSOLE=n
     # Main thread
     CONFIG_MAIN_THREAD_PRIORITY=7
     
    @@ -45,3 +45,7 @@ CONFIG_MAIN_THREAD_PRIORITY=7
     CONFIG_HEAP_MEM_POOL_SIZE=16384
     CONFIG_MAIN_STACK_SIZE=8192
     CONFIG_GPS_SIM_THREAD_STACK_SIZE=1024
    +
    +#
    +CONFIG_SERIAL=n
    +CONFIG_BSD_LIBRARY_TRACE_ENABLED=n
    

    With the default settings at my end it stabilizes to ~1.5 mA.

    The current examples are not power optimized, and the release notes for the modem states this:

    - nRF9160 power consumption has not been fully optimized.

    Kind regards,

    Håkon

Children
No Data
Related