去年接手一个光伏并网项目时,客户特别强调需要一套运行稳定且谐波含量低的逆变系统。经过多轮方案对比,最终选择了基于TI DSP28335的单相全桥架构,配合双极性调制策略。这个方案在成本与性能之间取得了很好的平衡,实测THD(总谐波失真)可以控制在3%以内。今天就把整个开发过程中的核心要点整理出来,特别是程序架构设计和调制算法实现部分,希望能给正在做类似项目的工程师一些参考。
这个方案主要解决三个核心问题:首先是实现直流到交流的高效转换(实测效率>95%),其次是输出波形质量的控制(通过双极性调制降低谐波),最后是系统可靠性保障(加入多重保护机制)。代码采用模块化设计,所有关键参数都做了宏定义配置,移植时只需要修改头文件即可适配不同功率等级。
单相全桥结构之所以成为中小功率逆变器的首选,主要得益于其简单的拓扑和高效的开关组合。我们的硬件架构包含:
关键提示:全桥上下管死区时间设置至关重要,我们通过实验确定4μs是最佳值(示波器观测开关节点波形确认无直通)
这颗200MHz主频的DSP在逆变控制中展现了强大性能,外设配置如下:
特别要注意的是PWM时钟配置,我们采用SYSCLKOUT/(1+1)的分频设置,使得PWM计数器周期寄存器(TBPRD)可以设置为2500(对应20kHz开关频率),这个值既避开了人耳敏感频段,又保证了足够的控制带宽。
双极性调制相比单极性最大的优势就是谐波能量更分散,我们的实现方案:
c复制// 在EPWM中断服务程序中执行
void EPWM1_ISR(void) {
float duty = V_ref * M + 0.5; // M为调制比
EPwm1Regs.CMPA.half.CMPA = (Uint16)(duty * EPwm1Regs.TBPRD);
EPwm2Regs.CMPA.half.CMPA = EPwm1Regs.CMPA.half.CMPA;
EPwm1Regs.CMPB = EPwm1Regs.TBPRD - EPwm1Regs.CMPA.half.CMPA;
EPwm2Regs.CMPB = EPwm1Regs.TBPRD - EPwm1Regs.CMPA.half.CMPA;
}
这个看似简单的代码有几个关键点:
采用电压外环+电流内环的双环结构,具体实现:
c复制void ControlLoop(void) {
// 电压环PI计算
V_error = V_ref - V_actual;
I_ref = PI_Voltage(V_error);
// 电流环PR计算
I_error = I_ref - I_actual;
Duty_Adjust = PR_Current(I_error);
// 更新调制比
M = Base_Duty + Duty_Adjust;
}
这里PR(比例谐振)控制器的参数整定尤为关键,我们通过扫频法确定的参数:
整个软件采用前后台架构:
code复制初始化硬件 → 启动PWM → 进入主循环
↑ |
| ↓
中断服务程序 ← ADC采样完成
主循环中主要处理:
ADC采样处理:
c复制interrupt void ADC_ISR(void) {
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // 复位序列器
V_dc = (AdcResult.ADCRESULT0 * 3.0 / 4096) * 50.2; // 电压采样
I_out = (AdcResult.ADCRESULT1 * 3.0 / 4096 - 1.5) * 20; // 电流采样
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
注意:电流采样需要做零点校准,我们上电时会自动采集10次AD值取平均作为偏置电压
保护机制实现:
c复制__interrupt void GPIO_ISR(void) {
EALLOW;
EPwm1Regs.TZFRC.bit.OST = 1; // 强制PWM输出高阻态
EDIS;
Fault_Flag = 1;
}
这个硬线中断能在3μs内响应过流故障,比软件保护快一个数量级。
问题1:输出波形出现畸变
问题2:轻载时振荡
建议采用如下目录结构:
code复制/inc
- global_def.h // 系统全局定义
- epwm_cfg.h // PWM配置参数
/src
- main.c // 主程序
- isr.c // 中断服务程序
- control.c // 控制算法
/doc
- sch.pdf // 原理图
- bom.xls // 物料清单
在global_def.h中集中定义所有关键参数:
c复制#define PWM_FREQ 20000 // 开关频率
#define DEAD_TIME 4 // 死区时间(μs)
#define MAX_MODULE 0.95 // 最大调制比
这套代码已经在多个光伏项目上稳定运行超过2年,期间根据现场反馈做过三次重要升级:
最后分享一个实测数据:在输入400Vdc,输出220Vac/50Hz/3kW工况下,效率曲线如下图所示(具体数值略),关键是要注意轻载时的效率优化,我们通过动态调整开关频率的方法,在20%负载时仍能保持90%以上的效率。