ダイオードの理論 — pn接合の物理とI-V特性

電源アダプタからスマートフォンの充電器まで、交流を直流に変換する「整流」は電子回路の最も基本的な操作の一つです。この整流を実現する最もシンプルな素子がダイオードです。では、なぜダイオードは一方向にしか電流を流さないのでしょうか。

その答えは、n型半導体とp型半導体を接合したときに自然に生じる空乏層(depletion layer) という特殊な領域にあります。空乏層内の電界が、キャリアの流れを一方向に制限するのです。

ダイオードの物理を理解すると、以下のような幅広い応用が見えてきます。

  • 電源回路設計: 整流回路の設計と損失の見積もり
  • 通信回路: 検波器や周波数ミキサの動作原理
  • 光エレクトロニクス: LEDや太陽電池の動作メカニズム
  • 保護回路: ツェナーダイオードによる電圧クランプの設計

本記事の内容

  • pn接合の形成と空乏層の物理
  • ダイオード方程式 $I = I_S(e^{V/nV_T} – 1)$ の導出
  • 順方向・逆方向特性の解析
  • 各種ダイオード(ショットキー、ツェナー、LED)の特徴
  • 整流回路のPythonシミュレーション

前提知識

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

pn接合の形成

接合前 — 2つの独立した半導体

pn接合の物理を理解するために、まずn型半導体とp型半導体を別々に考えましょう。

n型半導体はドナー不純物(たとえばリン)のドーピングによって多数キャリアが電子(濃度 $n_n \approx N_D$)です。一方、p型半導体はアクセプタ不純物(たとえばボロン)のドーピングによって多数キャリアが正孔(濃度 $p_p \approx N_A$)です。

それぞれの領域を独立に考えると、内部は電荷中性であり、マクロな電界は存在しません。しかし、この2つの領域を接触させると、劇的な変化が起こります。

接合直後 — 拡散とキャリアの再結合

n型領域には電子が大量にあり、p型領域には正孔が大量にあります。2つを接触させると、濃度勾配に従ってキャリアが拡散を始めます。

  • n型側の電子がp型側へ拡散 → p型側で正孔と再結合して消滅
  • p型側の正孔がn型側へ拡散 → n型側で電子と再結合して消滅

この状況を水槽のたとえで考えてみましょう。仕切りの左側に赤インク(正孔)、右側に青インク(電子)が入った水槽があります。仕切りを取り除くと、それぞれのインクが反対側に拡散し、混ざり合った部分ではインクが中和(再結合)して透明になります。

空乏層の形成

キャリアが拡散して再結合した領域では、移動可能なキャリアは消滅しましたが、結晶格子に固定された不純物イオンが残ります。

  • n型側: ドナーイオン $N_D^+$(正の固定電荷)
  • p型側: アクセプタイオン $N_A^-$(負の固定電荷)

これらの固定電荷が空乏層(depletion region) を形成し、接合面を挟んで内部電界 $\mathcal{E}$ が生じます。この電界はn型側(正)からp型側(負)に向かい、キャリアのさらなる拡散を阻止する方向に働きます。

最終的に、拡散による電流とドリフト(電界駆動)による電流がバランスした熱平衡状態に達します。この平衡状態が、pn接合の静的な性質を決定します。

平衡状態でどのような電位差が生じるかを、次に定量的に求めてみましょう。

内蔵電位の導出

熱平衡条件

熱平衡状態では、pn接合全体にわたってフェルミエネルギー $E_F$ が一定です。このとき、空乏層を横切る電位差を内蔵電位(built-in potential) $V_{bi}$ と呼びます。

n型側とp型側の電子濃度はそれぞれ次のように書けます。

$$ n_n = N_c \exp\left(-\frac{E_c^{(n)} – E_F}{k_B T}\right) \approx N_D $$

$$ n_p = N_c \exp\left(-\frac{E_c^{(p)} – E_F}{k_B T}\right) = \frac{n_i^2}{N_A} $$

ここで $E_c^{(n)}$ と $E_c^{(p)}$ はそれぞれn型側とp型側での伝導帯の底のエネルギーです。

