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
  • 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.

Children
Related