1. 无桥图腾柱PFC数字控制方案概述
TPPFC_82748_V1.0是针对500W功率等级设计的无桥图腾柱功率因数校正(PFC)数字控制解决方案,基于NXP MC56F82748数字信号控制器实现。这套方案最显著的特点是采用全数字化控制架构,在单芯片上实现了传统需要分立模拟电路+数字芯片才能完成的高性能PFC控制。
无桥图腾柱拓扑相比传统boost PFC具有两个核心优势:首先,它消除了输入整流桥的导通损耗,在230VAC输入时效率可提升0.5%-1%;其次,通过合理的控制时序设计,可以实现高频开关管(ZVS)软开关,进一步降低开关损耗。但相应的,这种拓扑对控制器的实时性要求极高,特别是电流采样与PWM更新的同步精度需要控制在纳秒级。
2. 软件架构设计理念
2.1 分层模块化设计
整个软件库采用"三横四纵"的矩阵式架构。横向分为算法域(ALG)、驱动域(DRV)和调度域(SCH)三个功能层,每层又通过四条纵向总线实现数据交互:
-
算法域包含五大核心模块:
- 带前馈的电流内环(64kHz)
- 电压外环(1kHz)
- 输入电压/负载观测器
- 数字锁相环(PLL)
- 保护算法
-
驱动域重点解决硬件接口的实时性问题:
- ADC触发与DMA传输
- PWM影子寄存器更新
- 模拟比较器保护
- 温度/电压监测
-
调度域实现状态机管理:
- 1ms主任务调度
- 故障诊断与处理
- 在线参数更新
2.2 实时性保障机制
为确保控制环路的时间确定性,软件采用了三种关键技术:
-
中断分级处理:将电流环等对时序敏感的任务放在0级中断(延迟<200ns),电压环等非实时任务放在1ms主循环。
-
双缓冲数据传输:ADC采样结果通过DMA自动存入双缓冲RAM,算法从备用缓冲区读取数据,完全避免内存拷贝延迟。
-
预测型PI计算:电流环PI运算在PWM周期结束前250ns完成,计算结果直接写入PWM影子寄存器,实现零周期延迟更新。
3. 核心算法实现细节
3.1 电流环设计
电流环采用改进型预测PI控制器,其独特之处在于:
-
单周期延迟补偿:通过建立PWM更新与ADC采样的精确时序模型,算法可以预测下一个周期的电流变化趋势,提前补偿计算延迟。
-
Q15定点优化:所有运算使用Q15格式定点数,关键路径函数用汇编内联编写,在16MHz主频下单次电流环执行时间控制在6μs以内。
-
抗饱和处理:当PWM占空比达到限幅值时,自动冻结积分项,避免出现"wind-up"效应。
电流环的状态机设计极为精简,仅包含三个核心函数:
c复制void TPPFC_CurrentLoop_Init(void); // 初始化Q格式参数
void TPPFC_CurrentLoop_Update(int16_t iL, int16_t vBus); // 执行PI计算
int16_t TPPFC_CurrentLoop_Output(void); // 获取PWM占空比
3.2 电压环设计
电压外环采用增量式PI算法,具有以下特点:
-
双模式参数集:预置"快调"和"慢调"两组PI参数,在启动阶段自动使用大带宽参数加快响应,稳态时切换为小带宽参数降低噪声。
-
自动限幅:电压环输出自动限制在电流环的给定范围内,避免外环指令超出内环调节能力。
-
抗采样混叠:在1ms任务中执行时,先对母线电压进行8点滑动平均滤波,有效抑制开关频率噪声。
3.3 数字PLL实现
锁相环采用DSOGI(双二阶广义积分器)结构,包含两个关键创新点:
-
正交信号生成:通过两个并联的二阶积分器,产生与输入电压同相和正交的两路信号,即使在输入谐波较大时也能准确提取基波分量。
-
动态频率跟踪:PLL带宽根据电网频率变化率自动调整,在正常工作时采用窄带滤波(5Hz带宽)抑制噪声,在频率突变时临时拓宽到20Hz实现快速跟踪。
实测表明,该PLL在45-65Hz范围内相位误差<0.02°,完全满足THD<5%的要求。
4. 关键外设驱动实现
4.1 ADC采样策略
为实现高精度电流采样,驱动层采用了三项关键技术:
-
谷值采样定时:利用eFlexPWM模块的计数器归零事件触发ADC,确保采样时刻位于PWM波形的谷值点,避开MOSFET反向恢复引起的噪声。
-
多通道序列采样:预先配置ADC采样序列,单次触发连续采集4路电流(电感电流、输入电流等)和2路电压(母线电压、输入电压),全部由DMA自动搬运。
-
硬件过采样:启用ADC的4x硬件过采样功能,将有效分辨率从12bit提升到13.5bit,显著降低量化噪声。
4.2 PWM输出优化
图腾柱拓扑对PWM时序有严格要求,软件中实现了:
-
互补PWM带死区:上下管驱动信号插入50ns死区,死区宽度根据母线电压动态调整(高压时增加死区,低压时减少)。
-
同步整流控制:在电流过零点附近自动关闭相应开关管,利用体二极管导通,减少开关损耗。
-
故障快速响应:当模拟比较器检测到过流时,硬件直接关闭PWM输出,响应时间<60ns。
5. 系统性能实测数据
在230VAC输入、400VDC输出、500W满载条件下,实测关键指标如下:
| 参数 | 实测值 | 设计目标 |
|---|---|---|
| 输入电流THD | 2.1% | ≤5% |
| 功率因数(PF) | 0.998 | ≥0.99 |
| 效率 | 98.7% | ≥98% |
| 母线电压纹波 | ±3.8V | ±5V |
| 负载调整时间 | 2ms | <5ms |
资源占用情况:
- Flash: 18KB/64KB (28%)
- RAM: 3KB/8KB (37%)
- CPU负载: 47% (64kHz电流环占42%)
6. 工程实践指南
6.1 参数整定方法
对于初次使用者,推荐以下调参流程:
-
离线辨识:通过注入白噪声信号,测量系统开环频率响应,使用Ziegler-Nichols法计算初始PI参数。
-
在线优化:连接UART发送$AUTO_TUNE命令,软件会自动:
- 注入2%幅值的阶跃扰动
- 记录电压/电流响应曲线
- 根据临界增益法优化PI参数
-
手动微调:重点关注三个参数:
c复制#define CURRENT_KP (0.25) // 电流环比例系数 #define CURRENT_KI (0.01) // 电流环积分系数 #define VOLTAGE_KP (0.05) // 电压环比例系数
6.2 常见问题排查
-
THD超标:
- 检查电流采样相位补偿(调整ADC触发偏移)
- 确认PLL锁相精度(观察ALG_Dbg.PLL_PhaseError)
- 适当增加前馈系数(修改FF_GAIN参数)
-
启动失败:
- 确认软启动参数(SOFT_START_TIME默认500ms)
- 检查母线预充电是否完成(V_BUS_MIN阈值)
- 查看故障记录(SCH_Dbg.FaultCode)
-
效率下降:
- 测量开关损耗(示波器观察Vds/Ids波形)
- 优化死区时间(调整DEADTIME_NS参数)
- 检查同步整流时机(观察DRV_Dbg.PWM_State)
7. 扩展应用方向
该软件库架构具有良好的可扩展性,支持以下演进方向:
-
双向能量流动:修改PWM控制逻辑,即可实现V2G(车辆到电网)功能。
-
多模式运行:增加CRM/DCM检测算法,在轻载时自动切换工作模式。
-
并联均流:通过CAN总线交换各模块的功率信息,实现多机并联。
-
SiC器件驱动:调整PWM时序适配碳化硅MOSFET的更高速开关特性。
这套方案不仅适用于当前的500W设计,通过调整功率器件选型和散热设计,可扩展到3kW应用场景。其模块化架构使得90%的算法代码可以重用,大幅缩短开发周期。