2つの式の比を取ると $N_c$ と $E_F$ が消えて、

$$ \frac{n_n}{n_p} = \exp\left(\frac{E_c^{(p)} – E_c^{(n)}}{k_B T}\right) $$

伝導帯のエネルギー差は電位差 $V_{bi}$ と素電荷 $q$ を使って $E_c^{(p)} – E_c^{(n)} = qV_{bi}$ と表せるので、

$$ \frac{N_D}{n_i^2/N_A} = \exp\left(\frac{qV_{bi}}{k_B T}\right) $$

$V_{bi}$ について解くと、次の重要な式が得られます。

$$ V_{bi} = \frac{k_B T}{q} \ln\left(\frac{N_A N_D}{n_i^2}\right) = V_T \ln\left(\frac{N_A N_D}{n_i^2}\right) $$

ここで $V_T = k_B T/q \approx 26$ mV(室温)は熱電圧です。

数値例

$N_A = 10^{17}$ cm$^{-3}$、$N_D = 10^{16}$ cm$^{-3}$ のシリコンpn接合では、

$$ V_{bi} = 0.026 \times \ln\left(\frac{10^{17} \times 10^{16}}{(1.5 \times 10^{10})^2}\right) = 0.026 \times \ln\left(\frac{10^{33}}{2.25 \times 10^{20}}\right) $$

$$ = 0.026 \times \ln(4.44 \times 10^{12}) = 0.026 \times 29.12 \approx 0.757 \text{ V} $$

シリコンのpn接合では、内蔵電位は典型的に 0.6〜0.8 V 程度です。この値はダイオードの順方向電圧降下のおおよその目安になります。

内蔵電位が空乏層にどう分布するかを理解するには、空乏層の厚さを求める必要があります。次にポアソン方程式を使って空乏層の解析に進みましょう。

空乏層の解析

空乏近似

空乏層の解析では空乏近似(depletion approximation) を用います。これは、空乏層内では移動可能なキャリアが完全にゼロ、空乏層の外ではキャリア濃度がバルクの値(中性条件)であるという仮定です。

空乏層がn型側に $x_n$、p型側に $x_p$ だけ広がっているとすると、電荷密度 $\rho(x)$ は次のように階段関数で表されます。

$$ \rho(x) = \begin{cases} -qN_A & (-x_p \leq x < 0) \\ +qN_D & (0 \leq x \leq x_n) \\ 0 & (\text{それ以外}) \end{cases} $$

ポアソン方程式と電界分布

1次元のポアソン方程式は次のとおりです。

$$ \frac{d^2 V}{dx^2} = -\frac{\rho(x)}{\epsilon_s} $$

ここで $\epsilon_s$ は半導体の誘電率(シリコンでは $\epsilon_s = 11.7\epsilon_0$)です。

p型側($-x_p \leq x < 0$)で積分すると電界が得られます。

$$ \mathcal{E}(x) = -\frac{dV}{dx} = -\frac{qN_A}{\epsilon_s}(x + x_p) \quad (-x_p \leq x < 0) $$

n型側($0 \leq x \leq x_n$)でも同様に積分して、

$$ \mathcal{E}(x) = -\frac{qN_D}{\epsilon_s}(x_n – x) \quad (0 \leq x \leq x_n) $$

接合面 $x = 0$ での電界の連続性から、電荷中性条件が得られます。

$$ N_A x_p = N_D x_n $$

この条件は、空乏層内の正味の電荷がゼロであること(p型側の負電荷の総量とn型側の正電荷の総量が等しいこと)を意味します。

接合面での最大電界は次のとおりです。

$$ |\mathcal{E}_{\max}| = \frac{qN_A x_p}{\epsilon_s} = \frac{qN_D x_n}{\epsilon_s} $$

空乏層の幅

電界分布を積分して電位差が $V_{bi}$ になる条件から、空乏層の全幅 $W = x_p + x_n$ が求められます。

