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

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

Use `antenna.Rectangle to c`

reate 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 )

**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);
```

**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');

**Plot radiation pattern**

Use the `pattern`

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

figure; pattern(RRmicrostrip,3.3e9);

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

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

Create the graph for measured sum radiation pattern.

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

Create the graph for measured diffrence radiation pattern.

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

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