電流計と電圧計の仕組みをわかりやすく解説

電流計は、抵抗値が非常に小さい素子で構成されており、電圧計は、抵抗値がとても大きい内部素子で構成されています。

この設計原理は回路への影響を最小限にするためであり、計測器の基本を理解する上で重要な概念です。

本記事の内容

  • 電流計と電圧計の内部構造
  • 分流器と倍率器の設計
  • 測定誤差の解析
  • Pythonでのシミュレーション

電流計の仕組み

電流計(Ammeter)は、回路に直列に接続して電流を測定します。理想的な電流計の内部抵抗はゼロですが、実際にはわずかな内部抵抗 $r_A$ を持ちます。

電流計が直列接続される理由

電流計を直列に接続することで、測定対象と同じ電流が電流計を流れます。内部抵抗 $r_A$ による電圧降下は、

$$ V_A = I \cdot r_A $$

$r_A$ が小さいほど、回路への影響(電圧降下)が小さくなります。

分流器(シャント抵抗)

計器の測定可能な最大電流を $I_g$(フルスケール電流)とするとき、それ以上の電流を測定するには分流器(シャント抵抗 $R_s$)を並列に接続します。

測定したい最大電流を $I$ とすると、

$$ r_A \cdot I_g = R_s \cdot (I – I_g) $$

$$ R_s = \frac{r_A \cdot I_g}{I – I_g} = \frac{r_A}{n – 1} $$

ここで $n = I / I_g$ は倍率です。

電圧計の仕組み

電圧計(Voltmeter)は、回路に並列に接続して電圧を測定します。理想的な電圧計の内部抵抗は無限大ですが、実際には有限の内部抵抗 $r_V$ を持ちます。

電圧計が並列接続される理由

電圧計を並列に接続することで、測定対象と同じ電圧が電圧計にかかります。内部抵抗 $r_V$ を流れる電流は、

$$ I_V = \frac{V}{r_V} $$

$r_V$ が大きいほど、回路から引き出す電流が小さくなり、回路への影響が少なくなります。

倍率器

計器のフルスケール電圧 $V_g = I_g \cdot r_A$ より大きな電圧を測定するには、倍率器(直列抵抗 $R_m$)を直列に接続します。

$$ V = I_g \cdot (r_A + R_m) $$

$$ R_m = \frac{V}{I_g} – r_A = r_A(m – 1) $$

ここで $m = V / V_g$ は倍率です。

測定誤差

電流計の測定誤差

内部抵抗 $r_A$ の電流計で電流を測定すると、真の電流 $I_0$ に対して、

$$ I_{\text{measured}} = \frac{V}{R + r_A} = I_0 \cdot \frac{R}{R + r_A} $$

相対誤差は、

$$ \varepsilon_I = \frac{I_0 – I_{\text{measured}}}{I_0} = \frac{r_A}{R + r_A} $$

$r_A \ll R$ のとき誤差は小さくなります。

電圧計の測定誤差

内部抵抗 $r_V$ の電圧計で電圧を測定すると、

$$ V_{\text{measured}} = V_0 \cdot \frac{r_V}{R + r_V} $$

相対誤差は、

$$ \varepsilon_V = \frac{V_0 – V_{\text{measured}}}{V_0} = \frac{R}{R + r_V} $$

$r_V \gg R$ のとき誤差は小さくなります。

Pythonでのシミュレーション

import numpy as np
import matplotlib.pyplot as plt

# === 分流器の設計 ===
r_A = 100.0    # 計器の内部抵抗 [Ohm]
I_g = 1e-3     # フルスケール電流 [A]

print("=== 分流器の設計 ===")
for I_max in [0.01, 0.1, 1.0, 10.0]:
    n = I_max / I_g
    R_s = r_A / (n - 1)
    print(f"  最大電流 {I_max:5.2f} A: 分流器 Rs = {R_s:.4f} Ohm (倍率 {n:.0f})")

# === 倍率器の設計 ===
V_g = I_g * r_A  # フルスケール電圧
print(f"\n=== 倍率器の設計 (Vg = {V_g:.3f} V) ===")
for V_max in [1, 10, 100, 1000]:
    m = V_max / V_g
    R_m = r_A * (m - 1)
    print(f"  最大電圧 {V_max:5d} V: 倍率器 Rm = {R_m/1e3:.1f} kOhm (倍率 {m:.0f})")

# === 測定誤差の可視化 ===
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 電流計の測定誤差
R_circuit = np.logspace(0, 5, 100)  # 回路の抵抗 [Ohm]
for r_a in [0.1, 1, 10, 100]:
    error_I = r_a / (R_circuit + r_a) * 100  # パーセント
    axes[0].semilogx(R_circuit, error_I, label=f'r_A = {r_a} Ohm')

axes[0].set_xlabel('Circuit Resistance R [Ohm]')
axes[0].set_ylabel('Measurement Error [%]')
axes[0].set_title('Ammeter Error vs Circuit Resistance')
axes[0].legend()
axes[0].grid(True)
axes[0].axhline(1, color='gray', linestyle='--', alpha=0.5)

# 電圧計の測定誤差
for r_v in [1e3, 10e3, 100e3, 1e6]:
    error_V = R_circuit / (R_circuit + r_v) * 100
    axes[1].semilogx(R_circuit, error_V,
                     label=f'r_V = {r_v/1e3:.0f} kOhm')

axes[1].set_xlabel('Circuit Resistance R [Ohm]')
axes[1].set_ylabel('Measurement Error [%]')
axes[1].set_title('Voltmeter Error vs Circuit Resistance')
axes[1].legend()
axes[1].grid(True)
axes[1].axhline(1, color='gray', linestyle='--', alpha=0.5)

plt.tight_layout()
plt.show()

まとめ

本記事では、電流計と電圧計の仕組みについて解説しました。

  • 電流計は内部抵抗が小さく直列接続、電圧計は内部抵抗が大きく並列接続で使用する
  • 分流器(シャント抵抗)で電流計の測定範囲を拡大できる: $R_s = r_A/(n-1)$
  • 倍率器(直列抵抗)で電圧計の測定範囲を拡大できる: $R_m = r_A(m-1)$
  • 測定誤差は計器の内部抵抗と回路の抵抗の比で決まる
  • 電流計は $r_A \ll R$、電圧計は $r_V \gg R$ が理想的な条件である