Design S-Band Monopulse Tracking Radar Antenna
This example shows how to implement a monopulse operation by integrating a 2-by-4 microstrip patch array and a rat-race coupler.
You design the system for an operating frequency of 3 GHz and compare the simulated and measured results. The antenna attains a maximum gain of 16.5 dB at the sum port.
This diagram shows the top view of the antenna.
Create Antenna Array Geometry
Create a rat-race coupler that resonates at 3 GHz using the couplerRatrace
(RF PCB Toolbox) object.
cup = couplerRatrace; d = cup.Substrate; cup.PortLineLength = 18.6e-3; cup.PortLineWidth = 0.0050; cup.CouplerLineWidth = 0.0030; cup.Circumference = 0.111;
Use the pcbComponent
(RF PCB Toolbox) object to form a PCB stack of the rat-race couplers such that the ground plane can be extended to accommodate the patch antenna array.
RR = pcbComponent(cup); RR.BoardShape = antenna.Rectangle(Center=[0 0.02],Length=0.4,Width=0.22); RR.Layers{3} = RR.BoardShape; ground = RR.BoardShape;
Arrange the rat-race coupler at the center of the patch antennas such that the distances between the patch antennas on both sides are the same. To modify the rat-race coupler for this design, use the antenna.Rectangle
object and Boolean addition and subtraction operations. Visualize the structure using the show
function.
top = RR.Layers{1};
cut1 = antenna.Rectangle(Center=[34.4e-3 0e-3],Length=3e-3,Width=5e-3);
cut2 = antenna.Rectangle(Center=[-34.4e-3 0e-3],Length=3e-3,Width=5e-3);
top = top - cut1 - cut2;
top = rotateZ(top,-30);
cutfifine1 = antenna.Rectangle(Center=[0 35.9e-3],Length=7e-3,Width=6e-3);
top = top - cutfifine1;
top = rotateZ(top,-30);
cutfifine2 = antenna.Rectangle(Center=[35.9e-3 0],Length=6e-3,Width=7e-3);
top = top - cutfifine2;
top = rotateZ(top,30);
top = translate(top,[0,28e-3,0]);
figure(Name="Rat-race Coupler")
show(top)
Create patch antenna
Create the patch antenna array using the patchMicrostripInsetfed
object. Assign property values such that the antenna resonates at 3 GHz.
ant = patchMicrostripInsetfed; ant.Length = 36e-3; ant.Width = 40.1597e-3; ant.Height = 1.6e-3; ant.Substrate = d; ant.NotchLength = 7e-3; ant.GroundPlaneLength = 0.0600; ant.StripLineWidth = 5e-3; ant.NotchWidth = 5.577e-3;
Create antenna array
Convert the antenna to a PCB stack using the pcbStack
object and copy the designed antenna element to create eight identical elements. Position the patch antennas on both the sides of the rat-race coupler to create a 2-by-4 array using the translate
function. Visualize the antennas using the show
function.
array = pcbStack(ant);
a1 = array.Layers{1};
a1 = rotateZ(a1,90);
a2 = copy(a1);
a3 = copy(a1);
a4 = copy(a1);
ant1 = translate(a1,[-125.5202e-3 73*1e-3,0]);
ant2 = translate(a2,[-125.5202e-3 -12.65*1e-3,0]);
ant3 = translate(a3,[-44.3591e-3 73*1e-3,0]);
ant4 = translate(a4,[-44.3591e-3 -12.65*1e-3,0]);
antArrayleft = ant1 + ant3 + ant2 + ant4;
antArrayright = copy(antArrayleft);
antArrayright = mirrorY(antArrayright);
antArray = antArrayleft + antArrayright;
figure(Name="Microstrip Patch Array")
show(antArray)
Create a part of the power divider network using the antenna.Rectangle
object. Create the power divider using the traceTee
(RF PCB Toolbox) object. Create four power dividers with the same dimensions using the copy
and mirrorX
functions.
inline1 = antenna.Rectangle(Center=[-54.29e-3 44.45e-3],Length=15e-3,Width=2.9e-3); inline2= antenna.Rectangle(Center=[-115.6e-3 44.45e-3],Length=15e-3,Width=2.9e-3); inline3 = antenna.Rectangle(Center=[-54.29e-3 -41.2e-3],Length=15e-3,Width=2.9e-3); inline4 = antenna.Rectangle(Center=[-115.6e-3 -41.2e-3],Length=15e-3,Width=2.9e-3); tee = traceTee; tee.Length = [46.3746e-3 22e-3]; tee.Width = [1.492e-3 5e-3]; tee.ReferencePoint = [-84.92e-3 44.45e-3]; tee1 = copy(tee); tee1 = mirrorX(tee1); tee1.ReferencePoint = [-84.92e-3 41.1475e-3]; teecut = antenna.Circle(Center=[12e-3 12e-3],Radius=3e-3,NumPoints=3); ytee = traceTee; ytee.Length = [45.3746e-3 9.12456e-3]; ytee.Width = [1.492e-3 5e-3]; ytee.ReferencePoint = [1.675e-3 84.92e-3]; ytee = rotateZ(ytee,90); fifine = antenna.Rectangle(Center=[-73.585e-3 9.175e-3],Length=5e-3,Width=20e-3); fifine1 = antenna.Rectangle(Center=[-52.58e-3 20.105e-3],Length=47e-3,Width=5e-3); fifine2 = antenna.Rectangle(Center=[-27.7e-3 32.6e-3],Length=5e-3,Width=30e-3); curve = antenna.Polygon(Vertices=[-75.050e-3 -0.825e-3 0; -71.080e-3 -0.825e-3 0; ... -71.09e-3 4.175e-3 0]); curve1 = antenna.Polygon(Vertices=[-84.085e-3 22.705e-3 0; -84.085e-3 17.605e-3 0; ... -79.085e-3 22.705e-3 0]); curve1 = translate(curve1,[8e-3 0 0]); curve2 = antenna.Polygon(Vertices=[-33.2e-3 17.6e-3 0; -33.2e-3 22.605e-3 0; ... -38.4e-3 17.6e-3 0]); curve2=translate(curve2,[8e-3 0 0]); sqcut = antenna.Rectangle(Center=[-26.7e-3 47.518e-3],Length=7e-3,Width=2.1640e-3); sqcut2 = copy(sqcut); sqcut2 = mirrorY(sqcut2); RRline = fifine + fifine1 + fifine2-curve1-curve-curve2; feedLeft = tee1+tee + inline3 + inline4+inline2+inline1 + ytee + RRline; feedRight = copy(feedLeft); feedRight = mirrorY(feedRight); totaltop = top + feedRight - sqcut - sqcut2+antArray + feedLeft; totaltop=removeSlivers(totaltop,1e-5); show(totaltop);
Create PCB antenna from geometry
Create a stack of antenna layers using the pcbStack
object and assign the shape created in the previous section to the top layer of the stack. This step completes the patch antenna design.
rrMicrostrip = pcbStack;
rrMicrostrip.BoardThickness = 0.0016;
rrMicrostrip.BoardShape = antenna.Rectangle(Center=[0 0.02],Length=0.4,Width=0.22);
rrMicrostrip.Layers = {totaltop d ground};
feedloc = [[0 58e-3 3 1]; [26e-3 13e-3 3 1]];
rrMicrostrip.FeedLocations = feedloc;
rrMicrostrip.FeedDiameter = 0.005/8;
rrMicrostrip.FeedViaModel = "strip";
rrMicrostrip.FeedPhase = 0;
show(rrMicrostrip)
Analyze the Antenna
Set the FeedVoltage
property of the pcbStack
object to [1 0]
to feed a single port amongst two. Use this value to get the sum port characteristics. To get the difference port characteristics, set the FeedVoltage
property to [0 1]
.
rrMicrostrip.FeedVoltage = [1 0];
Manually mesh the array using the mesh
function. For a finer mesh, set the MaxEdgeLength
property to one eighth of the wavelength.
plotfrequency = 3*1e9; lambda = 3e8/plotfrequency; mesh(rrMicrostrip,MaxEdgeLength=0.011364);
Calculate S-
parameters
Calculate the memory required to solve the structure using the memoryEstimate
function.
memEst = memoryEstimate(rrMicrostrip,3e9)
memEst = '2.7 GB'
Calculate the S-parameters using the sparameters
function. To save simulation time, use the results in the sBandmonopulse
MAT file. To compute the S-parameters without using the MAT file, set the calculateSparameters
variable to true.
frequencyRange = (2.9:0.01:3.3)*1e9; calculateSparameters = false; if calculateSparameters s = sparameters(rrMicrostrip,frequencyRange); rfplot(s) end
Load the sBandmonopulse
MAT file, which contains the simulated and measured data stored in the variables. Use S11_simulated
variable to plot the S-parameters.
load sBandmonopulse.mat figure(Name="S-parameters") plot(simufreq,S11_simulated,"r",LineWidth=2) hold on plot(simufreq,S12_simulated,"b",LineWidth=2) hold off legend("S11","S12") xlabel("Frequency (MHz)") ylabel("Reflection Coefficient")
Plot Radiation Pattern
Plot the 3-D radiation pattern at 3 GHz using the pattern
function.
figure pattern(rrMicrostrip,plotfrequency)
Plot the 2-D radiation pattern at an elevation angle of 0 degrees using the pattern
function.
figure pattern(rrMicrostrip,plotfrequency,0,0:1:360)
Plot the slice of radiation pattern at an elevation angle of 0 to 10 degrees using the pattern
function.
figure pattern(rrMicrostrip,3e9,0:1:10,0:1:360);
The designed array antenna is fabricated as shown below and it is tested for the reflection coefficient and the radiation pattern at the sum and difference ports. Reflection coefficient of fabricated antenna array is measured using a Network Analyzer. Radiation pattern measurements are performed in an anechoic chamber.
This figure shows the top view of the fabricated antenna.
Compare Simulation Results with Measured Results
Plot the measured reflection coefficient.
plot(measfreq,S11_measured',"b",LineWidth=2,DisplayName="Measured Reflection Coefficient"); xlabel("Frequency (MHz)"); ylabel("Reflection Coefficient");
Plot the measured sum radiation pattern.
plot(-180:10:180,sumpattern_measured',"b",LineWidth=2,DisplayName="Measured Sum Radiation Pattern"); xlabel("Theta (degree)"); ylabel("Normalized Gain (dB)");
Plot the measured difference radiation pattern.
plot(-44:2:46,diffpattern_measured,"r",LineWidth=2,DisplayName="Measured Difference Radiation Pattern"); xlabel("Theta(degree)"); ylabel("Normalized Gain (dB)");
Conclusion
The designed antenna has a maximum sum port gain of 16.5 dB and null depth of 20 dB at the difference port. You confirm the efficiency of the antenna array by plotting the measured and simulated characteristics. The measured and simulated results agree well. The designed array antenna is a promising candidate for monopulse tracking radar in the S-band.
Reference
[1] Kumar, Hemant, and Girish Kumar. “Microstrip Antenna Array with Ratrace Comparator at X-Band for Monopulse Tracking Radar.” In 2016 IEEE International Symposium on Antennas and Propagation (APSURSI), 513–14. Fajardo, PR, USA: IEEE, 2016. https://doi.org/10.1109/APS.2016.7695965