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

Current measurements in low power modes

Hello, I am working on a project that uses nrf52832 and I need to put that device and in the system on mode. For that, I want to measure the current in the system on and system off mode which is 1-2 uA and 0.2 uA respectively, but I do not get these values. Can you provide me with the code for which I can measure the current in system on and system off mode to get the above values? I had used ble_app-pwr-profiling example to get the values but I did not get the desired values.

Parents
  • I do not get these values

    So what values do you get?

    And how, exactly, are you measuring?

    At these levels, you need to be very careful about how you take the measurements - and to ensure that you are actually measuring just the DUT, and not leakage to other parts of your system ...

  • I get 287.099 uA in system on mode. I am measuring using PPK and measuring only the DUT. I am using ble_app_pwr_profiling example.

    SDK used is 15.3.0 

  • Again, it's not just about the code - it's about how you are doing your measurements, and your hardware design.

    Hence 's question about hardware ...

  • yes I am doing measurements on nRF52832 DK and had cut SB9 and short solder bridge SB12  and measuring using PPK by selecting External DUT and powering the nRF52 DK Board from P16 of the PPK kit to External Supply of the DK board.

    And when I follow the above two steps for measuring current then all the 4 LEDs( LED1,LED2,LED3 and LED4) are dimly on, so I have to forcefully turn them off before I call the sleep function. So why this happens?

  • Check out this example (doesn't use the softdevice). If you want to minimize the current consumption, disable logging in sdk_config.h by setting NRF_LOG_ENABLED to 0.

    Please read the testing description in the link for how to put it in system off mode.

  • hello Edvin,

    I tried the above example but still not getting the desired output:

    My test Description: I programmed the nrf52 DK with NRF_LOG_ENABLED to 0, and then measured the current without pressing any button and I got avg current as 842.426 uA and max current as 869.029 uA.But then I am not able to press the button as for measuring current I have short SB12 and cut SB9 so buttons do not get any power (I think so ) so not able to go in system off mode. 

    And when LOG was enabled I was showing on the terminal that device is going in shutdown mode but when i measured current there was no much change in it.

    So now what next should I do? Am I testing and measuring current in the correct way?

    My nrf52 DK board is PCA10040 v1.1.0   2016.21   682540651

    And also when I short SB12 and cut SB9 all board 4 LEDs are powered on. I am using Segger Embedded Studio  for building the hex file.

  • The buttons are still powered as long as the PPK is mounted on top of the DK. Press button 1 to go to system off mode. Did you try this?

    And if you want to measure a device in system off mode, you could just use any of the BLE examples. They will go to system off mode when the advertising times out. Try to change the advertising interval from 18000 (180sec) to 500 (5 sec), and it will go to system off mode after 5 seconds. It will hit the event BLE_ADV_EVT_IDLE() which, at least in most examples, will call sleep_mode_enter(), which will call sd_power_system_off().

Reply
  • The buttons are still powered as long as the PPK is mounted on top of the DK. Press button 1 to go to system off mode. Did you try this?

    And if you want to measure a device in system off mode, you could just use any of the BLE examples. They will go to system off mode when the advertising times out. Try to change the advertising interval from 18000 (180sec) to 500 (5 sec), and it will go to system off mode after 5 seconds. It will hit the event BLE_ADV_EVT_IDLE() which, at least in most examples, will call sleep_mode_enter(), which will call sd_power_system_off().

Children
  • Yes I did press button 1 but there was no change in the current measurements and will let you know what happens when I do what you suggested for BLE examples

  • I tried with the ble_app_pwr_profiling example , and changed APP_CFG_NON_CONN_ADV_TIMEOUT macro to 5 , but the values I got are not as per the specifications. 

    - When I short SB9 and cut SB12 then I recieved 195.372 uA 

    -when I cut SB9 and short SB12 then I get 905.705 uA average current

     I want the current measurements for system on mode also

  • Can you try to power it via the USB cable instead of the external power input? And then follow the setup exactly as described here:

    https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_ppk%2FUG%2Fppk%2FPPK_user_guide_Quick_start.html&cp=6_6_3

    Does that show reasonable numbers?

  • I tried for the ble_app_pwr_profiling example and got the current between the peaks as 2.695 uA average current which I think is the system on mode current now next is how to get the system off mode? As even if I am not connecting the device I think it is entering the system on mode i.e idle state and not system off mode.

    If I am wrong then which current is it that I got as 2.695 uA between the advertising peaks? system sleep mode on or system sleep mode off current? Because if it was system off then current should be much lower than the measured current.

    And when I checked for the pwr_mgmnt example I got the system off current as 0.731 uA and system on current as 2.801 uA.

    Thank you Edvin for your time and support. I have got these readings because of your guidance. Waiting for your response for the question I have regarding ble_app_pwr_profiling example.

  • sara said:
    I tried for the ble_app_pwr_profiling example and got the current between the peaks as 2.695 uA average current which I think is the system on mode

     Yes. That is system on mode (as long as you call sd_app_evt_wait() in your main-loop).

    If you are using the softdevice, you can't be in system off mode, hence my conclusion that you are in system on mode. If you are in system off mode, you need a physical interrupt in order to wake up the device, so you can't do this in between advertisements or if you are connected.

    System off mode is not entered until you call sd_power_system_off(), which typically happens in:

    on_adv_evt() -> case BLE_ADV_EVT_IDLE: -> sd_power_system_off();

    In the ble_app_pwr_profiling example, the advertising timeout has a different name. It is the one called APP_ADV_DURATION, which is originally set to 30000*10ms. If you change the define to 500, it will time out after 5 seconds.

Related