アンテナのインピーダンス整合 — 反射を最小化して効率的に電力を供給する

せっかく高出力の送信機と高利得のアンテナを用意しても、両者の「つなぎ目」で電力が反射されてしまっては、システム全体の性能が大幅に低下します。送信機が100 Wを出力しても、反射によって25 Wが戻ってきてしまえば、実際にアンテナから放射されるのは75 W以下です。この電力損失を防ぐために必要なのがインピーダンス整合(impedance matching)です。

インピーダンス整合は、音響工学における「音響インピーダンスの整合」や、光学における「反射防止コーティング」と本質的に同じ原理です。異なる特性を持つ媒質の境界で、波の反射を最小化するという普遍的な課題に対するエレガントな解法なのです。

インピーダンス整合の理解は、以下のような場面で不可欠です。

  • 無線通信システムの設計: 送信機からアンテナへの電力伝送効率を最大化し、反射による送信機の損傷を防ぐ
  • 高周波回路設計: 増幅器、フィルタ、ミキサーなどの高周波コンポーネント間のインピーダンス整合は、回路全体の性能を左右する
  • 測定技術: ネットワークアナライザを使った高周波特性の測定では、反射係数やスミスチャートの読解が基本スキル

本記事の内容

  • なぜインピーダンス整合が必要か — 反射損失の直感的理解
  • 入力インピーダンスと特性インピーダンスの関係
  • 反射係数とVSWRの定義と計算
  • スミスチャートの読み方と使い方
  • L型整合回路の設計原理
  • $\lambda/4$ 変成器による整合
  • Pythonでスミスチャート上のインピーダンス軌跡を描画
  • 整合回路の設計例

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

なぜインピーダンス整合が必要か

日常のアナロジー: ホースの接続

庭に水をまく場面を想像してください。蛇口に太いホースをつなぎ、その先に細いノズルを付けるとします。太いホースと細いノズルの接続部で、水の一部が跳ね返されて蛇口側に戻ってしまいます。これがインピーダンスの不整合による「反射」のアナロジーです。

ホースの太さを徐々に変えるアダプターを使えば、水の反射を最小限に抑えてスムーズに流すことができます。これがインピーダンス整合です。

電力伝送における反射

高周波の世界では、伝送線路(同軸ケーブル、マイクロストリップ線路など)を通じて送信機からアンテナに電力を伝送します。伝送線路には特性インピーダンス $Z_0$(典型的に50 $\Omega$ または75 $\Omega$)が定められており、アンテナの入力インピーダンス $Z_A$ がこれと異なる場合、接続点で電磁波の反射が生じます。

反射が生じると、以下の3つの問題が発生します。

1. 電力損失: 反射された電力はアンテナから放射されません。反射係数 $|\Gamma| = 0.5$ の場合、入射電力の25%が反射されます。

2. 定在波の発生: 入射波と反射波の重ね合わせにより、伝送線路上に定在波が生じます。定在波の腹では電圧が最大となり、伝送線路の耐圧を超える可能性があります。

3. 送信機への悪影響: 反射波が送信機に戻ると、出力段のトランジスタやパワーアンプにストレスを与え、最悪の場合は素子を破壊します。

ここまでで、インピーダンス整合の必要性を理解しました。次に、反射の大きさを定量的に評価するための「反射係数」と「VSWR」を導入しましょう。

反射係数とVSWR

反射係数の定義

反射係数 $\Gamma$ は、入射波に対する反射波の複素振幅比として定義されます。特性インピーダンス $Z_0$ の伝送線路にインピーダンス $Z_L$ の負荷(アンテナ)が接続されている場合、

$$ \Gamma = \frac{Z_L – Z_0}{Z_L + Z_0} $$

反射係数は一般に複素数で、その大きさ $|\Gamma|$ は0から1の範囲をとります。

  • $|\Gamma| = 0$: 完全整合(反射なし)。$Z_L = Z_0$ のとき
  • $|\Gamma| = 1$: 全反射。$Z_L = 0$(短絡)、$Z_L = \infty$(開放)、または純虚数(純リアクタンス)のとき
  • $0 < |\Gamma| < 1$: 部分的な反射

反射電力

反射される電力の割合は $|\Gamma|^2$ で与えられます。

$$ \frac{P_{\text{reflected}}}{P_{\text{incident}}} = |\Gamma|^2 $$

したがって、負荷に実際に伝達される電力は、

$$ P_{\text{delivered}} = P_{\text{incident}}(1 – |\Gamma|^2) $$

反射損失(リターンロス)は次のように定義されます。

