共振回路(直列共振と並列共振)

共振(resonance)は、回路のリアクタンスが打ち消し合い、特定の周波数でインピーダンスが極端に小さく(直列)または大きく(並列)なる現象です。ラジオの選局、フィルタ回路、発振器など、電子工学の多くの応用の基盤となる重要な概念です。

本記事の内容

  • 直列共振の条件と特性
  • Q値(Quality Factor)と帯域幅
  • 並列共振の条件と特性
  • 選択度
  • フィルタへの応用
  • Pythonでの周波数応答の可視化

前提知識

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

直列共振

共振条件

RLC直列回路のインピーダンスは:

$$ Z = R + j\left(\omega L – \frac{1}{\omega C}\right) $$

虚部がゼロになるとき共振が起こります:

$$ \omega L – \frac{1}{\omega C} = 0 $$

$$ \boxed{\omega_0 = \frac{1}{\sqrt{LC}}, \quad f_0 = \frac{1}{2\pi\sqrt{LC}}} $$

共振時の特性

共振時にはインピーダンスが最小になります:

$$ Z(\omega_0) = R $$

電流は最大値 $I_\text{max} = V/R$ となり、LとCの両端にはそれぞれ $Q$ 倍の電圧が発生します。

Q値(Quality Factor)

Q値は共振の鋭さ(選択度)を表すパラメータです:

$$ \boxed{Q = \frac{\omega_0 L}{R} = \frac{1}{\omega_0 CR} = \frac{1}{R}\sqrt{\frac{L}{C}}} $$

Q値の物理的意味:

$$ Q = 2\pi \times \frac{\text{蓄積エネルギー}}{\text{1周期あたりの消費エネルギー}} $$

共振時のL, C両端の電圧:

$$ V_L = V_C = QV $$

帯域幅

電流が最大値の $1/\sqrt{2}$ 以上となる周波数範囲を帯域幅 $B$ といいます:

$$ \boxed{B = \frac{\omega_0}{Q} = \frac{R}{L}} $$

半値周波数 $\omega_1, \omega_2$ は:

$$ \omega_1 = \omega_0\left(\sqrt{1 + \frac{1}{4Q^2}} – \frac{1}{2Q}\right), \quad \omega_2 = \omega_0\left(\sqrt{1 + \frac{1}{4Q^2}} + \frac{1}{2Q}\right) $$

$Q \gg 1$ の近似では:

$$ \omega_1 \approx \omega_0 – \frac{B}{2}, \quad \omega_2 \approx \omega_0 + \frac{B}{2} $$

並列共振

共振条件

RLC並列回路のアドミタンスは:

$$ Y = \frac{1}{R} + j\left(\omega C – \frac{1}{\omega L}\right) $$

虚部がゼロのとき共振:

$$ \omega C – \frac{1}{\omega L} = 0 \implies \omega_0 = \frac{1}{\sqrt{LC}} $$

共振周波数は直列共振と同じです。

共振時の特性

並列共振ではインピーダンスが最大になります:

$$ Z(\omega_0) = R $$

電流は最小値 $I_\text{min} = V/R$ となります。LとCには $Q$ 倍の電流が環流します。

並列回路のQ値:

$$ \boxed{Q = \omega_0 CR = \frac{R}{\omega_0 L} = R\sqrt{\frac{C}{L}}} $$

フィルタへの応用

共振回路はフィルタとして機能します:

フィルタ種類 構成 特性
バンドパス 直列RLCの $R$ 両端出力 共振周波数付近を通過
バンドストップ 直列RLCの $LC$ 両端出力 共振周波数付近を遮断

伝達関数(バンドパス):

$$ H(j\omega) = \frac{R}{R + j(\omega L – 1/\omega C)} = \frac{1}{1 + jQ\left(\frac{\omega}{\omega_0} – \frac{\omega_0}{\omega}\right)} $$

Pythonでの実装

import numpy as np
import matplotlib.pyplot as plt

