96 lines
4.1 KiB
Matlab
96 lines
4.1 KiB
Matlab
%% ---- Slotted waveguide column (dielectric-filled, alumina) ----
|
||
% Your numbers:
|
||
f0 = 10.5e9; % Hz
|
||
eps_r = 9.8; % alumina (99.5–99.8%)
|
||
a = 8.5e-3; % broad wall (m)
|
||
b = 3.5e-3; % narrow wall (m)
|
||
Mcols = 16; % (for panel-level, not used here)
|
||
Nslots = 32; % per column
|
||
|
||
% Physical constants
|
||
c0 = physconst('LightSpeed');
|
||
lam0 = c0/f0;
|
||
|
||
%% ---- Rectangular waveguide TE10 cutoff (filled with eps_r) ----
|
||
% fc10 = (c0 / (2*a*sqrt(eps_r)))
|
||
fc10 = c0/(2*a*sqrt(eps_r));
|
||
if f0 <= fc10
|
||
error('f0 is below TE10 cutoff for the filled waveguide.')
|
||
end
|
||
|
||
% Guide wavelength in dielectric: λg = λ0 / sqrt(1 - (fc10/f0)^2)
|
||
lamg = lam0 / sqrt(1 - (fc10/f0)^2);
|
||
|
||
%% ---- Design rules derived from λg ----
|
||
% Slot spacing: s = λg/2
|
||
slotSpacing = lamg/2; % ~ 16.915 mm (with λg=33.83 mm)
|
||
% Slot length (longitudinal): L ≈ 0.47*λg (trim in proto if needed)
|
||
slotLen = 0.47*lamg; % ~ 15.9 mm
|
||
% Slot width: keep electrically narrow but machinable
|
||
slotWid = 0.02*lam0; % ~ 0.57 mm at 10.5 GHz
|
||
|
||
% Slot offset from centerline: start ~ 0.25*a (tune per-slot for taper)
|
||
x_offset = 0.25*a; % ~ 2.1 mm
|
||
|
||
% Probe length inside dielectric (for note/consistency):
|
||
Lprobe = lam0/(4*sqrt(eps_r)); % ~ 2.28 mm
|
||
|
||
%% ---- Overall waveguide length and feed locations ----
|
||
% Center the slot train about z=0 (Antenna Toolbox uses feed/slot offsets
|
||
% relative to the waveguide center by default).
|
||
z_first = ((Nslots)/2-0.5)*slotSpacing ; % first-slot z position (centered array)
|
||
z_feed = -z_first - lamg/4; % ~ quarter-wave behind first slot
|
||
z_short = z_feed - lamg/4; % backshort another quarter-wave behind
|
||
|
||
% Put some margin beyond the last slot and behind the short:
|
||
z_margin_front = 2*slotSpacing;
|
||
z_margin_back = 2*slotSpacing;
|
||
wgLength = lamg + (Nslots-1)*slotSpacing;
|
||
% This keeps the backshort inside the model and gives space beyond last slot.
|
||
|
||
% Antenna Toolbox expects total Length (z extent), Width (y=a), Height (x=b)
|
||
Length = wgLength;
|
||
Width = a;
|
||
Height = b;
|
||
|
||
% Slot-to-top: distance from slot center to the top (outer) broad-wall edge.
|
||
% If the slot offset from center is +x_offset toward the top wall,
|
||
% then SlotToTop ≈ (a/2 - x_offset).
|
||
slotToTop = (a/2 - x_offset);
|
||
|
||
% The SlotOffset property is the lateral offset from the guide centerline.
|
||
% Use +x_offset (sign convention follows object; if inverted, use -x_offset).
|
||
slotOffset = x_offset;
|
||
|
||
% Feed parameters:
|
||
feedHeight = Lprobe; % use the probe length as the pin intrusion (model note)
|
||
feedWidth = 1.2e-3; % ~1.2 mm hole/pin diameter (adjust to your connector)
|
||
feedOffset = [z_feed, 0]; % [z y] offset (y=0 at column center)
|
||
|
||
%% ---- Build the slotted waveguide in Antenna Toolbox ----
|
||
slotShape = antenna.Rectangle('Length',slotLen,'Width',slotWid);
|
||
|
||
ant = waveguideSlotted( ...
|
||
'Length', Length, ...
|
||
'Width', Width, ...
|
||
'Height', Height, ...
|
||
'NumSlots', Nslots, ...
|
||
'Slot', slotShape, ...
|
||
'SlotSpacing', slotSpacing, ...
|
||
'SlotOffset', slotOffset, ...
|
||
'ClosedWaveguide', 1, ...
|
||
'SlotToTop', lamg/2, ...
|
||
'FeedHeight', feedHeight, ...
|
||
'FeedOffset', feedOffset, ...
|
||
'FeedWidth', feedWidth);
|
||
|
||
% For plotting/inspection
|
||
figure; show(ant); title('Dielectric-informed slotted waveguide (geometry driven)');
|
||
|
||
%% ---- Optional: verify positions quickly in the command window ----
|
||
fprintf('lambda0 = %.3f mm, lambda_g = %.3f mm\n', lam0*1e3, lamg*1e3);
|
||
fprintf('SlotSpacing = %.3f mm, SlotLen = %.3f mm, SlotWid = %.3f mm\n', slotSpacing*1e3, slotLen*1e3, slotWid*1e3);
|
||
fprintf('Slot offset = %.3f mm (SlotToTop = %.3f mm)\n', slotOffset*1e3, slotToTop*1e3);
|
||
fprintf('z_first = %.2f mm, z_feed = %.2f mm, z_short = %.2f mm\n', z_first*1e3, z_feed*1e3, z_short*1e3);
|
||
fprintf('FeedHeight (probe) ~ %.2f mm, FeedWidth ~ %.2f mm\n', feedHeight*1e3, feedWidth*1e3);
|