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