mcpField
M
matlab-design-pcb-coupler

matlab-design-pcb-coupler

github.com/matlabその他1.2k70 回インストール1 日前に更新
リポジトリ

matlab-design-pcb-coupler について

この MATLAB スキルは、RF・マイクロ波設計者向けに、複数の分配トポロジーやビーム形成ネットワークを含むパワーデバイダーとカプラーの設計手順を示します。S パラメーター、結合度、方向性、アイソレーションの解析も扱います。

主な機能

  1. 01Wilkinson 分配器と広帯域型の設計
  2. 02ブランチライン、ラットレース、方向性カプラーの作成
  3. 03コーポレート分配器と SIW 分配器の構築
  4. 04Rotman Lens ビーム形成ネットワークの設定
  5. 05S パラメーター、結合度、アイソレーションの解析

活用シーン

  1. 01アレイ給電用 N 分配器の設計
  2. 02直交合成用 90° ハイブリッドの構築
  3. 03カプラーの結合度、方向性、アイソレーションの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-pcb-coupler

インストール後、Claude Code で/matlab-design-pcb-couplerを入力して読み込まれたか確認します。

同梱ファイルmanifest.yaml

詳細

カプラーとスプリッターの設計

使用する場合

  • 電力分配用のウィルキンソンスプリッター(等分、不等分、広帯域)を設計する場合
  • 直交または和差ネットワーク用のブランチラインカプラーやラットレースカプラーを作成する場合
  • アレイ給電ネットワーク用のコーポレート電力分配器を構築する場合
  • 信号サンプリング用の方向性カプラーを設計する場合
  • ビームフォーミング用のSIWスプリッターやロットマンレンズを作成する場合

使用しない場合

  • 伝送線路を設計する場合 — matlab-design-pcb-transmission-line を使用してください
  • フィルターを設計する場合 — matlab-design-pcb-filter を使用してください
  • 受動部品(インダクター、コンデンサー、バラン)を設計する場合 — matlab-design-pcb-passive を使用してください
  • カプラーを他のコンポーネントとカスケード接続する場合 — matlab-integrate-pcb-circuit を使用してください
  • カプラーの性能を最適化する場合 — matlab-optimize-pcb-design を使用してください

標準的なワークフロー

  1. 事前: matlab-manage-pcb-material — 基板と導体を設定します
  2. このスキル: カプラーまたはスプリッターを設計します
  3. メッシュ/メモリの確認: memoryEstimate(obj, fc, 'RetainMesh', true) — フル解析を実行する前に、自動メッシュの密度を確認します
  4. 事後: matlab-analyze-em — Sパラメーターを検証します → matlab-optimize-pcb-design — 寸法を調整します → matlab-integrate-pcb-circuit — より大きなネットワークにカスケード接続します

クイックリファレンス — コンポーネントの選択

オブジェクトタイプポート数最適な用途
wilkinsonSplitter等分電力分配器3標準的な2分配
wilkinsonSplitterUnequal不等分電力分配器3非対称な電力分配
wilkinsonSplitterWideband広帯域等分分配器3複数オクターブにわたる等分配
couplerBranchline90°ハイブリッド4直交合成/分配
couplerBranchlineWideband広帯域90°ハイブリッド4多段広帯域直交回路
couplerRatrace180°ハイブリッド4和差ネットワーク
couplerDirectional方向性カプラー4サンプリング、多段対称構成
splitterTeeT分岐3シンプルなリアクティブ分配
powerDividerCorporateN分配コーポレート型N+1アレイ給電ネットワーク
SIWSplitterSIW電力分配器3高周波導波管分配
rotmanLensビームフォーミングネットワークNビーム+Nアレイ真の時間遅延を備えたフェーズドアレイ

ウィルキンソンスプリッター