$$ \text{RL} = -20 \log_{10} |\Gamma| \; [\text{dB}] $$

例えば $|\Gamma| = 0.1$ のとき RL = 20 dB で、反射電力は入射電力の1%です。一般に RL > 10 dB($|\Gamma| < 0.316$)が実用的な整合の基準とされます。

VSWR(電圧定在波比)

伝送線路上の定在波のパターンを特徴づけるのがVSWR(Voltage Standing Wave Ratio)です。定在波の電圧最大値 $V_{\max}$ と最小値 $V_{\min}$ の比として定義されます。

$$ \text{VSWR} = \frac{V_{\max}}{V_{\min}} = \frac{1 + |\Gamma|}{1 – |\Gamma|} $$

逆に、VSWRから反射係数を求めることもできます。

$$ |\Gamma| = \frac{\text{VSWR} – 1}{\text{VSWR} + 1} $$

VSWRの値と整合状態の目安を以下にまとめます。

VSWR $|\Gamma|$ 反射電力 リターンロス 評価
1.0 0.00 0% $\infty$ dB 完全整合
1.2 0.09 0.8% 20.8 dB 優秀
1.5 0.20 4.0% 14.0 dB 良好
2.0 0.33 11.1% 9.5 dB 許容範囲
3.0 0.50 25.0% 6.0 dB 要改善
$\infty$ 1.00 100% 0 dB 全反射

一般に、VSWR < 2.0(リターンロス > 10 dB)が通信システムにおける実用的な基準です。

ここまでで、反射の定量的な評価指標を理解しました。次に、インピーダンス整合の設計で最も重要なツールであるスミスチャートの読み方を学びましょう。

スミスチャートの読み方

スミスチャートとは

スミスチャート(Smith Chart)は、1939年にフィリップ・スミスが発明した、複素インピーダンスと反射係数を同時に可視化するグラフツールです。コンピュータが普及する以前は、高周波回路設計の必須ツールでした。現在でも、直感的にインピーダンスの変換を把握できるため、高周波エンジニアにとって不可欠なスキルです。

スミスチャートの本質を理解するために、まず正規化インピーダンスを導入します。

$$ z = \frac{Z_L}{Z_0} = r + jx $$

ここで $r$ は正規化抵抗成分、$x$ は正規化リアクタンス成分です。

反射係数平面との対応

反射係数 $\Gamma = \Gamma_r + j\Gamma_i$ は複素数で、$|\Gamma| \leq 1$ の単位円内に存在します。正規化インピーダンス $z$ と反射係数 $\Gamma$ の関係は次の通りです。

$$ \Gamma = \frac{z – 1}{z + 1} $$

逆変換は、

$$ z = \frac{1 + \Gamma}{1 – \Gamma} $$

スミスチャートは、この変換を視覚的に表現したものです。$\Gamma$ 平面(単位円)上に、$r = \text{const.}$ の等抵抗円と $x = \text{const.}$ の等リアクタンス円を描きます。

等抵抗円

正規化抵抗 $r$ が一定の曲線は、$\Gamma$ 平面上でになります。$r$ の値ごとに、以下の特徴があります。

  • $r = 0$: 単位円そのもの(純リアクタンス負荷)
  • $r = 1$: チャートの中心 $(\Gamma_r, \Gamma_i) = (0, 0)$ を通る円(整合点)
  • $r \to \infty$: 点 $(1, 0)$ に縮退(開放端)

等リアクタンス円

正規化リアクタンス $x$ が一定の曲線も、$\Gamma$ 平面上で(の一部)になります。

  • $x = 0$: 実軸(純抵抗負荷)
  • $x > 0$: 上半面の円弧(誘導性、インダクタンス)
  • $x < 0$: 下半面の円弧(容量性、キャパシタンス)

スミスチャート上の基本操作

インピーダンス整合では、以下のスミスチャート上の操作が基本となります。

直列素子の追加: インピーダンスに直列に素子を加えると、スミスチャート上で等抵抗円に沿って移動します。直列インダクタンスは時計回り($x$ が増加)、直列キャパシタンスは反時計回り($x$ が減少)に移動します。

並列素子の追加: アドミタンス $y = 1/z$ に対する操作です。アドミタンスチャート(スミスチャートを180°回転したもの)上で等コンダクタンス円に沿って移動します。並列キャパシタンスは時計回り、並列インダクタンスは反時計回りに移動します。

伝送線路の挿入: 長さ $l$ の伝送線路を挿入すると、$|\Gamma|$ を一定に保ったまま(等 $|\Gamma|$ 円に沿って)、$2\beta l$($\beta = 2\pi/\lambda$)だけ時計回りに回転します。

