ADATTAMENTO A SINGOLO STUB. PROGRAMMA IN MATLAB

Click to rate this post!
[Total: 2 Average: 3.5]

Algoritmo che sostituisce la carta di smith per la risoluzione dell’adattamento a singolo  stub nelle guide d’ondaAlgoritmo eseguito in MATLAB utile per il calcolo dei parametri  necessari per eseguire l’adattamento di una guida d’onda a singolo stub.

clc
 clear all
 disp('IMPEDENZA DI LINEA');
 disp(' ');
 Zc=input('Assegna il valore dell''impedenza caratteristica (in ohm): ');
 Zl=input('Assegna il valore dell''inpedenza di carico (in ohm): ');

  global Zc Zl

  Nmax=1/2;
  Nmin=0;
  zero=[];
  j=1;
  passo=(Nmax-Nmin)/10;
  for L=Nmin:passo:Nmax,
     pol2=real(ammett(L))-1;
     if L~=Nmin
       if pol2*pol1<=0
          ris=bisez2(L,L1);
          zero(j)=ris;
          j=j+1;
        end;
     end;
  pol1=pol2;
  L1=L;
  end;
  clc
  if sign(imag(ammett(zero(1))))==1
   disp('E'' possibile mettere uno stub induttivo che ha (in s):')
   ammettenza=0-i*imag(ammett(zero(1)))
   disp('che presenta una distanza dal carico (normalizzato a lamda):')
   distanza=zero(1)
   global ammettenza
   bisezstu;
   disp('premere un tasto per continuare...')
   pause
   clc
   disp('inoltre')
   disp('E'' possibile mettere uno stub capacitivo che ha (in s):')
   ammettenza=0-i*imag(ammett(zero(2)))
   disp('che presenta una distanza dal carico (normalizzato a lamda):')
   distanza=zero(2)
   global ammettenza
   bisezstu;
  else
   disp('E'' possibile mettere uno stub capacitivo che ha (in s):')
   ammettenza=0-i*imag(ammett(zero(1)))
   disp('che presenta una distanza dal carico (normalizzato a lamda):')
   distanza=zero(1)
   global ammettenza
   bisezstu;
   disp('premere un tasto per continuare...')
   pause
   clc
   disp('inoltre')
   disp('E'' possibile mettere uno stub induttivo che ha (in s):')
   ammettenza=0-i*imag(ammett(zero(2)))
   disp('che presenta una distanza dal carico (normalizzato a lamda):')
   distanza=zero(2) 
   global ammettenza
   bisezstu;
  end
function  c=bisez2(bk,ak);

 global Zc Zl 
             e=1e-8;
             c=ak;
             i=1;
             q=real(ammett(c))-1;  
             while abs(bk-ak)>e
                c=(ak+bk)/2;
                q=real(ammett(c))-1;
                if q~=0
                  w=real(ammett(ak))-1;
                  if q*w>0
                       ak=c;
                  else bk=c;
                  end;
                end
                i=i+1;
                if i==200
                      bk=ak;
                end;
               end;    
             end;
function gf=ammett(L);

 global Zc Zl

 z=Zl/Zc;
 roz=(z-1)/(z+1);
 A=angle(roz);
 B=abs(roz);
 ROZ=B*exp(-4*i*pi*L);
 C=angle(ROZ);
 D=abs(ROZ);
 Q=A+C;
 x=D.*cos(Q);
 y=D.*sin(Q);
 rozNUOVO=x+i*y;
 zf=((1+rozNUOVO)./(1-rozNUOVO));
 gf=1/zf;
disp('INDICARE ADESSO IL TIPO DI STUB')
disp(' ')
disp('1: lo stub è in corto-circuito')
disp('2 (o altro): lo stub è in circuito aperto')
valore=input('');
if valore==1 
     disp('l''ammettenza iniziale dello stub è infinita')
else    
     disp('l''ammettenza iniziale dello stub è nulla')
end

global valore ammettenza;

             bk=0.5;
             ak=0;
             e=1e-8;
             c=ak;
             j=1;
             q=imag(stub1(c))-imag(ammettenza);  
             while abs(bk-ak)>e
                c=(ak+bk)/2;
                q=imag(stub1(c))-imag(ammettenza);
                if q~=0
                  w=imag(stub1(ak))-imag(ammettenza);
                  if q*w>0
                       ak=c;
                  else bk=c;
                  end;
                end
                j=j+1;
                if j==200
                      bk=ak;
                end;
               end;    
             end;
 disp(' ')
 disp('La lunghezza dello stub (normalizzata a lamda) è:')
 if valore==1 
    lunghezza=c
 else
   if c>0.25
    lunghezza=c-0.25
   else
    lunghezza=c+0.25
   end
 end
function gf=stub1(L);

 ROZ=exp(-4*i*pi*L);
 C=angle(ROZ);
 Q=pi+C;
 x=cos(Q);
 y=sin(Q);
 rozNUOVO=x+i*y;
   if rozNUOVO~=1
      zf=((1+rozNUOVO)./(1-rozNUOVO));
   else
      zf=10000;
   end  
  gf=1/zf;

Esecuzione del programma

» princ

IMPEDENZA DI LINEA

Assegna il valore dell’impedenza caratteristica (in ohm): 50

Assegna il valore dell’inpedenza di carico (in ohm): 60+25i

E’ possibile mettere uno stub induttivo che ha (in s):

ammettenza =

        0 – 0.4916i

 che presenta una distanza dal carico (normalizzato a lamda):

distanza =

  0.2211

INDICARE ADESSO IL TIPO DI STUB

1: lo stub è in corto-circuito

2 (o altro): lo stub è in circuito aperto

                 1

l’ammettenza iniziale dello stub è infinita

 La lunghezza dello stub (normalizzata a lamda) e:

lunghezza =

   0.1773

 premere un tasto per continuare…

 inoltre

E’ possibile mettere uno stub capacitivo che ha (in s):

ammettenza =

        0 + 0.4916i

che presenta una distanza dal carico (normalizzato a lamda):

distanza =

    0.4328

 INDICARE ADESSO IL TIPO DI STUB

1: lo stub è in corto-circuito

2 (o altro): lo stub è in circuito aperto

                  2

l’ammettenza iniziale dello stub è nulla

La lunghezza dello stub (normalizzata a lamda) è:

lunghezza =

    0.0727

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x