TI论坛
直播中

张瑞娟

7年用户 181经验值
私信 关注
[问答]

spraab3文档中差分方程输出与占空比的关系是什么?

您好,我在用F28335控制BUCK电源,按照spraab3中的方法生成了差分方程,我想知道U(n)的输出值是[0,1]之间的占空比吗?
我的差分方程是:U(n)=1.819U(n-1)-0.8187U(n-2)+4.638E(n)-9.076E(n-1)+4.439E(n-2)
我算出来的值很大啊,它与占空比之间是什么关系呢?

回帖(6)

张瑞娟

2020-6-3 11:52:39
谢谢您的提示,能否说的更具体一些呢,比如举个例子。下面是我的部分代码,因为我用的是F28335所以直接用浮点计算的。
#define U_k1         1.012
#define U_k2         -0.0123
#define E_k           145.6
#define E_k1          -286.9           
#define E_k2          141.4             //II型补偿TS=50us    
 
void BUCK_BC(void)
[
       extern Uint16 DC_BUS;
      
       BC_SET=Get_SetVol(0);                     //得到BUCK DC 设定值,范围0~2000
       BC_Input=(float32)BC_Feedback;        //反馈输入电压,范围0~2000
 
//------------------------------补偿网络  
       BC_Uout_2=BC_Uout_1;
       BC_Uout_1=BC_Uout;
      
       BC_Err_2=BC_Err_1;
       BC_Err_1=BC_Err;
       BC_Err=BC_SET-BC_Input;
      
       if(counter_buck<3)
              [//初始的3个周期用于计算ERR
              counter_buck ++;
              ]
       else
              [
              Err_Total=Bc_Gain*(E_k*BC_Err+E_k1*BC_Err_1+E_k2*BC_Err_2);
              U_Total=U_k1*BC_Uout_1+U_k2*BC_Uout_2;
      
              BC_Uout=Err_Total+U_Total;
              ]
 
//-------------------------------占空比输出
       if(BC_Uout>=1.0)
              [
              BC_Uout=1.0;
              ]
       else if(BC_Uout<0)
              [
              BC_Uout=0;
              ]    
    WR_FPGA_Buck((Uint16)(BC_Uout*2000));      //2000FPGA内部PWM锯齿波的峰值
       ]
说明DSP的定时器每50us调用一次补偿网络计算程序,该程序执行以下操作
1、启动AD转换并等待完成,时间1.1us
2、执行差分方程计算,时间1.5us
3、输出占空比到FPGA
FPGA内部的PWM的计数幅度为2000,周期为50us
 
目前数字环的问题:
1、如果完全按差分方程输出,环路不能正常工作,电网电压波动,输出也一同波动。也不能调节输出电压。
2、去掉En-1)项后,环路勉强能工作,可以调节输出电压,电网电压波动时可以稳定输出。但是响应很慢,当母线电压为100V时,设定输出为30V时候,从0~30V输出,接近0.5秒。且随设定增加,时间增加。这种情况下,电抗器噪音比较大。
3、在第二中情况下,观察驱动波形占空比,驱动波形要么是最大占空比,要么是最小占空比,比如说输出电压10V时,驱动波形仍然为最大占空比,只是每个驱动脉冲之间间隔200ms,随着输出电压增高,驱动脉冲之间间隔逐渐减小,但占空比还是最大。
举报

曹玥

2020-6-3 11:59:43
引用: 60user64 发表于 2020-6-3 11:52
谢谢您的提示,能否说的更具体一些呢,比如举个例子。下面是我的部分代码,因为我用的是F28335所以直接用浮点计算的。
#define U_k1         1.012
#define U_k2         -0.0123

你好!
有没有单独测试过下面这个函数?
WR_FPGA_Buck((Uint16)(BC_Uout*2000));      //2000为FPGA内部PWM锯齿波的峰值
即 BC_Uout 从 0 至 1变化, FPGA 输出 PWM 占空比 也是相应变化 ?
举报

张瑞娟

2020-6-3 12:16:12
引用: opqooq 发表于 2020-6-3 11:59
你好!
有没有单独测试过下面这个函数?
WR_FPGA_Buck((Uint16)(BC_Uout*2000));      //2000为FPGA内部PWM锯齿波的峰值

你好,WR_FPGA_Buck()函数已经测试过,没有问题。我又用数字PI试了一下,效果要好一些,我发现不能用“微分环节”,否则与上面的补偿网络的情况类似。我猜想E(n-1)是否与“微分环节”相似呢?另外使用数字PI后,电源的输出对输入的响应也是很慢,长达2~3秒。有谁能告诉我是什么回事啊,谢谢!
举报

曹玥

2020-6-3 12:22:11
引用: 60user64 发表于 2020-6-3 12:16
你好,WR_FPGA_Buck()函数已经测试过,没有问题。我又用数字PI试了一下,效果要好一些,我发现不能用“微分环节”,否则与上面的补偿网络的情况类似。我猜想E(n-1)是否与“微分环节”相似呢?另外使用数字PI后,电源的输出对输入的响应也是很慢,长达2~3秒。有谁能告诉我是什么回事啊,谢谢! ...

1、从你的描述看,应该是反馈回路的传递函数设计有问题。
2、你提供的程序的差分方程系数与你前面提供的差分方程系数不一致?
3、你的测试环路的方法,以及提到的调整过程的输入、输出电压、输出电流波形波形能否提供?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分