ここまでで、スミスチャートの基本的な読み方を理解しました。次に、スミスチャートを活用した具体的な整合回路の設計方法を見ていきましょう。

L型整合回路

L型回路の構成

L型整合回路は、2つのリアクタンス素子(インダクタンスとキャパシタンス)で構成される、最もシンプルな整合回路です。「L」の文字に似た回路構成からこの名前が付いています。

2つの素子の配置には、以下の2つの基本形があります。

タイプ1(並列-直列): 負荷と並列に接続する素子 + 伝送線路と直列に接続する素子

タイプ2(直列-並列): 負荷と直列に接続する素子 + 伝送線路と並列に接続する素子

どちらのタイプを選ぶかは、負荷インピーダンスが $Z_0$ より大きいか小さいかで決まります。スミスチャート上で負荷点が $r = 1$ 円の内側にあるか外側にあるかに対応します。

設計の数式的手順

負荷インピーダンスが $Z_L = R_L + jX_L$ で、特性インピーダンス $Z_0$ に整合させる場合を考えます。

$R_L > Z_0$ の場合(タイプ1: 並列素子 → 直列素子)

まず負荷に並列素子 $jB$ を接続して、実部を $Z_0$ に合わせます。次に直列素子 $jX$ で虚部をキャンセルします。

並列素子のサセプタンス $B$ は次の2次方程式から求まります。

$$ B = \frac{X_L \pm \sqrt{R_L/Z_0} \cdot \sqrt{R_L^2 + X_L^2 – Z_0 R_L}}{R_L^2 + X_L^2} $$

直列素子のリアクタンス $X$ は次式で求まります。

$$ X = \frac{1}{B} + \frac{X_L Z_0}{R_L} – \frac{Z_0}{B R_L} $$

$R_L < Z_0$ の場合(タイプ2: 直列素子 → 並列素子)

まず負荷に直列素子 $jX$ を接続して、並列回路のコンダクタンスを $1/Z_0$ に合わせます。

直列素子のリアクタンス $X$ は、

$$ X = \pm \sqrt{R_L(Z_0 – R_L)} – X_L $$

並列素子のサセプタンス $B$ は、

$$ B = \pm \frac{\sqrt{(Z_0 – R_L)/R_L}}{Z_0} $$

$\pm$ の符号は2つの解に対応し、一方はインダクタとキャパシタの組み合わせ、もう一方はキャパシタとインダクタの組み合わせです。設計者は帯域幅やQ値の観点から適切な解を選択します。

スミスチャート上での解釈

L型整合をスミスチャート上で視覚化すると、設計の本質がよくわかります。

  1. 負荷点 $Z_L$ からスタート
  2. 並列素子の追加: 等コンダクタンス円に沿って移動し、$r = 1$ 円(アドミタンスチャートでは $g = 1$ 円)と交わる点まで移動
  3. 直列素子の追加: 等抵抗円($r = 1$)に沿って中心($z = 1$、整合点)まで移動

この2ステップで、任意の負荷インピーダンスを $Z_0$ に整合させることができます。

ここまでで、集中定数素子による整合方法を学びました。次に、伝送線路を使った分布定数的な整合手法である $\lambda/4$ 変成器を見ていきましょう。

$\lambda/4$ 変成器

原理

$\lambda/4$ 変成器(quarter-wave transformer)は、長さが $\lambda/4$(4分の1波長)の伝送線路セクションを挿入してインピーダンス整合を行う手法です。特にマイクロ波帯で広く使われます。

原理は非常に直感的です。長さ $l$ の伝送線路(特性インピーダンス $Z_1$)の入力インピーダンスは、負荷 $Z_L$ に対して次式で与えられます。

$$ Z_{\text{in}} = Z_1 \frac{Z_L + jZ_1 \tan(\beta l)}{Z_1 + jZ_L \tan(\beta l)} $$

$l = \lambda/4$ のとき、$\beta l = \pi/2$ なので $\tan(\beta l) \to \infty$ です。このとき入力インピーダンスは極限操作により次のようになります。

分子・分母を $\tan(\beta l)$ で割ると、

$$ Z_{\text{in}} = Z_1 \frac{Z_L / \tan(\beta l) + jZ_1}{Z_1 / \tan(\beta l) + jZ_L} $$

$\tan(\beta l) \to \infty$ の極限で、

$$ Z_{\text{in}} = Z_1 \frac{jZ_1}{jZ_L} = \frac{Z_1^2}{Z_L} $$

