# 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` (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 = 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` 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 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") 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 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; 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.3*1e9; lambda = 3e8/plotfrequency; mesh(rrMicrostrip,MaxEdgeLength=lambda/8);```

### 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` 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); 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 the 3-D radiation pattern at 3.3 GHz using the `pattern` function.

```figure pattern(rrMicrostrip,3.3e9)```

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

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

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