1. 光伏逆变器系统架构解析
TMS320F28335这颗浮点DSP在光伏逆变器应用中确实是个性价比极高的选择。整个系统架构分为三个关键部分:前端Boost升压电路、后级全桥逆变电路,以及DSP控制核心。这种架构在3kW以下的小功率并网系统中非常典型。
1.1 硬件拓扑设计要点
Boost升压电路采用常规拓扑,但有几个设计细节值得注意:
- 输入侧必须加装共模电感,实测可降低30%以上的EMI干扰
- 升压电感的饱和电流要留至少50%裕量,我们选用的是100μH/20A的锰锌磁环电感
- MOSFET选用英飞凌IPP60R099CP,其导通电阻仅99mΩ,大幅降低导通损耗
全桥逆变部分采用经典H4拓扑,关键设计参数:
- IGBT模块选用富士电机的2MBI100U4A-060(600V/100A)
- 直流母线电容采用450V/470μF电解电容并联10μF薄膜电容的组合
- 输出LC滤波器参数为3mH/10μF,截止频率约1.3kHz
1.2 DSP资源分配策略
F28335的资源配置需要精心规划:
- ePWM1用于Boost电路PWM生成(频率20kHz)
- ePWM2/3用于全桥上下桥臂驱动(频率10kHz)
- ADC采样周期与PWM同步,采用SOC0-3分别采样:
- 光伏侧电压/电流
- 母线电压
- 网侧电压/电流
- SCI-A用于调试接口,SCI-B预留用于上位机通信
2. PWM生成关键技术实现
2.1 死区时间硬件配置
死区时间是逆变器可靠工作的生命线。在F28335中,我们通过DBCTL和DBFED寄存器实现硬件级死区控制:
c复制EPwm1Regs.TBPRD = 1000; // 系统时钟150MHz,分频系数1,PWM频率=150MHz/(1*1000)=15kHz
EPwm1Regs.CMPA.half.CMPA = 300; // 初始占空比30%
EPwm1Regs.DBCTL.bit.OUT_MODE = 0x3; // 互补输出模式
EPwm1Regs.DBCTL.bit.POLSEL = 0x2; // 下降沿插入死区
EPwm1Regs.DBFED = 70; // 死区时间=70*6.67ns≈467ns
重要提示:死区时间必须根据实际开关器件参数确定。我们通过如下步骤校准:
- 用示波器测量驱动信号到功率管实际开关时刻的延迟
- 确保死区时间 > (上管关断延迟 + 下管开启延迟) × 1.5
- 最终实测IGBT模块需要至少400ns死区
2.2 SPWM生成优化技巧
规则采样法相比自然采样法可减少约60%的计算量。我们的实现方案:
- 预先计算256点正弦表,存储于专用段:
c复制#pragma DATA_SECTION(SinTable, "sin_tbl");
const Uint16 SinTable[256] = {
512,518,525,...,512 // 幅值量化到0-1023
};
- 定时器中断中更新占空比:
c复制interrupt void EPWM2_ISR(void){
static Uint16 index = 0;
EPwm2Regs.CMPA = SinTable[index];
EPwm3Regs.CMPA = SinTable[(index+128)%256]; // 互补桥臂相位差180°
index = (index + 1) % 256;
// 同步触发ADC采样
AdcRegs.ADCSOCFRC1.bit.SOC0 = 1;
}
- 载波比选择:我们采用200倍载波比(10kHz/50Hz),在输出谐波和开关损耗间取得平衡。
3. MPPT算法实现与优化
3.1 恒压跟踪法(CVT)改进
基础CVT算法虽然简单,但我们在实践中加入了温度补偿和动态调整:
c复制#define TEMP_COEF -0.35 // 温度系数%/℃
float CVT_Algorithm(float pvVoltage, float temp){
static float refVoltage = 18.0; // 25℃时最佳工作点
float tempAdj = refVoltage * (1 + (temp-25)*TEMP_COEF/100);
if(pvVoltage < tempAdj*0.95){
Boost_Duty -= 0.005; // 小步长调整
}else if(pvVoltage > tempAdj*1.05){
Boost_Duty += 0.005;
}
// 安全限幅
Boost_Duty = (Boost_Duty > 0.8) ? 0.8 : Boost_Duty;
Boost_Duty = (Boost_Duty < 0.1) ? 0.1 : Boost_Duty;
return Boost_Duty;
}
3.2 采样滤波处理
光伏侧采样需要特别关注噪声抑制:
c复制#define FILTER_WINDOW 32
typedef struct{
float buffer[FILTER_WINDOW];
Uint16 index;
} MovingAverage;
float Moving_Filter(MovingAverage *filter, float newSample){
filter->buffer[filter->index] = newSample;
filter->index = (filter->index + 1) % FILTER_WINDOW;
float sum = 0;
for(int i=0; i<FILTER_WINDOW; i++){
sum += filter->buffer[i];
}
return sum / FILTER_WINDOW;
}
调试心得:采样时机很关键,我们安排在PWM周期中点进行,此时功率管开关暂态过程已结束。
4. 软件锁相环(SPLL)设计
4.1 二阶广义积分器实现
c复制typedef struct{
float x1, x2; // 状态变量
float k; // 阻尼系数
float w; // 中心频率
} SOGI_Filter;
void SOGI_Update(SOGI_Filter *f, float input){
float dx1 = f->w * (input - f->x1 - f->k*f->x2);
float dx2 = f->w * f->x1;
f->x1 += dx1 * Ts; // Ts为采样周期
f->x2 += dx2 * Ts;
}
float alpha, beta; // 正交输出信号
4.2 锁相环核心算法
c复制typedef struct{
float freq; // 当前频率
float theta; // 相位角
float kp, ki; // PI参数
float integral; // 积分项
} PLL_Controller;
void PLL_Update(PLL_Controller *pll, float alpha, float beta){
static float alpha_prev = 0, beta_prev = 0;
// 鉴相器
float error = alpha * beta_prev - beta * alpha_prev;
// PI调节
pll->integral += pll->ki * error;
float adjust = pll->kp * error + pll->integral;
// 更新频率和相位
pll->freq = 50.0 + adjust;
pll->theta += 2 * PI * pll->freq * Ts;
// 频率限幅
pll->freq = (pll->freq > 52) ? 52 : (pll->freq < 48) ? 48 : pll->freq;
// 保存当前状态
alpha_prev = alpha;
beta_prev = beta;
}
5. 关键调试经验与故障排除
5.1 PCB布局血泪教训
- 地平面处理:
- 数字地与功率地必须单点连接,我们选择在DC-link电容负极汇合
- 模拟信号走线要远离功率回路至少5mm
- DSP的ADC参考引脚要加0.1μF+10μF去耦电容
- 驱动电路设计:
- 光耦驱动电源要独立绕组供电
- 关断负压建议-5V以上
- 驱动电阻选择公式:
Rg = (Vdrive - Vth) / (Qg × fsw × 0.5)
5.2 常见故障速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 上电炸管 | 死区时间不足 | 检查DBFED寄存器设置 |
| 输出波形畸变 | 锁相不同步 | 调整SOGI滤波器参数 |
| MPPT振荡 | 调整步长过大 | 减小CVT算法步长 |
| ADC采样异常 | 地环路干扰 | 检查模拟地隔离 |
5.3 在线调试技巧
我们开发的SCI调试工具支持以下指令:
- "PWM [值]":修改PWM频率
- "DUTY [值]":调整Boost占空比
- "MPPT [0/1]":启停MPPT功能
- "VOLT?":查询当前电压
实现代码框架:
c复制void SCI_CommandHandler(char *cmd){
if(strncmp(cmd, "PWM ", 4) == 0){
Uint16 freq = atoi(cmd+4);
EPwm1Regs.TBPRD = SYSTEM_CLOCK / freq;
}
// 其他命令处理...
}
这套系统经过半年现场运行验证,关键指标:
- 转换效率 > 96%
- THD < 3%
- MPPT效率 > 99%
- 冷启动时间 < 500ms
最后分享一个散热设计经验:IGBT模块的散热器要垂直安装,利用烟囱效应提升自然对流散热效果,实测可降低温升15℃以上。