したがって、$Z_{\text{in}} = Z_0$ とするには、

$$ Z_1 = \sqrt{Z_0 Z_L} $$

と選べばよいのです。つまり、$\lambda/4$ 変成器の特性インピーダンスを送信側と負荷側のインピーダンスの幾何平均に設定すれば、完全な整合が実現されます。

$\lambda/4$ 変成器の帯域幅

$\lambda/4$ 変成器の欠点は、整合が完全に達成されるのが1つの周波数(設計周波数)だけであることです。設計周波数から離れると、伝送線路の長さは正確に $\lambda/4$ ではなくなり、反射が増加します。

VSWR $< S$ を許容するとき、帯域幅は近似的に次式で与えられます。

$$ \frac{\Delta f}{f_0} \approx \frac{4}{\pi} \arccos\left(\frac{2\Gamma_m}{\sqrt{1-\Gamma_m^2}} \cdot \frac{\sqrt{Z_0 Z_L}}{|Z_L – Z_0|}\right) $$

ここで $\Gamma_m$ は許容される最大反射係数です。

$Z_L / Z_0$ のインピーダンス比が大きいほど帯域幅は狭くなります。広帯域の整合が必要な場合は、多段 $\lambda/4$ 変成器(複数のセクションを縦続接続)やテーパー状の変成器を使用します。

数値例

50 $\Omega$ の伝送線路に 200 $\Omega$ の純抵抗負荷を整合させる場合を考えましょう。

$$ Z_1 = \sqrt{50 \times 200} = \sqrt{10000} = 100 \; \Omega $$

100 $\Omega$ の特性インピーダンスを持つ長さ $\lambda/4$ の伝送線路を挿入すれば、完全な整合が達成されます。

周波数 10 GHz($\lambda = 30$ mm)の場合、$\lambda/4 = 7.5$ mm の伝送線路が必要です。マイクロストリップ線路の場合、線幅を調整することで特性インピーダンスを100 $\Omega$ に設定できます。

ここまでで、集中定数素子と分布定数素子の両方による整合手法を学びました。次に、Pythonを使ってスミスチャート上でインピーダンスの挙動を可視化し、整合設計を実践しましょう。

Pythonでスミスチャートの描画

スミスチャートの基本描画

まず、スミスチャートの骨格(等抵抗円と等リアクタンス円)を描画する関数を実装します。

import numpy as np
import matplotlib.pyplot as plt

def draw_smith_chart(ax, color_grid="#444444", alpha_grid=0.4):
    """スミスチャートの等抵抗円と等リアクタンス円を描画"""
    # 単位円(外枠)
    theta_circle = np.linspace(0, 2 * np.pi, 361)
    ax.plot(np.cos(theta_circle), np.sin(theta_circle), color="white", linewidth=1.5)

    # 等抵抗円 r = const.
    r_values = [0, 0.2, 0.5, 1.0, 2.0, 5.0]
    for r in r_values:
        center_x = r / (1 + r)
        radius = 1 / (1 + r)
        circle_theta = np.linspace(0, 2 * np.pi, 361)
        cx = center_x + radius * np.cos(circle_theta)
        cy = radius * np.sin(circle_theta)
        # 単位円内部のみ描画
        mask = cx**2 + cy**2 <= 1.01
        cx_masked = np.where(mask, cx, np.nan)
        cy_masked = np.where(mask, cy, np.nan)
        ax.plot(cx_masked, cy_masked, color=color_grid, linewidth=0.8, alpha=alpha_grid)

    # 等リアクタンス円 x = const.
    x_values = [0.2, 0.5, 1.0, 2.0, 5.0]
    for x in x_values:
        center_x = 1.0
        center_y = 1.0 / x
        radius = 1.0 / abs(x)
        arc_theta = np.linspace(0, 2 * np.pi, 361)
        cx = center_x + radius * np.cos(arc_theta)
        cy_pos = center_y + radius * np.sin(arc_theta)  # +x
        cy_neg = -center_y + radius * np.sin(arc_theta)  # -x
        # 単位円内部のみ
        for cy in [cy_pos, cy_neg]:
            mask = cx**2 + cy**2 <= 1.01
            cx_masked = np.where(mask, cx, np.nan)
            cy_masked = np.where(mask, cy, np.nan)
            ax.plot(cx_masked, cy_masked, color=color_grid, linewidth=0.8,
                    alpha=alpha_grid)

    # 実軸
    ax.plot([-1, 1], [0, 0], color=color_grid, linewidth=0.8, alpha=alpha_grid)

    # チャートの設定
    ax.set_xlim([-1.15, 1.15])
    ax.set_ylim([-1.15, 1.15])
    ax.set_aspect("equal")
    ax.set_facecolor("#1a1a2e")
    ax.axis("off")

