Advertisement

双有源全桥DC/DC变换器移相控制(TMS320F28335)

阅读量:

最近我们在开发一个双向隔离变换器,并采用了DAB拓扑结构。为了实现主副边开关管的移相控制功能,在开发过程中我们选用TMS320F28335芯片作为核心控制器,并作为记录文章详细阐述这一创新设计思路

最初在Sumilink环境下进行DAB仿真时, 编写了C模块以实现移相控制功能, 具体而言, 该模块通过调节比较阈值来完成移相过程. 此基础上, 简要阐述其基本原理. 如下图1所示, 该文给出了两种典型的情况.

基于PWM1作为移相基准波,在PWM2中设置 CMP2 时,在 CMP1 的基础上通过调整 移相差 (d) 对应 的 CMP 值来实现

CMP2 = CMP1 m CMP_d

,以PWM2超前PWM1为例,我们需要在计数器达到PRD(周期值)之前使

CMP2 = CMP1 - CMP_d

,而在计数器达到PRD时通过中断触发去修改CMP2,使

CMP2=CMP1 + CMP_d

,理论上即可实现PWM2超前PWM1,滞后情况同理,不再赘述。

图1 移相原理图解

在TMS320F28335的epwm模块中设置了移相功能而使我们可以较为简便地通过设置相关寄存器来实现相位调节

图2 TBCTL寄存器

图3 TBPHS寄存器

我对这部分内容的理解可能不够全面。如果有错误,请随时指出。首先是对TBCTL寄存器中的SYNCOSEL(同步输出选择)功能的理解,请简要说明输入值所代表的意义。其中具体来说:当输入值为[{}]时(注:[{}]表示此处应填具体数值),表示接收其他epwm模块发出的强制同步信号;当输入值为[{}]时,则是在计数器归零时发出强制同步信号;当输入值为[{}]时,则是在计数器等于CMPB预设值时触发同步信号;最后当输入值为[{}]时,则表示处于失能状态下的强制同步信号输出功能。

图4 SYNCOSEL位

第二个部分也是基于TBCTL的机制,在相位加载使能(PHSEN)的情况下同样适用。其中:

  • 0表示失能状态
  • 1表示使能状态
    详细解释可参考图4

图5 PHSEN位

第三个参数属于TBCTL家族中的一个设置项(相位方向),该参数主要用于决定移相波相对于基准波的方向选择:当设置值为0时表示采用滞后基准波模式,在这种情况下移相波会相对于基准波发生滞后;而设置值为1时则表示采用超前基准波模式,在这种情况下移相波会相对于基准波发生超前变化。具体的理论基础可以通过自行研究来深入理解并加以应用

图6 PHSDIR位

第四部分也就是相位寄存器(TBPHS),将对应的移相比值输入到这个寄存器就可以实现移相。具体来说,这四个寄存器应该如何配置,在后续部分详细说明。

图7 TBPHS寄存器

相关寄存器已做介绍。接下来将举例说明如何整体配置四个寄存器,请看下文:我们以epwm1作为基准波源,并以epwm2作为相移波。需要注意的是,在配置过程中,请确保以下几点:首先,在设置完成后请勿忘记将所有相关寄存器的状态重置至零值状态;其次,在完成所有配置参数后,请及时检查各寄存器的工作状态是否正常运行;最后,请确保所有配置参数均已正确保存并上传至系统中以避免后续操作失误;以上操作步骤完整无误后,请运行测试程序进行验证并记录结果数据;具体实现过程可参考附图中的示例流程图完成各项设置工作;在实际应用中建议根据具体需求调整各参数设置值以达到最佳效果;

复制代码
 EPWM1_Init(){

    
     //时钟和GPIO配置
    
     
    
     EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;    //表示在CTR=0发出同步信号
    
     /* * 对应关系如下
    
     * #define	TB_SYNC_IN		0x0
    
     * #define	TB_CTR_ZERO		0x1
    
     * #define	TB_CTR_CMPB		0x2
    
     * #define	TB_SYNC_DISABLE	0x3
    
     */
    
     EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;     // 禁止TBCTR加载相位
    
     EPwm1Regs.TBPHS.half.TBPHS = 0;             // 重置相位为0
    
  
    
     //其他寄存器配置
    
 }

那么epwm2考虑的就多一点,四个都需要配置一下,代码如下:

复制代码
 EPWM2_Init(){

    
     //时钟和GPIO配置
    
  
    
     EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  // 接收强制同步SYNCO信号
    
     EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;      // 使能TBCTR加载相位
    
     EPwm2Regs.TBCTL.bit.PHSDIR = 0;             //配置移相方向,0滞后或1超前
    
     EPwm2Regs.TBPHS.half.TBPHS = 175;           //设置移相值=周期值*移相比
    
     //例:周期值为700,移相比为0.25,则写入700*0.25 = 175
    
  
    
     //其他寄存器配置
    
 }

至此为止, 一个静态移相模块即可实现功能. 若需动态调节移相比, 则可以在基准波发生中断时, 相应地调整移相寄存器以及决定移相方向. 其中较为复杂的需求, 我会在后续阶段进行相应的优化设计与实现.

全部评论 (0)

还没有任何评论哟~