数字电源控制器UCD3138前馈功能说明

数字电源控制器UCD3138前馈功能说明,第1张

摘要

UCD3138 是德州仪器(Texas Instruments)公司推出的最新一代数字电源控制器,于2012 年第一季度正式发布。相比于上一代数字电源控制器UCD30xx,其在诸多方面有着重要改进,功能更加丰富,性能更加强大。本文基于一款采用硬开关全桥(副边采用全波同步整流)拓扑的开关电源,详细介绍了UCD3138 的Single Frame 功能和输入电压前馈功能。在完成对上述功能理解地同时也可以清楚的了解到UCD3138 的优势所在。本文的最后部分给出了参考文献。

1、Single Frame 功能设计与实现

Single Frame 是一种全新的在副边完成对原边输入电压检测的方法。通过该方法可以在副边直接快速地检测当前输入电压,实现欠压保护功能,因此无需额外的输入欠压保护电路光耦数字隔离器

1.1 Single Frame 功能介绍

在电源系统未正式运行前,UCD3138 芯片会周期性的发出单个或几个驱动脉冲,使硬开关全桥工作单个或者多个周期。此时,在变压器副边中心抽头处可以产生出电压,该电压与输入电压成线性关系,因此通过UCD3138 检测该点电压并通过软件计算后可以得到输入电压。基于该计算结果,系统可以判断输入电压是否达到开启点,以决定是否退出欠压保护并开始正常运行。

实际应用中,为保证全桥原边侧上管(驱动地为浮地)可以顺利导通,通常需要连续发送几个周期的驱动脉冲。在本文涉及的硬开关全桥中,实际发送了2 个驱动脉冲以保证UCD3138 顺利检测到正确的输入电压。

1.2 硬件电路设计

实现Single Frame 功能的硬件电路比较简单,如下图1。VIN_CT 网络连接到变压器副边中心抽头处,然后通过RC 滤波后连接到UCD3138 的EAP2 引脚。该电路的主要功能是实现变压器中心抽头处电压的滤波及缩放。

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第2张

图 1:Single Frame 硬件电路

变压器的匝比为5:2:2 。EAP2 处电压与输入电压的关系为:

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第3张

1.3 软件设计

实现Single Frame 功能的软件设计包括了驱动信号的配置和电压采集及转换等两个部分,其中第一个部分是核心配置。下面着重讨论第一部分。

1. 开关周期的设定

下面代码设定了开关周期为5us,即200KHz。计算公式为:

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第4张

#define PERIOD (20000)

Dpwm0Regs.DPWMPRD.all = PERIOD;

2. 单脉冲长度的设定

下面代码完成了单脉冲脉宽长度的设定,包含了死区的设置。该代码设置的时间宽度为

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第5张

。即一个周期内输出两个脉宽长度皆为651ns 的脉冲。

Dpwm0Regs.DPWMEV1.all = 20;

Dpwm0Regs.DPWMEV2.all = 2625;

Dpwm0Regs.DPWMEV3.all = 20 + 10000;

Dpwm0Regs.DPWMEV4.all = 2625 + 10000;

3. 采样时刻的设置

考虑到在变压器副边中心抽头处电压变为高电压时会伴随有尖峰和震荡,为防止采样错误,采样点设置需要避开开始时刻。下面代码设置了采样点的位置:接近脉冲的结束时刻,为600ns 处。

Dpwm0Regs.DPWMSAMPTRIG1.all = 2400;

1.4 实测波形

如下图2 所示,绿色线为全桥原边驱动(即单脉冲)波形,其时间长度约为650ns,与软件设计一致。黄色线为变压器副边中心抽头处的电压波形,第一个波头是因为全桥原边没有完全导通造成输入电压没能够完全地传输到副边,而第二个脉冲则准确地反应了输入电压的信息。此时,输入电压为50V,黄色线的平台为20V,与理论计算一致。

图 2:Single Frame 实测波形

2、前馈功能的设计与实现

前馈(feed forward)功能是UCD3138 的一个重要特性。借助于实现Single Frame 功能的硬件电路,UCD3138可以获知当前输入电压;当输入电压有剧烈变化时,前馈功能可以快速响应并调整占空比,以尽快稳定输出电压。

2.1 前馈功能实现原理描述

UCD3138 芯片内部的前馈模块的输出为一个增益值,将与环路的输出结果相乘,以共同决定占空比。前馈模块输出的增益由该式决定:Gain = Kc + Kp×ΔV 。其中:

◎ Kc 为常数,通常设置在0.5~0.7 之间,以方便对占空比进行大小两个方向的调节;