$$ V_{bi} = \frac{1}{2}|\mathcal{E}_{\max}|W = \frac{q}{2\epsilon_s}\frac{N_A N_D}{N_A + N_D}W^2 $$

$W$ について解くと、

$$ W = \sqrt{\frac{2\epsilon_s}{q}\frac{N_A + N_D}{N_A N_D}V_{bi}} $$

外部電圧 $V$ を印加した場合は、$V_{bi}$ を $(V_{bi} – V)$ に置き換えます(順方向バイアスで $V > 0$、逆方向バイアスで $V < 0$)。

$$ W(V) = \sqrt{\frac{2\epsilon_s}{q}\frac{N_A + N_D}{N_A N_D}(V_{bi} – V)} $$

順方向バイアスでは空乏層が薄くなり(電流が流れやすくなり)、逆方向バイアスでは厚くなる(電流が流れにくくなる)ことが、この式から定量的にわかります。

空乏層の構造がわかったところで、いよいよダイオードのI-V特性を表すショックレーの方程式を導出しましょう。

ダイオード方程式の導出

少数キャリアの注入

順方向バイアス $V > 0$ を印加すると、空乏層が薄くなり、内蔵電位の障壁が $(V_{bi} – V)$ に低下します。この障壁の低下により、n型側からp型側へ電子が、p型側からn型側へ正孔が注入されます。

空乏層端での少数キャリア濃度は、ボルツマン因子で与えられます。

n型側に注入された正孔の濃度($x = x_n$ での値)は次のとおりです。

$$ p_n(x_n) = p_{n0} \exp\left(\frac{qV}{k_B T}\right) $$

ここで $p_{n0} = n_i^2/N_D$ は平衡時の少数キャリア(正孔)濃度です。

同様に、p型側に注入された電子の濃度は次のとおりです。

$$ n_p(-x_p) = n_{p0} \exp\left(\frac{qV}{k_B T}\right) $$

拡散方程式と電流

空乏層の外側では電界が無視でき(中性領域)、少数キャリアの輸送は拡散が支配します。定常状態での少数キャリアの連続方程式は次のとおりです。

$$ D_p \frac{d^2 \Delta p_n}{dx^2} = \frac{\Delta p_n}{\tau_p} $$

ここで $\Delta p_n = p_n – p_{n0}$ は過剰少数キャリア濃度、$\tau_p$ は正孔の少数キャリア寿命です。

この微分方程式の一般解は指数関数であり、境界条件($x = x_n$ での注入濃度、$x \to \infty$ でゼロ)を適用すると次が得られます。

$$ \Delta p_n(x) = \Delta p_n(x_n) \exp\left(-\frac{x – x_n}{L_p}\right) $$

ここで $L_p = \sqrt{D_p \tau_p}$ は正孔の拡散長です。注入された少数キャリアは拡散しながら多数キャリアと再結合し、拡散長 $L_p$ の特性的なスケールで減衰していきます。

ショックレーのダイオード方程式

$x = x_n$ での正孔の拡散電流密度は、フィックの法則から次のように計算されます。

$$ J_p(x_n) = -qD_p \frac{d(\Delta p_n)}{dx}\bigg|_{x=x_n} = \frac{qD_p}{L_p}\Delta p_n(x_n) $$

$\Delta p_n(x_n) = p_{n0}(\exp(qV/k_BT) – 1)$ を代入すると、

$$ J_p = \frac{qD_p p_{n0}}{L_p}\left(\exp\frac{qV}{k_B T} – 1\right) $$

電子についても同様の計算を行い、全電流密度を求めます。

$$ J = J_p + J_n = \left(\frac{qD_p p_{n0}}{L_p} + \frac{qD_n n_{p0}}{L_n}\right)\left(\exp\frac{qV}{k_B T} – 1\right) $$

括弧内の定数部分を逆方向飽和電流密度 $J_S$ と定義すると、

$$ \boxed{J = J_S\left(\exp\frac{qV}{k_B T} – 1\right)} $$

これがショックレーのダイオード方程式(理想ダイオード方程式)です。接合面積 $A$ を掛ければ電流 $I$ が得られます。

