PROVA C
LISTATO
DEL PROGRAMMA :
provac.m %
LABORATORIO DI MISURE ELETTRICHE
%
esercitazione C %
%
%
caricamento dei dati su file : %
clear
all %
whitebg load
gruppo23.prn A=gruppo23;
dimensione=size(A)
t=A(:,1);
% t = vettore dei tempi vec=A(:,2);
%
vec = vettore delle tensioni collettore
ed emettitore del BJT vr=A(:,4);
% vettore delle tensioni ai capi di R1
%
%
FASE 1 : %
%
Visualizzazione delle 2 forme d'onda %
plot(t,vr,t,vec,'k:');
grid
xlabel('tempo
[s]'); ylabel('tensione
[V]'); legend('VR','VCE',-1);
pause
%
%
FASE 2 : %
%
visualizzazione e studio preliminare della caratteristica %
R1=input('inserire
il valore di R1 in kiloohm : ') vce=-vec;
ic=vr/R1;
figure;
plot(vce,ic);
grid;
xlabel('VCE
[V]'); ylabel('IC
[mA]'); title('caratteristica
VCE-IC'); pause
%
%
Adesso distinguiamo la risposta del BJT per valori
%
crescenti da quella per valori decrescenti di VCE %
dim=size(vce);
if
vce(5)<vce(6)
decr=0; else
decr=1; end
j=0;
for
i=6:dim
if decr==0
if vce(i-1)>vce(i)
j=j+1;
iP(j)=i-1;
yP(j)=vce(i-1);
decr=1;
end
else
if vce(i-1)<vce(i)
j=j+1;
iP(j)=i-1;
yP(j)=vce(i-1);
decr=0;
end
end end
disp('i
valori degli indici del vettore VCE che individuano'); disp('i
suoi punti di massimo e di minimo sono : '); iP
disp('mentre
i corrispondenti valori di VCE sono : '); yP
figure
plot(vce,'k-'),hold
on plot(iP,yP,'ro'),hold
off title('punti
di massimo e di minimo individuati'); xlabel('vettori
di indici'); ylabel('tensione
VCE [V]'); pause
%
%
il vettore di indici in cui dVCE/dt>0 è : %
pos=[iP(1):iP(2)
iP(3):iP(4) iP(5):iP(6)]; %
%
il vettore di indici in cui dVCE/dt<0 è : %
neg=[1:iP(1)
iP(2):iP(3) iP(4):iP(5) iP(6):500]; figure;
plot(t(pos),vce(pos),'o',t(neg),vce(neg),'k*');
title('tensione
VCE:tratti crescenti e decrescenti') xlabel('tempo
[s]') ylabel('tensione
[V]') pause
figure;
plot(t(pos),ic(pos),'o',t(neg),ic(neg),'k*');
title('corrente
IC') xlabel('tempo
[s]') ylabel('corrente
[mA]') pause
figure;
plot(vce(pos),ic(pos),'r*'),
hold on plot(vce(neg),ic(neg),'k+'),
hold off legend('dVCE/dt>0','dVCE/dt<0',0)
title
('caratteristica VCE-IC') xlabel('VCE
[V]') ylabel('IC
[mA]') pause
%
%
FASE 3 : %
%
stima dei parametri del BJT - prima parte %
%
ricerca dei parametri m ed n dell'equazione: %
IC=mVCE+n
per VCE>1V %
%
scegliamo di operare sulla risposta ottenuta con dVCE/dt<0 %
vceA=vce(neg);
icA=ic(neg);
j=find(vceA>1);
% indici per cui vceA è maggiore di
1V x=vceA(j);
% x è il subvettore estratto che
contiene i soli valori di
vceA>1V y=icA(j);
% y è il subvettore estratto da ic
che contiene i soli valori di
vceA>1V figure;
%
%
zona della caratteristica su cui eseguiamo l'interpolazione lineare %
plot(vceA,icA,'k*',x,y,'o');
title('zona
della caratteristica su cui eseguiamo l''interpolazione lineare') xlabel('VCE
[V]') ylabel('IC
[mA]') pause
disp('interpolando
i dati otteniamo due parametri del modello'); %---------------------------------------------------
%
calcolo dell'interpolazione : %
[m
n]=intlin(x,y); %
%---------------------------------------------------
disp('sostituire
i dati di misura con il modello mx+n comporta :'); disp('un
errore massimo assoluto in mA pari a :'); e=max(abs(y-m*x-n))
disp('un
errore relativo percentuale di :'); er=e/max(icA)*100
icB=m*vceA+n;
figure;
plot(vceA,icA,'*',x,y,'k+',vceA,icB,'-');
title('stima
grafica ottenuta per VCE>1V')
xlabel('VCE
[V]') ylabel('IC
[mA]') pause
%
%
FASE 4 : %
%
ricerca dei parametri p e q dell'equazione : %
y'=p*e^qx' %
%
consideriamo una zona della caratteristica in cui risulti
%
nota la VBE ( ossia la zona per VCE>0.2V ) %
vce_sat=0.2;
clear
j j=find(vceA>vce_sat);
figure;
plot(vceA,icA,'k*',vceA(j),icA(j),'ko');
title('zona
della caratteristica in cui VCE>0.2V'); xlabel('VCE
[V]') ylabel('IC
[mA]') pause
vbe_sat=0.7;
xA=vbe_sat-vceA(j);
yA=-icA(j)+m*vceA(j)+n;
figure;
plot(xA,yA,'ko'),grid
title('grafico
dell''equazione y''=p*e^q^x^'''); xlabel('x''')
ylabel('y''')
pause
[xB,k]=sort(xA);
yB=yA(k);
kk=find(yB<0);
inizio=max(kk)+1;
fine=length(yB);
yC=yB(inizio:fine);
xC=xB(inizio:fine);
figure;
semilogy(xC,yC,'o'),grid
title('grafico
dell''equazione y''=p*e^q^x^'' in carta semilogaritmica'); xlabel('x''')
ylabel('y''')
pause
%
%
eliminazione automatica dei punti della caratteristica
%
al di fuori dell'andamento lineare atteso %
i=inizio;
errore=0;
while
yB(i)>yB(i+1)
i=i+1;
errore=errore+1; end
inizio=inizio+errore;
yC=yB(inizio:fine);
xC=xB(inizio:fine);
yD=log(yC);
xD=xC;
disp('gli
altri due parametri del modello sono :'); %---------------------------------------------------
%
calcolo dell'interpolazione : %
[q
logp]=intlin(xD,yD); %
%---------------------------------------------------
p=exp(logp)
q
yE=p*exp(q*xC);
figure;
semilogy(xC,yC,'k+',xC,yE,'k-'),grid
title
('tratto ripido della caratteristica a
interpolazione effettuata') xlabel('x''')
ylabel('y''')
pause
vceC=linspace(0.1,max(vce),1000);
icC=m*vceC+n+p*exp(q*(vbe_sat-vceC));
figure
plot(vceA,icA,'k+',vceC,icC,'-')
title('confronto
tra il grafico di misura e quello stimato') xlabel('VCE
[V]') ylabel('IC
[mA]') pause
%
%
FASE 5 : %
%
calcolo e impiego dei parametri del BJT %
disp('introdurre
il valore della corrente IB (in mA)'); ib=input('utilizzata
nella prova B : ') disp('in
definitiva i parametri del BJT stimati sono : '); iceo=p
beta=(n-p)/ib
va=(n-p)/m
etavt=1/q
save
gruppo23 ng=23;
IB=50e-3;
VCE=4;
bjt;
|