第二章:功耗模型建立——标签工作状态划分

做低功耗设计,说白了就是跟电池容量做朋友。你得知道每一毫安时都花在哪了。

我个人习惯,拿到一个电子标签项目,第一件事不是画原理图,而是先画功耗模型。为什么?因为只有把各个状态的电流消耗摸透了,你才知道优化空间在哪。

2.1 标签的三种工作状态

电子标签的工作流程,我一般把它拆成三个状态:休眠侦听发射。你想想看,一个标签从出厂到报废,绝大多数时间都在干嘛?对,在睡觉。

  • 休眠状态:MCU进入深度睡眠,RF模块完全断电。这时候只有RTC在跑,或者一个超低功耗的定时器在计时。
  • 侦听状态:标签醒来,打开接收机,看看有没有基站发来的指令。这个状态时间很短,但电流不小。
  • 发射状态:标签上报数据,RF发射功率全开。这是最耗电的阶段,但持续时间也最短。

关键点:三个状态的电流差异可能达到三个数量级。休眠可能是1µA,侦听可能是10mA,发射可能是100mA。设计时一定要心里有数。

2.2 各状态电流消耗实测数据

我在项目中遇到过一款蓝牙BLE标签,实测数据如下。注意,这些数值会因芯片型号、天线匹配、供电电压不同而变化,但量级是差不多的。

工作状态 典型电流 持续时间 备注
休眠 1.2 µA 99.9% 时间 含RTC + 唤醒定时器
侦听 8.5 mA 2 ms 接收窗口打开
发射 85 mA 4 ms 0 dBm 发射功率

我的经验:别完全相信数据手册上的典型值。我习惯自己搭一个电流测试板,用示波器或者精密万用表实测。有一次我发现某款芯片的休眠电流比手册标称高了3倍,查了半天发现是GPIO没配置成输出低电平,导致漏电。

2.3 时间占比分析——谁才是耗电大户?

很多人直觉上觉得发射最耗电,应该重点优化发射。但咱们算一笔账。

假设标签每小时上报一次数据:

  • 休眠时间:3599.994 秒(约 99.9998%)
  • 侦听时间:2 ms × 2 次 = 4 ms(约 0.0001%)
  • 发射时间:4 ms(约 0.0001%)

然后算平均电流:

平均电流 = (1.2µA × 3599.994s + 8.5mA × 0.004s + 85mA × 0.004s) / 3600s
         ≈ (4.32mAs + 34mAs + 340mAs) / 3600s
         ≈ 0.105 mA

看到了吗?虽然发射电流高达85mA,但因为它时间极短,总耗电量只占约 90%。而休眠电流虽然只有1.2µA,但因为时间占比99.9%以上,它的贡献也不可忽视。

避坑指南:我曾经设计过一个标签,把发射功率从0dBm降到-10dBm,发射电流从85mA降到了45mA。本以为电池寿命能翻倍,结果实测只延长了15%。为什么?因为发射时间占比太小了,优化的边际收益很低。真正的大头其实是侦听窗口的时长和休眠漏电流。

2.4 建立功耗模型的实用方法

我建议用Excel或者Python脚本搭一个简单的功耗计算器。把三个状态的电流、时间、频率作为输入,自动算出平均电流和理论电池寿命。

这里给一个伪代码思路:

// 伪代码:功耗模型计算
float sleep_current = 1.2e-6;   // 1.2 µA
float listen_current = 8.5e-3;  // 8.5 mA
float tx_current = 85e-3;       // 85 mA

float sleep_time = 3600 - 0.004 - 0.004;  // 单位:秒
float listen_time = 0.004;
float tx_time = 0.004;

float avg_current = (sleep_current * sleep_time + 
                     listen_current * listen_time + 
                     tx_current * tx_time) / 3600.0;

float battery_capacity = 2400;  // 2400 mAh 纽扣电池
float lifetime_hours = battery_capacity / (avg_current * 1000);
float lifetime_years = lifetime_hours / (24 * 365);

核心结论:功耗优化的优先级应该是:
1. 降低休眠电流(硬件选型 + 软件配置)
2. 缩短侦听窗口时间(协议优化)
3. 最后才是降低发射功率(天线效率、匹配网络)

2.5 实际项目中的注意事项

嗯,这里还有几个坑要提醒你:

  • 温度影响:电池在低温下内阻增大,实际可用容量会下降。我做过-20°C的测试,容量直接打了七折。
  • 电池自放电:CR2032纽扣电池每年自放电约1-2%,这个在长寿命设计中必须算进去。
  • 电容漏电:MLCC电容在高湿环境下漏电流会增大,我遇到过因为电容漏电导致休眠电流从1µA飙升到5µA的情况。

一个小技巧:在原型阶段,我习惯在电池回路串一个10Ω采样电阻,用示波器看电压波形。这样能直观看到每个工作状态的电流尖峰,比看数据手册靠谱多了。

好了,功耗模型建立这块就聊到这。下一章咱们会深入讲电池选型和容量计算,到时候会用到今天建立的这个模型。