$$ I = I_S\left(e^{V/V_T} – 1\right) $$

実際のダイオードでは、空乏層内の再結合電流やその他の非理想的な効果を考慮して理想因子 $n$(通常 1 〜 2)を導入します。

$$ I = I_S\left(e^{V/(nV_T)} – 1\right) $$

$n = 1$ は拡散電流が支配する理想的な場合、$n = 2$ は空乏層内の再結合電流が支配する場合に対応します。

ダイオード方程式が得られたところで、その特性を詳しく見ていきましょう。

順方向・逆方向特性

順方向特性($V > 0$)

順方向バイアスでは $\exp(V/(nV_T)) \gg 1$ なので、

$$ I \approx I_S \exp\left(\frac{V}{nV_T}\right) $$

電流は電圧に対して指数関数的に増加します。具体的な数値を見てみましょう。$I_S = 10^{-14}$ A、$n = 1$ のシリコンダイオードでは、

  • $V = 0.5$ V: $I = 10^{-14} \times e^{0.5/0.026} \approx 2.4 \times 10^{-6}$ A = 2.4 $\mu$A
  • $V = 0.6$ V: $I \approx 1.1 \times 10^{-4}$ A = 0.11 mA
  • $V = 0.7$ V: $I \approx 5.0 \times 10^{-3}$ A = 5.0 mA

わずか 0.2 V の電圧増加で電流が約2000倍になっています。この急激な立ち上がりが「シリコンダイオードの順方向電圧降下は約0.7 V」と言われる理由です。実際には $I_S$ が非常に小さいため、実用的な電流(mAオーダー)を流すには 0.6〜0.7 V 程度の電圧が必要です。

逆方向特性($V < 0$)

逆方向バイアスでは $\exp(V/(nV_T)) \ll 1$ なので、

$$ I \approx -I_S $$

電流は $-I_S$ に飽和し、電圧をさらに下げてもほとんど変化しません。$I_S$ は室温のシリコンで $10^{-14}$〜$10^{-12}$ A 程度と非常に小さいため、逆方向では実質的に電流が流れないとみなせます。

ただし、逆方向電圧がある臨界値(降伏電圧 $V_{BR}$)に達すると、雪崩降伏(アバランシェ降伏)ツェナー降伏によって電流が急激に増加します。このメカニズムについては後述します。

温度特性

ダイオードのI-V特性は温度に強く依存します。$I_S$ は $n_i^2$ に比例し、$n_i^2 \propto \exp(-E_g/(k_BT))$ なので、温度が上がると $I_S$ は急激に増加します。おおよそ、温度が10度C上昇するごとに $I_S$ は約2倍になります。

一方、一定電流を流す場合の順方向電圧は、温度が上がると約 $-2$ mV/度C の割合で低下します。この温度特性は温度センサへの応用に利用される一方、パワーエレクトロニクスでは熱暴走のリスクとして注意が必要です。

それでは、各種のダイオードについてその特徴を見ていきましょう。

各種ダイオード

ショットキーダイオード

ショットキーダイオードは、pn接合ではなく金属と半導体の接触(ショットキー接合) で整流作用を実現します。

金属と半導体の界面にはショットキー障壁 $\phi_B$ が形成されます。この障壁は電子がポテンシャルエネルギーの山を越えるときの「関所」のようなもので、順方向バイアスで障壁が下がり電流が流れ、逆方向では障壁が上がり電流が阻止されます。

pn接合ダイオードとの主な違いは以下のとおりです。

特性 ショットキー pn接合
電流の主体 多数キャリア 少数キャリア
順方向電圧降下 0.15〜0.45 V 0.6〜0.7 V
逆方向飽和電流 大きい 小さい
スイッチング速度 非常に速い 遅い
逆方向耐圧 低い(50〜200 V) 高い

ショットキーダイオードは少数キャリアの蓄積がないため、逆回復時間が非常に短く、高周波整流やスイッチング電源に適しています。一方、逆方向リーク電流が大きく、耐圧が低い傾向があります。

ツェナーダイオード

