ESD/浪涌防护实战:一次雷雨季的成批返修,逼我把 TVS、放电管和接地路径从头补了一遍课
本文是嵌入式硬件系列第 20 篇。上期聊 ITM/SWO 调试打印时预告了 ESD/浪涌防护,这期兑现。
事情是这样开始的
去年夏天雷雨季,某批户外安装的计量采集终端开始陆续返修。症状高度一致:
- 一部分是 RS485 收发器击穿——A/B 线对地短路或开路,总线上挂着它整个网段都瘫痪;
- 一部分是 MCU 复位引脚损伤——设备上电后复位时好时坏,示波器上看复位波形毛刺很大;
- 还有一小部分更惨:电源口整流桥后面直接炸开,板子带焦痕。
返修板加起来二十多台,集中在同一个安装区域——多雷暴、土壤电阻率高、配电网没有良好等电位连接。这批板子当年打样时,我在接口电路里画了 TVS,自我感觉防护做全了。结果一查原理图才发现:TVS 型号选错了、接地路径形同虚设、前级连个泄放器件都没有。等于只穿了件布衫就站到了雷雨里。
这一篇把我从这次返修里学到的 ESD 与浪涌防护体系完整捋一遍:先分清两个概念的能量量级,再讲器件选型、两级防护架构、接地路径,最后是布局要点和测试验证方法。
先分清:ESD 和浪涌是两码事
很多人(包括当年的我)把”防静电”和”防浪涌”混为一谈,选个 TVS 一劳永逸。但这两个测试的能量差着数量级:
| 项目 | ESD(IEC 61000-4-2) | 浪涌(IEC 61000-4-5) |
|---|---|---|
| 典型波形 | 1.2 ns 上升 / 60 ns 半宽 | 1.2/50 μs 开路电压 / 8/20 μs 短路电流 |
| 典型等级 | 接触 ±4~±8 kV,空气 ±8~±15 kV | 差模 1 kV,共模 2 kV(常见等级) |
| 单次电流峰值 | 约 16~30 A(接触 ±8 kV) | 数百安培到上千安培 |
| 单次能量 | 约零点几毫焦到几毫焦 | 数十毫焦到焦耳级 |
| 时间尺度 | 纳秒级,考验器件响应速度 | 微秒级,考验器件能量吞吐能力 |
| 来源 | 人手触摸、装配摩擦 | 雷电感应、电网开关操作、负载投切 |
记住一句话:ESD 考的是”快”,浪涌考的是”扛”。ESD 电流上升沿 1.2 ns,响应慢的器件还没来得及动作,尖峰已经灌进芯片了;浪涌电流几百安培,小封装 TVS 瞬间就被过载打穿。
我们那批返修板的问题恰好两头都占:RS485 口贴了个 SOD-323 封装、结电容偏高的 ESD 专用 TVS,浪涌一来直接过载开路;复位引脚干脆裸奔,ESD 测试时都过不去。
防护器件四件套:各管一段
动手改板前先把常用的四类器件特性捋清楚:
| 器件 | 响应速度 | 通流能力 | 残压 | 寄生电容 | 典型用途 |
|---|---|---|---|---|---|
| TVS 二极管 | 皮秒级 | 小(几十 A 级,看封装) | 低、可精确钳位 | 大(信号型可做到 <1 pF) | 后级精细钳位、ESD 防护 |
| 气体放电管 GDT | 微秒级(需弧光建立) | 极大(kA 级) | 高(弧压约 10~30 V) | 极小(<1 pF) | 前级大能量泄放 |
| 压敏电阻 MOV | 纳秒~数十 ns | 大(kA 级) | 中等、随电流上升明显 | 数百 pF~nF 级 | 电源口前级泄放 |
| 聚合物 PESD | 亚纳秒 | 小 | 中等 | 极低(<0.3 pF) | 高速信号口 ESD |
几个选型要点,都是我交过学费的:
- TVS 的 VRWM(反向截止电压)必须高于线路正常工作电压的上限。RS485 总线共模范围是 −7~+12 V,考虑 fail-safe 偏置和故障工况,我最后选的是 VRWM = 24 V 的型号——选 12 V 的型号看着”更贴身”,但总线共模一旦漂移,TVS 长期微导通发热漏电,几个月就劣化了。返修里还真找到一颗这么烧糊的。
- 结电容是高速信号口的隐形杀手。485 跑到 115200bps 还好,如果是以太网、USB、CAN FD 这类口,TVS 结电容必须控制在几个 pF 以内,必要时用聚合物 PESD。
- 看 IPP 而不是只看功率。同样标 400 W 的 TVS,10/1000 μs 波形下 IPP 可能是 17 A,8/20 μs 下可能是 40 A—— datasheet 里标的是哪个波形,一定要看清楚。浪涌场合按 8/20 μs 的 IPP 核算。
- GDT 的直流击穿电压要高于线路最高工作电压,否则会在线路正常时”误点火”,反复点火又会老化。
两级防护架构:让每级只干自己擅长的事
单靠一级器件,要么扛不住能量(TVS),要么钳位太差(GDT/MOV 残压高)。工程上的标准答案是两级配合:
线缆 ──┬──[ GDT/MOV 前级 ]──[ 退耦电阻/电感 ]──[ TVS 后级 ]── 芯片
│ │
泄放大能量 隔离前级,保证 TVS 先动作
- 前级 GDT/MOV:负责把 kA 级大电流泄放进大地,缺点是残压高、动作慢。
- 后级 TVS:负责把残压进一步钳到芯片能忍受的水平,动作快但扛不了大能量。
- 中间的退耦元件(电阻、PTC 或电感):这是最容易被漏画的一笔。没有它,前级还没动作,浪涌全压怼在后级 TVS 上,TVS 一样死。有了退耦,TVS 先动作把电压钳住,前级两端电压差拉开后才击穿泄放——级间配合的本质是”让快的小器件先顶,让慢的大器件来接盘”。
我们终端的 RS485 口最终配置:GDT(2 极,90 V)在前级对地泄放,串联 10 Ω/2 W 退耦电阻,后级双路 TVS(VRWM 24 V、结电容 3 pF)到线间和对地。整改后送浪涌测试,差模 1 kV、共模 2 kV 各正负各 5 次全部通过,判据 B(浪涌期间通信短暂中断,浪涌后自动恢复)。
接地路径:泄放电流走的那条路,才是防护设计的正文
这是这次返修给我最深刻的一课。防护器件再对,泄放路径不对,等于没防护。
浪涌电流泄放时是几十到上千安培的脉冲。算一笔账:一条 10 cm 长、1 mm 宽的 PCB 走线,电感约 100 nH,di/dt 按 1 kA/8 μs 估算,感性压降 L·di/dt ≈ 100 nH × 125 A/μs = 12.5 V。也就是说,泄放电流经过这么一段”地线”时,那颗芯片的地会被瞬间抬高十几伏——对 3.3V 供电的 MCU 来说,这已经远超引脚能承受的范围;防护器件确实导通了,但电流没地方去,抬升的地电位还是把芯片打穿。
接地路径的设计要点:
- TVS 的接地端必须就近接到泄放地(机壳地/屏蔽地),走线短粗,理想情况下几毫米内打过孔到大铜皮,绝不能绕着板子走细线到芯片旁边的”数字地”。
- 泄放地与信号地在板内单点连接。泄放时泄放地电位剧烈抬升,如果和信号地大面积共线,这个抬升会直接耦合进所有信号——这比不打防护还危险。
- 接口连接器到防护器件、防护器件到泄放地的路径,面积越小越好,构成”小泄放环路”。
- 金属外壳设备:连接器外壳、屏蔽层先接机壳,机壳是第一道泄放通道,PCB 上的泄放地通过低阻抗连接机壳。
返修板上看得很直观:TVS 就贴在连接器旁边没错,但它的接地端是一根 8 cm 的细走线绕到芯片附近的 GND 平面——泄放电流全从这里过,等于 TVS 白装。改板时把接口区域整块挖出独立的泄放铜皮,单点桥接主地,雷雨季后的返修率降了一个数量级。
信号口的结电容与眼图:防护不能以牺牲信号质量为代价
防护改完第一版,浪涌测试过了,通信联调却出了新问题:115200 bps 的 485 总线通信误码率明显上升。拿示波器看波形,边沿明显变缓。
原因就是 TVS 的结电容。两口 TVS 加起来约 10 pF,挂在 1 kΩ 上拉网络和 120 Ω 终端电阻的总线上,配合长线分布电容,等效负载电容显著增大,边沿被 RC 滤掉了。处理办法:
- 换成结电容 3 pF 的低容 TVS(双路合一封装);
- 退耦电阻从 10 Ω 适度回调(它也参与边沿变缓,最终取 6.8 Ω,浪涌测试仍通过);
- 重新做浪涌测试 + 误码率测试,两者同时达标才算改板完成。
经验:每一个防护改动,都要回到信号完整性上复核一遍。防护和信号质量是一对永远的矛盾,工程师的活儿就是找到那个两边都站得住的工作点。CAN 口、以太网口同理——CAN FD 5 Mbps 以上时,TVS 结电容甚至要控制在 1~2 pF。
MCU 裸奔引脚:复位、按键和调试口
返修统计里有个容易被忽略的类别:复位引脚损伤。户外设备的人机交互按键、复位按键、编程口(SWD)都是直通外界的,人手一摸就是 ESD。
这批板子的复位线是从面板按键拉过来的,约 15 cm 走线,中途无任何防护。人手接触 ±8 kV ESD 时,耦合到复位线上的尖峰足够损伤 MCU 的复位输入级。整改方案:
- 复位/按键线:串 1 kΩ 电阻 + 就近贴 ESD 保护二极管(低结电容的 5 V 单向 TVS);
- 复位 RC(10 kΩ 上拉 + 100 nF)本身就有一定吸收作用,但不要指望 RC 代替 TVS——ESD 上升沿 1.2 ns,100 nF 在这个时间尺度上就是开路;
- SWD 调试口:批量设备建议在量产版上直接不引出测试点,或者用堵头/导热胶盖住,物理防护比电子防护更可靠;
- 所有外露金属件(螺钉、天线座、USB 金属壳)就近接机壳地,不要接到信号地。
系统级配合:硬件防护之后,软件得会”爬起来”
硬件防护能做到判据 B——浪涌期间通信中断、浪涌后恢复。但”恢复”这半个字要靠软件兑现。这套代码我们在 CAN 那篇里写过一半,485 侧的思路类似:
/* RS485 通信看门狗 + 故障统计(节选) */
#define RS485_TIMEOUT_MS 5000 /* 无有效帧超时 */
#define RS485_FAIL_LIMIT 8 /* 连续错误帧阈值 */
static uint32_t last_good_frame_ms;
static uint32_t err_frame_cnt;
void RS485_Poll(uint32_t now_ms)
{
if (now_ms - last_good_frame_ms > RS485_TIMEOUT_MS) {
/* 总线疑似被打瘫(收发器锁死/总线卡死):重新初始化外设 */
RS485_Reinit();
last_good_frame_ms = now_ms;
}
}
void RS485_OnFrameError(void)
{
if (++err_frame_cnt >= RS485_FAIL_LIMIT) {
RS485_Reinit(); /* 错误帧连续超限也重新初始化 */
err_frame_cnt = 0;
}
}
配合上电力行业常见的通信规约里的”故障计数 + 分级恢复”思路:单帧 CRC 错只计数;连续错误先重初始化 485 外设;重初始化无效则复位收发器电源(有条件的话用高边开关断电重启收发器)。这些手段平时用不上,但雷雨天它们决定了设备是”闪断一分钟”还是”彻底掉线等人工到场”。
另外注意:浪涌事件本身要留痕迹。我们在设备里加了一个 GDT 后级电压检测(分压到 ADC),检测到异常尖峰事件就计数上报。运行两年后拿这个计数和气象数据对过,相关性非常好——它能告诉你哪条线路的防护已经接近极限,比等设备坏了再返修主动得多。
测试验证:别拿自己当第一个实验品
改板后的验证必须上仪器,两条线都要做:
- ESD 测试(IEC 61000-4-2):接触放电 ±4/±8 kV,空气放电 ±8/±15 kV。放电点选:所有外露金属件、缝隙、按键、连接器外壳;每点正负各 10 次。判据 B:ESD 时设备可能失常,放电后自动恢复,不允许死机或损坏。
- 浪涌测试(IEC 61000-4-5):电源口和信号口分开做。电源口差模 1 kV/共模 2 kV(户内)到差模 2 kV/共模 4 kV(户外严苛等级),信号口按差模 1 kV/共模 2 kV。耦合网络注意 CD(容性耦合)与去耦网络的配置,信号线要走耦合夹。
实测里几个容易踩的坑:
- 空气放电结果离散性大(受湿度、Approach 速度影响),以接触放电为准设计,空气放电作为补充;
- ESD 测试要求设备处于正常工作状态下打,比如通信中打 ESD,观察通信是否恢复——只上电不打通信,等于没测;
- 浪涌的正负极性和相位角(AC 电源口 0°/90°/180°/270° 相位注入)都要覆盖,很多问题只在特定相位暴露;
- 实验室过了不代表现场没问题——现场雷击感应能量远大于实验室标准波形,测试是底线不是天花板。
防护设计自查清单
最后照例留一份可以照着打勾的清单:
- ☐ 每个对外接口都列了防护对象:ESD、浪涌(EFT 顺带确认),没有”裸奔”引脚
- ☐ TVS 的 VRWM 高于线路最大工作电压(485 口 ≥ 24 V 留余量)
- ☐ 高速信号口 TVS 结电容核算过(485/CAN ≤ 5 pF,更高速口用低容/聚合物器件)
- ☐ 大能量口(电源、长距离信号线)是两级防护:前级 GDT/MOV + 退耦元件 + 后级 TVS
- ☐ 退耦电阻/PTC 的功率和浪涌耐受核算过(不是随便 0402 一颗)
- ☐ 防护器件接地端到泄放地的走线短粗,感性压降估算过
- ☐ 泄放地与信号地单点连接,泄放环路面积最小
- ☐ 屏蔽层、连接器金属壳、外露金属件接机壳地的路径确认
- ☐ 改板后重做了信号完整性复核(眼图/边沿/误码率)
- ☐ 固件有通信看门狗、错误帧计数和分级恢复逻辑
- ☐ 浪涌/ESD 异常事件有计数上报,可追溯现场工况
- ☐ ESD 与浪涌测试覆盖正负极性、全部放电点和电源相位角,判据明确
写在最后
防护设计是最典型的”看不见的功夫”:做好了没人知道,做坏了雷雨天见。这批返修教会我的核心就一句话——防护是一个电流路径设计问题,不是器件堆砌问题。TVS 选型只占三成,剩下七成在泄放路径、级间配合和布局。
下一篇预告:MQTT over TLS 与设备端证书管理——聊聊嵌入式设备怎么把 TLS 握手时间、内存占用和证书有效期管理这三座山搬掉,也是设备接云绕不开的一课。感兴趣的可以关注下。