解析图腾柱无桥PFC的状态控制(基于DSP C2000)

解析图腾柱无桥PFC的状态控制(基于DSP C2000)

解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第1张图片

\\\插播一条:

自己在今年整理一套单片机单片机相关论文800余篇

论文制作思维导图

原理图+源代码+开题报告+正文+外文资料

想要的同学私信找我。

解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第2张图片

图腾柱无桥PFC控制逻辑远复杂于Boost有桥PFC。

解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第3张图片图腾柱无桥PFC拓扑(TTPLPFC)

TTPLPFC在AC电压不同相位,需要修正慢管逻辑、调制逻辑、抑制过零点畸变。有桥Boost PFC中,输入电压经过二极管桥整流,不存在上述问题。

一、图腾柱PFC状态机设计

1、在数字控制的TTPLPFC的电源软件中,ISR状态机可按照电网相位,分为4大状态:

·PH:AC电压正半周

·NH:AC电压负半轴

·PZC:AC电压正过零

·NZC:AC电压负过零

2、ISR状态机的四大状态中,待处理的事件:

·慢管逻辑

·快管调制逻辑

·死区调节

·环路参数调节

·软过零算法/抑制过零点畸变

3、状态机状态切换条件:

·SPLL提供的电网相位

·电网电压采样值

二、C2000(DSP)代码解读

解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第4张图片TTPLPFC状态机示意图

以TIDA-010062《数字1kW高功率密度80plus钛金交流/直流电源》前级图腾柱没桥PFC电源软件代码为例,状态机示意图如上图所示。

ISR状态机分为八个状态:

正半周+负半周+正过零3个状态+负过零3个状态。

状态切换条件为:SPLL相位与电网电压采样值取“或”逻辑

状态机实现采用“switch + case + default”架构,为了便于浏览,代码构建了union用于标识状态。

typedef union{

    enum

    {

        pwmSwState_normalOperation = 0,

        pwmSwState_positiveHalf = 1,

        pwmSwState_negativeZeroCrossing1 = 2,

        pwmSwState_negativeZeroCrossing2 = 3,

        pwmSwState_negativeZeroCrossing3 = 4,

        pwmSwState_negativeHalf = 5,

        pwmSwState_positiveZeroCrossing1 = 6,

        pwmSwState_positiveZeroCrossing2 = 7,

        pwmSwState_positiveZeroCrossing3 = 8,

        pwmSwState_defaultState = 9,

    }enum_pwmSwState;

    int32_t pad;}TTPLPFC_pwmSwState;

状态机实现如下,每个状态处理对应的事情。

switch(TTPLPFC_pwm_SwState.enum_pwmSwState)

    {

        /*First state after B2 Tasks initialization*/

解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第5张图片解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第6张图片解析图腾柱无桥PFC的状态控制(基于DSP C2000)_第7张图片

【文章福利】:小编整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~点击绿色通讯软件搜索wujidanpianji加入(需要自取)

casepwmSwState_normalOperation:

--过零启动相关程序

break;

/*Positive half state*/

casepwmSwState_positiveHalf:

--慢管驱动信号(ePWM.AQ控制)。

--死区控制(ePWM.DB)。

--控制参数(DCL库参数)。

break;

/*NZC state1:*/

casepwmSwState_negativeZeroCrossing1:

--快管封锁(ePWM.DB,用死区模块封锁快管,方便实现软过零算法)

--慢管封锁(ePWM.AQ)。

break;

/*NZC state2:*/

casepwmSwState_negativeZeroCrossing2:

--duty重置。

--软过零状态标志重置。

--调制管更换(ePWM.DB[SWAP])。

break;

/*NZC state3:*/

casepwmSwState_negativeZeroCrossing3:

--软过零(softtransition)算法。(TTPLPFC一大痛点解决方案)

--死区调节(ePWM.DB)。

--控制环路参数重置。

break;

/*Negative half state*/

casepwmSwState_negativeHalf:

--慢管驱动信号(ePWM.AQ控制)。

--死区控制(ePWM.DB)。

break;

/*PZC state1:*/

casepwmSwState_positiveZeroCrossing1:

--快管封锁(ePWM.DB,用死区模块封锁快管,方便实现软过零算法)

--慢管封锁(ePWM.AQ)。

break;

/*PZC state2:*/

casepwmSwState_positiveZeroCrossing2:

duty重置。

--软过零状态标志重置。

--调制管更换(ePWM.DB[SWAP])。

break;

/*PZC state3:*/

casepwmSwState_positiveZeroCrossing3:

--软过零(softtransition)算法。(TTPLPFC一大痛点解决方案)

--死区调节(ePWM.DB)。

--控制环路参数重置。

break;

/*Protect state: OCP OVP*/

casepwmSwState_defaultState:

--异常状态、保护状态。

break;

default:

TTPLPFC_pwm_SwState.enum_pwmSwState=pwmSwState_defaultState;

}

三、总结

建议大家阅读对应的代码,加深理解。

之后的文章中会更新:

·TTPLPFC功率因数补偿方法

·TTPLPFC过零点畸变抑制

·电流环与电压环设计

·基于DSP(C2000)主动EMI技术

·软开关PFC技术:谷底开关/扩展ZVS

你可能感兴趣的:(嵌入式,单片机,单片机学习,单片机,单元测试,单例模式,51单片机)