Main Content

Design S-Band Monopulse Tracking RADAR Antenna

This example shows the integration of a 2-by-4 Microstrip patch array and a Rat-race coupler to implement a monopulse operation.

The system is designed for an operating frequency of 3 GHz and the simulated and measured results are compared in this example. The maximum gain of 15.3 dB is achieved at the sum port.

Below diagram shows the top view of the antenna.

Create Antenna Array Geometry

Use couplerRatrace object and assign appropriate values to the properties such that it resonates at 3 GHz.

%create RatRace by assiging the values to couplerRatrace component
%create RatRace
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 coupler 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;

Re-alignment of the ports of the Rat-race coupler is required to arrange the ratrace coupler at the center of the patch antennas such that the distance betwen the patch antennas on both sides is same. Use antenna.Rectangle to create the the rectangle shapes and use Boolean add and subtract operations to modify the Rat-race coupler as required in this design. Use show method to visualize the structure.

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", [0e-3,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
show(top);

Figure 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

Use patchMicrostripInsetfed object to create the patch antenna array. Assign the values for the properties of the antenna such that it 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 = 
  patchMicrostripInsetfed with properties:

               Length: 0.0336
                Width: 0.0402
               Height: 0.0016
            Substrate: [1x1 dielectric]
    PatchCenterOffset: [0 0]
           FeedOffset: [-0.0300 0]
       StripLineWidth: 1.0000e-03
          NotchLength: 0.0070
           NotchWidth: 0.0030
    GroundPlaneLength: 0.0600
     GroundPlaneWidth: 0.0600
            Conductor: [1x1 metal]
                 Tilt: 0
             TiltAxis: [1 0 0]
                 Load: [1x1 lumpedElement]

ant.StripLineWidth = 5e-3;
ant.NotchWidth = 5.577e-3;

Create antenna array

Use pcbStack to convert the antenna into a PCB stack and copy the designed antenna element to create 8 similar elements. Use translate function to position the patch antennas on both the sides of the Rat-race coupler to create the a 2-by-4 array antenna elements and visualize it 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 = 
  Polygon with properties:

        Name: 'mypolygon'
    Vertices: [331x3 double]

antArrayright = mirrorY(antArrayright);
antArray = antArrayleft+antArrayright;
show(antArray);

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

Use antenna.Rectangle to create a part of the power divider network. Create the power divider using traceTee shape . Use copy and mirrorX operation to create 4 power dividers with same dimensions.

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

Use the pcbStack object to create a stack of the layers of the antenna and assign the shape created in the previous section to the top layer of the pcbStack. Thus the design of the patch antenna is complete.

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;
show(RRmicrostrip )

Figure 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 pcbStack to [1 0] to feed a single port amongst two.

%To get the sum port characteristics
RRmicrostrip.FeedVoltage = [1 0];
%To get the Difference port characteristics
%RRmicrostrip.FeedVoltage = [0 1];

Use mesh function to manually mesh the array antenna. Use MaxEdgeLength equal to lambda/8 times the center frequency to get a finer mesh where lambda represents the wavelength.

plotfrequency = 3.3*1e9;
lambda = 3e8/plotfrequency;
mesh(RRmicrostrip,'MaxEdgeLength',lambda/8);

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

Estimate memory requirement

Use the memoryEstimate function to calculate the memory required to solve the structure.

memEst = memoryEstimate(RRmicrostrip,3e9);

Calculate S-parameters

Use the sparameters function to calculate the S-parameters.

frequencyRange = (2.5:0.1:3.5)*1e9;
%s = sparameters(RRmicrostrip,frequencyRange);
%rfplot(s)

To save simulation time, the code for calculating and plotting the s-parameters is commented out and a pre-computed result is provided in the RRmicrostripdata.mat file. You can uncomment the code and use the freshly computed results instead of the MAT-file for the analysis.

Load the RRmicrostripdata.mat file. It contains the simulated and measured data stored in four variables namely S11_simulated, S11_measured, patternsum_simulated, patternsum_measured, patterndiff_simulated and patterndiff_measured . Use S11_simulated to plot the s-parameters.

load sBandmonopulse.mat
figure;
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('Reflectioncoefficient'); 

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

Plot radiation pattern

Use the pattern function to plot the 3D ration Pattern at 3.3GHz.

figure;
pattern(RRmicrostrip,3.3e9);

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.

Use the Pattern function to plot the 2D radiation pattern at an elevation angle of 0 deg.

figure;
pattern(RRmicrostrip,plotfrequency,0,0:1:360);

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 both sum and difference ports. Reflection coefficient of fabricated array antenna is measured on Network Analyzer. Radiation pattern measurements are performed at an anechoic chamber.

Top view of the fabricated antenna is shown below.

Measured results

Create the comparison graph for measured reflection coefficient.

  plot(measfreq,S11_measured','b',LineWidth=2);
  xlabel('Frequency (MHz)');
  ylabel('Reflectioncoefficient');  

Figure contains an axes object. The axes object with xlabel Frequency (MHz), ylabel Reflectioncoefficient contains an object of type line.

Create the graph for measured sum radiation pattern.

  plot(-180:10:180,sumpattern_measured','b',LineWidth=2);
  xlabel('Theta(degree)');
  ylabel('NormalizedGain');  

Figure contains an axes object. The axes object with xlabel Theta(degree), ylabel NormalizedGain contains an object of type line.

Create the graph for measured diffrence radiation pattern.

plot(-44:2:46,diffpattern_measured,'r',LineWidth=2);
xlabel('Theta(degree)');
ylabel('NormalizedGain');

Figure contains an axes object. The axes object with xlabel Theta(degree), ylabel NormalizedGain contains an object of type line.

Conclusion

The designed antenna has a maximum gain of 15.3 dB sum port gain and 20 dB null depth at difference port at 3GHz. The efficiency of the designed array antenna is confirmed by measurements. The measured and simulated results agree well. The designed array antenna is a promising candidate for monopulse tracking radar at S-band.

Reference

[1] H. Kumar and G. Kumar, "Microstrip antenna array with ratrace comparator at X-band for monopulse tracking radar," 2016 IEEE International Symposium on Antennas and Propagation (APSURSI), 2016, pp. 513-514, doi: 10.1109/APS.2016.7695965.