# 回路パラメータ
L = 10e-3     # [H]
C = 100e-9    # [F]

# 共振周波数
f0 = 1.0 / (2 * np.pi * np.sqrt(L * C))
omega0 = 2 * np.pi * f0
print(f"共振周波数 f0 = {f0:.1f} Hz")

# 周波数範囲
f = np.logspace(np.log10(f0/10), np.log10(f0*10), 2000)
omega = 2 * np.pi * f

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

# (a) 直列共振: Q値の異なる周波数応答
Q_vals = [2, 5, 10, 50]
for Q in Q_vals:
    R = omega0 * L / Q
    Z = R + 1j * (omega * L - 1.0/(omega * C))
    I_norm = 1.0 / np.abs(Z) * R  # 正規化
    axes[0, 0].plot(f/f0, I_norm, linewidth=2, label=f'Q = {Q}')

axes[0, 0].set_xlabel('$f / f_0$')
axes[0, 0].set_ylabel('$|I| / I_{max}$')
axes[0, 0].set_title('直列共振の周波数応答(電流)')
axes[0, 0].legend()
axes[0, 0].set_xlim(0, 3)
axes[0, 0].grid(True, alpha=0.3)

# (b) 並列共振: Q値の異なる周波数応答
for Q in Q_vals:
    R_p = Q / (omega0 * C)
    Y = 1.0/R_p + 1j * (omega * C - 1.0/(omega * L))
    Z_p = 1.0 / Y
    Z_norm = np.abs(Z_p) / R_p
    axes[0, 1].plot(f/f0, Z_norm, linewidth=2, label=f'Q = {Q}')

axes[0, 1].set_xlabel('$f / f_0$')
axes[0, 1].set_ylabel('$|Z| / Z_{max}$')
axes[0, 1].set_title('並列共振の周波数応答(インピーダンス)')
axes[0, 1].legend()
axes[0, 1].set_xlim(0, 3)
axes[0, 1].grid(True, alpha=0.3)

# (c) バンドパスフィルタの伝達関数
for Q in [2, 5, 10, 50]:
    H = 1.0 / (1.0 + 1j * Q * (f/f0 - f0/f))
    axes[1, 0].semilogx(f, 20*np.log10(np.abs(H)), linewidth=2, label=f'Q = {Q}')

axes[1, 0].set_xlabel('周波数 [Hz]')
axes[1, 0].set_ylabel('ゲイン [dB]')
axes[1, 0].set_title('バンドパスフィルタの伝達関数')
axes[1, 0].axhline(-3, color='gray', linestyle='--', alpha=0.5, label='-3 dB')
axes[1, 0].legend()
axes[1, 0].grid(True, alpha=0.3, which='both')
axes[1, 0].set_ylim(-40, 5)

# (d) Q値と帯域幅の関係
Q_range = np.linspace(1, 100, 500)
B_range = f0 / Q_range

axes[1, 1].plot(Q_range, B_range, 'b-', linewidth=2)
axes[1, 1].set_xlabel('Q値')
axes[1, 1].set_ylabel('帯域幅 $B$ [Hz]')
axes[1, 1].set_title(f'Q値と帯域幅の関係($f_0 = {f0:.0f}$ Hz)')
axes[1, 1].grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('resonance_circuit.png', dpi=150, bbox_inches='tight')
plt.show()

まとめ

本記事では、共振回路について解説しました。

  • 共振周波数: $\omega_0 = 1/\sqrt{LC}$(直列・並列とも同じ)
  • 直列共振: $|Z|$ 最小 → 電流最大、L・C両端に $Q$ 倍の電圧
  • 並列共振: $|Z|$ 最大 → 電流最小、L・Cに $Q$ 倍の環流電流
  • Q値: 共振の鋭さ、$Q = \omega_0 L / R$(直列)、$Q = R / (\omega_0 L)$(並列)
  • 帯域幅: $B = f_0 / Q$($Q$ が大きいほど狭帯域で高選択度)
  • バンドパス/バンドストップフィルタへの応用

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