2026/4/18 10:07:45
网站建设
项目流程
本地做的网站怎么放到网上去,网络平台运营,解决方案网站排名,室内装饰设计TMS320F28335/DSP28335 光伏逆变器
本装置DC-DC采用Boost升压#xff0c;DCAC采用单相全桥逆变电路结构#xff0c;以TI公司的浮点数字信号控制器TMS320F28335 DSP为控制电路核心#xff0c;采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。
PV功率点跟踪#xff08;…TMS320F28335/DSP28335 光伏逆变器 本装置DC-DC采用Boost升压DCAC采用单相全桥逆变电路结构以TI公司的浮点数字信号控制器TMS320F28335 DSP为控制电路核心采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 PV功率点跟踪MPPT采用了恒压跟踪法CVT法来实现并用软件锁相环进行系统的同频、同相控制控制灵活简单。 注系统DCDC和DCAC的驱动PWM都由TMS320F28335提供并网运行。 提供PCB原理图(ad格式)代码文档说明先说硬件架构主控用F28335这个浮点DSP是真香。自带ePWM模块能直接生成六路PWM搞DC-DC和全桥驱动完全不用外扩芯片。这里有个坑要注意驱动信号死区时间必须硬件设定别指望软件延时否则炸管分分钟教你做人。我们当时在EPwm1Regs里这么配置的EPwm1Regs.TBPRD 1000; // PWM周期系统时钟/(分频系数*TBPRD) EPwm1Regs.CMPA.half.CMPA 500; // 占空比50% EPwm1Regs.DBCTL.bit.OUT_MODE 0x3; // 上下管互补模式 EPwm1Regs.DBCTL.bit.POLSEL 0x2; // 下降沿插入死区 EPwm1Regs.DBFED 50; // 死区时间50*时钟周期这段代码里CMPA值直接决定占空比重点在死区配置。DBFED寄存器设成50是根据MOSFET的开关时间实测调整的具体数值得看你的驱动芯片参数。再来说说SPWM生成。用规则采样法比自然采样法计算量小很多适合实时控制。核心思路就是查正弦表配合PWM周期更新。我们建了个256点的正弦表用EPWM定时器触发ADC采样同时更新占空比#pragma DATA_SECTION(SinTable, sin_tbl); const Uint16 SinTable[256] { 512,518,525,...,512 // 生成工具算好的量化值 }; interrupt void EPWM1_ISR(void){ static Uint8 index 0; EPwm1Regs.CMPA SinTable[index]; if(index 256) index 0; // 同步执行电压电流采样 AdcRegs.ADCSOCFRC1.bit.SOC0 1; }这里有个骚操作把正弦表放在特定存储区域防止被意外修改。中断频率设的是10kHz配合256点表格刚好输出50Hz基波。MPPT部分用了恒压跟踪虽然比扰动观测法简单但要注意温度补偿。程序里设了个电压阈值当光伏板电压低于18V时自动降低占空比if(PV_Voltage 18.0){ Boost_Duty - 0.01; // 小步长调整 }else if(PV_Voltage 18.5){ Boost_Duty 0.01; } // 限幅保护 Boost_Duty (Boost_Duty 0.85) ? 0.85 : Boost_Duty; Boost_Duty (Boost_Duty 0.15) ? 0.15 : Boost_Duty;这算法简单粗暴但有效实测在光照突变时响应速度够用。关键是AD采样必须做均值滤波我们用了移动平均滤波代码里是这么玩的#define SAMPLE_NUM 16 Uint16 adcBuf[SAMPLE_NUM]; float Get_AdcAverage(){ static Uint8 ptr 0; adcBuf[ptr] AdcResult.ADCRESULT0; if(ptr SAMPLE_NUM) ptr 0; Uint32 sum 0; for(int i0; iSAMPLE_NUM; i){ sum adcBuf[i]; } return sum * 3.0 / 4096.0 / SAMPLE_NUM; // 转实际电压值 }最后说说软件锁相环。用DSP实现比硬件锁相省成本关键是要准确捕获电网过零点。我们用了双二阶滤波器配合PI调节这部分代码有点复杂核心逻辑是void PLL_Update(float gridVoltage){ static float integrator 0.0; // 正交信号生成 float alpha gridVoltage; float beta delayUnit; // 延迟90度 // 鉴相器 float error alpha * beta_prev - beta * alpha_prev; // PI调节 integrator Ki * error; float pllOutput Kp * error integrator; // 更新频率 PLL_Freq 50.0 pllOutput; // 限制在47-53Hz PLL_Freq (PLL_Freq 53)?53:((PLL_Freq47)?47:PLL_Freq); }调试时发现电网谐波会影响锁相精度后来在AD采样前加了二阶低通滤波才解决。现在这套系统THD能做到3%以内够过国标了。PCB布局有个血泪教训数字地和功率地必须单点连接最初版本没处理好导致AD采样全是毛刺。后来把DSP的电源单独走线模拟部分用磁珠隔离才好。原理图里光耦驱动部分要留够裕量我们用的HCPL316J直接驱动IGBT每个通道都加了负压关断。代码仓库里有个Util文件夹放着自写的SCI调试工具用串口发指令能实时修改PWM参数比CCS在线调试方便得多。比如发送PWM 700可以直接修改载波频率这对现场调试太有用了。