上一篇已经介绍如何完成关键外设的MCC初始化配置,这篇文章介绍如何让同步buck完成闭环工作。
同步Buck工作于VMC控制,整个控制策略为工作频率350KHz,PWM触发ADC对输出电压进行采样,ADC模块完成采样-保持-转换之后触发中断服务程序(ISR),去执行3p3z的算法,最后完成占空比的改写。
电路示意图如下:
采样到占空比更新如下:
下面开始软件算法的配置。
1.辅助工作寄存器的初始化。
对于新的dsPIC33CK系列器件来说,由于添加了备用工作寄存器因而性能得以进一步提升。这些器件提供四个额外的工作寄存器存储区,每个区域各有 15 个工作寄存器,也可作永久寄存器使用。这意味着在器件初始化阶段就可以将诸如钳位限制、缩放因子、指针系数等数据预先加载到合适的备用工作寄存器中。然后我们可以将这些寄存器区域关联至一个既定的中断优先级,使得 只有控制环路软件才有机会进行访问。这样就消除了将工作寄存器推入/弹出堆栈的需要,也将减少在执行补偿算法时将数据输入工作寄存器所需的开销。
2.补偿器初始化
a)变量申明
两个数组被创建,一个包含AB系数在X空间;另一个控制和误差值的历史数值在Y空间。
b)3p3z控制器初始化
在使用控制器之前,必须先对其进行初始化。 首先,必须初始化系数数组,其次是误差并且需要清除控制历史记录数组,第三,必须初始化备用工作寄存器
以下指令初始化系数数组(请注意,系数是通过仿真工具获得的,比如DCDT/MATHCAD/MATLAB),在c应用程序文件中执行如下:
其次,误差和控制历史记录数组需要清除。可以通过创建一个宏并在软件中调用它。
3.ADC中断执行3p3z算法
PWM触发ADC采样,转换完毕进中断执行ISR。
工作波形:
350kHz 互补PWM
中断执行算法的时间
实际电路板工作
对环路进行扫描的Bode图如下,穿越频率11kHz,相位余量53.97°。
执行3p3z环路bode图
至此,整篇数字电源同步Buck入门专题算是告一段落,欢迎各位提出意见与交流,谢谢大家!