Main Content

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 15.3 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 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 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 (Antenna Toolbox) object and Boolean addition and subtraction operations. Visualize the structure using the show (Antenna Toolbox) 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")

Figure Rat-race Coupler contains an axes object. The axes object with xlabel x (mm), ylabel y (mm) contains 2 objects of type patch. These objects represent PEC, mypolygon.

Create patch antenna

Create the patch antenna array using the patchMicrostripInsetfed (Antenna Toolbox) object. Assign property values such that the antenna resonates at 3 GHz.

ant = patchMicrostripInsetfed;
ant.Length = 33.6309e-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 (Antenna Toolbox) 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 (Antenna Toolbox) 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 69e-3,0]);
ant2 = translate(a2,[-125.5202e-3 -0.008650,0]);
ant3 = translate(a3,[-44.3591e-3 69e-3,0]);
ant4 = translate(a4,[-44.3591e-3 -0.008650,0]);
antArrayleft = ant1 + ant3 + ant2 + ant4;
antArrayright = copy(antArrayleft);
antArrayright = mirrorY(antArrayright);
antArray = antArrayleft + antArrayright;
figure(Name="Microstrip Patch Array")

Figure Microstrip Patch Array contains an axes object. The axes object with xlabel x (mm), ylabel y (mm) contains 2 objects of type patch. These objects represent PEC, mypolygon.

Create a part of the power divider network using the antenna.Rectangle (Antenna Toolbox) object. Create the power divider using the traceTee object. Create four power dividers with the same dimensions using the copy and mirrorX (Antenna Toolbox) functions.

inline1 = antenna.Rectangle(Center=[-54.29e-3 0.0405],Length=15e-3,Width=2.9e-3);
inline2= antenna.Rectangle(Center=[-115.6e-3 0.0405],Length=15e-3,Width=2.9e-3);
inline3 = antenna.Rectangle(Center=[-54.29e-3 -37.1475e-3],Length=15e-3,Width=2.9e-3);
inline4 = antenna.Rectangle(Center=[-115.6e-3 -37.1475e-3],Length=15e-3,Width=2.9e-3);
tee = traceTee;
tee.Length = [46.3746e-3 18e-3];
tee.Width = [1.492e-3 5e-3];
tee1 = copy(tee);
tee2 = copy(tee);
tee3 = copy(tee);
tee.ReferencePoint = [84.92e-3 0.0405];
tee2 = mirrorX(tee2);
tee3 = mirrorX(tee3);
tee1.ReferencePoint = [-84.92e-3 0.0405];
tee2.ReferencePoint = [84.92e-3 37.1475e-3];
tee3.ReferencePoint = [-84.92e-3 37.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];
y1tee = copy(ytee);
ytee.ReferencePoint = [-1.675e-3 84.92e-3];
ytee = rotateZ(ytee,-90);
y1tee.ReferencePoint = [1.675e-3 84.92e-3];
y1tee = rotateZ(y1tee,90);
fifine = antenna.Rectangle(Center=[-73.585e-3 9.175e-3],Length=5e-3,Width=20e-3);
fifine1 = antenna.Rectangle(Center=[-52.57e-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=[-84.085e-3 -0.825e-3 0; -79.085e-3 -0.825e-3 0; ...
    -79.085e-3 4.175e-3 0]);
curve = translate(curve,[8e-3,0,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 - curve - curve1 - curve2;
feedLeft = tee1 + tee3 + inline1 + inline2 + inline3 + inline4 + y1tee + RRline;
feedRight = copy(feedLeft);
feedRight = mirrorY(feedRight);
totaltop = top + feedLeft + feedRight + antArray - sqcut - sqcut2;

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.Layers{1} = totaltop;
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;

Figure Microstrip Patch Array contains an axes object. The axes object with title pcbStack antenna element, xlabel x (mm), ylabel y (mm) contains 11 objects of type patch, surface. These objects represent PEC, feed, Teflon.

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 (Antenna Toolbox) function. For a finer mesh, set the MaxEdgeLength property to one eighth of the wavelength.

plotfrequency = 3.3*1e9;
lambda = 3e8/plotfrequency;

Figure Microstrip Patch Array contains an axes object and another object of type uicontrol. The axes object with title Metal-Dielectric, xlabel x (m), ylabel y (m) contains 4 objects of type patch, surface. These objects represent PEC, feed.

Calculate S-parameters

Calculate the memory required to solve the structure using the memoryEstimate function.

memEst = memoryEstimate(rrMicrostrip,3e9)
memEst = 
'2.8 GB'

Calculate the S-parameters using the sparameters (Antenna Toolbox) function. To save simulation time, use the results in the RRmicrostripdata MAT file. To compute the S-parameters without using the MAT file, set the plotSparameters variable to true.

frequencyRange = (2.5:0.1:3.5)*1e9;
calculateSparameters = false;
if calculateSparameters
    s = sparameters(rrMicrostrip,frequencyRange);

Load the sBandmonopulse MAT file, whch contains the simulated and measured data stored in the variables. Use S11_simulated variable to plot the S-parameters.

load sBandmonopulse.mat
hold on
hold off
xlabel("Frequency (MHz)")
ylabel("Reflection Coefficient") 

Figure S-parameters contains an axes object. The axes object with xlabel Frequency (MHz), ylabel Reflection Coefficient contains 2 objects of type line. These objects represent S11, S12.

Plot Radiation Pattern

Plot the 3-D radiation pattern at 3.3 GHz using the pattern (Antenna Toolbox) function.


Figure contains an axes object and other objects of type uicontrol. The axes object contains 11 objects of type patch, surface. This object represents Teflon.

Plot the 2-D radiation pattern at an elevation angle of 0 degrees using the pattern function.


Figure contains an object of type uicontainer.

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");  

Figure contains an axes object. The axes object with xlabel Frequency (MHz), ylabel Reflection Coefficient contains an object of type line. This object represents Measured 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)");  

Figure contains an axes object. The axes object with xlabel Theta (degree), ylabel Normalized Gain (dB) contains an object of type line. This object represents Measured Sum Radiation Pattern.

Plot the measured diffrence radiation pattern.

plot(-44:2:46,diffpattern_measured,"r",LineWidth=2,DisplayName="Measured Difference Radiation Pattern");
ylabel("Normalized Gain (dB)");

Figure contains an axes object. The axes object with xlabel Theta(degree), ylabel Normalized Gain (dB) contains an object of type line. This object represents Measured Difference Radiation Pattern.


The designed antenna has a maximum sum port gain of 15.3 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.


[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.