Document

Werbung
Prof. Dr. R. Kessler, C:\ro\Si05\didaktik\Kapazitätsmessung.doc,
S. 1/1
Eine bewährte Methode, Kapazitäten zu messen,
simuliert mit Tephys, mit Matlab, mit Simulink
Homepage: http://www.home.hs-karlsruhe.de/~kero0001/
Funktions-Prinzip der Schaltung: Sie ist die bekannte Oszillator-Schaltung mit dem
Timer 555. Hier eine Fundstelle nach Google-Suche:
http://www.elektronik-kompendium.de/sites/slt/0310131.htm
Funktionsprinzip: Über die Widerstände R1 und R2 wird der Kondensator C aufgeladen. Erreicht die
Kondensatorspannung uC den Wert Ub*2/3 (Ub =Betriebsspannung), dann wird ein (innerer) Schalter S
geschlossen. Der Schalter liegt zwischen Pin 7 und Erde. Solange S geschlossen ist, entlädt sich C über den
unteren Widerstand R1. Erreicht die Kondensatorspannung uC den Wert Ub/3, dann wird der Schalter S wieder
geöffnet und der Kondensator wird wieder aufgeladen. Offensichtlich ist die Periodendauer nicht von der
Betriebspannung Ub abhängig . Die Periodendauer T ist proportional dem Kapazitätswert C. T mit einem
Digitalzähler gemessen, ergibt ein sehr präzises Messgerät. Die von mir aufgebaute Ausführung hat sich seit
ca 20 Jahren bewährt. Die Auflösung geht bis herab zu femptoFarad (1E-15 Farad)
Das nachfolgende Tephys-Modell kann diesen Vorgang mit 3 Zeilen simulieren. Matlab und Simulink
benötigen deutlich mehr Aufwand.
C:\RO\SI05\DIDAKTIK\CMESS1.TXT
1: S = ja(uC-Ub*2/3)+S*ja(uC-Ub/3)*ja(Ub*2/3-uC) { S = Schalterzustand: Wenn uC größer Ub*2/3
wird, wird S=1 gesetzt und bleibt solange =1 bis uC den Wert Ub/3 unterschreitet. Das ist also mal wieder
ein Flip-Flop}
2: uC = uC+(ja(S)*(0-uC)/1+nein(S)*((Ub-uC)/2))*dt/(R*C) { Gemäß der Beschreibung der Schaltung ist
der Kondensatorstrom –uC/R, falls S =1 ist und ist /Zb-uC)/R, wenn S = 0 ist }
3: t = t+dt
Prof. Dr. R. Kessler, C:\ro\Si05\didaktik\Kapazitätsmessung.doc,
S. 2/2
************************************************************************
% Datei MCmess1.m Simulation meiner C-Messgerätes
% clear; dt=0.01; tmax=5; Ub=10;R=1;C=1; bild=2; MCmess1;
% Diese Matlab-Datei ist der obigen Tphys-Datei nachgedichtet
format compact;
Nmax=floor(tmax/dt);
% Deklarieren Plotwerte:
tp=zeros(1,Nmax); Sp=tp; uCp=tp;
%Startwerte:
uC=0; S=0;
k=0; t=0;
while t < tmax
%S = ja(uC-Ub*2/3)+S*ja(uC-Ub/3)*ja(Ub*2/3-uC) (Tephys)
S = (uC>Ub*2/3)+S*(uC >Ub/3)*(Ub*2/3 >uC);
%uC = uC+(ja(S)*(0-uC)/1+nein(S)*((Ub-uC)/1))*dt/(R*C) (Tephys)
uC = uC+((S>0)*(0-uC)/1+(S<=0)*((Ub-uC)/2))*dt/(R*C);
% Plotwerte speichern;
k=k+1; tp(k)=t; uCp(k)=uC; Sp(k)= S;
t=t+dt;
end;
figure(bild); clf reset;
plot(tp,Sp, tp,uCp); grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',Ub=',num2str(Ub)];
S3=[',C=',num2str(C)];
S4=[',R=',num2str(R)];
Tit=[S1,S2,S3,S4];
title(Tit);
bild=3,Ub=10,C=1,R=1
7
6
5
4
3
2
1
0
0
1
2
3
4
5
sec
6
7
8
9
10
Prof. Dr. R. Kessler, C:\ro\Si05\didaktik\Kapazitätsmessung.doc,
S. 3/3
Die nachfolgende Simulink-Schaltung ist ebenfalls der Tephys-Datei nachgedichtet. Aber es
wurde der eingebaute Block relay benutzt, denn vermutlich macht Simulink Probleme, wenn
man das Flip-Flop so wie in Tephys oder Matlab modelliert.
Datei Cmess1.MDL
Aufruf mit Matlab-Datei RCmes1.m
t
1/(R*C)
1/s
uC
(u(2) >0)* (-u(1) ) + (u(2) <=0) * (Ub-u(1) )/2
S
Ub*2/3,Ub/3
clear; R=1;C=1;dt=0.01;tmax=10; Ub=10;bild=1;sim('Cmess1'); figure(bild); clf; plot(t,S,t,uC);grid on;
bild=3,Ub=10,C=1,R=1
7
6
5
4
3
clear; R=1;C=1;dt=0.01;tmax=10; Ub=10;bild=3; RCmes1
2
1
0
0
1
2
3
4
5 sec 6
% RCmes1.m % RunDatei für Simulink-Modell Cmas1.MDL
%
%clear; R=1;C=1;dt=0.01;tmax=10; Ub=10;bild=1; RCmes1;
if bild==1 Cmess1; end; %Simulink-Schaltung auf Bildschirm
sim('Cmess1');
figure(bild); clf; plot(t,S,t,uC);grid on; xlabel('sec');
S1=['bild=',num2str(bild)]; S2=[',Ub=',num2str(Ub)];
S3=[',C=',num2str(C)];
S4=[',R=',num2str(R)];
Tit=[S1,S2,S3,S4];
title(Tit);
7
8
9
10
Herunterladen