def z_to_gamma(z):
    """正規化インピーダンス z から反射係数 Γ を計算"""
    return (z - 1) / (z + 1)

def gamma_to_z(gamma):
    """反射係数 Γ から正規化インピーダンス z を計算"""
    return (1 + gamma) / (1 - gamma)

# スミスチャートの描画テスト
fig, ax = plt.subplots(figsize=(8, 8))
fig.patch.set_facecolor("#1a1a2e")
draw_smith_chart(ax)

# いくつかのインピーダンス点をプロット
impedances = {
    "50 Ω (matched)": 1.0 + 0j,
    "100 + j50 Ω": 2.0 + 1.0j,
    "25 - j30 Ω": 0.5 - 0.6j,
    "Open": 100 + 0j,
    "Short": 0.01 + 0j,
}

colors = ["#00e5ff", "#e040fb", "#ffca28", "#76ff03", "#ff6e40"]
for (label, z), color in zip(impedances.items(), colors):
    gamma = z_to_gamma(z)
    ax.plot(gamma.real, gamma.imag, "o", color=color, markersize=10)
    ax.annotate(label, (gamma.real, gamma.imag), fontsize=9, color=color,
                textcoords="offset points", xytext=(10, 10))

ax.set_title("Smith Chart with Impedance Points", fontsize=14, color="white", pad=15)
plt.tight_layout()
plt.savefig("smith_chart_basic.png", dpi=150, bbox_inches="tight",
            facecolor="#1a1a2e")
plt.show()

スミスチャート上の各点の位置から、直感的にインピーダンスの性質が読み取れます。

  1. 中心($z = 1$): 完全整合点。反射係数 $\Gamma = 0$ で、反射は全くありません。設計の目標は常にこの点に到達することです。

  2. 右端($z \gg 1$): 開放端に近い高インピーダンス。$\Gamma \approx +1$ で、ほぼ全反射(同相反射)です。

  3. 左端($z \ll 1$): 短絡に近い低インピーダンス。$\Gamma \approx -1$ で、ほぼ全反射(逆相反射)です。

  4. 上半面($x > 0$): 誘導性(インダクティブ)成分を持つインピーダンスです。

  5. 下半面($x < 0$): 容量性(キャパシティブ)成分を持つインピーダンスです。

L型整合回路の設計と可視化

L型整合回路の設計をスミスチャート上で可視化しましょう。負荷 $Z_L = 100 + j50 \; \Omega$ を $Z_0 = 50 \; \Omega$ に整合させる例を実装します。

import numpy as np
import matplotlib.pyplot as plt

def draw_smith_chart(ax, color_grid="#444444", alpha_grid=0.4):
    """スミスチャートの描画(簡略版)"""
    theta_circle = np.linspace(0, 2 * np.pi, 361)
    ax.plot(np.cos(theta_circle), np.sin(theta_circle), color="white", linewidth=1.5)

    r_values = [0, 0.2, 0.5, 1.0, 2.0, 5.0]
    for r in r_values:
        center_x = r / (1 + r)
        radius = 1 / (1 + r)
        cx = center_x + radius * np.cos(theta_circle)
        cy = radius * np.sin(theta_circle)
        mask = cx**2 + cy**2 <= 1.01
        ax.plot(np.where(mask, cx, np.nan), np.where(mask, cy, np.nan),
                color=color_grid, linewidth=0.8, alpha=alpha_grid)

    x_values = [0.2, 0.5, 1.0, 2.0, 5.0]
    for x in x_values:
        radius = 1.0 / abs(x)
        cx = 1.0 + radius * np.cos(theta_circle)
        for sign in [1, -1]:
            cy = sign / x + radius * np.sin(theta_circle)
            mask = cx**2 + cy**2 <= 1.01
            ax.plot(np.where(mask, cx, np.nan), np.where(mask, cy, np.nan),
                    color=color_grid, linewidth=0.8, alpha=alpha_grid)

    ax.plot([-1, 1], [0, 0], color=color_grid, linewidth=0.8, alpha=alpha_grid)
    ax.set_xlim([-1.15, 1.15])
    ax.set_ylim([-1.15, 1.15])
    ax.set_aspect("equal")
    ax.set_facecolor("#1a1a2e")
    ax.axis("off")

