需求输入DC300V输出DC165V,输入范围185V - 425V
1、理论分析
实现电压变换的拓扑为BUCK电路,对于BUCK的工作原理资料随处可见,此处不再赘述。本文接下来主要介绍其数字控制环路的设计与DSP实现。
根据电源外特性要求,滤波电感大小设计为6.4uH,输出电容大小为200uF,其平均稳态模型为
式中,d为占空比,L为滤波电感,C为母线电容,R为输出负载
根据实际参数,绘制buck电路的开环传递函数bode图。
由Bode图观察可以发现,buck电路的滤波电感和输出电容在频率为4.5k左右的位置形成二阶极点。二阶极点会在该位置产生-180度相交偏移,根据频率域稳定条件,系统开环传递函数相位裕度在30至60度为佳,在环路带宽范围内不要产生相交负180度穿越。在环路设计时,考虑使用PI控制器,在原点出即存在一个极点,即PI控制器与BUCK电路构成的系统,器起始相位角为负90度.PI控制器还有一个零点,会产生90度正穿越,为了在二阶极点处避免产生负180度穿越,至少要补偿1个零点;或是将带宽设计的非常低,保证在二阶极点处,幅值增益足够小,以防止输出产生振荡。此处为了环路带宽足够高,此处采用添加相位补偿器的方式,改善环路相角裕量。
相位补偿器公式:
式中,z为零点角频率,p为极点角频率值
此处相位补偿器零点选择在3k位置,极点选择在15k。
2、PLECS仿真-模拟闭环控制
在PLECS软件中按照参数要求搭建buck电路及控制器,调整控制参数使输出电压稳定输出。
3、数字环路仿真
目前大多数电源应用都以数字电路为主,将上述电路模型搭建为数字环路。数字环路与模拟环路的主要差异在于数字环路存在不连续性和时滞性的特点。在设计数字环路时需将原模拟环路数字离散化。
采用后向差分法完成PI控制器离散化设计
PI控制器离散化后转化为C代码
Y = Ylast + kp *(X - Xlast) + ki*Ts*X;
Ylast = Y;
Xlast = X;
式子中X为输入信号,Y为输出信号,在做环路设计时,时域设计的ki参数,转换为数字控制时需要快率控制周期时间(Ts)的影响。
同样采用相同的方式可以离散化相位补偿器,获得相位补偿器的C代码。
Y = b*Ylast +a1*X-a2*Xlast;
Ylast = Y;
Xlast=x;
式中:
T为数字控制周期,P为极点角频率,Z为零点角频率。
PLECS内部带有DLL模块,可调用VS生成的动态链接库文件,在VS中编写数字环路代码,生成DLL完成控制逻辑验证。PLECS内集成了TI28系列芯片的PWM模块和ADC模块,此处应用PWM模块能更好的模拟芯片PWM发波。
保留原PLECS仿真程序中电路部分,将控制部分用DLL文件替代,DLL内容在VS中实现。
根据实际工作条件配置PWM模块,本示例中开关频率160K,PWM采用上升计数模式,过零点开通,过比较值CMPA关断PWM输出。
DLL文件编写:
a、本示例应用VS2022编写DLL文件,
选择桌面向导,新建项目。
选择创建动态链接库(dll),选择空项目。创建新工程。
b、在工程文件里添加PLECS自带的DllHeader.h头文件,和main.c文件,并在main.c文件内编写输入输出接口程序。
接口程序PlecsSetSize()函数中定义了,DLL模块的输入输出接口个数,定义多少,在PELECS中DLL模块就要有多少个输入输出数据,无数据时,默认为0。接口程序plecsOutput()为执行程序,仿真程序运行时,会按照DLL模块定义的执行时间周期性的执行peecsOutput()内的代码,按程序逻辑输出结果,其中aState->inputs[]为DLL模块输入的数据,顺序从0开始逐个增加,sStste->outputs[]为输出接口,顺序从0开始逐个增加。在VS中导入采样数据,并按控制逻辑运算产生调制信号,再将调制信号输出给PWM块,便可完成整个闭环功能。调整VS中的代码,通过观察仿真结构,便可以验证各种环路参数对电源模块的影响,从而获得控制效果优良的控制参数。VS内部代码可以完全参照DSP内部程序逻辑编写,这样在调整参数的同时,也可以验证控制逻辑,查找处程序漏洞。
编写完代码生成Dll文件,在PLECS中配置好文件地址和调用周期,便可以完成数字环路功能,运行仿真程序便可以得到运行结果。
标签:环路,BUCK,PLECS,输出,拓扑,DLL,模块,PWM From: https://blog.csdn.net/lovewzfeng/article/details/143146614