ツェナーダイオードは、逆方向降伏を積極的に利用するデバイスです。降伏電圧 $V_Z$ は製造時のドーピング濃度によって精密に制御されます。

降伏には2つのメカニズムがあります。

  • ツェナー降伏($V_Z <$ 約5 V): 強い逆方向電界により、価電子帯の電子が直接伝導帯にトンネル(量子トンネリング)する
  • アバランシェ降伏($V_Z >$ 約7 V): 逆方向電界で加速されたキャリアが格子原子と衝突し、新たな電子-正孔対を生成する連鎖過程

ツェナーダイオードは降伏領域で電圧がほぼ一定に保たれるため、定電圧源として回路中で広く利用されています。

発光ダイオード(LED)

LEDはpn接合での電子-正孔の再結合で放出される光エネルギーを利用するデバイスです。再結合で放出されるフォトンのエネルギーはバンドギャップに等しく、

$$ E_{\text{photon}} = h\nu \approx E_g $$

したがって、発光波長はバンドギャップで決まります。

$$ \lambda = \frac{hc}{E_g} = \frac{1.24 \,\mu\text{m} \cdot \text{eV}}{E_g} $$

材料 $E_g$ (eV) 発光色 波長 (nm)
GaP:N 2.26 550
GaAsP 1.98 625
AlGaInP 1.91 650
InGaN 2.64 470
InGaN 3.0 紫外 410

重要なのは、発光には直接遷移型の半導体が必要だということです。シリコンやゲルマニウムは間接遷移型のため、効率的に発光できません。GaAs、GaN、InGaNなどのIII-V族化合物半導体が LED材料として使われるのはこのためです。

それぞれのダイオードの特性を理解したところで、Pythonを使ってI-V特性を可視化し、整流回路のシミュレーションも行ってみましょう。

PythonによるI-V特性の可視化

ダイオードのI-V特性

まず、ショックレーのダイオード方程式を使って、理想因子 $n$ や温度を変えたときのI-V特性を描画します。

import numpy as np
import matplotlib.pyplot as plt

# 定数
kB = 1.381e-23  # ボルツマン定数 [J/K]
q = 1.602e-19   # 素電荷 [C]

def diode_current(V, Is, n, T):
    """ダイオード方程式: I = Is * (exp(V/(n*Vt)) - 1)"""
    Vt = kB * T / q
    # オーバーフロー防止
    exponent = np.clip(V / (n * Vt), -500, 500)
    return Is * (np.exp(exponent) - 1)

# 電圧範囲
V = np.linspace(-2, 0.8, 1000)

# パラメータ設定
Is = 1e-14  # 逆方向飽和電流 [A]

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

# (a) 理想因子の比較
ax = axes[0]
for n, color, label in [(1.0, '#1565c0', '$n$ = 1 (diffusion)'),
                         (1.5, '#2e7d32', '$n$ = 1.5'),
                         (2.0, '#d32f2f', '$n$ = 2 (recombination)')]:
    I = diode_current(V, Is, n, T=300)
    ax.plot(V, I * 1e3, color=color, linewidth=2, label=label)

ax.set_xlabel('Voltage $V$ [V]', fontsize=12)
ax.set_ylabel('Current $I$ [mA]', fontsize=12)
ax.set_title('(a) Effect of Ideality Factor $n$',
             fontsize=13, fontweight='bold')
ax.legend(fontsize=10)
ax.set_ylim(-0.5, 10)
ax.set_xlim(-0.5, 0.8)
ax.grid(True, alpha=0.3)
ax.axhline(0, color='black', linewidth=0.5)
ax.axvline(0, color='black', linewidth=0.5)

# (b) 温度の比較
ax = axes[1]
for T, color, label in [(250, '#1a237e', 'T = 250 K'),
                         (300, '#1565c0', 'T = 300 K'),
                         (350, '#f57c00', 'T = 350 K'),
                         (400, '#d32f2f', 'T = 400 K')]:
    # IsのT依存性を近似的に考慮
    Eg = 1.12  # eV
    ni2_ratio = np.exp(-Eg * q / (kB * T)) / np.exp(-Eg * q / (kB * 300))
    Is_T = Is * ni2_ratio * (T / 300)**3
    I = diode_current(V, Is_T, n=1, T=T)
    ax.plot(V, I * 1e3, color=color, linewidth=2, label=label)

