Antenna radiation patterns (Part 1)
The example describes the assignment and construction of directional patterns (DN) of various antenna elements using the system objects (CO) of the EngeePhased library.
Auxiliary functions
function setting_plot(fig;title::String="",colorbar_title::String = "")
PlotlyJS.relayout!(fig,title=title)
fig.plot.data[1][:colorbar][:title] = colorbar_title
fig.plot.data[1][:colorbar][:titleside] = "right"
return fig
end
Initial parameters of the antenna element
Let's set the basic parameters of the antenna elements:
fc = 500e6 # antenna radiation frequency
freq_rng = [50e6 1000e6] # antenna frequency range
azim_ang = reshape(Vector(-180:180),1,:) # azimuth angle range
elev_ang = reshape(Vector(-90:90),1,:); # the range of the seat angle
1. Isotropic radiator
All antenna elements are located in the built-in library "EngeePhased". To set the system object of the isotropic antenna element, you must call the function EngeePhased.IsotropicAntennaElement, inside which to define the necessary element parameters:
# Heating of the antenna element
iso_element = EngeePhased.IsotropicAntennaElement(
FrequencyRange=freq_rng, # frequency range
BackBaffled=false # reverse reflection
)
To build a date, you need to call the function pattern with the input arguments in the following order:
fig1 = pattern(
iso_element, # Antenna element
fc, # antenna radiation frequency
azim_ang, # azimuth angle range
elev_ang # the range of the seat angle
);
setting_plot(fig1;title="The name of the isotropic element",colorbar_title = "CND (dBi)")
2 Cosine emitter
Analytically, the expression for the DN of a given antenna has the form:
where DN function; - azimuth angle; - seat angle; - exponents of the cosine degree (real numbers greater than and equal to zero)
Programmatically, the cosine element is set using the function CosineAntennaElement:
cos_element = EngeePhased.CosineAntennaElement(
FrequencyRange=[50e6 1000e6], # frequency range
CosinePower=[1.5 1.5] # exponents of the degree of the cosine function
)
Let's build the base for the new antenna element
fig2 = pattern(cos_element,fc,azim_ang,elev_ang)
setting_plot(fig2;title="The name of the cosine antenna",colorbar_title = "CND (dBi)")
3 Cardioid antenna element
The antenna element is formed using the function CardioidAntennaElement To set the minimum direction of the antenna element, it is necessary to set the axis and its direction using the parameter NullAxisDirection:
cardiod_element = EngeePhased.CardioidAntennaElement(
FrequencyRange=freq_rng, # frequency range
NullAxisDirection="-x" # antenna minimum direction
)
Depending on the parameter NullAxisDirection the characteristic of the bottom of the antenna element will be the expression:
|
"-x" |
"-y" |
"-z" |
|
"+x" |
"+y" |
"+z" |
Let's build an antenna element
fig3 = pattern(cardiod_element,fc)
setting_plot(fig3;title="DN of the cardioid antenna element",colorbar_title = "CND (dBi)")
4. Custom antenna element
In addition to the known antenna elements, it is possible to form your own antenna element with a custom directional pattern.
Let's assume that an antenna element with a DN specified by the Gaussian function is required. Let's define the surface using the function gauss:
gauss(x,y) = exp.(-(x.^2 .+ y.^2))
x_grid = LinRange(-4,4,361) # x-axis grid
y_grid = LinRange(-2,2,181) # y-axis grid
custom_pattern = gauss(x_grid',y_grid);
Visualize the surface in Cartesian coordinates:
surface(
x_grid,y_grid,custom_pattern,
title="The complexity of the Gauss function",
xlabel="x",ylabel="y",
zlabel="z",xlims=(-2,2)
)
Now, using the system object EngeePhased.CustomAntennaElement let's form a custom antenna element:
custom_element = EngeePhased.CustomAntennaElement(
MagnitudePattern = custom_pattern
);
fig4 = pattern(custom_element,fc)
setting_plot(fig4;
title="DN of the cardioid custom antenna element",
colorbar_title = "CND (dBi)"
)
As a result of using a custom antenna element, it was possible to achieve a more directional bottom.
Conclusion
The example demonstrates the construction and analysis of antenna element characteristics using the built-in library. EngeePhased. Using this library, it is possible to build ready-made elements or set your own antenna element with an arbitrary directional pattern.