電流計は、抵抗値が非常に小さい素子で構成されており、電圧計は、抵抗値がとても大きい内部素子で構成されています。
この設計原理は回路への影響を最小限にするためであり、計測器の基本を理解する上で重要な概念です。
本記事の内容
- 電流計と電圧計の内部構造
- 分流器と倍率器の設計
- 測定誤差の解析
- 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$ が理想的な条件である