ax.set_xlabel('Voltage $V$ [V]', fontsize=12)
ax.set_ylabel('Current $I$ [mA]', fontsize=12)
ax.set_title('(b) Temperature Dependence',
             fontsize=13, fontweight='bold')
ax.legend(fontsize=10)
ax.set_ylim(-0.5, 10)
ax.set_xlim(-0.5, 0.8)
ax.grid(True, alpha=0.3)
ax.axhline(0, color='black', linewidth=0.5)
ax.axvline(0, color='black', linewidth=0.5)

plt.tight_layout()
plt.show()

2つのグラフから、ダイオード特性の重要な性質が読み取れます。

  1. (a) 理想因子の影響: $n = 1$(拡散電流支配)では順方向特性の立ち上がりが最も急峻で、約0.6 Vで電流が急増します。$n = 2$(再結合電流支配)ではより緩やかな立ち上がりとなり、同じ電流を流すのにより高い電圧が必要です。実際のダイオードでは低電流域で $n \approx 2$、高電流域で $n \approx 1$ となる遷移が見られます。
  2. (b) 温度特性: 温度が上がるとI-V曲線が左にシフトしています。これは $I_S$ の増加($n_i^2$ の増加)と $V_T$ の増加が合わさった結果です。一定電流での順方向電圧は温度上昇とともに約 $-2$ mV/度Cで減少しており、この線形性が温度センサへの応用を可能にしています。

対数スケールでの特性

ダイオード特性の全体像を把握するには、電流の対数プロットが有用です。

import numpy as np
import matplotlib.pyplot as plt

kB = 1.381e-23
q = 1.602e-19

def diode_current(V, Is, n, T):
    Vt = kB * T / q
    exponent = np.clip(V / (n * Vt), -500, 500)
    return Is * (np.exp(exponent) - 1)

V_fwd = np.linspace(0.01, 0.8, 500)
Is = 1e-14
T = 300

fig, ax = plt.subplots(figsize=(10, 6))

# 理想ダイオード (n=1)
I1 = diode_current(V_fwd, Is, n=1, T=T)
ax.semilogy(V_fwd, I1, 'b-', linewidth=2, label='$n$ = 1 (ideal)')

# 再結合電流を含むモデル
I_recomb = diode_current(V_fwd, 1e-10, n=2, T=T)
I_total = I1 + I_recomb
ax.semilogy(V_fwd, I_total, 'r-', linewidth=2, label='With recombination')

# 各領域の説明
ax.annotate('Recombination\ndominant ($n$~2)',
            xy=(0.25, 1e-8), fontsize=10, color='#888888')
ax.annotate('Diffusion\ndominant ($n$~1)',
            xy=(0.55, 1e-5), fontsize=10, color='#888888')

# 傾きの参照線
V_ref = np.linspace(0.3, 0.7, 100)
I_ref1 = 1e-14 * np.exp(V_ref / 0.026)
I_ref2 = 1e-10 * np.exp(V_ref / 0.052)
ax.semilogy(V_ref, I_ref1, 'b--', alpha=0.3, linewidth=1)
ax.semilogy(V_ref, I_ref2, 'r--', alpha=0.3, linewidth=1)

ax.set_xlabel('Voltage $V$ [V]', fontsize=12)
ax.set_ylabel('Current $I$ [A]', fontsize=12)
ax.set_title('Diode I-V Characteristic (Semi-log Plot)',
             fontsize=14, fontweight='bold')
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3, which='both')
ax.set_xlim(0, 0.8)
ax.set_ylim(1e-14, 1e-1)

plt.tight_layout()
plt.show()

