Passive Gleichrichter-Schaltungen, simuliert mit Matlab,

Werbung
R. Kessler,C:\ro\Si05\AJ\matlab53\PasGleichriMatlab1.doc, S. 1,5
Passive Gleichrichter-Schaltungen,
simuliert mit Matlab,
dabei numerisches Finden des Dioden-Stroms aus
Diodenkennlinie (Newton-Verfahren)
Vergleiche Tephys-Algorithmen, dort aber „eckige“ Diodenkennlinie
% http://www.home.hs-karlsruhe.de/~kero0001/gleichri/Gleichrichterschaltungen_3.pdf
function [i]= diode1(u,R,Rp,I0,sw);
% function [i]= diode1(u,R,Rp,I0,sw); Z.B. i0=10 nA=1e-8;
if u > 0 u1=0.6; else u1=-1; end;
u2=0; % Start:
while abs(u2-u1) > sw
u2=u1;
y1 = R*(I0*(exp(u1/0.026)-1)+u1/Rp)+u1-u;
y1st = R*I0*exp(u1/0.026)/0.026+R/Rp+1; % y1st= “Steigung”
u1= u1-y1/y1st; % Newton-Verfahren
end;
i=(u-u1)/R;
%Aus Tepfomk1.pas
%function idrrp2(b:para_stack_ptr):float; {Diode s.R7 S.126 }
% var u2,u1,u,y1,y1st,R,Rp,i0,sw: real;
%begin
% u:= b^[1]; R:= b^[2]; Rp := b^[3]; i0 := b^[4]; sw := b^[5];
% if u > 0 then u1 := 0.6 else u1 := -1;
% repeat
%
u2 := u1;
%
y1 := R*(i0*(exp(u1/0.026)-1)+u1/Rp)+u1-u;
%
y1st := R*i0*exp(u1/0.026)/0.026+R/Rp+1;
%
u1:= u1-y1/y1st;
% until abs(u2-u1) < sw;
% idrrp2 := (u-u1)/R;
%end;
% Schaltung: Reihenschaltung R und (Diode parallel Rp)
% u=R*i+u1; u1=Spannung an der Diode
% Knoten: i=iD+u1/Rp, mit ID=I0*(exp(u1/uT)-1) % Diodenkennlinie uT=0.026, I0=Sperrstrom
% eingesetzt:
% i =I0*(exp(u1/uT)-1)+u1/Rp = (u-u1)/R; % mit R multipliziert und alles auf eine Seite:
% Def y1= R*I0*(exp(u1/uT)-1) + u1*R/Rp +u1 -u % Ziel dasjenige u1 suchen, bei dem y1 =0 wird
% Ableitung nach u1 Def.: y1st=dy1/du1
% y1st=R*I0*(exp(u1/uT)-1)/uT +R/Rp +1
% Daraus neuer Wert für u1: u1= u1-y1/y1st
% Daraus obige Matlab-Funktion s. Datei-Anfang
********************************************************************
function [i]= diode1n(u,R,Rp,I0,sw); % Für anders gepolte Diode
% function [i]= diode(u,R,Rp,I0,sw); Z.B. i0=10 nA=1e-8;
% if u > 0 u1= 0.6; else u1= - 1; end;
if u < 0 u1= - 0.6; else u1= 1; end;
u= - u; %Probeweise scheint OK zu sein!
u2=0; % Start:
while abs(u2-u1) > sw
u2=u1;
y1 = R*(I0*(exp(u1/0.026)-1)+u1/Rp)+u1-u;
y1st = R*I0*exp(u1/0.026)/0.026+R/Rp+1;
u1= u1-y1/y1st;
end;
% i=(u-u1)/R;
R. Kessler,C:\ro\Si05\AJ\matlab53\PasGleichriMatlab1.doc, S. 2,5
i = - (u-u1)/R; % Probeweise negatives Vorzeichen: das scheint OK zu sein
************************************************************************
bild=1,f=1,aS=1,dt=0.01,R=1000
1
0.5
0
-0.5
clear; R=1000;dt=1e-2;tmax=2.5;f=1;aS=1;bild=1; mitdiode;
-1
0
0.5
1
sec
1.5
% Datei mitDiode.m R. Kessler Heft R71, S. 166, 21.7.2007
% clear; R=1000;dt=1e-2;tmax=5;f=1;aS=1;bild=1; mitdiode;
% geht OK
format compact;
Rp=1e12; I0=1e-8; sw=1e-3;
%Plotwerte deklarieren:
Nmax=floor(tmax/dt);
tp=zeros(1,Nmax); u0p=tp; iDp=tp; uAp=tp;
% Startwerte:
t=0; k=0;
while t < tmax;
u0=aS*sin(2*pi*f*t);
[iD]=diode1(u0,R,Rp,I0,sw);
uA=u0-R*iD;
% Plotwerte speichern:
k=k+1; tp(k)=t; u0p(k)=u0; uAp(k)=uA;
t=t+dt;
end;
figure(bild); clf reset; plot(tp,u0p, tp,uAp); grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',f=',num2str(f)]; S3=[',aS=',num2str(aS)];
S4=[',dt=',num2str(dt)]; S5=[',R=',num2str(R)];
Tit=[S1,S2,S3,S4,S5]; title(Tit);
2
2.5
R. Kessler,C:\ro\Si05\AJ\matlab53\PasGleichriMatlab1.doc, S. 3,5
bild=3,f=1,aS=1,dt=0.02,R=1000
1
0.8
clear; R=1000;dt=2e-2;tmax=2.5;f=1;aS=1;bild=3; mitdiode3;
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.5
1
sec
1.5
clear; R=1000;dt=2e-2;tmax=2.5;f=1;aS=1;bild=3; mitdiode3;
%Datei mitDiode3.m R. Kessler Heft R71, S. 166, 21.7.2007
% clear; R=1000;dt=1e-2;tmax=5;f=1;aS=1;bild=1; mitdiode3;
% geht OK
format compact;
Rp=1e12; I0=1e-8; sw=1e-3;
%Plotwerte deklarieren:
Nmax=floor(tmax/dt);
tp=zeros(1,Nmax); u0p=tp; iDp=tp; uAp=tp; iDnp=tp; iDpp=tp;
% Startwerte:
t=0; k=0;
while t < tmax;
u0=aS*sin(2*pi*f*t);
[iDp]=diode1(u0,R,Rp,I0,sw); % Diode gepolt in positiver Richtung
[iDn]=diode1n(u0,R,Rp,I0,sw); % Diode gepolt in negativer Richtung
uA=u0 - R* iDn - R* iDp; % OK
% Plotwerte speichern:
k=k+1; tp(k)=t; u0p(k)=u0; uAp(k)=uA; iDnp(k)=iDn; iDpp(k)=iDp;
t=t+dt;
end;
figure(bild); clf reset;
plot(tp,u0p, tp,uAp, tp,iDnp*200,'m',tp,iDpp*200,'k' ); grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',f=',num2str(f)]; S3=[',aS=',num2str(aS)];
S4=[',dt=',num2str(dt)]; S5=[',R=',num2str(R)];
Tit=[S1,S2,S3,S4,S5]; title(Tit);
2
2.5
R. Kessler,C:\ro\Si05\AJ\matlab53\PasGleichriMatlab1.doc, S. 4,5
bild=2,f=50,a0=10,dt=0.0002,C=0.01,RL=4,R0=0.1
25
20
clear;f=50;a0=10;RL=4;dt=2e-4;C=0.01;R0=0.1; tmax=0.05; bild=2;GleichriZwei1;
15
10
5
0
-5
-10
0
0.005
R0
0.01
0.015
0.02
C
uC
0.025
0.03
sec
0.035
0.04
0.045
0.05
iD
uD
u0
uD
RL
%Datei GleichriZwei1.m R. Kessler Heft R71, S. 166, 21.7.2007
% Probweise Zweiweg-Glecihrichtung: OK?
% clear;f=50;a0=10;RL=40;dt=2e-4;C=0.002;R0=0.1; tmax=0.05;bild=5;GleichriZwei1;
%
% clear;f=50;a0=10;RL=40;dt=2e-4;C=0.002;R0=0.1; tmax=0.05;
bild=5;Gleichri2;
%
% Einweg-GLeichrichter, vgl. Tephys (homepage)
%http://www.home.hskarlsruhe.de/~kero0001/gleichri/Gleichrichterschaltungen_3.pdf
format compact;
Rp=1e12; I0=1e-8; sw=1e-3;
%Plotwerte deklarieren:
Nmax=floor(tmax/dt);
tp=zeros(1,Nmax); u0p=tp; iDpp=tp; iDnp=tp; uCp=tp;
% Startwerte:
uC=0;
t=0; k=0;
while t < tmax;
u0=a0*sin(2*pi*f*t);
%[iDp]=diode1(u0-uC,R0,Rp,I0,sw); % Diode gepolt in positiver Richtung
[iDp]=diode1(abs(u0)-uC,R0,Rp,I0,sw); % Diode gepolt in positiver Richtung
% Hinweis: Hier fehlt noch doppelter Spannungsabfall an den Dioden
uC=uC+(iDp -uC/RL)*dt/C;
% Ploterte speichern:
k=k+1; tp(k)=t; u0p(k)=u0; uCp(k)=uC; iDpp(k)=iDp;
t=t+dt;
end;
figure(bild); clf reset;
plot(tp,u0p, tp,uCp, tp,iDpp,'k' ); grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',f=',num2str(f)];S3=[',a0=',num2str(a0)];
S4=[',dt=',num2str(dt)];
S5=[',C=',num2str(C)];
S6=[',RL=',num2str(RL)];
S7=[',R0=',num2str(R0)];
Tit=[S1,S2,S3,S4,S5,S6,S7]; title(Tit);
R. Kessler,C:\ro\Si05\AJ\matlab53\PasGleichriMatlab1.doc, S. 5,5
bild=5,f=50,a0=10,dt=0.0002,C=0.01,RL=4
10
5
0
-5
-10
-15
-20
-25
0
0.01
0.02
0.03
0.04
0.05
0.06
sec
0.07
0.08
0.09
0.1
clear;f=50;a0=10;RL=4;dt=2e-4;C=0.01;L=0.05;R0=0.1; tmax=0.1; bild=5;GleichCL2;
R0
u0
i
iD
uD C
L
uC RL
uRL
%Datei GleichCL2.m R. Kessler Heft R71, S. 166, 21.7.2007
% Mit L zum zusätzlichen Glätten
% negative Diodenpolung, liefert negative Spannung: OK
% clear;f=50;a0=10;RL=4;dt=2e-4;C=0.01;L=0.05;R0=0.1; tmax=0.1; bild=5;GleichCL2;
%
% Passive GLeichrichter-Schaltungen, vgl. Tephys (homepage)
% http://www.home.hs-karlsruhe.de/~kero0001/gleichri/Gleichrichterschaltungen_3.pdf
format compact;
Rp=1e12; I0=1e-8; sw=1e-3;
%Plotwerte deklarieren:
Nmax=floor(tmax/dt);
tp=zeros(1,Nmax); u0p=tp; iDpp=tp; iDnp=tp; uCp=tp;uRLp=tp;
% Startwerte:
uC=0; iL=0;
t=0; k=0;
while t < tmax;
u0=a0*sin(2*pi*f*t);
[iDn]=diode1n(u0-uC,R0,Rp,I0,sw); % Diode gepoltt in negativer Richtung
uC = uC+(iDn-iL)*dt/C; % iL= Spulenstrom statt i, sonst ev komplex!!
iL = iL+(uC-RL*iL)*dt/L;
uRL = RL*iL;
% Plotwerte speichern:
k=k+1; tp(k)=t; u0p(k)=u0; uCp(k)=uC; iDnp(k)=iDn; uRLp(k)=uRL;
t=t+dt;
end;
figure(bild); clf reset;
plot(tp,u0p, tp,uCp,tp,uRLp, tp,iDnp,'k' ); grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',f=',num2str(f)];S3=[',a0=',num2str(a0)];
S4=[',dt=',num2str(dt)];
S5=[',C=',num2str(C)];
S6=[',RL=',num2str(RL)];
Tit=[S1,S2,S3,S4,S5,S6]; title(Tit);
Herunterladen