本页目录
21 · MCU、唤醒与 PWM:用时间账本管理电流和波形
一个环境监测节点大部分时间在睡眠,却不代表它的平均电流等于睡眠电流。唤醒、ADC、传感器激励、无线发送、定时器和 PWM 负载都在不同时间取电;PWM 的占空比决定理想平均值,但负载的 RC、GPIO 电阻和定时器时钟决定纹波与能否继续运行。要交付系统,必须同时画事件时间线、电流积分、PWM 波形和外设边界。
学习层:先算一整个唤醒周期,而不是盯着一个峰值
1. 具体情境:1 秒一醒的节点到底用了多少电
教学节点以 \(3.3 \mathrm V\) 供电,每 \(1 \mathrm s\) 唤醒一次。MCU 活动 \(12 \mathrm{ms}\)、活动电流 \(6 \mathrm{mA}\),睡眠电流 \(20 \mu\mathrm A\);传感器在其中 \(8 \mathrm{ms}\) 取 \(0.4 \mathrm{mA}\),发送事件持续 \(2 \mathrm{ms}\)、取 \(12 \mathrm{mA}\)。另有一个 \(1 \mathrm{kHz}\)、\(40\%\) 占空比的 PWM,驱动 \(1 \mathrm{k\Omega}\) 与 \(1 \mu\mathrm F\) 的教学 RC 负载。
这些数值是教学设定,不是某个 MCU、无线芯片、传感器或稳压器的动态规格。默认 PWM 定时器在睡眠时继续运行,且 PWM 负载也要进入整周期供电账本:系统平均约 \(1.4314\mathrm{mA}\),每秒约 \(0.3976\,\mu\mathrm{Ah}\)。这里要特别注意单位:每周期的电荷不是把平均电流直接当作一小时电荷;互动表会同时给出 mA、\(\mu\mathrm{Ah}\) 和 J,帮助检查量纲。
2. 揭示前预测:先把电流和 PWM 分开
- 周期性唤醒系统的平均电流,能否由一个睡眠电流或一个活动峰值单独代表?
- 在同一个 RC 负载下提高 PWM 频率,纹波会变大、变小,还是必然变成零?
- MCU 进入睡眠后 PWM 是否继续运行,应看占空比,还是看具体外设和时钟源的条件?
3. 公式桥:积分、平均值与纹波
对周期 \(T\) 的分段电流,平均值定义为
在活动、睡眠、传感器和发送时间分别为 \(t_a,t_s,t_{sen},t_{tx}\) 的矩形近似下,可写成
这只是 MCU、传感器和无线事件的部分账本;若 PWM 负载是电阻 \(R_L\),还要用实际 RC 电压积分加入
并以
检查负载耗散;不能用 \((\overline v)^2/R_L\) 代替平均功率。
单位检查:mA 乘以 ms 再除以 ms 仍为 mA;周期电荷则为
如果 \(I\) 用 mA、\(T\) 用小时,结果才是 mAh。默认整周期 \(I_{avg,total}=1.43142 \mathrm{mA}\)、\(T=1/3600 \mathrm h\),所以 \(Q_{period}\approx0.3976 \mathrm{\mu Ah}\),供电平均功率约 \(P_{avg}=V I_{avg,total}=4.724 \mathrm{mW}\);其中 PWM 负载的平均电流约 \(1.31246\mathrm{mA}\)。
理想 PWM 平均值为
其中 \(D\) 无量纲。若经过 \(R\)–\(C\) 低通,\(\tau=RC\),在一个高电平时间 \(t_{on}=DT_{PWM}\) 内有
低电平段同理。令 \(a=e^{-t_{on}/\tau}\)、\(b=e^{-t_{off}/\tau}\),非零 \(V_{low}\) 时的周期稳态起点应直接解为
周期稳态的 \(v_{max}-v_{min}\) 是纹波峰峰值,它不会因为平均值公式漂亮就自动消失。默认 \(\tau=1 \mathrm{ms}\)、\(D=0.4\),运行段理想与 RC 稳态平均值都为 \(1.32 \mathrm V\),稳态纹波约 \(0.777 \mathrm V_{pp}\);从每次唤醒的低电平启动算整周期时,RC 输出平均值为 \(1.312\mathrm V\),所以 PWM 负载电流也按整段积分。
数量级判断:活动时间占比只有 \(12/1000=1.2\%\),但活动电流比睡眠电流大约两个数量级,所以活动段仍是 MCU 电流账本的主要项。PWM 负载是同一供电账本中的另一条时间积分:若负载是 \(1 \mathrm{k\Omega}\),运行段约 \(1.32 \mathrm V\) 对应约 \(1.32 \mathrm{mA}\);若定时器在睡眠停止,停机后的 GPIO 保持电平还会把 RC 输出和平均电流改成另一种波形,不能继续套用连续运行的占空比平均值。
4. 互动实验:把时间线、功耗和 PWM 波形放在同一页
无 JavaScript 时的静态 fallback:默认教学设定为 \(V=3.3 \mathrm V\)、周期 \(1000 \mathrm{ms}\);MCU 活动 \(6 \mathrm{mA}\times12 \mathrm{ms}\)、睡眠 \(20 \mu\mathrm A\),传感器 \(0.4 \mathrm{mA}\times8 \mathrm{ms}\),发送 \(12 \mathrm{mA}\times2 \mathrm{ms}\)。PWM 为 \(1 \mathrm{kHz}\)、\(D=0.4\)、\(V_{high}=3.3 \mathrm V\)、\(V_{low}=0\),负载 \(1 \mathrm{k\Omega}\) 与 \(1 \mu\mathrm F\) RC;默认定时器在允许的睡眠时钟条件下继续运行,PWM 从 \(5\mathrm{ms}\) 的低电平启动并按实际分段指数波形积分。
| 账本项 | 默认结果 | 单位 / 解释 |
|---|---|---|
| MCU 平均电流 | 0.09176 | mA;活动/睡眠加权 |
| 传感器平均电流 | 0.00320 | mA;按 8 ms/周期 |
| 发送平均电流 | 0.02400 | mA;按 2 ms/周期 |
| PWM 负载平均电流 | 1.31246 | mA;\((1/T)\int v(t)/R_L\,dt\),已计入系统 |
| 系统平均电流 | 1.43142 | mA;四项相加,含 PWM 负载 |
| 每周期电荷 | 0.39762 | µAh;1 秒周期 |
| 平均功率 | 4.72367 | mW;\(VI_{avg,total}\) |
| PWM 负载平均功率 | 1.78238 | mW;\((1/T)\int v(t)^2/R_L\,dt\) |
| PWM 理想平均值 | 1.320 | V;运行段占空比公式 |
| RC 输出整周期平均值 | 1.312 | V;含 5 ms 低电平启动 |
| RC 稳态平均值 | 1.320 | V;周期稳态积分 |
| PWM 稳态纹波 | 776.541 | mV 峰峰值;指数 RC 的 min/max |
| 停机后输出 | 睡眠中继续运行 | 若 timerRunsInSleep=false,则停机后保持最后高/低电平 |
| 外设边界 | 条件继续 | 需由具体 MCU 和时钟源确认 |
图意说明:互动 SVG 应画出唤醒、ADC、PWM 定时器、发送、停机后输出保持和睡眠的事件时间线;下面用实际的分段指数 RC 曲线画 PWM 命令与输出,不要用正弦曲线代替。时间线中的“睡眠继续运行”或“停机后保持高/低电平”要用文字说明条件,不能用颜色单独表示;平均值、稳态纹波和整周期积分也要分开标注。
5. 真实修正:MCU 功耗由模式、外设和时钟共同决定
- 睡眠电流不是一个永恒常数。 低功耗模式、保留的 RAM、唤醒源、BOR、看门狗、稳压器、GPIO 状态和温度都会改变它;数据手册的测试条件要逐项对齐。
- 活动电流要按事件拆分。 唤醒瞬态、ADC 采样、传感器自热、无线发送、Flash 操作和 DMA/定时器可能有不同电流峰值。平均值正确不代表电源能承受峰值。
- PWM 是外设和时钟的边界。 有的定时器在某些睡眠模式保持时钟,有的会停;时钟源切换、唤醒延迟和输出保持状态必须查具体型号和模式。
- PWM 负载属于系统电流账。 电阻负载的平均电流按 \(\int v(t)/R\,dt\) 计入;负载功率按 \(\int v(t)^2/R\,dt\) 计,不能从 MCU 的三项平均电流中遗漏。
- 平均值不描述纹波。 PWM 负载的电阻、电感、电容、驱动电阻和布局决定瞬时电流/电压;ADC 采样时刻若与 PWM 相关,还会出现同步采样误差。
- 滤波器有代价。 更大的 \(RC\) 减小纹波却增加启动/响应时间;电阻还会消耗静态功率,电容的 ESR/ESL 会把第 15 讲的真实元件边界带回来。
6. 测量纪律:同时测时间、电流和波形
- 在低压、限流、可断电条件下串入合适的电流测量元件,记录测量电阻的压降、带宽和仪器输入;不要让测量装置改变唤醒电压。
- 用足够采样率捕捉唤醒峰值、发送脉冲和 PWM 边沿,再用明确的时间窗积分得到平均电流。把“峰值”“平均”“每周期电荷”分成不同栏。
- 用示波器同时观察 GPIO/PWM、传感器供电、ADC 采样触发和电源轨;确认采样发生在 PWM 的哪个相位,避免把同步误差当成传感器噪声。
- 改变睡眠时间、唤醒周期、PWM 频率、占空比和滤波器,每次保留固件版本、时钟源、外设状态和环境条件。
- 数据手册给出的典型电流、最大电流和低功耗条件要与实测分别记录;一条电池寿命估算不能替代峰值供电和热检查。
7. 模型边界与项目产物
本页把 MCU、传感器和发送器看成分段恒流负载,把 PWM 负载看成线性一阶 RC,并假定事件时间固定、滤波器进入周期稳态。它不能预测启动瞬态、非线性负载、稳压器环路、时钟切换、无线协议重试、ADC 孔径效应或具体 MCU 睡眠寄存器的全部行为。
项目产物是“MCU 供电与事件账本”:工作模式、唤醒源、活动/睡眠/外设电流、事件持续时间、峰值与平均值、每周期电荷、PWM 频率/占空比/纹波、采样相位、外设时钟条件、实测波形和数据手册版本。把电池寿命估算、供电瞬态和信号质量分别验收。
1. 电流账本的四个层次
先列出每个状态的电流,再乘以停留时间;再把事件发生率映射到一个周期;最后才做长期平均。若系统存在不规则重试或事件,应用期望值和分布,而不要强行塞成固定周期。对于电池或限流电源,还要保留峰值、启动和故障路径,因为它们决定电源是否掉压。
平均功耗只反映能量速率。电容储能可以撑过很短的峰值,但其电压下跌、ESR、ESL 和稳压器响应必须测量。把 \(Q=I_{avg}T\) 用错单位,是低功耗估算中最常见的错误之一:1 秒周期的电荷不是 1 小时电荷,mA·ms 要换成 mA·h 才能得到 mAh。
2. PWM 的平均值不等于模拟输出
若负载是纯电阻,PWM 电压瞬时变化会直接形成方波电流;若有电感,电流由 \(L,di/dt\) 限制;若有 RC,电压是充放电曲线。负载的“平均值”要说明平均的是电压、电流、功率还是传感器响应。对于非线性 LED、磁性负载或开关稳压器,\(P(V_{avg})\) 通常不等于 \(\langle P(V)\rangle\)。
频率提高通常可以在同一个低通滤波器下减小纹波,但会增加开关损耗、EMI、定时器时钟负担和可能的测量混叠。占空比改变平均值,频率和滤波器改变纹波,两者不能互相替代。
3. 常见误判与纠正
- 误判:睡眠电流就是整机平均电流。纠正:唤醒、传感器、发送和外设按时间积分。
- 误判:PWM 占空比就是负载看到的直流电压。纠正:要写负载、滤波器和观察带宽;纹波可能很大。
- 误判:低功耗模式会自动保留所有定时器。纠正:查具体外设、时钟源、输出保持和唤醒条件。
- 误判:电流表读出一个稳定小数就足够。纠正:测量带宽、采样率和时间窗决定你看见的是平均还是被滤掉的峰值。
- 误判:增加显示位数就能延长电池寿命。纠正:电池寿命来自能量预算、峰值供电、温度和真实事件统计。
4. 资料与边界
- 电路、时间响应和功率基础参见 MIT OpenCourseWare 6.002: Circuits and Electronics 与 OpenStax University Physics Volume 2。
- 低功耗测量、信号和实验判断参见 MIT OpenCourseWare 6.071J: Introduction to Electronics, Signals, and Measurement。
- MCU、接口和测试的具体标准应从 IEEE Standards 的适用版本核对;工程设计、风险和验证记录能力可参考 ABET Criteria for Accrediting Engineering Programs。课程中的电流、PWM 和外设数值均为教学设定。
本讲只讨论低压、限流、可断电的教学系统;不涉及市电、建筑配电、并网或高能电池包施工。
5. 小结
MCU 设计要把状态电流乘以时间,把事件放进周期账本,再把 PWM 的平均值与纹波、采样相位和外设时钟边界分开验证。平均功率、峰值电流、周期电荷和波形各回答不同问题;具体芯片的睡眠与定时器行为必须回到数据手册,并用带条件的实测确认。至此,15–21 讲已经把真实元件、保护、模拟接口、传感器、数字电气、同步和 MCU 供电串成一条可审计证据链。