◎ Kp 为输入电压差值的放大倍数。该值为非线性值,即误差越大则增益越大。误差较小时,该值为0;

◎ ΔV 为跳变之后的输入电压与跳变前输入电压的差值,即Vref(DAC)-Vin_sense。在输入电压跳变之后,Vref(DAC)的值会逐渐逼近新的输入电压,以保证该值等于最新的当前输入电压。

UCD3138 芯片内部前馈处理模块的的示意图见图3。

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第6张

图 3: 前馈内部处理模块

如下图4 所示,前馈模块的输出结果直接与环路最终的输出相乘,然后由相乘的结果再去调整占空比大小。这就保证了前馈的结果可以快速调整当前的占空比。

数字电源控制器UCD3138前馈功能说明,数字电源控制器UCD3138前馈功能说明,第7张

图 4:前馈输出最终与环路输出相乘

2.2 前馈功能的实现

前馈功能的硬件设计主要包含了输入电压的检测电路,在第一章曾有描述,在此不再赘述。软件设计主要包含了Vref(DAC)值的配置、Kc 的配置和前馈功能的启用设置。

1)Vref(DAC)值的配置

如下函数实现了根据v_input_error 的大小对Vref(DAC)值的更新。v_input_error 为当前采集的输入电压与前一次采集到的输入电压的差值。该函数包含在一个状态机中,100us 执行一次,将连续执行300 次,以保证在使能前馈功能之前Vref(DAC)近似等于当前输入电压。

if(v_input_error 》 10)

{

if(FeCtrl2Regs.EADCDAC.bit.DAC_VALUE 》 3000) //can not lower than 35V;

{FeCtrl2Regs.EADCDAC.bit.DAC_VALUE = FeCtrl2Regs.EADCDAC.bit.DAC_VALUE - 1;}

}

else if(v_input_error 《 -10)

{

if(FeCtrl2Regs.EADCDAC.bit.DAC_VALUE 《 14000) //can not higher than 80V;

{FeCtrl2Regs.EADCDAC.bit.DAC_VALUE = FeCtrl2Regs.EADCDAC.bit.DAC_VALUE + 1; }

}

如果误差很小,即输入电压已经稳定,则系统软件准备开启前馈功能并随后进入正常运行的状态机。

if ( abs(v_input_error) 《 10) //Vin error is small

{

supply_state = STATE_REGULATED;

Filter0Regs.FILTERCTRL.bit.OUTPUT_MULT_SEL =2;//Enable Feed Forward

}

2)Kc 值的配置

在输入电压稳定的情况下,如果Kc 直接配置到0.5 到0.7 的某个值,则此时启用前馈功能会影响正常环路的输出,造成输出电压出现跌落。如下图5 所示。

图 5:Kc 启用不当造成输出有跌落

跌落的原因是因为此时环路的正常输出被突然乘以Gain=Kc=0.5~0.7,所以占空比会立即被限制,输出电压出现跌落。直到环路经过多个周期后再将占空比展开到正常大小,输出电压才恢复到正常值。

因此,在实际应用中需要将Kc 由1 慢慢减小到需求的值(在本文涉及的硬全桥软件中选择Kc 为0.7)。另,在实际设计中使用Filter2 实现非线性增益和Kc 的设置,因此软件配置如下。

Uint32 filter2_kc;

int filter2_kc_step = 0x200;

inline void handle_regulated_state(void)

{

filter2_kc = Filter2Regs.FILTERPRESET.bit.PRESET_VALUE;// It is Kc

if(Filter2Regs.FILTERPRESET.bit.PRESET_VALUE 》 0x5A0000)

{

Filter2Regs.FILTERPRESET.bit.PRESET_VALUE = filter2_kc - filter2_kc_step;

Filter2Regs.FILTERPRESET.bit.PRESET_EN = 1;

}

}

其中,handle_regulated_state 为软件状态机中的一个状态,每100us 执行一次。通过这样一个循环函数就可以保证Kc 是以步进的形式由1 配置到0.7(0x5A0000/0x7FFFFF=0.7),防止了输出电压出现跌落。

3)前馈功能的启用

经过上述完善的预先配置后,可以启用前馈功能,启用后KC 从1 慢慢开始减小。启动的设置是通过下面代码实现的。“OUTPUT_MULT_SEL”位用来选择与环路输出相乘的值,以决定最后的占空比。当设置为2时,将选择前馈的输出与环路输出相乘,即启动了前馈。

Filter0Regs.FILTERCTRL.bit.OUTPUT_MULT_SEL =2;

责任编辑:lq6

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2501605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存