1. 项目背景与核心价值
光伏并网逆变器作为新能源发电系统的核心部件,其性能直接影响电能转换效率和电网稳定性。采用TI的TMS320F28335 DSP作为主控芯片,能够实现高精度、高实时性的电力电子控制算法。这款芯片的浮点运算单元和丰富的外设资源,特别适合处理光伏逆变器中的PWM生成、MPPT跟踪、锁相环等复杂任务。
在实际项目中,我们常遇到传统单片机难以满足并网逆变器对控制精度和响应速度的要求。28335芯片的150MHz主频和硬件浮点运算能力,可以轻松实现20kHz以上的开关频率控制,同时完成多路ADC采样和复杂算法运算。这种性能优势使其在5kW以下的光伏并网系统中具有显著性价比。
2. 系统架构设计要点
2.1 主电路拓扑选择
在单相并网逆变器设计中,通常采用全桥拓扑结构。具体实现上有两种方案:
- 带工频变压器的传统方案:通过变压器实现电气隔离,但体积大、效率低
- 高频隔离方案:采用DC-DC升压+全桥逆变的两级结构,配合高频变压器
我们选择后者的改进方案:BOOST升压+全桥逆变结构。这种设计在28335上实现时需要注意:
- BOOST电路开关管需承受较高电压应力
- 全桥逆变环节要处理好死区时间设置
- 两级转换的整体效率优化
2.2 控制架构设计
基于28335的控制系统包含以下关键模块:
- 电压电流双闭环控制
- 软件锁相环(SPRO)
- 最大功率点跟踪(MPPT)
- 保护与故障处理
特别要关注ADC采样时序的安排。28335的16通道12位ADC在实际使用中,建议:
- 将关键信号(如并网电流)分配到SOC0优先采样
- 设置合理的采样窗口时间(ACQPS值)
- 采用中断方式处理采样结果
3. 核心算法实现细节
3.1 MPPT算法优化
采用改进型扰动观察法实现MPPT控制,在28335上的具体实现步骤:
c复制void MPPT_Control(void) {
static float V_old = 0, P_old = 0;
float V_new = Read_PV_Voltage();
float I_new = Read_PV_Current();
float P_new = V_new * I_new;
if(fabs(P_new - P_old) < 0.5) { // 功率变化阈值
if(P_new > P_old) {
if(V_new > V_old) D += STEP;
else D -= STEP;
} else {
if(V_new > V_old) D -= STEP;
else D += STEP;
}
}
V_old = V_new;
P_old = P_new;
}
实际调试中发现几个关键点:
- STEP值需要根据光照条件动态调整
- 采样间隔建议设置在100-200ms之间
- 需添加抗扰动滤波算法
3.2 并网控制策略
采用电流内环+电压外环的双闭环控制结构。电流环采用准PR控制器实现:
c复制typedef struct {
float Kp;
float Kr;
float w0;
float wc;
float x1[3];
float x2[3];
} PR_Controller;
void PR_Update(PR_Controller *pr, float e) {
pr->x1[2] = pr->x1[1];
pr->x1[1] = pr->x1[0];
pr->x2[2] = pr->x2[1];
pr->x2[1] = pr->x2[0];
pr->x1[0] = e - (pr->wc - 4*pr->w0*pr->w0/pr->wc)*pr->x1[1] - pr->x1[2];
pr->x2[0] = e - 2*pr->wc*cos(pr->w0*T)*pr->x2[1] - pr->x2[2];
pr->out = pr->Kp*e + pr->Kr*pr->wc*sin(pr->w0*T)*pr->x2[1];
}
在28335上实现时要注意:
- 三角函数计算使用TI提供的IQmath库加速
- 控制周期与PWM周期保持同步
- 系数需要根据实际电路参数重新整定
4. 关键外设配置技巧
4.1 PWM模块配置
28335的ePWM模块配置示例:
c复制void Init_EPWM(void) {
EPwm1Regs.TBPRD = SYSTEM_FREQ/SWITCH_FREQ/2; // 设置周期值
EPwm1Regs.TBPHS.half.TBPHS = 0; // 相位清零
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 上下计数模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁止相位加载
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD/2; // 占空比50%
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 计数增时置高
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 计数减时置低
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // 死区使能
EPwm1Regs.DBRED = DEAD_TIME; // 上升沿死区
EPwm1Regs.DBFED = DEAD_TIME; // 下降沿死区
}
调试经验:
- 死区时间一般设置为500ns-1μs
- 同步多个ePWM模块时注意相位关系
- 更新CMPA值时需要处理好影子寄存器
4.2 ADC采样优化
针对光伏逆变器的采样需求,推荐配置方案:
- 采用序列采样模式(Sequential mode)
- 关键信号使用SOC0-SOC3高优先级通道
- 设置合理的采样保持时间(建议50-100ns)
- 采用中断+DMA方式传输数据
ADC初始化代码片段:
c复制void Init_ADC(void) {
AdcRegs.ADCTRL1.bit.ACQ_PS = 15; // 采样窗口时间
AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; // 顺序采样模式
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 7; // 8通道转换
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // 配置通道顺序
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 级联模式
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 使能中断
}
5. 保护机制实现
5.1 硬件保护电路设计
必须包含的基础保护:
- 直流侧过压/欠压保护
- 交流侧过流保护
- 绝缘监测保护
- 散热保护
在28335上的实现方式:
- 使用比较器模块(CMPSS)实现快速硬件保护
- 配置PWM trip zone实现纳秒级关断
- 软件保护作为二级保护
5.2 软件保护策略
软件保护流程示例:
c复制void Protection_Check(void) {
// 过压保护
if(DC_Voltage > OVP_Threshold) {
Trip_PWM();
Set_Fault_Flag(OVP_FAULT);
}
// 过流保护
if(abs(Grid_Current) > OCP_Threshold) {
Trip_PWM();
Set_Fault_Flag(OCP_FAULT);
}
// 孤岛保护
if(Islanding_Detected()) {
Trip_PWM();
Set_Fault_Flag(ISLAND_FAULT);
}
}
保护参数整定建议:
- OVP阈值:1.2倍额定直流电压
- OCP阈值:1.5倍额定输出电流
- 保护响应时间:硬件保护<5μs,软件保护<100μs
6. 系统调试经验
6.1 常见问题排查
-
并网电流畸变
- 检查锁相环精度
- 优化PR控制器参数
- 验证ADC采样同步性
-
MPPT振荡
- 调整扰动步长
- 增加采样滤波
- 检查光伏电压采样精度
-
系统效率偏低
- 优化死区时间设置
- 检查开关管驱动波形
- 验证磁性元件损耗
6.2 关键测试步骤
推荐测试流程:
- 开环测试PWM波形
- 直流侧带载测试
- 离网运行测试
- 并网空载测试
- 并网带载测试
- MPPT效率测试
- 保护功能测试
测试工具建议:
- 高精度功率分析仪(如横河WT1800)
- 隔离差分电压探头
- 电流探头(带宽>10MHz)
- DSP仿真器(XDS100以上)
7. 性能优化方向
7.1 软件优化技巧
-
算法加速
- 使用IQmath库替代浮点运算
- 关键函数用汇编优化
- 合理使用DMA减少CPU负载
-
时序优化
- 将耗时任务分散到不同控制周期
- 使用CLA协处理器处理实时性要求高的任务
- 优化中断服务程序
7.2 硬件优化建议
-
PCB设计要点
- 功率地与信号地分开布局
- 关键信号线做阻抗匹配
- 加强电源去耦
-
散热设计
- 选用低导通电阻MOSFET
- 优化散热器风道设计
- 添加温度监控点
在实际项目中,我们通过上述优化将系统峰值效率从96.2%提升到了97.8%,THD控制在1.5%以内。特别是在低功率段(20%负载以下),效率提升更为明显。