1. 从一次烧板事故说起:为什么ESP32供电不能随便接
前阵子帮一个做物联网的朋友排查故障,他一脸郁闷地拿着三块刚焊好的ESP32开发板来找我,说上电之后芯片烫得能煎鸡蛋,串口死活连不上。我拿万用表一量,5V直接灌进了3.3V的供电脚,三块板子全军覆没。这种场景我见过太多次了,尤其是刚从Arduino Uno转过来的朋友,脑子里还留着"5V随便接"的惯性思维,结果在ESP32上栽了跟头。
ESP32这颗芯片,本质上是一颗3.3V逻辑电平的SoC,它的供电引脚绝对耐受电压上限在3.6V左右,超过这个值,内部LDO和IO缓冲器就会进入雪崩击穿状态。而市面上大多数USB转串口模块、传感器模块、继电器模块,默认输出都是5V。你直接把5V怼到ESP32的3V3脚上,等于让一个只能喝二两的人干了半斤白酒,当场就趴下了。
所以这篇内容要解决的核心问题就一个:怎么用AMS1117-3.3这颗经典LDO,给ESP32搭一套稳定、安全、不烧芯片的供电电路。我会把电路图、元件选型、PCB布局、散热计算、常见故障排查全部讲透,适合刚入门ESP32的硬件新手,也适合想复习LDO设计细节的老手。看完你至少能明白三件事:为什么选AMS1117而不是别的方案、电路里每个电容电阻到底干嘛用的、以及为什么你的板子会发热甚至烧毁。
提示:本文所有电路均基于AMS1117-3.3的固定输出版本,输入电压范围建议控制在4.5V到10V之间,超过12V请务必先做一级降压。
2. 供电方案选型:为什么是AMS1117-3.3而不是DC-DC
2.1 LDO和DC-DC的本质区别
很多教程一上来就让你用AMS1117,但很少有人讲清楚为什么。线性稳压器(LDO)和开关电源(DC-DC)的核心差异,用一句话概括:LDO靠"烧掉"多余电压来稳压,DC-DC靠"搬运"能量来稳压。
假设你输入5V,输出3.3V,负载电流500mA。LDO的工作方式是:内部调整管相当于一个可变电阻,把多余的1.7V压差以热量的形式耗散掉。功耗计算公式是:
P = (Vin - Vout) × Iout = (5 - 3.3) × 0.5 = 0.85W
这0.85W全部变成热量,AMS1117的SOT-223封装热阻大约在60°C/W到80°C/W之间(取决于焊盘铜箔面积),温升就是0.85 × 65 ≈ 55°C。室温25°C的话,芯片表面温度会到80°C左右,摸上去烫手但还能工作。如果你输入是12V,同样的500mA负载,功耗变成(12-3.3)×0.5=4.35W,这时候AMS1117会直接触发过热保护,输出掉压,ESP32反复重启。
DC-DC方案(比如MP1584、MP2315)的效率通常在85%到95%之间,同样5V转3.3V、500mA输出,输入功率大约是1.65W/0.9≈1.83W,自身发热只有0.18W左右,几乎不烫。但DC-DC的缺点是输出纹波大,开关频率带来的高频噪声可能干扰ESP32的射频部分,导致WiFi连接不稳定或者蓝牙断流。
2.2 AMS1117-3.3的适用边界
AMS1117-3.3是一颗低压差线性稳压器,最大输出电流1A,压差在1A时约1.3V。它的优势非常明确:
- 电路极简:只需要两个电容就能工作,不需要电感、二极管、反馈电阻
- 纹波极低:PSRR在低频段有60dB以上,输出噪声通常在50μVrms级别
- 成本极低:单颗芯片几毛钱,比DC-DC方案便宜一半以上
- 无开关噪声:不会对ESP32的2.4GHz射频造成干扰
它的劣势同样明确:
- 效率低:压差越大、电流越大,发热越严重
- 输入输出压差不能太小:低于1V时稳压效果变差
- 大电流下热问题突出:持续1A输出时基本需要加散热片
所以我的选型建议是:输入5V、负载电流300mA以内、对射频性能要求高的场景,优先用AMS1117-3.3。如果你输入是12V或者负载电流超过500mA,老老实实先用DC-DC降到5V,再用AMS1117做二级稳压,这叫"两级供电架构",兼顾效率和低噪声。
2.3 一张表看懂三种供电方案
| 方案 | 效率(5V转3.3V) | 输出纹波 | 外围元件 | 成本 | 适用场景 |
|---|---|---|---|---|---|
| AMS1117-3.3 | 约66% | 极低 | 2个电容 | 极低 | 小电流、射频敏感 |
| DC-DC降压 | 约90% | 较高 | 电感+电容+二极管 | 中等 | 大电流、宽压输入 |
| 两级架构 | 约85% | 低 | 两者结合 | 较高 | 12V输入、大电流 |
注意:ESP32在WiFi发射瞬间的峰值电流可以达到500mA以上,虽然平均电流只有100mA左右,但瞬态响应不好的LDO会导致电压跌落,引发复位。AMS1117的瞬态响应属于中等水平,所以输出电容不能省。
3. 完整电路图拆解:每个元件都有存在的理由
3.1 核心电路原理图说明
先给出完整的AMS1117-3.3给ESP32供电的电路连接关系。由于无法直接画图,我用文字描述加连接表的方式呈现,你照着连绝对不会错。
主供电链路:
USB 5V或外部5V输入 → 输入滤波电容C1 → AMS1117-3.3的VIN脚 AMS1117-3.3的VOUT脚 → 输出滤波电容C2 → ESP32的3V3脚 AMS1117-3.3的GND脚 → 公共地 → ESP32的GND脚元件清单:
| 位号 | 元件 | 参数 | 封装 | 数量 | 作用 |
|---|---|---|---|---|---|
| U1 | AMS1117-3.3 | 固定3.3V输出 | SOT-223 | 1 | 稳压核心 |
| C1 | 输入电容 | 10μF~22μF | 0805或钽电容 | 1 | 输入滤波、抑制振荡 |
| C2 | 输出电容 | 22μF~47μF | 0805或钽电容 | 1 | 输出滤波、改善瞬态 |
| C3 | 高频旁路 | 0.1μF | 0603 | 1 | 滤除高频噪声 |
| R1 | 假负载 | 1kΩ | 0603 | 1 | 保证空载稳定(可选) |
| LED1 | 电源指示 | 3.3V LED | 0603 | 1 | 电源状态指示(可选) |
| R2 | LED限流 | 1kΩ | 0603 | 1 | 限制LED电流 |
3.2 输入输出电容到底怎么选
AMS1117的数据手册上写的是"输入输出各接一个10μF电容",但实际用的时候你会发现,只接10μF有时候会振荡。原因在于钽电容和陶瓷电容的ESR特性不同。
AMS1117内部误差放大器的相位裕度,对输出电容的ESR有一定要求。老版本的AMS1117要求输出电容ESR在0.1Ω到10Ω之间才能稳定,而现代MLCC陶瓷电容的ESR只有几毫欧,反而可能导致环路不稳定。所以我的实际做法是:
- 输入端:用22μF的0805陶瓷电容,并联一个0.1μF的0603电容。大电容储能,小电容滤高频。
- 输出端:用47μF的钽电容(ESR约0.5Ω到2Ω),或者用22μF陶瓷电容串联一个0.5Ω的电阻来模拟ESR。如果你手头只有陶瓷电容,建议用两个22μF并联,总容量44μF,同时观察输出是否有自激振荡。
判断是否振荡的方法很简单:用示波器看输出波形,如果看到几百kHz到几MHz的正弦波叠加在3.3V直流上,那就是振荡了。没有示波器的话,用手摸AMS1117,如果空载时也明显发热,大概率是振荡了。
3.3 假负载电阻的作用
很多新手会忽略R1这个1kΩ的假负载。它的作用是保证AMS1117在空载时也能稳定工作。有些批次的AMS1117在完全空载时,输出电压会飘高到3.5V甚至更高,因为内部调整管的最小导通电流得不到保证。
加上1kΩ假负载后,空载时也有3.3V/1kΩ=3.3mA的电流流过,这个电流足以让AMS1117进入稳定的调节状态。代价是空载时多消耗3.3mA×3.3V≈11mW的功率,完全可以接受。
如果你用的是ESP32模组,它本身在深睡眠时也有几十微安的电流,加上模组上的电源LED,实际上不算完全空载。但如果你做的是电池供电的低功耗项目,这个假负载可以去掉,前提是你实测空载电压稳定。
3.4 完整连接表(照着连不会错)
| AMS1117引脚 | 连接到 | 备注 |
|---|---|---|
| VIN(第3脚) | 5V输入正极、C1正极、C3一端 | 输入电压4.5V~10V |
| VOUT(第2脚) | ESP32的3V3脚、C2正极、R1一端 | 输出3.3V |
| GND(第1脚) | 公共地、C1负极、C2负极、C3另一端、R1另一端 | 所有地必须共地 |
| TAB(散热片) | 与VOUT内部相连 | 可焊接到铜箔辅助散热 |
提示:AMS1117的SOT-223封装,中间的宽引脚是VOUT也是散热片,它和输出脚是内部连通的。PCB布局时把这个引脚连接到一块至少1cm²的铜箔上,能显著降低热阻。
4. 实操过程:从焊接 to 上电测试的完整记录
4.1 元件准备与焊接要点
我这次用的是现成的AMS1117-3.3模块做验证,但为了讲清楚细节,还是从裸芯片焊接说起。你需要准备:
- 恒温烙铁,温度设定在320°C到350°C之间
- 0.8mm含铅焊锡丝(有铅的熔点低,对新手友好)
- 助焊剂或松香
- 镊子、吸锡带、无水酒精
焊接顺序很重要:先焊矮的元件,再焊高的元件。具体是:先焊AMS1117和电容电阻,最后焊排针。AMS1117的SOT-223封装,中间那个大焊盘很难用烙铁直接加热,我的技巧是:
- 先在PCB的散热焊盘上涂一层薄薄的锡
- 用镊子夹住芯片,对准位置放上去
- 用烙铁头同时加热芯片中间引脚和PCB焊盘,让锡融化
- 再焊两侧的引脚
如果你用的是模块,这一步可以跳过。但模块也有坑:市面上很多AMS1117模块用的是电解电容,体积大、寿命短、ESR高。我建议把模块上的电解电容换成钽电容或陶瓷电容,输出纹波会明显改善。
4.2 上电前的静态检查
焊接完成后,千万不要直接插USB。先做三件事:
第一,目视检查:用放大镜看有没有连锡、虚焊、元件方向装反。AMS1117的引脚定义是:面对芯片正面,从左到右依次是GND、VOUT、VIN。不同厂家的丝印可能不同,以数据手册为准。
第二,万用表测短路:把万用表打到蜂鸣档,测VIN对GND、VOUT对GND的电阻。正常情况VOUT对GND应该有几百欧姆到几kΩ的电阻(因为假负载和ESP32的输入阻抗),如果测到0Ω或者几欧姆,说明有短路,必须排查。
第三,限流上电:如果你有可调电源,把电压设到5V,电流限制设到100mA,然后接上电路。如果电流立刻冲到限流值,说明有短路;如果电流在几十mA以内,电压稳定在3.3V,说明基本正常。
没有可调电源的话,可以用一个USB电流表串在USB线和开发板之间。正常空载电流应该在10mA到30mA之间(取决于ESP32模组和LED)。
4.3 关键参数计算:散热和压差
假设你的输入是5V,ESP32在WiFi发射时的峰值电流是500mA,平均电流150mA。我们按最坏情况500mA来算AMS1117的功耗:
P = (5 - 3.3) × 0.5 = 0.85W
SOT-223封装的热阻(结到环境)在没有额外散热铜箔时约80°C/W,有1cm²铜箔时约60°C/W,有4cm²铜箔时约45°C/W。按60°C/W算:
温升 = 0.85 × 60 = 51°C
室温25°C时,芯片结温约76°C,低于AMS1117的过热保护阈值(约165°C),安全。但如果你把输入换成12V:
P = (12 - 3.3) × 0.5 = 4.35W
温升 = 4.35 × 60 = 261°C
这已经远超保护阈值了,芯片会反复进入热关断状态,ESP32会看到电压周期性跌落,表现为不断重启。所以12V输入必须先用DC-DC降到5V。
4.4 实测波形与数据记录
我用示波器(带宽100MHz,探头1X)测了输出端的纹波。测试条件:输入5V,负载用电子负载设到200mA。
| 测试点 | 纹波峰峰值 | 备注 |
|---|---|---|
| AMS1117输出脚 | 约2mV | 加了47μF钽电容+0.1μF陶瓷 |
| ESP32的3V3脚 | 约5mV | 走线电感导致略微增大 |
| WiFi发射瞬间 | 约30mV | 持续约200μs的跌落 |
30mV的瞬态跌落对于ESP32来说是安全的,它的欠压复位阈值通常在2.7V左右,3.3V减去30mV还有3.27V,余量充足。但如果你用的是劣质USB线,线阻大,输入5V到AMS1117的VIN可能只有4.5V,这时候压差只剩1.2V,接近AMS1117的最小压差要求,输出可能会不稳。
注意:USB线的线阻是隐形杀手。劣质线在500mA时压降可能达到0.5V以上。建议用短而粗的USB线,或者在VIN端再并一个100μF的电解电容做储能。
5. 常见问题与排查技巧实录
5.1 上电后ESP32反复重启
这是最常见的故障。排查顺序如下:
第一步,测电压:用万用表测ESP32的3V3脚对GND的电压。如果低于3.0V,说明供电不足。拔掉ESP32,单独测AMS1117输出,如果还是低,问题在稳压电路;如果恢复正常,问题在ESP32或负载过重。
第二步,测输入:测AMS1117的VIN脚电压。如果低于4.5V,换USB线或换供电口。有些电脑的USB口带载能力差,500mA时电压会跌到4.2V。
第三步,摸温度:如果AMS1117烫得不能摸(超过70°C),说明功耗过大。要么降低输入电压,要么减小负载,要么加散热片。
第四步,看纹波:如果有示波器,看输出是否有振荡。振荡的话,换输出电容或增加ESR。
5.2 WiFi连接不稳定或频繁断线
这个问题往往不是软件问题,而是电源瞬态响应不足。ESP32在WiFi发射时电流从10mA瞬间跳到500mA,如果LDO的瞬态响应慢,电压会跌落几百毫伏,导致射频部分工作异常。
解决方法有三个:
- 增加输出电容:在ESP32的3V3脚附近再并一个100μF的钽电容或低ESR电解电容,越靠近引脚越好。
- 缩短走线:AMS1117到ESP32的走线尽量短而粗,减少寄生电感。
- 改用两级供电:前级DC-DC到5V,后级AMS1117到3.3V,前级的大电容可以缓冲瞬态。
5.3 AMS1117发热严重但输出正常
如果输出稳定但芯片很烫,说明功耗在可接受范围内但散热不够。计算一下功耗,如果小于1W,可以通过以下方式改善:
- 把AMS1117的散热片焊接到大面积铜箔上,铜箔面积至少2cm²
- 在芯片背面涂导热硅脂,贴一个小铝片
- 降低输入电压,比如从5V降到4.5V(但要注意压差)
- 如果负载电流确实大,换用DC-DC方案
5.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 输出0V | 输入断路、芯片损坏 | 测VIN电压、测芯片阻值 | 更换芯片、检查焊接 |
| 输出高于3.3V | 假负载缺失、芯片假货 | 加1kΩ假负载、换正品 | 从正规渠道采购 |
| 输出振荡 | 输出电容ESR不合适 | 示波器看波形 | 换钽电容或串0.5Ω电阻 |
| 发热严重 | 压差大、电流大 | 计算功耗 | 降低输入、加散热、换DC-DC |
| 带载掉压 | 输入线阻大、USB口弱 | 测VIN带载电压 | 换短线、换供电口 |
| WiFi断流 | 瞬态响应差 | 看发射瞬间电压 | 加输出电容、两级供电 |
5.5 几个我踩过的坑
坑一:买了假AMS1117。市面上有很多打磨芯片,标着AMS1117但实际是其他型号,输出不是3.3V或者带载能力差。识别方法是看丝印是否清晰、引脚是否平整,最好从立创商城或正规代理商拿货。
坑二:输出电容用了电解电容。电解电容的ESR随温度变化大,低温时ESR升高可能导致振荡。我冬天在室外测试时遇到过,换了钽电容就好了。
坑三:忽略了ESP32模组本身的LDO。很多ESP32开发板上已经有一颗3.3V LDO(比如AMS1117或者SPX3819),你再外接一个AMS1117,两个LDO输出并联,可能会互相打架。正确做法是:要么只用板载LDO,要么把板载LDO的输入断开,直接外接3.3V到模组的3V3脚。
坑四:地线走得太细。大电流回流路径如果太细,地线上会有压降,导致ESP32的GND和AMS1117的GND之间有电位差,影响ADC采样精度。建议地线宽度至少1mm,或者用铺铜。
6. PCB布局与散热设计的实战经验
6.1 布局优先级
如果你要自己画PCB,布局顺序应该是:
- 先放AMS1117和ESP32模组,两者尽量靠近,缩短3.3V走线
- 输入电容紧贴VIN脚,距离不超过5mm
- 输出电容紧贴VOUT脚,距离不超过5mm
- 假负载电阻放在AMS1117附近,不要求紧贴
- 电源指示LED放在板边,方便观察
6.2 散热铜箔的设计
AMS1117的散热主要靠PCB铜箔。我的经验是:
- 散热片引脚连接的铜箔面积至少1cm²,最好2cm²以上
- 铜箔上可以开窗,加锡增加散热面积
- 如果空间允许,在铜箔背面也铺一块地铜,用过孔连接
实测数据:1cm²铜箔时热阻约60°C/W,2cm²时约50°C/W,4cm²时约45°C/W。面积翻倍,热阻下降不明显,所以2cm²是性价比最高的选择。
6.3 走线宽度计算
3.3V走线要承载500mA峰值电流,按1oz铜厚(35μm)、温升10°C计算,走线宽度至少需要0.5mm。如果走线长度超过2cm,建议加宽到1mm。输入5V走线同样按500mA计算,宽度0.5mm以上。
地线建议用铺铜,不要用细线。如果必须走线,宽度至少1mm。
7. 进阶玩法:两级供电与电池供电方案
7.1 12V输入的两级供电
如果你手头只有12V电源,比如监控电源或铅酸电池,直接接AMS1117会烧。正确做法是:
第一级:用MP1584或LM2596 DC-DC降到5V,效率约90%第二级:用AMS1117从5V降到3.3V,效率约66%总效率:0.9 × 0.66 ≈ 59%
虽然总效率不高,但第一级把大部分热量分担了,AMS1117只承担(5-3.3)×0.5=0.85W,散热压力小很多。
7.2 18650电池供电
单节18650电池电压范围是3.0V到4.2V,低于3.3V时AMS1117无法稳压。所以电池供电需要升降压方案,比如TPS63020或IP5306。如果你非要用AMS1117,至少需要两节18650串联(6V到8.4V),但效率只有40%左右,不推荐。
7.3 低功耗场景的取舍
如果你的ESP32项目大部分时间在深睡眠,平均电流只有几十微安,AMS1117的静态电流(约5mA)就成了主要消耗。这时候应该换用低静态电流LDO,比如HT7333(静态电流4μA)或XC6206(静态电流1μA)。AMS1117适合持续工作的场景,不适合电池长期待机。
提示:AMS1117的静态电流在数据手册上标的是5mA到11mA,实际测量约3mA到8mA。对于电池供电项目,这个电流足以在几天内耗光电池。
8. 我的个人经验总结
折腾ESP32供电这几年,我最大的体会是:不要迷信"经典电路",要根据实际场景算功耗、算温升、算瞬态。AMS1117-3.3是一颗好芯片,但它有明确的适用边界。5V输入、300mA以内、对噪声敏感的场景,它是最优解;12V输入、大电流、电池供电的场景,它就是个发热源。
另外,买元件一定要从正规渠道。我见过太多因为假芯片导致的诡异故障,排查半天最后发现是芯片本身的问题。正品AMS1117-3.3单价不到一块钱,没必要为了省几毛钱给自己挖坑。
最后分享一个小技巧:如果你不确定电路是否稳定,可以先用洞洞板搭一个最小系统,只焊AMS1117、两个电容和一个假负载,用电子负载拉载测试。确认输出稳定后再接ESP32。这样即使出问题,也不会烧掉昂贵的模组。