対数プロットから、ダイオードの電流メカニズムの遷移が鮮明に見えます。

  1. 低電圧領域($V <$ 0.4 V付近)では赤い曲線(再結合電流を含むモデル)が青い曲線(理想モデル)を上回っています。これは空乏層内の再結合電流($n \approx 2$)が支配的であるためです。対数プロットでは傾きが $q/(2k_BT)$ に対応する直線に近づきます。
  2. 高電圧領域($V >$ 0.5 V付近)では2つの曲線がほぼ一致し、拡散電流($n = 1$)が支配的になります。傾きは $q/(k_BT)$ に対応し、1デケード(10倍)あたり約60 mV(室温)です。
  3. この2つの領域の遷移は、実際のダイオードの設計や特性評価において重要であり、理想因子 $n$ の値から支配的な電流メカニズムを判定できます。

整流回路のシミュレーション

半波整流回路

ダイオードの最も基本的な応用である半波整流回路をシミュレーションします。交流電圧をダイオードに通すことで、正の半波のみが取り出されます。

import numpy as np
import matplotlib.pyplot as plt

kB = 1.381e-23
q = 1.602e-19

def diode_current(V, Is, n, T):
    Vt = kB * T / q
    exponent = np.clip(V / (n * Vt), -500, 500)
    return Is * (np.exp(exponent) - 1)

def diode_voltage_drop(I_target, Is, n, T, tol=1e-6, max_iter=100):
    """ニュートン法でダイオードの順方向電圧を求める"""
    Vt = kB * T / q
    V = 0.6  # 初期推定値
    for _ in range(max_iter):
        I = Is * (np.exp(V / (n * Vt)) - 1)
        dI_dV = Is / (n * Vt) * np.exp(V / (n * Vt))
        if abs(dI_dV) < 1e-30:
            break
        V = V - (I - I_target) / dI_dV
        if abs(I - I_target) < tol:
            break
    return V

# 回路パラメータ
Vs_peak = 10     # 入力電圧の振幅 [V]
f = 50           # 周波数 [Hz]
R_load = 1000    # 負荷抵抗 [Ω]
C_filter = 100e-6  # 平滑キャパシタ [F]
Is = 1e-14       # 飽和電流
n_ideal = 1.0    # 理想因子
T = 300          # 温度

# 時間軸
t = np.linspace(0, 0.06, 3000)  # 3周期分
dt = t[1] - t[0]
omega = 2 * np.pi * f

# 入力電圧
Vs = Vs_peak * np.sin(omega * t)

# 半波整流(キャパシタなし)
V_halfwave = np.zeros_like(t)
for i in range(len(t)):
    if Vs[i] > 0.6:  # 簡易的なダイオードモデル
        V_halfwave[i] = Vs[i] - 0.7  # 順方向電圧降下
    else:
        V_halfwave[i] = 0

# 半波整流(キャパシタ付き)
V_filtered = np.zeros_like(t)
V_filtered[0] = 0
for i in range(1, len(t)):
    if Vs[i] - 0.7 > V_filtered[i-1]:
        # ダイオードが導通: キャパシタが充電される
        V_filtered[i] = Vs[i] - 0.7
    else:
        # ダイオードが逆バイアス: キャパシタが放電
        tau = R_load * C_filter
        V_filtered[i] = V_filtered[i-1] * np.exp(-dt / tau)

# 全波整流(キャパシタ付き)
Vs_fullwave = np.abs(Vs)
V_fullwave_filtered = np.zeros_like(t)
V_fullwave_filtered[0] = 0
for i in range(1, len(t)):
    V_diode_out = Vs_fullwave[i] - 1.4  # ブリッジ整流の2ダイオード分
    if V_diode_out > V_fullwave_filtered[i-1]:
        V_fullwave_filtered[i] = V_diode_out
    else:
        tau = R_load * C_filter
        V_fullwave_filtered[i] = V_fullwave_filtered[i-1] * np.exp(-dt / tau)

fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)

