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

nRF52840 Battery Life Estimation

Hi,

I would like to ask a question about the estimation of battery life regarding to advertisement period and idle & disconnection period. In my ble_app_uart example, peripheral device will wake up periodically by using app_timer. Also, 3.7 V - 250 mAh battery will be used.

If there is no central device, peripheral device will advertise for 2 second (APP_ADV_DURATION) and will be in BLE_ADV_EVT_IDLE state for 10 minutes. In this case, peripheral device draws 1280 uA (average) during advertisement and draws 4.3 uA during idle.

If there is a central device, peripheral device will connect to central device and send data (20 byte) to central device when peripheral device wakes up from idle. Once data transmission is completed, peripheral device will disconnect and will stop advertisement. After it will stop the advertisement, peripheral device will be again idle state for 10 minutes. In this case, peripheral device draws average 1110 uA during connection & sending data (it happens very fast - less than 1 second) and draws 4.3 uA during idle.

I don't know how to calculate battery life regarging to these current values. I mean these are average values and I don't know how the current will change in intervals of advertisement & radio process. Also, APP_ADV_INTERVAL macro is 64 by default (40 ms). Advertisement events will happen 50 times since it will advertise for 2 second at first (correct me if I am wrong).

So if we have this scenario with no central device at first : Advertise for 2 second -> idle state for 10 minutes ->  (central device appears) connect to central device, send data, stop connection and advertisement after transmission ->idle state for 10 minutes. How should I approach to this calculation ?

Lastly, I use SDK 16.0. I measured the current values on a BLE 5 module with no LEDs on it. I have no power concern for the central device side.

I will be very appreciated if you could help me.

Best Regards

Edit: From Online Power Profiler

I have these results for Advertising (connectable) , TX payload (Byte) = 20, Advertising interval (40 ms), LDO regulator :

Current consumption
BLE event total charge 20.24 µC
LF clock calibration current 1.0 µA
Idle current 3.1 µA
Total average current 454 µA
BLE event details
Interval 45.00 ms
Length 4.09 ms
Data transmission
On air data rate 1 Mbps

And for Peripheral (connection), Connection interval (40 ms)

Current consumption
BLE event total charge 8.43 µC
LF clock calibration current 1.0 µA
Idle current 3.1 µA
Total average current 215 µA
BLE event details
Interval 40.00 ms
Length 2.53 ms
Number of packets 1
Master sleep clock accuracy 20 ppm
Slave sleep clock accuracy 20 ppm
Data transmission
LL PDU size 251 Byte
TX payload per event 20 Byte
TX LL throughput 4.00 kbps
RX payload per event 0 Byte
RX LL throughput 0 bit/s
On air data rate 1 Mbps
Parents Reply Children
  • Yes, you use the average current to get the battery life.

    You divide the battery charge with the average current and you get the battery life time: mAh / mA = h

    If you have different "average currents" based on the application state, you need to figure out an estimate on how long your product is in each state. Example: Let's say it's advertising 90% of the time and in connection 10% of the time; and the average current during advertising is 20uA and 500uA during connection, you get 0.9*20+0.1*500 = 68 uA in total average during the product lifetime. Then if you have a 100mAh battery, the battery life time will be 100mAh/0.068mA = 1471 hours.

  • Clearly, average values are only going to give an estimate - only you can decide whether that estimate is good enough for your requirements.

    The basic concept is that a battery is a store of energy - so what you really need to know is how your system uses up energy

    Generally, a system will have a number of states; eg, idle, transmitting, processing. SO you will need to work out how much energy it uses in each state, and how long it spends in each state - then use that to work out how long it will take to use up all the energy in the battery.

    This is basic physics - not specific to nRF ...

  • Thanks for the explanation Stian.

    If I consider my scenario, there are 4 states : advertising, idle, connection & transmission, idle and their average currents are 1280 uA, 4.3uA, 1110 uA and 4.3 uA respectively. In seconds, their durations are 2 seconds, 600 seconds, 2 seconds and 600 seconds and their activeness ratio of the time are 0.17%, 49.83%, 0.17% and 49.83% respectively.

    The total product lifetime = (0.0017*1280)+(49.83*4.3)+(0.0017*1110)+(49.83*4.3) = 8.343 uA. If we have 100 mAh battery, it is 100mAh / 0.0083 mA = 11986 hours and 499 days approximately.  In estimation it  is really high.

    So the time unit doesn't matter if we have ratios of the time.

    Also, peripheral device has operation voltage interval (1.7 V - 3.6 V). So I think the device won't be active for 499 days in estimation, will it ?

  • Also, don't forget that real batteries are not perfect:

    • they have self-discharge
    • their actual capacity varies depending on the nature of the load
    • different manufacturers have differing definitions of when a battery is considered "exhausted".
    • etc

    Again, this is not specific to Nordic - it applies to any battery-powered system

Related