如何估算 BLE 模块的功耗?
How can I estimate the power consumption of a BLE module?
我正在为带有 BLE 模块的设备编写一个 iOS 应用程序,该模块在连接时以一致的方式通告几个字节的数据。我们正在尝试估算 BLE 模块的功耗,以便估算设备的电池寿命。我已经搜索过 SO 和 Google 寻找合适的方法来估计这个,但我一无所获。有没有一种方法可以将发送的字节数乘以发送数据的频率,得出功耗的粗略近似值?
典型的 BLE SoC(即一体化应用 + 无线电芯片)通常消耗:
- 深度睡眠时几百 nA,
- 2 到 10 µA,而 RTC 跟踪时间(在广播或连接时无线电事件之间需要),
- 10 到 30 mA,而 CPU 或无线电运行(计算数据、TX、RX)。 RX和TX功耗大致相同。
BLE 外围设备的生命周期基本上由 3 个主要状态组成:
空闲(不做广告,不连接)。大多数人会告诉您的设备已关闭。除非它有一个物理电源开关,否则它仍然会消耗几百纳安。
通告(在建立连接之前)。外设需要 运行 每 50 毫秒大约 5 毫秒。这是您的设备实际耗电最多的时间,因为广告需要频繁发送许多数据包。平均功耗在 1-10 毫安范围内。
已连接。在这里,消耗取决于应用程序。如果应用程序大部分时间处于空闲状态,则外围设备需要定期唤醒并且每次都必须发送一个数据包以保持连接有效。即使外设没有什么有用的东西可以发送,也会发送一个空包。副作用:这意味着低占空比应用程序基本上免费传输数据包。
所以要真正回答你的问题:
你的有效载荷的长度不是问题(只要你保持你的数据包短):我们谈论的是每比特多 1 微秒的传输,而其余的处理(唤醒起来,接收主数据包等让我们在至少 200 µs 内保持清醒);
你其实叫什么"continuous"才是重点。是 5 赫兹吗? 200赫兹? 3 kHz ?
假设我们以 5 Hz 的速率发送数据。功耗估计约为每秒 5 个连接事件,每个连接事件大约 2 毫秒 CPU + 无线电,因此每秒 10 毫秒 运行。平均消耗:200 µA (.01 * 20 mA + .99 * 5 µA)
此计算并未考虑某些参数:
- 您应该增加传感器的消耗(Gyro/Accelerometers 可以消耗几毫安),
- 您应该考虑板载通信(i2c、SPI 等),
- 如果您的设计实际上使用了两个芯片(一个用于与无线电模块通信的应用程序),功耗大约会翻倍。
我正在为带有 BLE 模块的设备编写一个 iOS 应用程序,该模块在连接时以一致的方式通告几个字节的数据。我们正在尝试估算 BLE 模块的功耗,以便估算设备的电池寿命。我已经搜索过 SO 和 Google 寻找合适的方法来估计这个,但我一无所获。有没有一种方法可以将发送的字节数乘以发送数据的频率,得出功耗的粗略近似值?
典型的 BLE SoC(即一体化应用 + 无线电芯片)通常消耗:
- 深度睡眠时几百 nA,
- 2 到 10 µA,而 RTC 跟踪时间(在广播或连接时无线电事件之间需要),
- 10 到 30 mA,而 CPU 或无线电运行(计算数据、TX、RX)。 RX和TX功耗大致相同。
BLE 外围设备的生命周期基本上由 3 个主要状态组成:
空闲(不做广告,不连接)。大多数人会告诉您的设备已关闭。除非它有一个物理电源开关,否则它仍然会消耗几百纳安。
通告(在建立连接之前)。外设需要 运行 每 50 毫秒大约 5 毫秒。这是您的设备实际耗电最多的时间,因为广告需要频繁发送许多数据包。平均功耗在 1-10 毫安范围内。
已连接。在这里,消耗取决于应用程序。如果应用程序大部分时间处于空闲状态,则外围设备需要定期唤醒并且每次都必须发送一个数据包以保持连接有效。即使外设没有什么有用的东西可以发送,也会发送一个空包。副作用:这意味着低占空比应用程序基本上免费传输数据包。
所以要真正回答你的问题:
你的有效载荷的长度不是问题(只要你保持你的数据包短):我们谈论的是每比特多 1 微秒的传输,而其余的处理(唤醒起来,接收主数据包等让我们在至少 200 µs 内保持清醒);
你其实叫什么"continuous"才是重点。是 5 赫兹吗? 200赫兹? 3 kHz ?
假设我们以 5 Hz 的速率发送数据。功耗估计约为每秒 5 个连接事件,每个连接事件大约 2 毫秒 CPU + 无线电,因此每秒 10 毫秒 运行。平均消耗:200 µA (.01 * 20 mA + .99 * 5 µA)
此计算并未考虑某些参数:
- 您应该增加传感器的消耗(Gyro/Accelerometers 可以消耗几毫安),
- 您应该考虑板载通信(i2c、SPI 等),
- 如果您的设计实际上使用了两个芯片(一个用于与无线电模块通信的应用程序),功耗大约会翻倍。