# (a) 半波整流(キャパシタなし)
ax = axes[0]
ax.plot(t * 1e3, Vs, 'b-', linewidth=1, alpha=0.5, label='Input $V_s$')
ax.plot(t * 1e3, V_halfwave, 'r-', linewidth=2, label='Output (half-wave)')
ax.set_ylabel('Voltage [V]', fontsize=12)
ax.set_title('(a) Half-Wave Rectification (no filter)',
             fontsize=13, fontweight='bold')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_ylim(-12, 12)

# (b) 半波整流(キャパシタ付き)
ax = axes[1]
ax.plot(t * 1e3, Vs, 'b-', linewidth=1, alpha=0.5, label='Input $V_s$')
ax.plot(t * 1e3, V_filtered, 'r-', linewidth=2,
        label=f'Filtered (C = {C_filter*1e6:.0f} $\\mu$F)')
ax.set_ylabel('Voltage [V]', fontsize=12)
ax.set_title('(b) Half-Wave Rectification with Capacitor Filter',
             fontsize=13, fontweight='bold')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_ylim(-12, 12)

# (c) 全波整流(キャパシタ付き)
ax = axes[2]
ax.plot(t * 1e3, Vs, 'b-', linewidth=1, alpha=0.5, label='Input $V_s$')
ax.plot(t * 1e3, V_fullwave_filtered, 'r-', linewidth=2,
        label=f'Full-wave filtered (C = {C_filter*1e6:.0f} $\\mu$F)')
ax.set_xlabel('Time [ms]', fontsize=12)
ax.set_ylabel('Voltage [V]', fontsize=12)
ax.set_title('(c) Full-Wave Bridge Rectification with Filter',
             fontsize=13, fontweight='bold')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_ylim(-12, 12)

plt.tight_layout()
plt.show()

# リプルの計算
ripple_half = (V_filtered.max() - V_filtered[1500:].min()) / V_filtered.mean() * 100
ripple_full = (V_fullwave_filtered.max() - V_fullwave_filtered[1500:].min()) / V_fullwave_filtered.mean() * 100
print(f"半波整流のリプル率: {ripple_half:.1f}%")
print(f"全波整流のリプル率: {ripple_full:.1f}%")

3つの波形を比較することで、整流回路の設計原理が視覚的に理解できます。

  1. (a) 半波整流(フィルタなし) では、入力交流の正の半波のみが通過し、負の半波はカットされています。ダイオードの順方向電圧降下(約0.7 V)の分だけ出力のピーク値が入力より低くなっています。しかし、脈流が激しく直流としては使えません。
  2. (b) 半波整流(キャパシタフィルタ付き) では、キャパシタが入力のピーク付近で充電され、入力電圧が下がるとキャパシタから負荷に放電することで、出力電圧が比較的一定に保たれています。しかし、次の充電までの間に電圧が緩やかに低下するリプル(脈動)が残ります。
  3. (c) 全波ブリッジ整流(フィルタ付き) では、入力の負の半波も反転して利用するため、充電の頻度が2倍になりリプルが大幅に低減されています。ただし、ブリッジ回路では2個のダイオードを電流が通過するため、電圧降下が約1.4 V(0.7 V $\times$ 2)と大きくなるトレードオフがあります。

まとめ

本記事では、ダイオードの物理を pn接合の形成からI-V特性、各種ダイオードの応用まで体系的に解説しました。

  • pn接合の形成: n型とp型の接触により空乏層が生じ、内蔵電位 $V_{bi} = V_T \ln(N_A N_D / n_i^2)$ が形成される
  • ダイオード方程式: 少数キャリアの注入と拡散から $I = I_S(e^{V/(nV_T)} – 1)$ が導かれる
  • 順方向特性: 指数関数的な電流増加、シリコンでは約0.7 Vで「ターンオン」
  • 逆方向特性: $I_S$ に飽和するが、降伏電圧で雪崩降伏またはツェナー降伏が生じる
  • 各種ダイオード: ショットキー(高速整流)、ツェナー(定電圧)、LED(発光)がそれぞれ固有の物理的特性を活かしている
  • 整流回路: 半波・全波整流とキャパシタフィルタの組み合わせで交流を直流に変換する

これらの概念は、トランジスタやICの動作原理を理解するための重要な基礎です。

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