Simulare antenă Yagi custom

De la YO3ITI
Sari la navigare Sari la căutare

Modelarea unei antene cu dimensiuni arbitrare, pentru 145MHz. Exemplul de mai jos a fost scris după o discuție avută pe radioamator.ro cu YO4BKM.

%% programatic, o antenă Yagi cu 4 directoare și un reflector
%% cleanup
clear;                              % șterge toate variabilele
clc;                                % golește consola
close all;                          % închide toate figurile (grafice, imagini etc)

%% parametri
Fc = 145e6;                         % frecvența centrală
diametru = 14e-3;                   % dimensiune material
c = physconst('lightspeed');        % viteza luminii
lambda = c/Fc;                      % lungimea de undă
Z0 = 50;                            % impedanța (lumped)
BW = 0.015 * Fc;                    % lărgimea de bandă pentru simulări
Fmin = 120e6;                       % frecvența minimă
Fmax = 160e6;                       % frecvența maximă
Nf = 101;                           % câte puncte de simulare
freq = linspace(Fmin, Fmax, Nf);    % vectorul de distribuție (liniară) spațială

%% dipolul
dip = dipole;
dip.Length = 0.935;

% grosimea elemenților (aproximarea unui cilindru de diametru dat cu un
% stripline
dip.Width = cylinder2strip(diametru/2);

% implicit, Matlab plasează obiectul dipol aliniat cu axa 0-z
% trebuie rotit cu 90 grade, în jurul axei Y
dip.Tilt = 90;  
dip.TiltAxis = 'Y';


%% antena
ant = yagiUda('NumDirectors',4);
% distanțele dintre directori
ant.DirectorSpacing = [0.598 1.438-0.598 2.106-1.438 2.979-2.106];
% lungimea directorilor
ant.DirectorLength = [0.902 0.890 0.898 0.890];
% poziția reflectorului
ant.ReflectorSpacing = 0.517;
% lungimea reflectorului
ant.ReflectorLength = 0.985;

% elementul de excitație este dipolul configurat anterior
ant.Exciter = dip;

% afișarea antenei
figure('NumberTitle','off','Name','Yagi - 6 elemente');
show(ant);

%% simulări
figure('NumberTitle','off','Name','Radiația antenei');
pattern(ant,Fc);

% valoarea impedanței la 145MHz
z = impedance(ant, Fc);

% raport față-spate
D_max = pattern(ant, Fc, 0, 90);
D_back = pattern(ant, Fc, 0, -90);
F_B = D_max - D_back;

%% grafice
% azimut
figure('NumberTitle','off','Name','Radiația antenei - azimut');
pattern(ant, Fc, 0:1:360, 0);

% elevație
figure('NumberTitle','off','Name','Radiația antenei - elevație');
pattern(ant, Fc, 0, 0:1:360);

% graficul impedanței
figure('NumberTitle','off','Name','Impedanța');
impedance(ant, freq);

figure('NumberTitle','off','Name','S11');
returnLoss(ant,freq,Z0);

% graficul directivității la frecvențe multiple
figure('NumberTitle','off','Name','Waterfall directivitate'); 
pattern(ant, [144e6 145e6 160e6], 0, 1:1:360, ...
   'PlotStyle', 'waterfall', ...
   'CoordinateSystem', 'rectangular');