# 設計パラメータ
Z0 = 50          # 特性インピーダンス [Ω]
ZL = 100 + 50j   # 負荷インピーダンス [Ω]
f = 1e9          # 周波数 [Hz]

zL = ZL / Z0     # 正規化
yL = 1 / zL      # 正規化アドミタンス

# R_L > Z0 なのでタイプ1(並列→直列)
RL = ZL.real
XL = ZL.imag

# 並列素子のサセプタンス B の計算
disc = RL / Z0 * (RL**2 + XL**2 - Z0 * RL)
if disc < 0:
    print("タイプ1では整合できません")
else:
    B1 = (XL + np.sqrt(disc)) / (RL**2 + XL**2)
    B2 = (XL - np.sqrt(disc)) / (RL**2 + XL**2)

    # 直列素子のリアクタンス X
    X1 = 1/B1 + XL*Z0/RL - Z0/(B1*RL)
    X2 = 1/B2 + XL*Z0/RL - Z0/(B2*RL)

# スミスチャート上の軌跡を計算
fig, axes = plt.subplots(1, 2, figsize=(16, 8))
fig.patch.set_facecolor("#1a1a2e")

solutions = [(B1, X1, "Solution 1"), (B2, X2, "Solution 2")]
colors_sol = [["#00e5ff", "#e040fb"], ["#ffca28", "#76ff03"]]

for idx, (B, X, title) in enumerate(solutions):
    ax = axes[idx]
    draw_smith_chart(ax)

    # ステップ1: 並列素子 jB を追加(アドミタンス面上で等gに沿って移動)
    # 負荷のアドミタンス yL から yL + jB*Z0 へ
    b_norm = B * Z0  # 正規化サセプタンス
    n_points = 100
    b_sweep = np.linspace(0, b_norm, n_points)
    z_path1 = []
    for b in b_sweep:
        y = yL + 1j * b
        z = 1 / y
        gamma = (z - 1) / (z + 1)
        z_path1.append(gamma)
    z_path1 = np.array(z_path1)
    ax.plot(z_path1.real, z_path1.imag, color=colors_sol[idx][0], linewidth=2.5,
            label=f"Step 1: Parallel B={B*1e3:.2f} mS")

    # ステップ1終了後のインピーダンス
    y_after = yL + 1j * b_norm
    z_after = 1 / y_after

    # ステップ2: 直列素子 jX を追加(等rに沿って移動)
    x_norm = -X / Z0  # 正規化リアクタンス(符号注意: 打ち消し)
    x_sweep = np.linspace(0, x_norm, n_points)
    z_path2 = []
    for x in x_sweep:
        z = z_after - 1j * x  # 直列リアクタンスを引いて整合点へ
        gamma = (z - 1) / (z + 1)
        z_path2.append(gamma)
    z_path2 = np.array(z_path2)

    # 正しく計算: 直列 jX を加える(Z_after_physical + jX)
    z_phys_after = z_after * Z0
    x_sweep2 = np.linspace(0, -X, n_points)
    z_path2 = []
    for x in x_sweep2:
        z_phys = z_phys_after + 1j * x
        z_norm = z_phys / Z0
        gamma = (z_norm - 1) / (z_norm + 1)
        z_path2.append(gamma)
    z_path2 = np.array(z_path2)
    ax.plot(z_path2.real, z_path2.imag, color=colors_sol[idx][1], linewidth=2.5,
            label=f"Step 2: Series X={-X:.1f} Ω")

    # 始点と終点
    gamma_L = (zL - 1) / (zL + 1)
    ax.plot(gamma_L.real, gamma_L.imag, "o", color="white", markersize=12, zorder=5)
    ax.annotate(f"$Z_L$ = {ZL:.0f} Ω", (gamma_L.real, gamma_L.imag),
                fontsize=10, color="white", textcoords="offset points", xytext=(10, 10))
    ax.plot(0, 0, "*", color="#ff6e40", markersize=15, zorder=5)
    ax.annotate("Matched", (0, 0), fontsize=10, color="#ff6e40",
                textcoords="offset points", xytext=(10, -15))

    ax.set_title(title, fontsize=14, color="white", pad=15)
    ax.legend(fontsize=10, loc="lower left", facecolor="#1a1a2e",
              edgecolor="white", labelcolor="white")

plt.tight_layout()
plt.savefig("l_matching_smith.png", dpi=150, bbox_inches="tight",
            facecolor="#1a1a2e")
plt.show()

# 設計結果の表示
omega = 2 * np.pi * f
print("=" * 50)
print(f"負荷: Z_L = {ZL} Ω")
print(f"目標: Z_0 = {Z0} Ω")
print(f"周波数: {f/1e9:.1f} GHz")
print("=" * 50)

