数字电源控制器UCD3138的Single Frame和前馈功能说明
时间:10-20
来源:电子发烧友
点击:
图 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 所示。
![](../img/ele-ee/ee-36258u2zty3xokfa.jpg)
图 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;
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 所示。
![](../img/ele-ee/ee-36258u2zty3xokfa.jpg)
图 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;
- 基于GUI软件配置UCD3138数字电源PMBUS命令(05-25)
- 选择数字电源集成电路(IC)的秘诀(07-03)
- 数字电源控制器UCD3138的逐周期保护功能说明(10-22)
- 如何挑选数字电源集成电路?(08-05)
- 让数字电源控制器与模拟控制器兼容的电路(07-26)
- LT3751如何使高压电容器充电变得简单(08-12)