在本节中,将用Mirochip官方新推出的一个软件MPLAB PowerSmart Development Suite来实现LLC数字环路的补偿器设计。本节用的源程序在附件中下载。
先从官网下载PowerSmart:
如果在安装时提示缺少运行库,可以在网上搜索
安装后即可继续安装PowerSmart。
安装完成后启动该软件,启动界面。
在该软件界面中,先定位上一节中建立的MPLAB X工程文件。
选择电压模式控制
将VMC添加进工程中,会出现以下图示:
这就是控制环路的框图。首先要获取功率级(Plant)的bode图,PowerSmart支持两种方法得到功率级的bode图,一种是网络分析仪实测,一种是Simplis仿真数据导入。笔者用的是bode100对Plant实测。对于数字控制的Plant的测量,一般是用P-Term法。PowerSmart这个软件也支持该方法测量Plant的bode图。
先进入补偿器的设计界面:
要先进行参数的设置:
首先选择“Advanced”选项卡,在“2”的位置勾选,点击“3”,出现
设置反馈电压分压比和ADC采样参数。
点击“4”
因为LLC是变频的,所以按上图设置。点击“OK”,进入“Source Code Configuration”选项卡中,进行如下的设置:
因为在本例中,进入ADC中断时,没用到寄存器切换这项功能,所以要去掉“Software Context Management”。触发ADC是在PWM波开始时触发,去掉“Add Automatic Placement of Primary ADC Trigger A”。完成上面配置后,可以生成代码了。
这里要说明:该P-Term控制环路的算法只是用来测量功率级的bode图,并不能真正用来做环路的控制。
下面就是将生成的代码植入到主程序中,需要先将上面生成的代码文件添加到工程中去。
将上面四个文件分别导入进工程中。
在程序中,经常需要定义一些常量,一般会将这些常量放在一个头文件中,便于管理。在工程中新建一个Define.h文件,用来预定义一些常量。
在main.c中添加代码:
包含控制算法的头文件“VCOMPfrq.h”,增加一个全局变量,用来设定输出电压。
再回到PowerSmart界面中
将上面控制算法初始化函数植入到main.c文件中。
要注意,应该在外设初始化之前,完成控制算法的初始化。
再在adc1.c文件中添加代码:
包含头文件
在adc的中断中调用算法函数。
调用P-Term函数进行环路运算,函数参数名即为前面在PowerSmart的工程名。算法函数后面紧跟着占空比寄存器更新,这样才能更新PWM的周期。
编译完成后,下载到dsp中,用bode 100测量功率级传递函数。
输入电压:390Vdc。输出:22V10A
从波形上看,穿越频率为3.48KHz,相位裕度为76°,即使反馈环节为1,理论上,电源也能够稳定工作。将bode100生成的曲线导入到PowerSmart中:
导入Plant后,开始设计补偿器的参数:
实际中,将负反馈定为1,电源并不能稳定工作。经过多次调整环路参数,发现只要开环bode图的幅值曲线穿越频率超过2KHz时,电源就有明显的啸叫声。最终穿越频率设置到1KHz时,啸叫声消失。在PowerSmart中设计的开环bode图如下:
当完成参数设计后,要将新参数更新至文件中。
然后,还需要修改代码,将真正的环路算法写入程序中。
最终实测的开环bode图:
从上图可以看到,从2KHz为分界点,低频段的幅值曲线,与计算的bode图比较一致,但是超过2KHz以后,实际曲线与理论曲线相差就越来越大了。相位曲线相差更大,但是实际测到的比理论计算的有更大的相位裕度。
笔者没有测试更多的补偿器的类型和量化模式,也许精确度更高的模式会减小理论与实际之间的误差。
下面是LLC电路实际运行时的波形:
结论:
PowerSmart推出的时间比较短,一些功能笔者也还在探索中,上面所讲如有不对之处还请各位原谅。在实际使用过程中,这个工具确实能提高设计补偿器的工作效率,基本上不再需要工程师手动修改参数,并且有图形化的界面,是非常值得数字电源工程师学习和掌握的一件利器。
再讲一个小技巧,可以快速打开以前用PowerSmart设计的工程文件。