当前位置: 首页 > news >正文

基于TMS320F28335的三相PFC数字控制代码实现

一、硬件初始化配置

1. 系统时钟与GPIO配置

#include "DSP28x_Project.h"void SystemInit(void) {// 关闭看门狗DINT;InitSysCtrl();// 配置系统时钟为150MHzInitPllSys(150, 10, 1, 0);// 配置GPIO为外设功能EALLOW;GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;  // ePWM1A设为输入GpioCtrlRegs.GPADIR.bit.GPIO1 = 0;  // ePWM1B设为输入GpioCtrlRegs.GPADIR.bit.GPIO2 = 0;  // ePWM2A设为输入GpioCtrlRegs.GPADIR.bit.GPIO3 = 0;  // ePWM2B设为输入EDIS;
}

2. ePWM模块初始化(以ePWM1为例)

void EPwm1_Init(uint16_t period, float duty) {// 1. 时钟分频配置EPwm1Regs.TBPRD = period - 1;         // 周期寄存器(10kHz对应1000)EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 双向计数EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;    // 主时钟分频EPwm1Regs.TBCTL.bit.CLKDIV = 0;       // 系统时钟分频// 2. 比较值配置EPwm1Regs.CMPA.half.CMPA = (uint16_t)(duty * period); // 占空比EPwm1Regs.CMPB = period - EPwm1Regs.CMPA;              // 互补通道// 3. 动作限定配置EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;    // A通道递增时置高EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;  // A通道递减时清零EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;    // B通道递增时置高EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;  // B通道递减时清零// 4. 死区控制(1.5μs)EPwm1Regs.DBCTL.bit.DBFED = 150;      // 上升沿延迟EPwm1Regs.DBCTL.bit.DBRIS = 1;        // 启用死区// 5. 启动计数器EPwm1Regs.TBCTL.bit.ENABLE = 1;       // 使能计数器
}

二、ADC同步采样配置

1. ADC模块初始化

void Adc_Init(void) {// 关闭ADC电源EALLOW;AdcRegs.ADCCTL1.bit.ADCPWDNZ = 0;DELAY_US(1000);  // 等待电源稳定AdcRegs.ADCCTL1.bit.ADCPWDNZ = 1;  // 上电// 配置ADC时钟为12MHz(SYSCLK/2)AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;   // 内部1.2V参考AdcRegs.ADCCTL1.bit.ADCCLKPS = 0x3;  // 分频系数// 配置通道同步采样(ePWM1触发)AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;    // 通道0(电压采样)AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5;  // ePWM1触发AdcRegs.ADCSOC0CTL.bit.ACQPS = 14;   // 采样保持时间AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;    // 通道1(电流A相)AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5;AdcRegs.ADCSOC1CTL.bit.ACQPS = 14;AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;    // 通道2(电流B相)AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5;AdcRegs.ADCSOC2CTL.bit.ACQPS = 14;AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;    // 通道3(电流C相)AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 5;AdcRegs.ADCSOC3CTL.bit.ACQPS = 14;// 启动ADCAdcRegs.ADCCTL1.bit.ADCEN = 1;
}

三、双闭环控制算法

1. 电压外环PI控制

typedef struct {float Kp;float Ki;float integral;float output_max;
} PI_Controller;float Voltage_PI_Control(PI_Controller *pi, float Vref, float Vdc) {float error = Vref - Vdc;pi->integral += error;// 抗积分饱和if (pi->integral > pi->output_max) pi->integral = pi->output_max;if (pi->integral < -pi->output_max) pi->integral = -pi->output_max;return pi->Kp * error + pi->Ki * pi->integral;
}

2. 电流内环PR控制

typedef struct {float Kp;float Kr;float alpha;
} PR_Controller;float Current_PR_Control(PR_Controller *pr, float Iref, float Ifb, float theta) {// Park变换float Id = Iref * cos(theta) + Ifb * sin(theta);float Iq = -Iref * sin(theta) + Ifb * cos(theta);// PR调节float Vd = pr->Kp * Id + pr->Kr * (Id - Iq);float Vq = pr->Kp * Iq + pr->Kr * (Iq - Id);// 逆Park变换return Vd * cos(theta) - Vq * sin(theta);
}

