【开关电源RC吸收电路matlab simulink仿真】

开关电源RC吸收电路matlab simulink仿真

近期遇到了需要加吸收电路的需求,但是查阅网上资料全都是根据经验公式求得,并没有给出吸收完后的效果预测,因此自己动手做个方法。

电路模型

由于变压器漏感和整流二极管电容的存在整流二极管两端电压会产生过冲,如果电路或变压器设计的不好过冲甚至能达到两倍,迫使你不得不选择耐压更高的开关器件,从而增加成本,增大损耗。

以移向全桥的整流电路为例电路结构如下:

整流桥和RC吸收电路如下
整流桥和RC吸收电路
D1、D4导通,D2、D3关断瞬间的等效电路如下,lr为变压器漏感,Rd、Cd为二极管寄生电路
在这里插入图片描述

在进行吸收电路之前,首先要确定寄生电路的参数:

  1. 变压器的漏感Lr可以通过测量得到;
  2. 确定Lr后,根据未加RC吸收电路时的震荡频率确定Cd

C d = 1 / L r / ( 2 ∗ p i ∗ f ) 2 . Cd =1/Lr/(2*pi*f)^2. Cd=1/Lr/2pif2.

  1. 确定Cd后可以通过simulink仿真调整Rd的大小保证震荡衰减速度和实际电路一致;
    MATLAB代码如下
clc
clear
%实际电路参数
L=20e-6;
R=50;
C=0.2e-9;
%吸收电路参数
R1=200;
C1=1e-9;
%LC传递函数
num=[ 1];
den=[L*C 0 1 ];
G1=tf(num,den)
%吸收电路
num2=[ R1*C1 1];
den2=[C1 0 ];
G2=tf(num2,den2)
%寄生电路
num3=[ R*C 1];
den3=[C 0];
G3=tf(num3,den3)
%吸收电路并联寄生电路
num4=[L 0];
den4=[1];
G4=tf(num4,den4)
G51=G2*G3/(G2+G3);
G5=G51/(G4+G51)
G6=G3/(G4+G3)
bode(G6)
hold on
bode(G5)
 figure(2)
 t=0:1e-8:3.5e-6;%仿真时间0~3.5us
 y=step(G5,t);
 y1=step(G6,t);
 plot(t,y);
 hold on
 plot(t,y1);

运行结果:
下图两种震荡分别为加吸收电路前后的两种波形,添加吸收电路后震荡周期和幅度明显减小。
在这里插入图片描述

全局搜索吸收电路参数

按照上面的思路我们可以同时仿真多组吸收电路参数,并且从中挑选出吸收效果最好并且损耗可以接受的那一组来

clc;
clear;
%实际电路参数
L=20e-6;
R=50;
C=0.2e-9;
%LC传递函数
num=[ 1];
den=[L*C 0 1 ];
G1=tf(num,den)
%寄生电路
num3=[ R*C 1];
den3=[C 0];
G3=tf(num3,den3)
%漏感传递函数
num4=[L 0];
den4=[1];
G4=tf(num4,den4)
%无吸收电路传递函数
G6=G3/(G4+G3);
%设定RC搜索范围
%搜索范围
nR=50;%电阻组数
nC=50;%电容组数
stepR=50;%电阻变化步长
stepC=10e-10;%电容变化步长
stept=1e-8;%时间步长
nt=50;%时间组数
R1=stepR:stepR:stepR*nR;
C1=stepC:stepC:stepC*nC;
 t=0:stept:stept*nt;
%建立数组保存所有尖峰和时间
[m1,n1]=size(R1);
[m2,n2]=size(C1);
R1C1=zeros([n1*n2,4]);
%设置最大尖峰
os=1.15;
for  i=1:nR
    for  j=1:nC
        num2=[ R1(i)*C1(j) 1];
        den2=[C1(j) 0 ];
        G2=tf(num2,den2);        
        G51=G2*G3/(G2+G3);
        G5=G51/(G4+G51);
        y=step(G5,t);
        for k=2:nt
            if y(k)<y(k-1)               
                R1C1((i-1)*nC+j   ,   :)=[R1(i)  C1(j)  t(k-1) y(k-1)];
                break
            end
        end        
        if  (   R1C1(  (i-1)*nC+j   ,   4)<os    )   &&  (   R1C1(  (i-1)*nC+j   ,   4)>0.2    )
            plot(t,y);
            hold on            
        end     
    end 
end
%显示符合要求的RC组合 
l=1;
R1C1e=zeros([10,4]);
for i=1:nR*nC    
    if  (R1C1(i ,  4)<os)&&(R1C1(i ,  4)>0.2)
        plot(R1C1(i ,  3),R1C1(i ,  4),'*')
        hold on
        R1C1e(l,:)=R1C1(i,:);
        l=l+1;            
    end
end
format shortE
R1C1e %[吸收电阻       吸收电容         峰值出现时间         峰值大小]
size(R1C1e)

运行结果
在这里插入图片描述
局部放大
在这里插入图片描述
R1C1e =

2.0000e+02 4.0000e-09 3.6000e-07 1.1278e+00
2.0000e+02 5.0000e-09 3.6000e-07 1.1082e+00
2.0000e+02 6.0000e-09 3.6000e-07 1.0946e+00
2.0000e+02 7.0000e-09 3.6000e-07 1.0847e+00
2.0000e+02 8.0000e-09 3.6000e-07 1.0771e+00
2.0000e+02 9.0000e-09 3.6000e-07 1.0711e+00
2.0000e+02 1.0000e-08 3.6000e-07 1.0662e+00
。。。。。。。

我们可以从若干组数据中选出一个你最想要的参数然后在用MATLAB搭建实际电路模型,把吸收电路参数带进去就可以仿真出电阻的损耗和电容电压电流等参数(往往吸收效果越好电阻损耗越大)。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值