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

How to achieve the lowest power consumption on the Actinius Icarus (nrf9160) board?

Hi,

I'm trying to lower the power consumption om an Actinius Icarus board which uses an nrf9160 chip. I've been able to achieve a sleep current of 1.33mA and I'm not able to lower this any further. Could you please let me know what else I could do to lower the power consumption?

My setup - 

  • Board - Actinius Icarus
  • NRF Connect SDK - v1.2.0
  • Modem FW - 1.1.1
  • Sim - External NBIoT Sim card from 1nce which uses Deutsche Telekom band 8
  • Antenna - Ethertronics penta 1002292
  • Input - 4x1.5V batteries supplied to the Vin pin
  • Current measurement - Multimeter inserted between batteries and Vin
  • External peripherals - Using a 10k NTC with a 10k pullup voltage divider circuit connected to A1 for temperature measurement

Things done to reduce power consumption - 

  1. Disabled logs in the project and SPM- 
    CONFIG_CONSOLE=n
    CONFIG_STDOUT_CONSOLE=n
    CONFIG_LOG=n
    CONFIG_SERIAL=n
    CONFIG_UART_CONSOLE=n

  2. Enabled power management - 
    CONFIG_SYS_POWER_MANAGEMENT=y
    CONFIG_DEVICE_POWER_MANAGEMENT=y

  3. Enabled PSM with these parameters (Also with different p-tau like 10 min, 1 hour, etc) 
    CONFIG_LTE_PSM_REQ_RPTAU="11000001"
    CONFIG_LTE_PSM_REQ_RAT="00000001"

  4. Removed bootloader - 
    CONFIG_BOOTLOADER_MCUBOOT=n

The current drawn through the NTC voltage divider is around .16mA. I have connected to the AWS server via MQTT and send sensor data to the server at a fixed interval. I send the data and go to sleep for a defined time and repeat the process. I observe a constant sleep current of 1.3mA. When the device wakes up and sends data, I see spikes of 50mA and it comes back to 1.3mA after 2 seconds according to CONFIG_LTE_PSM_REQ_RAT.
For testing, I also edited the same project and made the device run an infinite while loop with a sleep function and still see that the sleep current is 1.3mA. From what I understand it looks like the modem does go to PSM (if I disable it I see a sleep current which keeps fluctuating between 1.3mA to 50mA). The sleep current with the modem switched off (with an AT+CFUN=0) command also shows me a sleep current of 1.3mA. This leads me to believe that there are some other peripherals which are switched on and consuming power. I'm not able to figure what else I should be doing at this point to lower the current consumption. Could you please advise me on  how to proceed? Thanks a lot!
Nikil
Parents
  • Hi,

     

    The sleep current with the modem switched off (with an AT+CFUN=0) command also shows me a sleep current of 1.3mA.

    This indicates that there's a peripheral running in the background causing the high sleep current.

    Instead of changing spm files directly, you can add this just below your application's CMakeLists.txt, the cmake_minimum_required() line:

    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/spm.conf")
      set(spm_CONF_FILE
        prj.conf
        ${CMAKE_CURRENT_LIST_DIR}/spm.conf
      )
    endif()
    
     
    
    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mcuboot.conf")
      set(mcuboot_CONF_FILE
        prj.conf
        ${CMAKE_CURRENT_LIST_DIR}/mcuboot.conf
      )
    endif()
    
     
    
    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
      set(mcuboot_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
      set(spm_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
    endif()

     

    Then you create a file, spm.conf, with the content "CONFIG_SERIAL=n", and it should disable uart in spm.

     

    What peripherals are you using in your application? TWIM/SPI/ADC?

     

    Kind regards,

    Håkon

Reply
  • Hi,

     

    The sleep current with the modem switched off (with an AT+CFUN=0) command also shows me a sleep current of 1.3mA.

    This indicates that there's a peripheral running in the background causing the high sleep current.

    Instead of changing spm files directly, you can add this just below your application's CMakeLists.txt, the cmake_minimum_required() line:

    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/spm.conf")
      set(spm_CONF_FILE
        prj.conf
        ${CMAKE_CURRENT_LIST_DIR}/spm.conf
      )
    endif()
    
     
    
    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mcuboot.conf")
      set(mcuboot_CONF_FILE
        prj.conf
        ${CMAKE_CURRENT_LIST_DIR}/mcuboot.conf
      )
    endif()
    
     
    
    if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
      set(mcuboot_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
      set(spm_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}.overlay")
    endif()

     

    Then you create a file, spm.conf, with the content "CONFIG_SERIAL=n", and it should disable uart in spm.

     

    What peripherals are you using in your application? TWIM/SPI/ADC?

     

    Kind regards,

    Håkon

Children
No Data
Related