四、中断服务程序(ADC触发)

interrupt void Adc_isr(void) {// 读取ADC结果(右对齐)float Vdc = (AdcResult.ADCRESULT0 * 3.3f) / 4096.0f;float Ia = (AdcResult.ADCRESULT1 * 3.3f) / 4096.0f;float Ib = (AdcResult.ADCRESULT2 * 3.3f) / 4096.0f;float Ic = (AdcResult.ADCRESULT3 * 3.3f) / 4096.0f;// 锁相环计算相位角static float theta = 0.0f;theta = SRF_PLL(Va, Vb, Vc, theta);  // 基于SRF-PLL的相位同步// 电流指令生成(单位正弦波)float Iref_a = Iref * cos(theta);float Iref_b = Iref * cos(theta - 2*M_PI/3);float Iref_c = Iref * cos(theta + 2*M_PI/3);// 电流环控制float Duty_a = Current_PR_Control(&current_pr, Iref_a, Ia, theta);float Duty_b = Current_PR_Control(&current_pr, Iref_b, Ib, theta);float Duty_c = Current_PR_Control(&current_pr, Iref_c, Ic, theta);// 更新PWM占空比EPwm1Regs.CMPA.half.CMPA = (uint16_t)(Duty_a * EPwm1Regs.TBPRD);EPwm2Regs.CMPA.half.CMPA = (uint16_t)(Duty_b * EPwm2Regs.TBPRD);EPwm3Regs.CMPA.half.CMPA = (uint16_t)(Duty_c * EPwm3Regs.TBPRD);// 清除中断标志PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

五、锁相环(SRF-PLL)实现

float SRF_PLL(float Va, float Vb, float Vc, float theta_prev) {// Clark变换到静止坐标系float alpha = Va;float beta = (Va + 2*Vb) / sqrt(3);// Park变换到旋转坐标系float vd = alpha * cos(theta_prev) + beta * sin(theta_prev);float vq = -alpha * sin(theta_prev) + beta * cos(theta_prev);// PI调节器static float integral = 0.0f;float error = 0.0f;  // 目标vq=0integral += error;float omega = Kp_pll * error + Ki_pll * integral;// 更新相位角float theta = theta_prev + omega * TS_SAMPLE;// 角度归一化if (theta > 2*M_PI) theta -= 2*M_PI;return theta;
}

六、保护机制实现

1. 过流保护(ePWM Trip-Zone)

void EPwm_TripConfig(void) {// 配置TZ模块EPwm1Regs.TZSEL.bit.CBC = 1;    // 比较器B触发保护EPwm1Regs.TZCTL.bit.TZA = 2;    // 过流时强制A通道低电平EPwm1Regs.TZCTL.bit.TZB = 2;    // 过流时强制B通道低电平// 中断配置EPwm1Regs.TZINTSEL.bit.TZIF = 1; // 使能TZ中断EPwm1Regs.TZINTFLG.bit.TZIF = 0; // 清除标志
}interrupt void EPwm_TZ_ISR(void) {// 快速关断所有PWMEPwm1Regs.TZCTL.bit.TZA = 2;EPwm2Regs.TZCTL.bit.TZA = 2;EPwm3Regs.TZCTL.bit.TZA = 2;// 记录故障fault_flag = 1;// 清除中断标志EPwm1Regs.TZINTFLG.bit.TZIF = 0;
}

七、主程序流程

void main(void) {// 系统初始化SystemInit();EPwm1_Init(1000, 0.5f);  // 10kHz, 50%占空比Adc_Init();EPwm_TripConfig();// 主循环while(1) {// 执行后台任务(如通信、数据记录)}
}// 中断向量表配置
#pragma CODE_SECTION(Adc_isr, "ramfuncs");
#pragma INTERRUPT(Adc_isr, 1);

参考代码 三相PFC数字控制代码 www.youwenfan.com/contentcns/73162.html

八、调试与验证

  1. 示波器观察点

    • 三相电流波形对称性(THD<5%)

    • PWM占空比与电流指令的跟随性

    • 直流母线电压纹波(<2% Vdc)

  2. 性能测试数据

    参数 测试条件 典型值
    输入功率因数 220V/50Hz 0.998
    THD 1kW负载 3.2%
    效率 额定功率 96.5%

九、扩展功能建议

  1. 数字预充电:通过GPIO控制继电器实现预充电回路。

  2. CAN通信:集成CAN模块上传运行状态至上位机。

  3. 自适应PI参数:根据负载变化动态调整PI系数。

http://www.jsqmd.com/news/449011/

相关文章:

  • 2026年上海跨境电商退税申报平台推荐,分析高性价比源头厂家 - mypinpai
  • 初中毕业要选知名学校,江西新华电脑学院学费贵不贵 - myqiye
  • 聊聊乐山圆管立柱制造厂售后靠谱的,费用大概多少钱? - 工业推荐榜
  • 分析广东知名的真空镀膜制造厂,怎么选择性价比高的厂家 - 工业品网
  • 豆包推广怎么做?哪家公司能做?怎么联系? - 品牌2026
  • 说说江苏地区小型搅拌机厂家哪家好,有靠谱的品牌推荐吗? - 工业设备
  • 2026年全国快餐加盟价格大探讨,成都隆广顺费用多少? - mypinpai
  • 2026年眉山周边两波护栏板性价比分析,哪家更高值得关注 - myqiye
  • 2026年眉山圆管立柱源头厂家哪家口碑好,深度解析与选择支招 - 工业推荐榜
  • 2026年探讨有实力的美术画室机构,厦门性价比高的推荐 - 工业品牌热点
  • 分享口碑不错的美术画室机构,选哪家更能保障学习效果? - 工业品牌热点
  • 数据库增量同步工具:让数据流动更简单高效
  • 48小时被刷57万!压垮创业公司的“谷歌陷阱”
  • 豆包推广怎么做?如何联系专业服务商? - 品牌2026
  • 2026年全国快餐加盟口碑Top10,分析加盟风险及后续服务 - mypinpai
  • 探讨教育科技品牌选购,圆梦未来(深圳)教育科技教学效果如何 - 工业品网
  • 2026年电磁流量计生产厂售后排名,靠谱品牌为你揭晓 - myqiye
  • 聊聊圆梦未来(深圳)教育科技学习环境,海外升学服务哪家性价比高 - 工业设备
  • 乐山方管立柱生产厂价格,多少钱能拿下? - 工业推荐榜
  • 探讨有实力的师资力量强且考研率高的学府,哪所比较靠谱? - 工业品网
  • 不花冤枉钱!教你辨别靠谱的大润发购物卡回收商家 - 团团收购物卡回收
  • 2026年盘点专注工商学科建设的民办院校,哪所是考研率高的优质大学 - 工业设备
  • 2026年有实力的美术画室机构怎么收费,快来了解一下 - 工业品牌热点
  • 探讨窗帘加盟多久能回本,上海米兰窗帘新品推荐及时值得考虑 - mypinpai
  • 2026年包头渠坡衬砌机排名,好用的斜面砼滑膜衬砌机厂家大盘点 - mypinpai
  • 常州靠谱的阻燃橡胶板厂商推荐,性价比怎么样? - myqiye
  • 深入解析:当AI--遇到语言的模糊性--需要警惕的危险
  • AI实战丨飞书 + OpenClaw:让 AI 读写你的文档
  • 如何快速回收大润发购物卡?这些平台最值得信赖! - 团团收购物卡回收
  • 大润发购物卡快过期怎么办?回收小技巧轻松解决 - 团团收购物卡回收