等分配
ws = design(wilkinsonSplitter, 3e9);
show(ws);
memoryEstimate(ws, 3e9, 'RetainMesh', true);  % Check mesh before solving
sp = sparameters(ws, linspace(1e9, 5e9, 51), 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ:SplitLineLength、SplitLineWidth、Resistance、PortLineLength、PortLineWidth、GroundPlaneWidth。

不等分配
ws = wilkinsonSplitterUnequal;
ws = design(ws, 3e9);
show(ws);

電力分配比は、インピーダンス変換アームによって制御されます。

プロパティの参照(2要素ベクトルのプロパティ):

プロパティ説明デフォルト値
SplitLineLength分岐線の長さ(m)0.0279
SplitLineWidth分岐線の幅(m)[0.0014 0.0049](2要素ベクトル:各アームに1つ)
MatchLineLength出力整合線の長さ(m)0.0277
MatchLineWidth出力整合線の幅(m)[0.0039 0.0066](2要素ベクトル:各アームに1つ)
Resistanceアイソレーション抵抗(オーム)106
広帯域ウィルキンソン

帯域幅を広げるための多段構成:

ws = wilkinsonSplitterWideband;
ws = design(ws, 5e9);
show(ws);
sp = sparameters(ws, linspace(2e9, 8e9, 51), 'SweepOption', 'interp');
rfplot(sp);

プロパティの参照(ベクトルプロパティは NumSections に応じて変化します):

プロパティ説明デフォルト値(3段)
NumSectionsカスケード接続された段数3
Shape各段の形状"Rectangular"("Circular")
SplitLineWidth1/4波長変成器の幅(m)[8.55e-04 0.0014 0.0021](ベクトル、各段に1つ)
Resistanceアイソレーション抵抗の値(オーム)[100 183.40 141.42](ベクトル、各段に1つ)
多層ウィルキンソン
ws = design(wilkinsonSplitter, 5e9);
sub = dielectric("FR4", "Teflon");
sub.Thickness = [1e-3 0.5e-3];         % Set Thickness BEFORE assigning to component
ws.Substrate = sub;
ws.Height = 1.5e-3;
show(ws);

ブランチラインカプラー

標準(単段)
bl = design(couplerBranchline, 5e9);
show(bl);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(bl, freq, 'SweepOption', 'interp');
rfplot(sp);

主なプロパティ:SeriesArmLength、SeriesArmWidth、ShuntArmLength、ShuntArmWidth、PortLineLength、PortLineWidth。

広帯域(複数セクション)
blw = couplerBranchlineWideband;
blw.NumSections = 3;
blw = design(blw, 5e9);
show(blw);

プロパティのリファレンス(ベクトルプロパティは NumSections に応じてスケーリングされます):

プロパティ説明デフォルト(2 セクション)
NumSectionsブランチラインセクションの数2
SeriesArmWidth直列アームの幅(m)0.0051(スカラーまたはベクトル)
ShuntArmWidthシャントアームの幅(m)[0.00096 0.0029 0.00096](ベクトル、NumSections+1 個の要素)
IsShielded金属シールドを追加しますfalse
DGS 付きブランチライン

DGS を追加すると、指向性とアイソレーションが向上します:

bl = design(couplerBranchline, 5e9);
dgsShape = dumbbell;
dgsShape.SideLength = 3e-3;       % Head size (default Type='Square')
dgsShape.ArmLength = 5e-3;
dgsShape.ArmWidth = 0.3e-3;
bl = dgs(bl, {dgsShape});         % Must capture return value
show(bl);
カプラーの解析方法
freq = linspace(3e9, 7e9, 51);

% Coupling factor (S31 for branchline)
coupling(bl, freq);

% Directivity
directivity(bl, freq);

% Isolation (S41 for branchline)
isolation(bl, freq);

ラットレースカプラー

180°ハイブリッド(和/差ポート):

rr = design(couplerRatrace, 5e9);
show(rr);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(rr, freq, 'SweepOption', 'interp');
rfplot(sp);

% Analysis
coupling(rr, freq);
directivity(rr, freq);
isolation(rr, freq);

主なプロパティ:RingRadius、RingWidth、PortLineWidth、PortLineLength。

ラットレース上の電荷と電流
figure; current(rr, 5e9);
figure; charge(rr, 5e9);

方向性カプラー

多段の対称方向性カプラーです。注: couplerDirectional には design 関数がありません。プロパティを手動で設定してください:

dc = couplerDirectional;
dc.NumSections = 3;
dc.Width = [2.8e-3 2.8e-3 2.8e-3];       % One value per section
dc.Spacing = [1.3e-3 1.3e-3 1.3e-3];     % One value per section
dc.GroundPlaneLength = 0.15;               % Must accommodate total length
show(dc);

freq = linspace(3e9, 7e9, 51);
coupling(dc, freq);
directivity(dc, freq);

主なプロパティ:NumSections、Length(スカラー)、Width(ベクトル、セクションごとに 1 つ)、Spacing(ベクトル、セクションごとに 1 つ)、PortLineWidth、GroundPlaneLength。

ティージャンクションとコーポレート分配器

スプリッターティー

単純なリアクティブ T 字ジャンクションです。Shape プロパティでジャンクションの形状を制御します:

形状の値説明
'RectangularMitered'マイターベンド付きの長方形(デフォルト)
'RectangularCurved'曲線ベンド付きの長方形
'Circular'円形ジャンクション
st = splitterTee;
st = design(splitterTee, 5e9);
show(st);
sp = sparameters(st, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);

% Circular shape variant
st2 = splitterTee(Shape='Circular');
st2 = design(st2, 5e9);
show(st2);
コーポレート電力分配器(N 分配)

アレイ給電ネットワーク向けです:

cpd = powerDividerCorporate;
cpd.NumOutputPorts = 4;       % 1:4 divider
cpd = design(cpd, 5e9);
show(cpd);
sp = sparameters(cpd, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);
8 分配コーポレート分配器
cpd = powerDividerCorporate;
cpd.NumOutputPorts = 8;
cpd = design(cpd, 2.4e9);
show(cpd);

SIW スプリッター

siw_s = SIWSplitter;
siw_s = design(siw_s, 10e9);
show(siw_s);

FeedLine プロパティは、マイクロストリップから SIW への遷移を制御する traceTapered オブジェクトです:

siw_s.FeedLine.InputWidth = 1e-3;
siw_s.FeedLine.OutputWidth = 3e-3;
show(siw_s);

設計ワークフロー

  1. 要件(等分/不等分、帯域幅、アイソレーション)に基づいてトポロジーを選択します
  2. 中心周波数で設計します:obj = design(ObjectType, fc)
  3. 可視化します:show(obj)
  4. S パラメーターを解析します:sparameters(obj, freq, 'SweepOption', 'interp')
  5. 指標を確認します:coupling、directivity、isolation
  6. カスタマイズします:特定のインピーダンス、基板、寸法に合わせてプロパティを調整します
  7. 必要に応じて最適化します(matlab-optimize-pcb-design を参照)

カプラー固有の解析関数

以下の関数は、4 ポートのカプラーオブジェクト couplerBranchline、couplerBranchlineWideband、couplerRatrace、couplerDirectional で利用できます。

関数測定内容シグネチャ
coupling(obj, freq)結合係数(dB)— 結合ポートに伝送される電力デフォルトではプロットします。cVal = coupling(obj, freq) で値を返します
directivity(obj, freq)指向性(dB)— 順方向と逆方向に結合される電力の分離デフォルトではプロットします。dVal = directivity(obj, freq) で値を返します
isolation(obj, freq)アイソレーション(dB)— アイソレートポートへの電力漏れデフォルトではプロットします。iVal = isolation(obj, freq) で値を返します
c = design(couplerBranchline, 2.4e9);
freq = linspace(2e9, 3e9, 101);

coupling(c, freq);              % plots coupling factor
cVal = coupling(c, freq);       % returns numeric values (dB)

directivity(c, freq);           % plots directivity
dVal = directivity(c, freq);    % returns numeric values (dB)

isolation(c, freq);             % plots isolation
iVal = isolation(c, freq);      % returns numeric values (dB)

ポート番号の規則

3 ポート(スプリッター)
ポート機能
1入力
2出力(スルー)
3出力(分岐)
4 ポート(カプラー)
ポートブランチラインラットレース
1入力入力
2スルー(-3dB、0°)和
3結合(-3dB、-90°)差
4アイソレートスルー

Rotman レンズ(ビームフォーミングネットワーク)

rotmanLens は、N ビーム、N アレイの真の時間遅延ビームフォーミングネットワークです。

lens = rotmanLens;
lens.NumBeamPorts  = 4;
lens.NumArrayPorts = 4;
lens.NumDummyPorts = 4;       % Absorb reflected energy at lens edges
lens.BeamPortAngle = 40;      % Angular spread of beam ports (degrees)
lens.MaxScanAngle  = 30;      % Maximum scan angle (degrees)
lens.Height        = 5.08e-4;
lens.Conductor     = metal("Copper");
show(lens);
layout(lens);

主なプロパティ:OnaxisFocalLength、OffaxisFocalLength(走査角から自動計算されます)。BeamTaper と ArrayTaper は、テーパ給電線の形状(traceTapered オブジェクト)を制御します。

SIW 電力分配器

SIWSplitter は、基板集積導波路による 1:2 電力分配器です。

s = SIWSplitter;
s.InputLineLength = 0.0155;
s.SplitLineLength = 0.0145;
s.Width           = 0.0125;
s.ViaSpacing      = [0.0017, 0.011];    % [wall via spacing, split via spacing]
s.ViaDiameter     = 5e-4;
s.PostDiameter    = 2.54e-4;
s.PostOffsetX     = 5.5e-3;
s.Height          = 8e-4;
show(s);

FeedLine プロパティで給電線をカスタマイズできます:

s.FeedLine = traceRectangular(Length=3e-3, Width=2e-3);

落とし穴

  1. S パラメーターには補間スイープを使用する:MoM ソルバーには、必ず sparameters(obj, freq, 'SweepOption', 'interp') を使用してください。ダイレクトスイープでは各周波数点で個別に解析するため、大幅に時間がかかります。

  2. 解析前にメッシュ密度を確認する:カタログのカプラーでは高密度の自動メッシュが生成され、実行時間の大部分を占めます。必ず sparameters() の前に memoryEstimate(obj, fc, 'RetainMesh', true) を実行してください。メモリー使用量が過大な場合は、メッシュを粗くします:mesh(obj, 'MaxEdgeLength', lambda/6)。メッシュを詳しく確認するワークフローについては、matlab-analyze-em を参照してください。

  3. ウィルキンソンの抵抗値:アイソレーション抵抗の既定値は 100 ohm(2×Z0)です。50 ohm 以外のシステムでは、それに応じて Resistance プロパティを調整してください。

  4. ポート番号は種類によって異なる:カプラーの種類ごとにポートの番号付けが異なります。S パラメーターを解釈する前に、必ず show(obj) で各ポートの位置を確認してください。

  5. 広帯域カプラーのセクション:セクションを増やすと帯域幅が広がりますが、サイズも大きくなります。各セクションは、中心周波数における約 4 分の 1 波長分の長さを追加します。

  6. コーポレート分配器の対称性:powerDividerCorporate では、NumOutputPorts に 2 のべき乗(2、4、8、16…)を指定する必要があります。

  7. コーポレート分配器の基板:powerDividerCorporate.Substrate は読み取り専用です。代わりに corp.SplitterElement.Substrate で基板を設定してください。コーポレート分配器は、単位となる SplitterElement(wilkinsonSplitter)から構築されます。注:design() によって基板の厚さが上書きされる場合があります。

  8. コーポレート分配器は大きなメッシュになる:多分岐コーポレート分配器は物理的に大きな構造です。高周波では、必要なメモリーが数百 GB を超えることがあります。フルウェーブ解析が現実的でない場合は、高速な振幅/位相バランス検証にビヘイビア S パラメーター('Behavioral', true)を使用してください。

  9. design() の前に基板を設定する:design(obj, fc) は現在の基板に基づいて寸法を自動設定します。design() の後に基板を設定すると、材料は変更されますが、寸法は再計算されず、インピーダンスが不正確になります。必ず、先に Substrate を設定してから design() を呼び出してください。

  10. DGS による結合:カプラーに DGS を追加すると、指向性が 10~15 dB 改善する場合がありますが、中心周波数がわずかにずれます。DGS の追加後に再調整してください。

  11. SplitterTee はリアクティブ:ウィルキンソンとは異なり、T 字分岐はリアクティブ(無損失)に分配するため、出力ポート同士はアイソレーションされません。アイソレーションが必要な場合は、ウィルキンソンを使用してください。

  12. couplerDirectional では design() を使用できない:couplerDirectional は design() をサポートしていません。Length、Width、Spacing、NumSections を手動で設定してください。

  13. couplerDirectional のマルチセクション寸法:NumSections > 1 の場合、Width と Spacing は各セクションに 1 つずつ要素を持つベクトルにする必要があります。Length はスカラーのままです。また、構造が長くなるため GroundPlaneLength も大きくしてください。既定値は 1 セクション分しかありません。

  14. カプラーとスタブ/共振器のカスケード接続:スタブまたは共振器をカプラーポートに物理的に接続するには、pcbcascade(pcbComponent(coupler), pcbComponent(stub), portA, portB) を使用してください。2 つのオブジェクトで Height、Substrate、Conductor を一致させてください。接続したポートはなくなるため、show(combined) で残ったポート数を確認してください。カスケード接続の詳細については、matlab-integrate-pcb-circuit を参照してください。

  15. カタログのカプラーは MoM 専用:couplerBranchline などのオブジェクトは、ネイティブでは MoM のみをサポートします。FEM を使用するには、pcbComponent でラップし、構築後に SolverType を設定してください(構築時には設定しないでください)。

    bl = design(couplerBranchline, 5e9);
    pcb = pcbComponent(bl);
    pcb.SolverType = 'FEM';
    s = solver(pcb);
    s.BoundaryCondition = 'perfectly-matched-layer';
    

    pcbComponent() に名前と値の引数として SolverType を渡さないでください。FEM には IDMF ソルバーエンジンが必要です(Windows では WSL)。idmf_hub が見つからない場合は、代わりに MoM を使用してください。FEM の前提条件とトラブルシューティングについては、matlab-analyze-em を参照してください。

関連スキル

  • matlab-manage-pcb-material — 基板の設定
  • matlab-analyze-em — S パラメーターと電界の解析
  • matlab-optimize-pcb-design — カプラー/スプリッターの性能の最適化
  • matlab-integrate-pcb-circuit — スプリッターと他のコンポーネントの組み合わせ

Copyright 2026 The MathWorks, Inc.

コメント