光电耦合器在隔离电源反馈环路中的 CTR 匹配与温度补偿
隔离电源(Flyback、反激、LLC)的反馈环路里,光耦是横跨原副边的"独木桥"——TL431 在副边把输出电压误差转成电流,光耦原边 LED 发光,副边光敏管把电流传到原边 PWM 芯片(UC3842、NCP1342 之类)的 COMP/FB 脚。CTR 一掉,环路就松,轻则负载调整率变差,重则穿越频率飘、相位裕度不够,整机振荡。但 CTR 不是常数——批次差 ±30%、85℃ 比 25℃ 掉 40%、老化 5 年再掉 30%,三者叠加,PC817A 标称 80% 能掉到 35%。下面这套在 12 V/5 A Adapter + UC3842 上验证过。
一、CTR 的 datasheet 陷阱
以 PC817A 为例,datasheet 给 CTR 80–160% @ If=5 mA, Vce=5 V, 25℃。三个坑:
1. 这是"饱和前最大值",环路里光耦要工作在线性区(Vce≈2–3 V,别饱和到 0.2 V),可用 CTR 只有标称的 60–70%
2. If=5 mA 是测试条件,实际环路里 If 常被 TL431 阴极电流限制在 1–3 mA(R_led 取值决定),If 越低 CTR 非线性越明显
3. 温度系数:-0.5%/℃ 左右,25→85℃ 掉 30%;老化系数:5 年再掉 20–30%
三者乘起来:PC817A 标称 80% → 线性区 80%×0.65 ≈ 52% → 85℃ 52%×0.7 ≈ 36% → 老化 5 年 36%×0.75 ≈ 27%。如果环路按 datasheet 下限 80% 算,高温老化后直接断链。
隔离电源别用 A 档,选 B 档(130–260%)或 C 档(200–400%),If 取 5–10 mA,给温漂和老化留余量。
二、环路 CTR 预算怎么算
经典 Flyback 反馈:副边 TL431 阴极 → R_led → 光耦 LED → 副边 GND;原边光耦光敏管集电极接 VCC(12–15 V),发射极接 UC3842 FB(内部 2.5 V 基准 + 下拉)。
环路里要满足:If_min × CTR_min > Ic_need_max
• If_min:最低输入电压 + 满载时,TL431 阴极还能给 LED 的最小电流(一般留 ≥ 1 mA,否则 TL431 不启动)
• CTR_min:datasheet 下限 × 0.65(线性区) × 0.7(85℃) × 0.75(老化)= 约 0.34 × datasheet 下限
• Ic_need_max:原边 PWM 芯片 FB 脚需要的吸入电流(UC3842 FB 内部 2.5 V / 内部 R ≈ 0.5–1 mA 启动,动态能到 3–5 mA)
/* CTR 余量快速核算(伪代码) */
Ctr_nom_lower = 130; // B 档下限 %
Ctr_linear = Ctr_nom_lower * 0.65;
Ctr_hot = Ctr_linear * 0.7; // 85℃
Ctr_aged = Ctr_hot * 0.75; // 5 年
Ctr_min = Ctr_aged; // 最终 worst-case
If_min = 2.0; // mA,按 R_led 最低 Vin 算
Ic_need = 3.0; // mA,UC3842 FB 动态最大
if (If_min * Ctr_min / 100.0 < Ic_need) {
printf("CTR 余量不足,换 C 档或抬 If\n");
} else {
printf("OK, margin = %.1f mA\n", If_min * Ctr_min / 100.0 - Ic_need);
}
PC817B 算下来:130% → Ctr_min≈30% → If_min=2mA 时 Ic=0.6 mA,不够 UC3842 动态;If 抬到 5 mA 才 1.5 mA,还是紧。所以 12 V/5 A 这种级别直接上 PC817C(200–400%),Ctr_min≈45%,If=3 mA 时 Ic≈1.35 mA,够用但余量不大;If=5 mA 时 Ic≈2.25 mA,稳。
三、温度补偿三种做法
1. NTC 并联电阻抬 If(最便宜)
LED 支路上,R_led 原来是一颗固定电阻(如 330 Ω @12 V 副边,If≈(12-2.5-1.2)/330≈25 mA,但 TL431 会钳,实际 If 由 TL431 阴极电流定,R_led 是"上限电阻")。在 R_led 上并联 NTC(10 k@25℃,B=3950),温升时 NTC 阻降 → R_led//RNTC 总阻降 → If 升,抵 CTR 跌落。
/* 简化:R_led 并联 NTC 网络 */
R_led = 330; // 主限流,Ω
R_par = ntc_R(85); // 85℃ 时 NTC ≈ 1.3k
R_eff = R_led * R_par / (R_led + R_par); // 85℃ 时变小 → If 升
调法:25℃ 时 NTC 阻 >> R_led,基本不起作用;85℃ 时 NTC 阻 ↓,If 升 20–30%,刚好抵 CTR 掉的那段。
⚠ NTC 别选太猛(如 5 k B=3450),85℃ 时 If 会超 TL431 最大阴极电流(一般 100 mA,但建议 < 20 mA 留余)。
2. 二极管 Vf 温漂抵 LED Vf 温漂(精准点)
LED 的 Vf 随温升 ≈ -1.8 mV/℃(红光),TL431 阴极到 LED 的回路:Vout → R_up → TL431 阴极-阳极 → LED → GND。TL431 的 Vka≈2.5 V 稳,但 LED Vf 随温掉 → 同一 R_led 下 If 会升(这本身是负反馈,但非线性)。如果想更稳,在 LED 旁顺向串一颗 1N4148(Vf≈0.7 V,温漂 -2 mV/℃),和 LED Vf 温漂同向,使"LED+1N4148"总 Vf 温漂 ≈ -3.8 mV/℃,R_led 上的压降(Vka + 小电阻 - 总 Vf)温漂更正一点,If 随温略降——反着来?其实更常用的做法是:R_led 用正温度系数 PTC(如 Ni 丝或 PTC 厚膜电阻),温升 R↑ → If↓,但 CTR↓ 需要 If↑,所以 PTC 方向反了不能用。正确思路是:温升 If 要升,所以 R_led 主体用固定电阻,并联 NTC(方案 1)才是正路;串二极管是给" If 温升太猛"的场合限流用的。
3. 高端:用隔离放大器代替光耦(如 TI AMC1301)
代价高,但 CTR、温漂、老化全不用管,带宽也高(> 200 kHz),LLC 闭环、数字电源用得多。消费级 Adapter 不划算。
四、PCB 布局三件事
1. 光耦离变压器 ≥ 5 mm,别让变压器漏感和 MOS 热风烤到光耦本体——CTR 温漂里"环境温度"和"自身 If 发热"是两回事,自身发热靠 PCB 铜散热(光耦两个 GND/地脚打 via 到内层 GND 铜)
2. 原边光敏管走线短:集电极接 VCC(短)、发射极接 FB(短),FB 脚到光耦间别插别的器件,避免引入噪声
3. TL431 补偿网络(R+C)贴 TL431,别贴光耦——补偿网络是副边误差放大的核心,光耦只是传电流
五、验证:三温点扫环路
板子回来用 Bode 100 或示波器"变频注入"法扫环路:
• 25℃ 满载:穿越频率 fc = 2–5 kHz(Flyback),相位裕度 > 45°
• 85℃ 满载:fc 不应掉 > 30%,相位裕度 > 40°(CTR 掉了如果没补偿,fc 会掉 50%+,裕度崩)
• -40℃ 冷启动:CTR 会升 20–30%,fc 升,但一般不会振荡,注意 If 别超 TL431 上限
/* 生产测试项 */
test_ctrratio() {
/* 25℃ 测 If=5mA 时 Vce=5V 的 CTR,筛选 < 150% 的(B 档范围)*/
/* 85℃ 烘箱 30 min 复测,CTR 掉 > 40% 的批次退货 */
}
隔离电源光耦反馈的真谛:CTR 按"批次下限×线性×高温×老化"三重打折后算 If 余量、B 档起步 C 档稳、R_led 并联 NTC 做温补最实惠、光耦别让变压器烤到。这套走完,12 V/5 A Adapter 从 -40 到 85℃ 负载调整率压到 ±1% 内,环路不会在高温老化后"突然变软"。





