user1328035
user1328035

Reputation: 195

How can I estimate the power consumption of a BLE module?

I'm writing an iOS app for a device with a BLE module that advertises a few bytes of data on a consistent basis while it's connected. We are trying to estimate the power consumption of the BLE module so we can estimate the battery life for the device. I've scoured SO and Google looking for the appropriate way to estimate this, but I'm coming up empty. Is there a way to take the number of bytes that are being sent, multiplied by the frequency with which the data is sent and come up with a rough approximation of power consumption?

Upvotes: 2

Views: 14365

Answers (1)

Nipo
Nipo

Reputation: 2927

A typical BLE SoC (i.e. a all-in-one Application + Radio chip) typically consumes:

  • A few hundreds nA while in deep sleep,
  • 2 to 10 µA while a RTC tracks time (needed between radio events while advertising or connected),
  • 10 to 30 mA while CPU or Radio runs (computing data, TX, RX). RX and TX power consumption is roughly the same.

Life of a BLE peripheral basically consists of 3 main states:

  1. Be idle (not advertising, not connected). Most people will tell your device is off. Unless it has a physical power switch, it still consumes a few hundred nanoamps though.

  2. Advertise (before a connection takes place). Peripheral needs to be running approximatively 5 ms every 50 ms. This is the time when your device actually uses most power because advertising requires to send many packets, frequently. Average power consumption is in the 1-10 mA range.

  3. Be connected. Here, consumption is application-dependant. If application is mostly idle, peripheral is required to wakeup periodically and must send a packet each time in order to keep the connection alive. Even if the peripheral has nothing useful to send, an empty packet is still sent. Side effect: that means low duty cycle applications basically transmit packets for free.

So to actually answer you question:

  • length of your payload is not a problem (as long as you keep your packets shorts): we're talking about transmitting during 1 µs more per bit, while the rest of the handling (waking up, receiving master packet, etc. kept us awake during at least 200 µs);

  • what you actually call "continuous" is the key point. Is it 5 Hz ? 200 Hz ? 3 kHz ?

Let's say we send data at a 5 Hz rate. Power estimate will be around 5 connection events every second, roughly 2 ms CPU + Radio per connection event, so 10 ms running every second. Average consumption: 200 µA (.01 * 20 mA + .99 * 5 µA)

This calculation does not take some parameters into account though:

  • You should add consumption from your sensors (Gyro/Accelerometers can eat a few mA),
  • You should consider on-board communication (i2c, SPI, etc),
  • If your design actually uses two chips (one for the application talking to a radio module), consumption will roughly double.

Upvotes: 6

Related Questions