The best way to save energy in an application

Hi,
I am developing an application that includes the following features:
1. PWM to control the buzzer
2. 2 Uarte to communicate with 2 external devices
3. BLE to wireless communication (ble_app_uart)
4. Timer
5. saadc to read battery level
6. nrf_log_info for debugging

Now I want to implement an application as economical as possible, so I planned this topic
1. PWM => I enable/disable depending on when the user wants/don't want to ring buzzer by app_pwm_enable (& context) / app_pwm_disable (& context)
2. Libuarte => I enable/disable uarte when nRF needs/no need to communicate with external devices using nrf_libuarte_async_uninit (& libuarte) / nrf_libuarte_async_ninit (& libuarte)
3. BLE => I increase the advertising interval as big as possible
4. timer => I think app_timer is the best way
5. saadc => now i don't have any solution for this
6. Log Info => I think I will disable it in sdk_config.h => NRF_LOG_BACKEND_RTT_ENABLED 0
I'm using the ON system when the device is idle
So can you give me some comments and suggestions on my plan?
I am using custom board with nRF5833 chip and my application is based on SDK16 ble_app_uart example
As this feature is the most important feature in my project so please provide me a complete process for this feature.
Thank you

  • Hi,

    These are all very good measures for low power. For the SAADC you can follow our low-power SAADC example which uses the RTC to schedule samples, see this. The logger should definitely be disabled if you want to have low current consumption. For the BLE you can decrease the TX power, use DCDC and external LF crystal. 

    Here is a blog post about optimizing power on nRF52. 

    regards

    Jared 

  • Hi Jared, thanks for useful confirm
    Please explain for me more detail. I new at  decrease TX power, DCDC and external LF crystal. Please give me an example. I'm using an custom board developed by my partner, I only dev firmware so I'm not specialized at hardware.

  • Hi,

    Does your custom board have external components for the DCDC regulator? Do you have an external low frequency crystal?

    regards

    Jared 

  • Yes, I have external components for DCDC. But I think it only used for convert 4.2v into 3.3v to compatible with module. What is other functions of DCDC converter ??
    I got an sentence "enabling and populating the DC/DC converter" when I read blog post you suggested. But I have some confusions about this. Seem DC/DC converter like a peripheral. How can I "enabling and populating the DC/DC converter" ? By coding ?

    I researched that there is an regulator that is LDO. What is the difference between them ?

    Here is the module I used. It contained external LF crystal ? I'm using app_timer. How can I use external LF crystal like you suggest ?

  • Hi,

    There are two internal regulators on the nRF52833 that regulates the supply down to the system voltage in two stages. The internal regulators can either use an internal LDO or a DCDC for each step. Using the DCDC requires external inductors, but the benefit of using DCDC is that it's more power efficient. 

    It seems like it has an external LFXO crystal, do you have the schematics?

    The app timer would automatically use the external low frequency crystal, if it's chosen as the LFCLK clock source in the sdk_config.h file of your project.

    regards

    Jared 

Related