for i, (B, X, title) in enumerate(solutions):
    print(f"\n{title}:")
    print(f"  並列サセプタンス B = {B*1e3:.3f} mS")
    if B > 0:
        C = B / omega
        print(f"  → 並列キャパシタ C = {C*1e12:.2f} pF")
    else:
        L = -1 / (omega * B)
        print(f"  → 並列インダクタ L = {L*1e9:.2f} nH")

    print(f"  直列リアクタンス X = {-X:.2f} Ω")
    if -X > 0:
        L = -X / omega
        print(f"  → 直列インダクタ L = {L*1e9:.2f} nH")
    else:
        C = 1 / (omega * X)
        print(f"  → 直列キャパシタ C = {C*1e12:.2f} pF")

L型整合のスミスチャート上の軌跡から、整合のプロセスが視覚的に理解できます。

  1. 2つの解の存在: L型整合には常に2つの解があり、それぞれ異なる経路でチャートの中心(整合点)に到達します。一方はキャパシタ+インダクタの組み合わせ、もう一方はインダクタ+キャパシタの組み合わせになります。

  2. 並列素子の効果: 並列素子を加えると、等コンダクタンス円に沿って移動します(アドミタンスチャート上の操作)。$r = 1$ 円($g = 1$ 円)と交差する点まで移動するのが第1ステップです。

  3. 直列素子の効果: 直列素子を加えると、等抵抗円($r = 1$)に沿ってチャートの中心まで移動します。これが第2ステップです。

$\lambda/4$ 変成器の帯域特性

$\lambda/4$ 変成器の帯域特性をPythonで計算し、可視化しましょう。

import numpy as np
import matplotlib.pyplot as plt

def quarter_wave_vswr(f, f0, Z0, ZL):
    """λ/4変成器のVSWRを周波数の関数として計算"""
    Z1 = np.sqrt(Z0 * ZL)  # 変成器の特性インピーダンス
    beta_l = (np.pi / 2) * (f / f0)  # β × l(設計周波数でπ/2)

    # 入力インピーダンス
    tan_bl = np.tan(beta_l)
    # 特異点の処理
    with np.errstate(divide="ignore", invalid="ignore"):
        Zin = Z1 * (ZL + 1j * Z1 * tan_bl) / (Z1 + 1j * ZL * tan_bl)

    # 反射係数
    Gamma = (Zin - Z0) / (Zin + Z0)
    Gamma_mag = np.abs(Gamma)

    # VSWR
    vswr = (1 + Gamma_mag) / (1 - Gamma_mag + 1e-10)
    return vswr, Gamma_mag

f0 = 10e9  # 設計周波数 [Hz]
Z0 = 50    # 特性インピーダンス [Ω]

f = np.linspace(0.1 * f0, 2.5 * f0, 1000)

# 異なるインピーダンス比
ZL_values = [75, 100, 200, 500]

fig, axes = plt.subplots(1, 2, figsize=(14, 6))

colors = ["#00e5ff", "#e040fb", "#ffca28", "#76ff03"]
for ZL, color in zip(ZL_values, colors):
    vswr, gamma = quarter_wave_vswr(f, f0, Z0, ZL)
    Z1 = np.sqrt(Z0 * ZL)

    axes[0].plot(f / f0, vswr, color=color, linewidth=2,
                 label=f"$Z_L$ = {ZL} Ω ($Z_1$ = {Z1:.1f} Ω)")
    axes[1].plot(f / f0, -20 * np.log10(gamma + 1e-10), color=color, linewidth=2,
                 label=f"$Z_L$ = {ZL} Ω")

# VSWR = 2 の基準線
axes[0].axhline(y=2, color="red", linestyle="--", alpha=0.5, linewidth=1)
axes[0].text(0.15, 2.1, "VSWR = 2", fontsize=10, color="red")

axes[0].set_xlabel(r"$f / f_0$", fontsize=13)
axes[0].set_ylabel("VSWR", fontsize=13)
axes[0].set_title("Quarter-Wave Transformer: VSWR vs Frequency", fontsize=13)
axes[0].legend(fontsize=10, loc="upper left")
axes[0].grid(True, alpha=0.3)
axes[0].set_xlim([0.1, 2.5])
axes[0].set_ylim([1, 12])

axes[1].axhline(y=10, color="red", linestyle="--", alpha=0.5, linewidth=1)
axes[1].text(0.15, 11, "RL = 10 dB", fontsize=10, color="red")

