15APF 前级 PFC

单相 220V → Boost PFC → 直流母线

本模块主旨
Boost PFC 双环:外环稳 380V 母线,内环让输入电流跟电压同形——PF→1、THD→低、过认证 + 给后级 FOC 留弱磁余量。

学完应能回答

查看完整 Walkthrough(9 步 + 4 误区)

总览
PFC 是压缩机变频器与电网的"接口管理员"——又要听电网话(PF=1),又要给后级稳定母线。双环 + 平均模型是入门的钥匙。

零基础速入

类比
APF / PFC 像家用变频器的"电源整形师"——把"电网取来的杂乱无章电流"整理成跟电压同形同步的干净正弦,顺便升压到 380V 给后级压缩机变频器用。没有它,电流谐波超标过不了认证,电网也用得吃力。
核心概念
单相 220V 电网经整流桥得到 |sin| 半波,再用 Boost 升压电路 + 双环控制(外环稳母线、内环让电感电流跟踪 |sin|)实现高功率因数 + 低 THD + 稳定 380V 母线。

为什么要学

第一手操作
右侧把"母线目标 Udc"从 380V 拉到 250V(接近不升压),看输入电流和电网电压的相位偏差变大、PF 降低;再拉回 380V,PF 接近 1。

学习目标

核心概念

公式

Boost 升压关系(稳态)
Udc = Vrect / (1 - D)

D 是占空比;D=0 时 Udc=Vpeak(不升压),D=0.5 时 Udc=2·Vpeak。

理想 PF
PF = 1 当 i_line(t) = k · v_line(t)

电流和电压完全同相位、同形状(正弦),PF=1。PFC 的目标就是逼近这个状态。

母线纹波
ΔUdc ≈ I_load / (2·ω_line · C)

电网频率两倍是主纹波频率(整流桥输出 100Hz);C 越大纹波越小。

工程意义

STM32 移植指南

常见误区

  • 内外环带宽颠倒(外环比内环快) → 振荡。
  • 负载突变没限速 → 母线被瞬间拉低。
  • 电流采样滤波太重 → 内环失稳。
  • 没区分 100Hz 纹波和 PWM 开关纹波。

调试方法

建议实验

STM32 C 代码骨架

/* apf_pfc.c — 单相 Boost PFC 双环控制
 * PWM 频率 60kHz,控制周期 = PWM 周期 = 16.7μs
 * 适配 STM32G4 + OPAMP 内置电流放大
 */

typedef struct {
    /* 测量 */
    float v_ac_rect;     // 整流后电压(A/D 实测)
    float i_l;           // 电感电流 A
    float udc;           // 母线电压 V

    /* 给定 */
    float udc_ref;       // 母线目标
    float i_amp_ref;     // 电流幅值参考(电压环输出)

    /* 控制器状态 */
    float volt_int, curr_int;
    float volt_kp, volt_ki;
    float curr_kp, curr_ki;

    /* 内部 */
    float sin_norm;      // |sin(ωt)| 模板(由零交叉过 PLL 得到)
} pfc_ctx_t;

void pfc_pwm_isr(pfc_ctx_t *p, float dt) {
    /* 1. 外环(电压):每 N 个 PWM 周期跑一次(这里假设每周期都跑) */
    float err_v = p->udc_ref - p->udc;
    p->volt_int += err_v * dt;
    p->i_amp_ref = clamp(p->volt_kp * err_v + p->volt_ki * p->volt_int, 0, 30);

    /* 2. 电流参考:跟踪 |sin| */
    float i_ref = p->i_amp_ref * p->sin_norm;

    /* 3. 内环(电流) */
    float err_i = i_ref - p->i_l;
    p->curr_int += err_i * dt;
    float duty = p->curr_kp * err_i + p->curr_ki * p->curr_int;
    duty = clamp(duty, 0, 0.95f);

    /* 4. 写 CCR */
    TIM1->CCR4 = (uint16_t)(duty * (TIM1->ARR + 1));
}

/* 零交叉检测产生 |sin| 模板:
 * 输入端电压采样 PLL 跟随 100Hz 整流后正弦的相位 */
void pfc_update_sine_template(pfc_ctx_t *p) {
    /* 简化:直接用 v_ac_rect 归一化 */
    static float v_peak = 1;
    if (p->v_ac_rect > v_peak) v_peak = p->v_ac_rect;
    v_peak *= 0.9999f;     // 慢衰减
    p->sin_norm = p->v_ac_rect / fmaxf(v_peak, 1.0f);
}

下一步

随堂题

Boost PFC 的双环结构里,谁是外环?
  1. 电流环
  2. 电压环 (正确)
  3. 同等
  4. 看负载
提示:电压环外、电流环内。外环慢(50-200 Hz),内环快(1-5 kHz)。外环输出当作内环参考幅值。
理想 PF=1 的输入电流应该长什么样?
  1. 方波
  2. |sin| 半波
  3. 与电网电压同相位的正弦(含正负) (正确)
  4. 常数
提示:PF = 1 ⇔ 电流与电压完全同相同形。注意:电感电流是 |sin|(始终正),但输入端线电流随电网半波翻转,是完整正弦。
母线电容 C 增大 4 倍,100Hz 纹波幅度大约怎么变?
  1. 不变
  2. 4 倍
  3. 减半
  4. 减 4 倍 (正确)
提示:ΔUdc ≈ I/(2ω·C),反比于 C。C 翻 4 倍 → 纹波 1/4。但启动冲击电流也成比例增大,要折中。
不加 PFC 直接用整流桥 + 大电容做"被动 PF",输入电流大概什么样?
  1. 正弦
  2. 只在电网电压峰值附近的窄脉冲,THD > 100% (正确)
  3. 方波
  4. 直流
提示:电容电压接近 Vpeak 时整流桥才导通,电流是高瘦窄脉冲,谐波丰富,THD 通常 100-150%。这就是为什么国标不让用。
负载(压缩机变频器)从 4A 突变到 12A,PFC 母线电压会怎么样?
  1. 立刻稳
  2. 短时下沉,电压环把它拉回目标 (正确)
  3. 持续下降
  4. 飞升
提示:负载突变让 C 放电速度增加,母线下沉。电压环 PI 检测到 err 增大 → 拉高电流幅值参考 → 内环吸收更多能量补偿 → 母线回到目标。整个过程典型 50-200ms。