Vai al contenuto
ELECTRONICS ENGINEERINGelectronics-engineering.com
Campi Elettromagnetici MATLAB

Adattamento a Singolo Stub. Programma in MATLAB

https://www.electronics-engineering.com/articolo_50-adattamento_a_singolo_stub.htm

Ti è stata utile questa pagina? Votala:
media 3,5 su 2 voti
Adattamento a Singolo Stub. Programma in MATLAB

This article is available in Italian only for now. An English version is on the way.

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

È 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

È 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

Iscriviti
Notificami
guest
1 commento
Vecchi
Più recenti Le più votate
1
0
Esprimete la vostra opinione commentando.x