axes[1].set_xlabel(r"$f / f_0$", fontsize=13)
axes[1].set_ylabel("Return Loss [dB]", fontsize=13)
axes[1].set_title("Quarter-Wave Transformer: Return Loss vs Frequency", fontsize=13)
axes[1].legend(fontsize=10, loc="lower left")
axes[1].grid(True, alpha=0.3)
axes[1].set_xlim([0.1, 2.5])
axes[1].set_ylim([0, 50])

plt.tight_layout()
plt.savefig("quarter_wave_bandwidth.png", dpi=150, bbox_inches="tight")
plt.show()

$\lambda/4$ 変成器の帯域特性から、いくつかの重要な知見が読み取れます。

  1. 設計周波数での完全整合: $f = f_0$ でVSWR = 1(リターンロス = $\infty$ dB)となり、完全な整合が達成されます。これは $\lambda/4$ 変成器の設計原理から当然の結果です。

  2. インピーダンス比と帯域幅の関係: $Z_L / Z_0$ の比が大きいほど(インピーダンスの不整合が大きいほど)、VSWR < 2 を満たす帯域幅が狭くなります。$Z_L = 75 \; \Omega$(比1.5)ではかなり広帯域ですが、$Z_L = 500 \; \Omega$(比10)では帯域幅が大幅に制限されます。

  3. 周期性: VSWRは $f/f_0$ に対して周期的な挙動を示します。$f = f_0$ の奇数倍($f_0$, $3f_0$, $5f_0$, …)で完全整合が達成されます。これは伝送線路の長さが $\lambda/4$ の奇数倍になる周波数に対応しています。

  4. 偶数倍での全反射: $f = 2f_0$, $4f_0$, … では伝送線路の長さが $\lambda/2$ の整数倍になり、変成器が存在しないのと同じ効果になります。このとき VSWR は $Z_L/Z_0$ に等しくなります。

実用的な整合設計のポイント

実際のアンテナ整合設計では、理論的な計算だけでなく以下のポイントを考慮する必要があります。

帯域幅の確保

アンテナの入力インピーダンスは周波数によって変化するため、単一周波数で整合しても帯域全体で良好な整合が得られるとは限りません。広帯域な整合を実現するには、以下の手法が有効です。

  • 多段整合回路: 複数のL型セクションやλ/4変成器を縦続接続することで、帯域幅を広げることができます
  • タペルド変成器: 特性インピーダンスを連続的に変化させる変成器で、帯域幅は段数を増やすのと同様の効果があります
  • 帯域制約の理論: ボーデ・ファノの限界として知られる理論により、任意の受動回路で達成可能な帯域幅には基本的な上限があることが示されています

素子の寄生成分

集中定数素子(インダクタ、キャパシタ)は、理想的な素子とは異なり、寄生成分を持ちます。インダクタには寄生キャパシタンスと寄生抵抗が、キャパシタには寄生インダクタンスと寄生抵抗があります。高周波では、これらの寄生成分の影響が大きくなるため、素子の自己共振周波数(SRF)以下で使用する必要があります。

温度・環境依存性

アンテナのインピーダンスは、温度、湿度、近接物体などの環境条件によって変化します。特に手持ちの携帯端末では、人体の影響でインピーダンスが大きく変動します。ロバストな整合設計では、これらの変動を考慮したマージンを設ける必要があります。

まとめ

本記事では、アンテナのインピーダンス整合について、反射の物理からスミスチャート、具体的な整合回路の設計まで一貫した流れで解説しました。

  • 反射係数とVSWR: 反射係数 $\Gamma = (Z_L – Z_0)/(Z_L + Z_0)$ で反射の大きさを定量化。VSWR < 2(RL > 10 dB)が実用的な基準
  • スミスチャート: 複素インピーダンスと反射係数を同時に可視化するツール。直列/並列素子の追加が等抵抗円/等コンダクタンス円に沿った移動として表現される
  • L型整合回路: 2つのリアクタンス素子で任意のインピーダンスを整合。常に2つの解が存在し、Q値や帯域幅の観点から選択する
  • $\lambda/4$ 変成器: $Z_1 = \sqrt{Z_0 Z_L}$ の伝送線路セクションで整合。帯域幅はインピーダンス比に依存
  • 実用上の考慮: 帯域幅の確保、寄生成分、環境依存性を考慮した設計が必要

インピーダンス整合は、高周波工学における最も基本的かつ重要な技術です。この理解を基盤として、より高度なアンテナ設計やRFフロントエンド設計に進むことができます。

次のステップとして、以下の記事も参考にしてください。