How to solve Microwave Engineering Pozar chapter 05 exercise 05 with ADS and MATLAB

Published by John_2016 in the blog How to solve Microwave Engineering Pozar examples and exercises with MATLAB. Views: 90


Question

[​IMG]

Answer

the literature source [POZAR] is available here:
https://www.amazon.co.uk/Microwave-Engineering-David-M-Pozar/dp/0470631554

There's also a solutions manual available here:
https://www.scribd.com/doc/176505749/Microwave-engineering-pozar-4th-Ed-solutions-manual


[​IMG]


this is the OC series stub impedance match circuit on single frequency.

[​IMG]

The arcs of the transmission line lengths on the Smith chart are:

[​IMG]


[​IMG]

And the OC series stub arcs:

[​IMG]


[​IMG]

There's also an alternative graph to find the required transmission line and stub lengths; |s11| surface.

clc;clear all;close all
ZL=90+1j*60;Z0=75;
Dstep=.001;drange=[0: Dstep:1];
D1=drange;D2=D1;
[D1,D2]=meshgrid(drange);


Z1=Z0*(ZL+1j*Z0*tan(2*pi*D1))./(Z0+1j*ZL*tan(2*pi*D1));
Zin_stub=Z0./(1j*tan(2*pi*D2));
% series oc stub
Zin=Z1+Zin_stub;
s11=(Zin-Z0)./(Zin+Z0);


surf(abs(s11),'LineStyle','none')
ax=gca
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual'; ax.YTickLabelMode='manual';
ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
ax.PlotBoxAspectRatio=[1 1 1]


[​IMG]


hold all;x0=find(drange==.5) % plotting corner to box D1<.5 D2<.5
plot3([x0 x0 0],[0 x0 x0],[5 5 5],'Color',[1 0 0],'LineWidth',3)

% moving camera birdeye view
ax.CameraPosition=[500 500 10]

camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative
% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in

ax.CameraUpVector = [0 1 0]; % camera attitude
ax.CameraTarget = [500 500 0]; % centring
ax.CameraViewAngle =8*pi; % focus

[​IMG]

automating peaks capture: findpeaks with MinPeakProminence=2.5 returns the right amount of peaks. MinPeakProminence larger or smaller than 2.5 then either too few or too many peaks.

With MinPeakHeight=2 command findpeaks doesn't catch the right amount of peaks for any MinPeakDistance, going from 6 peaks only to too many peaks.

With Threshold=2 doesn't catch a single peak but Threshold=1 gets the right amount of peaks.



To get zeros exact locations, it's useful to invert |s11| surface just plotted, with the Laplacian of the surface, command del2

V=1e3*del2(abs(s11));
figure(2);ax=gca;surf(V,'Lines','none');
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual';
ax.YTickLabelMode='manual'; ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
[pks,locs]=findpeaks(V( : ),'Threshold',1);
[nd1,nd2]=ind2sub(size(V),locs);

hold all;figure(2);plot3(nd2,nd1,V(nd2,nd1)+2,'ro');
% plot peaks
ax.PlotBoxAspectRatio=[1 1 1]

x0=find(drange==.5) % plot corner to box D1<.5 D2<.5
figure(2);
plot3([x0 x0 0],[0 x0 x0],[.5 .5 .5],'Color',[1 0 0],'LineWidth',3)
ax2=gca

ax2.CameraPosition=[500 500 10]
% moving camera bird-eye view
ax2.CameraUpVector = [0 1 0]; % camera attitude

camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative

% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in
ax2.CameraTarget = [500 500 0]; % centring

abs(s11(sub2ind(size(V),nd1,nd2)))

= 0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033
0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033

unique(sort(drange(nd1)))
= 0.1470 0.3530 0.6470 0.8530

numel(nd1)
= 8

among these stub lengths

D1=unique(drange(nd1))
= 0.1470 0.3530 0.6470 0.8530

D2=unique(drange(nd2))

= 0.1740 0.4820 0.6740 0.9820


the stub lengths inside D<.5 are the smallest ones

Dstub1= D1([1 2])
= 0.1470 0.3530

Dstub2= D2([1 2])

= 0.1740 0.4820

The resulting frequency response is the same as the one obtained with the MATLAB solution

[​IMG]

So the problem is simple enough to find transmission line and stub length on a surface.


Quick check how short circuit and open circuit stubs behave over frequency:

Zin_sc_stub=1j*Z0*tan(beta*L)

Zin_oc_stub=-1j*Z0*cot(beta*L)

da=pi/2000;a=[-2*pi:da:2*pi];
y_OC=-cot(a); y_SC=tan(a);
figure;plot(a,y_OC,a,y_SC);
grid on;axis([-2*pi 2*pi -10 10])
legend('SC','OC')
ylabel('Stub Z_i_n');xlabel('\betaL')
xticks([-2*pi -2*pi*3/4 -pi -pi/2 0 pi/2 pi 3*pi/2 2*pi])
xticklabels({'-2\pi','-3\pi/4','-\pi','-\pi/2','0','\pi/2','\pi','3\pi/2','2\pi'})


[​IMG]


John BG
jgb2012@sky.com
You need to be logged in to comment