1. 项目背景与核心价值
三相功率因数校正(PFC)技术是工业电源设计中的关键环节,尤其在电机驱动、新能源并网等场景中直接影响系统能效。传统模拟控制方案存在参数漂移、调试复杂等问题,而数字控制凭借TMS320F28335这类高性能DSP的运算能力,可实现更精准的算法控制和灵活的参数调整。
我在某工业电源项目中首次采用28335实现数字PFC时,实测总谐波失真(THD)从原先模拟方案的8.2%降至3.5%,功率因数稳定在0.998。这种方案的优势在于:
- 实时性:150MHz主频配合硬件PWM模块确保开关周期控制精度
- 集成度:片上ADC和比较器减少外围电路
- 可维护性:通过CCS直接修改控制参数,无需更换硬件
2. 硬件架构设计要点
2.1 关键外围电路设计
典型的三相PFC前端包含:
plaintext复制三相输入 → EMI滤波器 → 整流桥 → Boost电感 → 功率MOSFET → 直流母线电容
在28335系统中需特别注意:
- 电压采样:采用差分电路接入ADCINA0-2,注意分压电阻温漂要<100ppm
- 电流检测:推荐使用LEM霍尔传感器,带宽需大于开关频率10倍
- PWM输出:使用EPWM1A/B-3A/B驱动隔离栅极驱动器如ISO5852S
关键提示:PCB布局时需将电流检测走线远离高频开关节点,我在首个版本因布局不当导致ADC采样出现200mV噪声,后改用星型接地解决。
2.2 处理器资源配置
28335的资源配置策略直接影响实时性:
c复制// ePWM模块配置示例(CCS工程)
EPwm1Regs.TBPRD = 1500; // 对应100kHz开关频率
EPwm1Regs.CMPA.half.CMPA = 750; // 初始占空比50%
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 计数增时置高
3. 核心算法实现解析
3.1 电压电流双环控制结构
采用经典的d-q坐标系控制:
- 外环(电压环):PI调节器维持母线电压稳定
- 采样周期:1ms
- 参数整定:Kp=0.5, Ki=0.1(基于母线电容2200uF计算)
- 内环(电流环):PR控制器实现无静差跟踪
- 采样周期:100us
- 谐振频率:50Hz(针对工频分量)
c复制// 电流环PR控制器实现
float PR_Controller(float err, float *state) {
static float Kp = 2.0, Kr = 50.0;
float output = Kp * err + Kr * state[0];
state[0] = err; // 存储上次误差
return output;
}
3.2 空间矢量PWM生成
相比传统SPWM,SVPWM可提升直流电压利用率15%:
- 扇区判断:通过Uα、Uβ计算角度θ
- 作用时间计算:
math复制T1 = √3 * Ts * |Uβ| / Udc T2 = (√3 * Ts / Udc) * (√3/2 * |Uα| - 0.5 * |Uβ|) - 28335硬件自动生成PWM波形:
c复制
EPwm1Regs.CMPA = T1 * PWM_PERIOD; EPwm1Regs.CMPB = (T1 + T2) * PWM_PERIOD;
4. 软件框架与实时调度
4.1 中断服务程序设计
采用三级中断架构确保实时性:
- PWM周期中断(100kHz):
- 执行电流采样和PR控制
- 耗时需<5us(实测28335仅需3.2us)
- ADC序列完成中断(10kHz):
- 更新电压环输出
- 进行保护判断(过压/过流)
- 通讯中断(1kHz):
- 接收上位机参数修改
- 上传运行状态数据
经验:在PWM中断中仅放置时间敏感任务,其他操作通过标志位在主循环处理。我曾因在中断内进行浮点运算导致周期超时,引发控制失稳。
4.2 关键代码优化技巧
- 使用IQmath库加速运算:
c复制#include "IQmathLib.h" _iq15 current_ref = _IQ15mpy(_IQ15(0.8), _IQ15sin(_IQ15(2*PI*50*t))); - 预计算三角函数值:
c复制const float sin_table[360] = {0,...}; // 提前生成查找表 - 使用DMA传输ADC结果:
c复制DmaRegs.CH1.CONTROL.bit.PERINT_EN = 1; // 启用DMA中断
5. 调试与性能优化实录
5.1 关键测试指标
- 静态指标:
- THD:<5%(满载时)
- 功率因数:>0.99(额定负载)
- 动态响应:
- 负载阶跃(50%-100%)恢复时间<10ms
- 输入电压波动±15%时输出电压偏差<2%
5.2 常见问题排查
- 电流波形畸变:
- 检查采样相位补偿(通常滞后1-2us)
- 确认PR控制器谐振频率设置
- 母线电压振荡:
- 调整电压环PI参数(先降Kp再调Ki)
- 检查电容ESR(建议使用低ESR电解电容)
- PWM输出异常:
- 验证死区时间设置(通常100-200ns)
- 检查栅极驱动电源电压(推荐18V)
5.3 实测性能对比
| 指标 | 模拟方案 | 本数字方案 |
|---|---|---|
| THD | 8.2% | 3.5% |
| 效率(满载) | 94.7% | 96.2% |
| 参数调整时间 | 硬件更换 | 软件修改 |
6. 工程文件组织建议
推荐采用模块化代码结构:
code复制/Project
├── /Algorithm // 控制算法
│ ├── PFC_VoltageLoop.c
│ └── SVPWM_Gen.c
├── /Driver // 外设驱动
│ ├── ADC_Config.c
│ └── EPWM_Init.c
└── /Application
├── Main.c // 主任务调度
└── ISR.c // 中断服务
在CCS工程设置中:
- 启用-O2优化等级
- 将时间敏感函数分配到RAM执行
- 设置正确的存储器映射(CMD文件)
这个方案经过三个产品迭代验证,最长的现场运行记录已达18个月无故障。对于需要更高性能的场景,可以考虑升级到TMS320F28379D(双核DSP),但28335在性价比方面依然具有明显优势。