对于大功率的DC-DC来说,效率和体积是工程师重点关注的方面。
提高开关频率能有效的减小体积。通过交错并联的方式,减少输出电容的数量,并降低输出电流的纹波。
输出大电流的Buck电路拓普中,一般用同步整流MOS管替代硅整流二极管,可以提高电源的整体效率。
数字dsp芯片ePWM输出配置的灵活性,特别适合交错+同步整流Buck电路。
附件中有完整的程序代码。
DC-DC电源参数(非隔离Buck):
输入: 48V±10VDC
输出电压: 26V±0.5VDC
输出电流: 77A
输出电流纹波: <1%
输出电压峰峰值:<100mV
整机效率: >95%
控制方式: 峰值电流型BUCK电路
从上面的参数可知,采用非隔离BUCK电路拓普时,额定条件下工作时,主开关管的占空比接近50%,所以选择两路交错并联的方式能有效的减小输出电流的纹波。
由于输出电流较大,采用同步整流的方式提高效率。
主电路框图如下:
如果用模拟芯片来实现对上面主电路的控制,会非常复杂。而用TI的F28035来实现就会非常简单。28035芯片资源分配如下:
PWM输出:按照上面框图驱动四个MOS管。
ADC采样:输出电压采样Vout_FB——ADCINA1
输出电流采样Iout_FB——ADCINA6
输入电压采样Vin_SEN——ADCINA3
模拟比较器:输入电流互感器信号CS1+——COMP1A
输入电流互感器信号CS2+——COMP2A
由28035构成的数字控制环路框图如下:
主功率电路中的MOS管的驱动芯片,用的是IR2181s,驱动电路(部分原理图)如下:
因为IR2181s的Ho驱动输出,需要通过47uF/50V泵升电容进行供电,而泵升电容每个开关周期都需要在同步整流MOS导通时进行充电,否则同步MOS管不导通,泵升电容就无法充电,Ho也就无法正常输出。所以同步MOS要有一个最小的占空比限制,即占空比不能为0%。本例中设定的最小占空比为8%。
同步降压电路中,要重点关注电感不连续时,如何控制同步MOS管的驱动。主开关管与同步管是互补输出的,在主开关管关断时,经过一定的死区时间后,同步管要处于导通状态。但在电感电流不连续时,如果同步MOS管处于导通状态,会引起同步MOS管D-S端短路。所以在电感电流非连续时,要关闭同步MOS管的驱动,在ePWM输出模块中要有相关的保护机制。
软件的代码是以TI的模板为基础编写的,模板文件如下,可以通过导入工程的方式获得:
笔者为了在没有安装controlSUITE的电脑上编译,就将所有TI的数字电源库(DPL)文件导入到工程文件夹中,并重新修改了工程的搜索目录和相关的配置参数。
下面来详细介绍程序代码:
首先是ePWM的配置:
PWM1A和PWM1B是互补的关系,且要有一定的死区时间,防止发生直通。
PWM2A和PWM2B也是互补的关系,但PWM1x与PWM2x是交错180°导通。在TI的数字电源库中并没有合适的配置文件,所以要拿现有的配置文件进行一些修改。
将上面的配置文件导入到工程文件夹中,因为笔者的工程中已经包含该配置文件了,所以直接修改。
经过这样的修改,就可以得到PWMxA和PWMxB互补的PWM,但这时的死区时间为0。
在数字电源库(DPL)初始化的时候设置PWM1的频率(100KHz)和死区时间(200ns)。因为模板中的PWM2是在中断里进行环路运算的,要改为在CLA中运算,然后配置PWM2。
完成上面的代码后,可以看到PWM1x和PWM2x已经有互补的PWM输出了,但PWM2x还没有移相。PWM1设为主,PWM2设为从,与PWM1同步,PWM2的相移设为开关周期的一半,即相移180°。
因为同步MOS管的最小占空比为8%,也就是说主降压MOS管的最大占空比为92%。
此时四路驱动波形
然后是ADC和模拟比较器的设定。这些内容在笔者前面的文章中介绍过,就不再具体说明了。这里提一下,在ePWM模块中也有一个比较器子模块,称为数字比较器子模块。要将它与用于电感电流峰值比较的模拟比较器区分开。因为主功率电路开关管的占空比存在大于50%的可能,所以要在模拟比较器的电流参考端加一定的斜率补偿,防止次谐波振荡。
因为PWM1A和PWM2A导通的起点相差180°的,要产生的两个斜率补偿的起点也是不一样的,所以可以看到在模拟比较器的配置函数要如下图方式配置:
斜率补偿为16,如果实际工作中出现次谐波振荡的情况,适当增加这个值,就会改善。
接下来,详细说明电感电流不连续时,同步MOS管的保护机制。
应当知道,当负载电流小于电感纹波电流的1/2时,主功率电路的电感就会进入非连续工作模式。
一般会有两种检测方法来判断电感是否进入非连续工作模式:
1)在主MOS管PWMxA处于关断状态时,检测A点和B点的电压,如果为负值(一般会在-1.2V至-0.5V之间)则电感有持续的电流通过,电感两端有压降(等于输出电压值),同步MOS管可以导通,以减小导通损耗。如果出现大于0的值,则电感电流消失,电感不再有压降,此时要关断同步MOS管,防止短路。
该方法涉及到负值的采样和采样时机的把控,比较麻烦。
2)根据DC电源的工作范围和功率电感的电感量,可以得到电感电流纹波的最大值,然后采样输出电流,即负载电流,将负载电流采样值与电流纹波的1/2做比较,如果负载电流采样值超过电流纹波的1/2则可以驱动同步MOS管导通。否则要关断同步MOS管。
第二种方法比较好实现,因此用来做为同步MOS管的保护机制。
笔者是通过ePWM模块的TZ子模块来完成同步MOS管的关断保护的。这里有必要介绍一下TZ子模块的结构。如下图:
从上面的框图可以看出ePWM模块的TZ子模块是如何实现的峰值电流控制,电感电流与参考值在模拟比较器中进行比较,当电感电流大于参考值时,会触发PWM数字比较器的DCAEVT2.force或DCBEVT2.force事件,使主MOS管的驱动PWMxA的关断,其占空比由参考值来决定。
当负载电流小于电感电流的1/2时,将寄存器TZCTL[TZB]的值写为0,就能关断PWMxB,即关断同步MOS管。
在没有出现电感峰值限流时,即没有触发PWM数字比较器的DCAEVT2.force或DCBEVT2.force事件时,寄存器TZCTL[TZB]的值写0是没有作用的,所以也就不会出现关断同步MOS管的情况,这时的同步MOS管与主MOS管是互补输出。
只要主MOS管的最大占空比不是100%(设定最大占空比为92%),则同步MOS管的最小占空比就不是0%(最小占空比为8%),这样同步管一定会导通一小段时间,这确保了电源在上电启动的阶段,负载电流较小时,不会始终关闭同步MOS管的驱动,使IR2181s的泵升电容能够正常充电来驱动主MOS管,不会出现上电后,电源无法启动的问题。
另外要说的一点是,寄存器TZCTL[TZB]只能在中断或主循环中进行写入操作,在CLA中是不能写入的。因此只能构建一个外设的中断服务函数来实现。在本例中,在ePWM3的CTR_ZERO中断服务函数中改写TZCTL[TZB]。
先配置ePWM3的寄存器:
还要正确配置ePWM3工作频率(100KHz)和工作模式(单路输出)
在main.c文件的最后,插入epwm3的中断函数代码:
在中断服务中判断是否应该开启同步整流。
到此,同步MOS管的保护机制已经搭建完成了。
下面是环路控制算法。
环路控制的运算是在CLA空间中进行的,CLA空间支持浮点运算,并且进入PWM中断的时间开销小,运算速度也比较快。下面是控制环路的算法:
这样就能实现DC电源的恒压恒流输出的工作状态。
还有一个问题要注意:CLA的Task1是由ePWM1来触发的,应当此处同时更新Comp1和Comp2的电感电流参考值,即两个交错并联功率电路的控制环路要做到“同时采样,同时运算,同时写入,分时更新”。因为ePWM1和ePWM2交错180°,所以就只能分时更新电感电流的参考值。
如果不能“同时采样,同时运算”就可能出现两个功率电路不均流的情况,这时某一路的电感就可能处于非连续状态,导致同步MOS管错误的驱动,引起炸机。这点,笔者是有深刻教训的。为了避免交错并联功率电路出现不均流问题,在PCB画板时,要尽量对称布局,同时两个电感的参数要一致,最好磁芯都要用一个批次的。总之,尽量做到一致性。
在输入48V,输出26V/77A时,测到最高效率95.8%。当强制关闭同步整流功能时,效率只能做到94%。同步MOS管在导通时的压降只有不到0.2V,远远低于大电流肖特基二极管的正向导通压降0.64V。