1.2 电源设计与硬件稳定性


1.2 电源设计与硬件稳定性

本节摘要:嵌入式项目里比例最高的一类"玄学故障"——随机重启、传感器抽风、无线一开就死——根源都在电源。本节给出供电预算的计算方法,比较 LDO 与 DCDC 两条路线的适用边界,讲清去耦与储能电容的分工,并用一个"WiFi 一发射就复位"的真实案例演示排查全过程。

1.1 节选定了平台,这一节处理让平台"活稳"的问题。它放在选型之后、时序之前,因为电源是物理层里最先把软件问题搅浑的一层:电压跌落的瞬间,CPU 可能正在执行中断服务,症状却表现为"程序跑飞"——不在物理层把疑点排掉,第 2 章的时序分析会寸步难行。

先算一笔供电的账

供电设计从预算表开始,而不是从挑芯片开始。把系统里每个用电单元的工作电流、峰值电流、供电电压列成清单,然后问三个问题:峰值电流加起来是多少?最坏情况出现在什么时刻?从哪一路电源取电?

以一块 ESP32 开发板加 4 个 I2C 传感器为例:ESP32 深眠约 10 毫安、正常运行 80 至 120 毫安、WiFi 发射瞬间可达 300 至 500 毫安;4 个传感器合计约 10 毫安。USB 供电标称 500 毫安,理论上够,但注意两个细节:一是峰值持续时间虽短(毫秒级),电压轨却会瞬间塌陷;二是许多 USB 线压降严重,板上 5V 早已不足 5V。预算表的作用就是让你在设计阶段看见这些数字,而不是在故障现场猜测。

图:典型节点的供电架构与电流去向

图:典型节点的供电架构与电流去向

LDO 与 DCDC 的适用边界

两类稳压器件的取舍可以压缩成一句话:要干净用 LDO,要效率用 DCDC,压差大、电流大时二者级联

维度 LDO 线性稳压 DCDC 开关稳压
效率 压差乘电流全部变热 85% 以上常见
输出噪声 低,纹波小 有开关纹波,需滤波
成本与复杂度 低,两个电容即可 需电感,布局讲究
适用场景 压差小、电流小、模拟供电 电池供电、压差大、主功率轨

用锂电池(3.0 至 4.2V)直接给 3.3V 轨供电是个经典案例:满电时压差 0.9V,若负载 200 毫安,LDO 每秒烧掉约 0.18 瓦——发烫、缩水续航;而放电到 3.4V 以下时 LDO 进入跌落区,输出开始跟随输入下跌。正确做法是 DCDC 先降到 3.6V,再用 LDO 收尾出一条干净的 3.3V 模拟轨。

💡 关键直觉:压差乘以电流就是 LDO 的发热功率。这道算术题能在选型阶段就告诉你"这块 LDO 会不会烫手"。

去耦电容:不是玄学,是救火队

芯片内部电路以纳秒级开关,电流需求随之高频脉动。电源轨有阻抗,电流突变时电压必然瞬跌——去耦电容就是垫在芯片脚边的"本地水库",用极低的供电距离补上瞬态电流。实践法则:每个电源引脚一个 100nF 陶瓷电容,紧贴管脚;每条电源轨再加 10uF 级储能;对 WiFi 这类毫安级突发电流的负载,另加数百微法低等效串联电阻的电解或钽电容专供射频突发。电容摆放位置比容量数字更重要:一个离芯片三厘米的 100nF,效果可能不如贴脚的 10nF。

案例:WiFi 一发射就复位的完整排查

背景:一台 ESP32 环境监测器在桌面测试一切正常,装进外壳、接上独立 3.3V 电源后,只要 WiFi 连上路由器开始发射,设备就重启,串口反复打印启动信息。

操作:第一步看复位原因。ESP32 启动信息里有复位寄存器值,显示是掉电复位而非软件异常——方向指向电源而非代码。第二步用万用表监测 3.3V 轨:普通模式 3.28V 稳定,触发发射时观察到电压瞬间跌到 2.9V 左右。第三步查供电链路:该 DIY 方案用的是一节锂电池经 LDO 直出 3.3V,LDO 峰值能力 250 毫安,而发射需求近 500 毫安,缺口由输出电容短暂填补,电容偏小、LDO 又进入限流,电压随之塌陷。第四步按上节方案改造:LDO 前加 DCDC、3.3V 轨并联 470 微法低阻电解专供射频、发射引脚就近补 100nF。

结果:发射瞬间电压最低 3.21V,设备连续运行一周无重启。

解读:这起故障里软件没有一行错,但症状极具迷惑性——很多人第一反应是"程序有 bug"或者"板子坏了"。复位原因寄存器是嵌入式排查的第一入口,它能直接区分硬件掉电与软件崩溃,省掉整个错误方向上的时间。

变式:如果复位原因显示是看门狗超时而非掉电,同样的"WiFi 一开就重启"就要换个方向查——大概率是 WiFi 连接的阻塞等待卡死了主循环,解法在第 2 章中断与第 4 章 RTOS 的任务划分里。

用代码看清自己的电源轨

主控自带的 ADC 可以当一台"穷人版示波器",粗略监测电压轨质量。下面这段代码以连续采样统计最低电压,用于捕捉瞬态跌落:

// 以 ESP32 为例:把 ADC 引脚接到 3.3V 轨的分压点上 // 分压:3.3V 经两个 100k 电阻对半分压后接入 GPIO34 const float VREF = 3.3; // 参考电压 const int SAMPLES = 2000; // 连续采样次数 void setup() { Serial.begin(115200); analogReadResolution(12); // 12 位分辨率,读数 0 到 4095 } void loop() { uint32_t sum = 0; uint16_t vmin = 4095; for (int i = 0; i < SAMPLES; i++) { uint16_t raw = analogRead(34); sum += raw; if (raw < vmin) vmin = raw; // 记录最低值,用于捕捉跌落 } float vavg = sum / (float)SAMPLES / 4095.0 * VREF * 2.0; // 还原分压 float vlow = vmin / 4095.0 * VREF * 2.0; Serial.printf("均值 %.2fV 最低 %.2fV\n", vavg, vlow); delay(500); }

输入是 3.3V 轨的分压采样,输出是均值与最低值两行。正常时最低值贴着 3.2V 以上;若在 WiFi 发射时看到最低值明显下探,跌落幅度就是储能电容不足的直接证据。注意 ADC 本身有非线性误差,绝对值仅供参考,但跌落的相对幅度是可信的

⚠️ 常见坑:用面包板做射频供电实验,跳线的电阻与电感足以让一切电容布局失效。发现"怎么加电容都没用"时,先看看自己是不是还在面包板上。

本节要点回顾

  • 先列预算再选器件:峰值电流清单是供电设计的第一张图纸;
  • LDO 管干净,DCDC 管效率:压差乘电流等于发热,这道算术先于选型;
  • 电容分两类:去耦贴脚吸噪声,储能扛突发,位置比容量重要;
  • 复位原因寄存器是排查第一入口:它能在三十秒内把"软件问题"与"硬件掉电"分开;
  • ADC 能当电压轨监工:绝对值不准,但跌落幅度可信。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U