Model Coaxial Gap Feed for Probe-Fed Patch Antenna
This example demonstrates the difference between a standard delta-gap probe feed model and a finite-gap coaxial feed model. It reproduces the input impedance results presented in Fig. 3 of [1] using a patch antenna described in [2]. This example uses pcbComponent
and pcbStack
objects to create the patch antenna.
Usually, feeds on the pcbComponent
object are defined using its FeedLocations
property. While this workflow is fast and intuitive, it does not provide enough information to model feed structures that are more complex than basic probe feeds. Substitution of a basic probe feed model for a more complex feed may cause substantial discrepancies in the antenna characteristics (S-parameters, impedance, etc.) measured at the feed site. When a feed cannot be adequately modeled by using the FeedLocations
property format of the pcbComponent
object, switch to its FeedDefinitions
property format instead and configure an appropriate feed from the FeedDefinition
catalog. This example demonstrates that process using a case where the impedance behavior is strongly affected by the choice of feed model.
Define Dimensions
The patch antenna used in this example is a 13.5 mm-by-15 mm rectangular radiating element over a square ground plane. Fig. 2 and Sec. III of [2] provide schematics, dimensions, and material properties for the patch antenna. Define the dimensions in meters, material properties, and analysis frequency range in Hertz. Note that the value for has been changed from 14 mm to 1.4 mm because the nominal value does not make sense considering the ground plane dimensions of 20 mm-by-20 mm, as per the photograph in Fig. 7 of [2], and the mesh shown in Fig. 3 of [1]. The frequency limits are chosen to match Fig. 3 of [1].
Top plate length and width in meters:
lp = 13.5e-3; wp = 15.0e-3;
Feed strip length and width in meters:
lm = 3.5e-3; wm = 0.5e-3;
Ground plane length and width in meters:
ls = 20e-3; ws = 20e-3;
Pad and antipad dimensions:
dOut= 1.0e-3; dIn = 0.2e-3; % This comes from Sec. IIIA of [1]. sf = 1.4e-3; % Deviation - original plan says 14 mm
Substrate thickness in meters:
h = 0.8e-3;
Relative permittivity and loss tangent of the dielectric material:
epsr = 4.4; lossTang = 0.02;
Analysis frequency range in Hertz:
freq = linspace(4.5e9, 6e9, 61);
Edge-fed Model for Inset-fed Microstrip Patch Antenna
While it is possible to model this antenna using a pcbComponent
object, the patchMicrostripInsetfed
object straightforwardly constructs most of the geometry required. There are two caveats: first, the antenna is edge-fed instead of probe-fed, and second, there is a requirement to add a very small notch where the feed trace touches the patch to satisfy the patchMicrostripInsetfed
object's assumptions. Nevertheless, it gives a good first estimate of the input impedance.
subm = dielectric(EpsilonR=epsr,LossTangent=lossTang,Thickness=h); insetPatch = patchMicrostripInsetfed(Length=lp,Width=wp,Height=h,... GroundPlaneLength=ls,GroundPlaneWidth=ws,Substrate=subm,... StripLineWidth=wm,NotchLength=0.05e-3,NotchWidth=wm*2,... FeedOffset=[-(ls/2) 0],PatchCenterOffset=[-(ls/2 - sf - dOut/4 - lm - lp/2), 0]); figure show(insetPatch) title("Inset-fed Microstrip Patch Antenna");
Mesh the antenna.
figure mesh(insetPatch,MaxEdgeLength=1.5e-3,MinEdgeLength=1e-3);
Calculate the S-parameters of this antenna between 4.5 GHz to 6 GHz and convert them to Z-parameters.
s1 = sparameters(insetPatch,freq); z1 = zparameters(s1);
Plot the impedance of this antenna using the plotZ
helper function as defined in the supporting function section.
figure
plotZ(z1);
title("Input Impedance: Edge Feed");
The edge feed model already shows good agreement with the delta-gap curves in Fig. 3 of [1] in terms of the maximum and minimum reactances and the locations (in terms of frequency) of those features. However, it deviates with respect to the maximum resistance.
Delta-gap Probe Feed Model
To use a standard probe feed, convert the patchMicrostripInsetfed
object to a pcbStack
object, and then convert that pcbStack
object to a pcbComponent
object. The antenna is kept as a pcbStack
object for the current step, but the next step uses a pcbComponent
object to apply a coaxial feed, so there is no reason to delay the second conversion.
Copy the patch antenna's geometry to a pcbComponent
object.
tempStack = pcbStack(insetPatch); p = pcbComponent; p.BoardThickness = tempStack.BoardThickness; p.BoardShape = tempStack.BoardShape; for j = 1:3 p.Layers{j} = copy(tempStack.Layers{j}); end
Warning: Dielectric thickness is updated with BoardThickness. Assign BoardThickness before setting up the Layers.
Cut the excess length out of the feed strip so that it only runs from the patch to the probe feed.
rectCut = traceRectangular(Length=(sf+dOut/4),Width=2*wm); rectCut.Center = [-(ls - sf - dOut/4)/2 0]; p.Layers{1} = p.Layers{1} - rectCut;
Specify the feed using FeedLocations
property and configure it. Calculate the probe feed location according to [2].
feedCenter = [-(ls/2 - sf - dOut/2), 0];
p.FeedLocations = [feedCenter 1 3];
p.FeedDiameter = dIn;
p.FeedViaModel = 'octagon';
figure
show(p)
Mesh the antenna.
figure mesh(p,MaxEdgeLength=1.5e-3,MinEdgeLength=1e-3);
Zoom in on the feed.
figure mesh(p,View="metal"); camdolly(-7.5e-3,0,0,'movetarget','data'); camzoom(20);
Now that the antenna is meshed, carry out the solution procedure for the delta-gap probe-fed antenna.
Calculate the S-parameters of this antenna between 4.5 GHz to 6 GHz and convert them to Z-parameters.
s2 = sparameters(p,freq); z2 = zparameters(s2);
Plot the impedance of this antenna.
figure
plotZ(z2);
title("Input Impedance: Probe Feed");
Compared against Fig. 3 of [1], the impedance plot agrees with the "Delta gap" legend entries in the following ways:
The resistance reaches nearly 600 ohms at its peak and declines rapidly to 0 ohms.
The reactance reaches nearly 400 ohms at its peak, swings to nearly -200 ohms, and then trends up towards 200 ohms.
However, the frequencies at which these features of the impedance plot occur are shifted by about 0.2 GHz relative to the reference.
Finite-gap Coaxial Probe Feed Model
In this section, the standard delta-gap probe feed is replaced by a finite-gap coaxial feed to better model the physics at the feed site.
Begin by adding a pad and antipad for the via.
Note it is very important that the pad and antipad:
(a) are concentric.
(b) have the same number of edges.
(c) are not rotated relative to each other.
numPadAntipadVertices = 8; viaAntiPad = antenna.Circle(Radius=dOut/2,NumPoints=numPadAntipadVertices); viaAntiPad.Center(1) = -(ls/2 - sf - dOut/2); viaPad = antenna.Circle(Radius=dIn/2,NumPoints=numPadAntipadVertices); viaPad.Center(1) = -(ls/2 - sf - dOut/2);
Punch out the antipad from the ground plane and add back in the pad. Note that, the order of operations matters.
p.Layers{3} = p.Layers{3} - viaAntiPad + viaPad;
It is nontrivial to describe the coaxial feed, and pcbComponent
cannot recognize one automatically based on its FeedLocations
. For this reason, it is necessary to expose and populate the pcbComponent
object's FeedDefinitions
property using a CoaxialFeed
object.
Switch the FeedFormat
flag to expose the FeedDefinitions
property. Note that the FeedLocations
property is now hidden, and the feed that had previously been specified in FeedLocations
has been automatically converted to a ProbeFeed
feed definition object.
p.FeedFormat = 'FeedDefinitions'
p = pcbComponent with properties: Name: 'MyPCB' Revision: 'v1.0' BoardShape: [1×1 antenna.Rectangle] BoardThickness: 8.0000e-04 Layers: {[1×1 antenna.Polygon] [1×1 dielectric] [1×1 antenna.Polygon]} FeedFormat: 'FeedDefinitions' FeedDefinitions: [1×1 ProbeFeed] ViaLocations: [] ViaDiameter: [] FeedViaModel: 'octagon' Conductor: [1×1 metal] Tilt: 0 TiltAxis: [0 0 1] Load: [1×1 lumpedElement]
Initialize a CoaxialFeed to replace the previous ProbeFeed.
f1 = CoaxialFeed; f1.PadShape = viaPad; f1.AntipadShape = viaAntiPad; f1.SignalLayers = 1; f1.GroundLayers = 3;
Assign the CoaxialFeed
object to the FeedDefinitions property of the pcbComponent
.
p.FeedDefinitions = f1;
Once the CoaxialFeed
object has been assigned to the FeedDefinitions
property, view the new mesh and feed site.
figure mesh(p,MaxEdgeLength=1.5e-3,MinEdgeLength=1e-3);
Zoom in on the feed.
figure mesh(p,View="metal"); camdolly(-7.5e-3,0,0,'movetarget','data'); camzoom(20);
Calculate the S-parameters and convert them to Z-parameters.
s3 = sparameters(p, freq); z3 = zparameters(s3);
Plot the impedance.
figure
plotZ(z3);
title("Input Impedance: Coaxial Feed")
Similar to the probe-fed impedance, the impedance curves are very close to the curves labeled "Proposed" in Fig. 3 of [1] in terms of feature magnitudes, but they deviate by roughly 0.2 GHz in terms of feature locations.
Conclusion
In this example, a probe-fed patch antenna was simulated with three different feed models: a standard edge feed, a standard delta-gap probe feed specified using the FeedLocations
property, and a more realistic finite-gap coaxial feed specified using the FeedDefinitions
property of the pcbComponent
object. Changing the feed from a probe feed to a coaxial feed changes the maximum resistance and reactance by roughly 42% and 37%, respectively. The simulated results for both feeds are validated by their excellent agreement with [1], except for a frequency shift of 3-4% (0.125 GHz relative to 6 GHz and 4.5 GHz, respectively) relative to the results reported there.
The following figures compare resistances against resistances and reactances against reactances for the three types of feed. Note the substantially decreased input impedance of the coaxial feed relative to the edge and probe feeds in all cases.
zp1 = squeeze(z1.Parameters); zp2 = squeeze(z2.Parameters); zp3 = squeeze(z3.Parameters);
Compare the resistance.
figure plot(freq/1e9,real(zp1),'-ok',LineWidth=2); hold on; plot(freq/1e9,real(zp2),'-ob',LineWidth=2); plot(freq/1e9,real(zp3),'-or',LineWidth=2); xticks(min(freq)/1e9:0.25:max(freq)/1e9); ylim([0 600]); grid on; legend({"Edge feed", "Probe feed", "Coaxial feed"}); xlabel("Frequency (GHz)"); ylabel("Resistance (\Omega)"); title("Input Resistance Comparison");
Compare the reactance.
figure plot(freq/1e9,imag(zp1),'-ok',LineWidth=2); hold on; plot(freq/1e9,imag(zp2),'-ob',LineWidth=2); plot(freq/1e9,imag(zp3),'-or',LineWidth=2); xticks(min(freq)/1e9:0.25:max(freq)/1e9); ylim([-200 400]); grid on; legend({"Edge feed", "Probe feed", "Coaxial feed"}); xlabel("Frequency (GHz)"); ylabel("Reactance (\Omega)"); title("Input Reactance Comparison");
Supporting Function
The following helper function plots the impedance curves and is used throughout the example for that purpose.
function plotZ(zp) zp2 = squeeze(zp.Parameters); freq = zp.Frequencies; plot(freq/1e9, real(zp2),'-ob',LineWidth=2); hold on; plot(freq/1e9, imag(zp2),'-or',LineWidth=2); xticks(min(freq)/1e9: 0.25:max(freq)/1e9); legend({"Resistance", "Reactance"}); xlabel("Frequency (GHz)"); ylabel("Impedance(\Omega)"); grid on; end
References
[1] Liu, Chang, and Ali E. Yilmaz. “A Generalized Finite-Gap Lumped-Port Model.” In 2018 IEEE 27th Conference on Electrical Performance of Electronic Packaging and Systems (EPEPS), 173–75. San Jose, CA: IEEE, 2018. https://doi.org/10.1109/EPEPS.2018.8534282.
[2] Li Li, Xinwei Chen, Yi Zhang, Liping Han, and Wenmei Zhang. “Modeling and Design of Microstrip Patch Antenna-in-Package for Integrating the RFIC in the Inner Cavity.” IEEE Antennas and Wireless Propagation Letters 13 (2014): 559–62. https://doi.org/10.1109/LAWP.2014.2312420.
See Also
Objects
pcbComponent
(RF PCB Toolbox) |pcbStack
|patchMicrostripInsetfed
|antenna.Circle
Functions
mesh
|sparameters
|zparameters
(RF Toolbox)