基礎 · 読了まで19分

キルヒホッフの法則をわかりやすく解説:KCLとKVL、計算例つき

キルヒホッフの法則を解説。電流則(KCL)と電圧則(KVL)、節点・閉路・符号のルール、3つの回路の計算例、Arduinoとテスターでの確認方法まで紹介します。

キルヒホッフの法則は、電気回路の中で電流と電圧がどのように分かれるかを表す2つの基本ルールです。キルヒホッフの電流則(KCL)は、「節点に流れ込む電流の和は、そこから流れ出る電流の和に等しい」というものです。キルヒホッフの電圧則(KVL)は、「閉じた経路を1周すると、途中で出会う電圧を符号つきで足した和はゼロになる」というものです。日本ではそれぞれ第1法則、第2法則とも呼ばれます。ドイツの物理学者グスタフ・キルヒホッフは、まだ大学生だった1845年にこの2つのルールを発表しました。今では、LED 1個の回路からスマートフォンのマザーボードまで、あらゆる回路解析がこの2つの文に基づいています。

オームの法則は、1つの部品の電圧・電流・抵抗の関係を表します。キルヒホッフの法則は、それらの部品が互いにどうつながっているかを考慮に入れます。2つを組み合わせれば、枝がいくつもあり、電源が複数ある回路でさえ、紙とペンだけで解けます。この記事では、節点と閉路の考え方、いちばん混乱しやすい符号のルール、ステップごとに解いた3つの回路、Arduino・ESP32・Raspberry Pi Picoで測って法則を確かめる実験、テスターによる確認、そして学生がよくする間違いを紹介します。

キルヒホッフの法則で解く回路に使う抵抗
キルヒホッフの法則の働きを見るいちばん簡単な方法は、抵抗だけで組んだ回路です。どの抵抗の電流と電圧も、2つのシンプルなルールから求められます。

キルヒホッフの法則とは?節点・枝・閉路

キルヒホッフの法則を使う前に、回路を正しく読み取る必要があります。そのためには4つの考え方を押さえれば十分です。節点(ノード)は、3つ以上の部品が接続される点です。理想的な導線の抵抗はゼロとみなすので、ブレッドボードの同じ列に挿した足はすべて1つの節点になります。枝(ブランチ)は、2つの節点の間にあって1つの電流だけが流れる経路です。1つの枝には部品が1個のことも、複数が直列に並ぶこともあります。閉路(ループ)は、ある節点から出発し、枝をたどって同じ節点に戻ってくる閉じた経路です。内側にほかの閉路を含まない最小の閉路は網目(メッシュ)と呼ばれます。回路図を読むのが苦手なら、先に回路図の読み方の記事に目を通しておきましょう。

用語定義Arduinoの回路での例
節点(ノード)3つ以上の部品が接続される点分圧回路の2つの抵抗と負荷が接続される中点(例題2の節点A)
枝(ブランチ)2つの節点の間にあり、1つの電流だけが流れる経路デジタルピン、220 Ωの抵抗、LEDでできた経路
閉路(ループ)出発した節点に戻ってくる閉じた経路5V → 抵抗 → LED → GND → 5V
網目(メッシュ)内側にほかの閉路を含まない最小の閉路並列につないだ2本のLEDの枝の間にできる輪
基準節点電圧を測る基準となる0 Vの点ArduinoのGNDピン

キルヒホッフの電流則(KCL):流れ込む電流=流れ出る電流

電流則の式はΣI流入 = ΣI流出です。流れ込む電流をプラス、流れ出る電流をマイナスとして数えれば、同じことをΣI = 0とも書けます。この法則の背景にあるのは電荷保存の法則です。電子が節点にたまったり、何もないところから現れたりすることはないので、ある点に流れ込んだ電荷は、同じ瞬間に同じだけ流れ出なければなりません。水道管の水で考えてみましょう。毎分30リットルの水を運ぶ管が2つに分かれ、片方に10リットル流れているなら、もう片方にはちょうど20リットル流れているはずです。電気も同じで、30 mAの電流が2つの枝に分かれ、片方が10 mAなら、もう片方は20 mAです。

例題で練習してみましょう。ある節点にI1 = 50 mAとI2 = 20 mAが流れ込み、I3 = 15 mAが流れ出ています。4本目の線の電流I4を求めたいので、これも流れ出ると仮定します。KCLより50 + 20 = 15 + I4なので、I4 = 55 mAです。もしI4が節点に流れ込むと仮定していたら、式は50 + 20 + I4 = 15となり、I4 = −55 mAが得られます。このマイナス記号は間違いではなく、電流が仮定と逆向きに流れていることを示しているだけです。この法則はArduinoのプロジェクトで毎日のように出てきます。ボードの5Vピンから出ていく電流の合計は、そのラインにつながるすべてのセンサー、LED、モジュールの電流の和です。電源を選ぶときにする計算は、実はKCLの計算なのです。

キルヒホッフの電圧則(KVL):閉路を1周した電圧の和はゼロ

電圧則の式はΣV = 0です。閉路を1周するとき、電源による電圧の上昇の和は、抵抗やほかの部品での電圧降下の和に等しくなります。これはエネルギー保存の法則から導かれます。山歩きを思い浮かべてください。丘に登り、別の道を下って出発点に戻れば、高さの変化の合計はゼロです。回路でも、電源が電荷をある「高さ」まで持ち上げ、抵抗やLEDがそれを少しずつ使っていきます。出発点に戻ったとき、合計はゼロになります。

KVLからは2つの重要な結論が導かれます。1つ目は、直列につながった部品の電圧を足すと電源電圧になることです。9 Vの電池に直列につないだ3つの抵抗の電圧が2 V、3 V、4 Vなら、その和はちょうど9 Vです。2つ目は、同じ2つの節点の間に並列につながった枝の電圧はすべて等しいことです。そうした2本の枝は一緒に1つの閉路をつくるので、片方での電圧降下はもう片方での電圧降下と等しくなければなりません。抵抗の直列接続と並列接続のルールは、実はすべてこの2つの法則の特別な場合です。

符号のルール:向きの決め方とプラス・マイナス

キルヒホッフの法則でのミスのほとんどは符号から生まれます。ルール自体は簡単ですが、一貫して使う必要があります。まず、すべての枝に電流の向きを仮定し、回路図に矢印で書き込みます。向きを正しく当てる必要はありません。次に、閉路ごとにたどる向き(ふつうは時計回り)を決め、その向きに閉路を1周しながら、出会った部品の電圧を下の表に従って書いていきます。この記事では、電圧の上昇をプラス、電圧降下をマイナスとするルールを使います。

部品たどる向きKVLの式に書くもの
抵抗仮定した電流と同じ向き−I × R(電圧が下がる)
抵抗仮定した電流と逆向き+I × R(電圧が上がる)
電圧源(電池、ACアダプター)−から+へ+V
電圧源(電池、ACアダプター)+から−へ−V
LEDまたはダイオード(導通時)アノードからカソードへ−Vf(ほぼ一定の電圧降下)
解き終えたときにある電流がマイナスになっていても、回路を解き直す必要はありません。その電流は矢印と逆向きに流れているだけです。値はそのまま、マイナス記号つきでほかの式に使い続けてください。ルールはただ1つ、閉路を1周している途中でたどる向きや符号のルールを変えないことです。

キルヒホッフの法則とオームの法則をステップごとに使う方法

  1. 回路図を描き、節点にアルファベット(A、B…)を付け、抵抗と電源に名前を付けて、GNDを基準節点に選びます。
  2. すべての枝に電流(I1、I2、I3…)を定め、その向きを矢印で示します。
  3. 節点がn個あるなら、そのうち任意のn − 1個についてKCLの式を立てます。
  4. 枝がb本あるなら、b − n + 1個の独立した閉路(ふつうは網目)についてKVLの式を立てます。
  5. 抵抗の電圧はオームの法則でI × Rと書きます。こうすると、未知数は電流だけになります。
  6. 連立方程式を代入法か加減法で解きます。kΩとmAで計算すれば、結果はそのままボルトで出てきます。
  7. 検算します。使わなかった閉路でもKVLが成り立つこと、電源が供給する電力と抵抗が消費する電力が等しいことを確かめます。

なぜこの数の式が必要なのでしょうか。枝の電流はそれぞれ未知数なので、未知数はb個あります。n個の節点すべてにKCLを立てると、最後の1つはほかの式から導けてしまうため、新しい情報を与えるのはn − 1個だけです。残りのb − (n − 1)個の式はKVLが補います。授業で出てくる節点電位法や網目電流法も、この2つの法則を整理して使っているだけです。節点電位法ではKCLを節点の電位で、網目電流法ではKVLを網目電流で書きます。計算にはオームの法則計算ツールと直列・並列抵抗の計算ツールが役立ちます。

例題1:LEDと抵抗の直列回路

Arduinoのデジタルピンは、HIGHのとき5 Vを出力します。そのピンに220 Ωの抵抗を、抵抗のもう一方の端に赤色LEDをつなぎ、LEDのカソードをGNDにつなぎます。この回路は枝が1本、閉路が1つなので、KVLの式は1つで足ります。赤色LEDの順方向電圧をVf ≈ 2.0 Vとしましょう。GNDから電流の向きに1周すると、ピンが+5 V、抵抗が−220 × I、LEDが−2.0 Vです。式は5 − 220 × I − 2.0 = 0となり、I = 3.0 / 220 = 13.6 mAが得られます。抵抗には3.0 V、LEDには2.0 Vがかかり、合わせると電源の5 Vに等しくなります。

部品電圧電流電力
Arduinoのピン(電源)+5.0 V13.6 mA68.2 mWを供給
220 Ωの抵抗−3.0 V13.6 mA40.9 mWを消費
赤色LED−2.0 V13.6 mA27.3 mWを消費
合計(KVLと電力収支)0 V—68.2 = 40.9 + 27.3 mW

実際の回路では、結果は少し違ってきます。Arduino Unoのピンは電流を流すにつれて出力電圧が少し下がり、この回路ではピンの電圧が4.7〜4.8 V程度まで下がって、電流は約12.5 mAになります。LEDの順方向電圧も色や電流によって変わります。それでも方法は同じで、キルヒホッフの式を立て、抵抗の電圧をオームの法則で書きます。LEDには決まった抵抗値がなく、ほぼ一定の電圧降下として扱うべき理由はLEDとは?の記事で説明しました。色ごとに合う抵抗は、LED抵抗計算ツールですぐに求められます。

例題2:並列の枝がある分圧回路

次は少し実際に近い回路です。5 Vの電源は、まずR1 = 1 kΩを通って節点Aに達します。節点Aからは2本の枝が出ていて、1本はR2 = 2.2 kΩを通って、もう1本はR3 = 3.3 kΩを通ってGNDへ向かいます。これは、下側の抵抗に負荷をつないだ分圧回路です。未知の節点電圧はVAだけです。節点AでKCLを立てましょう。R1を通ってくる電流は、R2とR3へ流れる電流の和に等しくなります。オームの法則で電流を電圧で表すと(kΩとmAで)(5 − VA) / 1 = VA / 2.2 + VA / 3.3となります。右辺はVA × 0.7576なので、式は5 = VA × 1.7576となり、VA ≈ 2.845 Vです。

量計算結果
I1(R1を流れる電流)(5 − 2.845) / 1 kΩ2.155 mA
I2(R2を流れる電流)2.845 / 2.2 kΩ1.293 mA
I3(R3を流れる電流)2.845 / 3.3 kΩ0.862 mA
KCLの確認I2 + I32.155 mA = I1
電力収支5 V × 2.155 mA10.78 mW = 4.64 + 3.68 + 2.45 mW

今度はKVLで検算しましょう。電源、R1、R2でできる左の網目(5 V → R1 → R2 → GND)では、5 − 2.155 − 2.845 = 0になります。R2とR3でできる右の網目では、2つの抵抗の電圧が同じ(2.845 V)で、差はゼロです。並列の枝の電圧が等しいのはこのためです。合成抵抗を使っても同じ結果が得られます。R2 ∥ R3 = 1.32 kΩ、合計は2.32 kΩで、5 / 2.32 = 2.155 mAです。この例題から得られる実践的な教訓はこうです。R3をつなぐ前の分圧回路の出力は5 × 2.2 / 3.2 ≈ 3.44 Vですが、負荷をつなぐと2.845 Vまで下がります。分圧回路の公式が正しいのは、出力から電流を取り出さないときだけです。負荷を加えたら、KCLで計算し直す必要があります。手早く確認したいときは分圧回路計算ツールを使いましょう。

例題3:電源が2つある回路とマイナスの電流

キルヒホッフの法則の本当の力は、直列・並列の合成では解けない回路で発揮されます。左側ではV1 = 9 Vの電源がR1 = 1 kΩを通して共通の節点Aに、右側ではV2 = 5 Vの電源がR2 = 1 kΩを通して同じ節点につながっています。節点AからはR3 = 2 kΩの負荷抵抗がGNDへ下りています。2つの電源のマイナス端子はどちらもGNDです。電流を次のように仮定しましょう。I1とI2は電源から節点Aへ向かって流れ、I3は節点AからGNDへ流れます。節点が2つ(AとGND)、枝が3本なので、KCLの式を1つ、KVLの式を2つ立てます(kΩとmAで)。

  • KCL(節点A):I1 + I2 = I3
  • KVL(左の網目):9 − 1 × I1 − 2 × I3 = 0
  • KVL(右の網目):5 − 1 × I2 − 2 × I3 = 0

I3にI1 + I2を代入すると、左の網目は3 × I1 + 2 × I2 = 9、右の網目は2 × I1 + 3 × I2 = 5になります。1つ目の式を3倍、2つ目の式を2倍して引き算すると5 × I1 = 17となり、I1 = 3.4 mAです。これを代入し直すとI2 = −0.6 mA、I3 = 2.8 mAが得られます。I2がマイナスということは、電流が5 Vの電源から節点Aへではなく、節点Aから5 Vの電源のプラス端子へ流れていることを示しています。9 Vの電源が負荷に電流を供給しながら、5 Vの電源にも0.6 mAを押し込んでいるのです。電力収支で確かめてみましょう。V1は9 × 3.4 = 30.6 mWを供給し、R1は11.56 mW、R2は0.36 mW、R3は15.68 mWを消費し、V2は5 × 0.6 = 3 mWを吸収します。合計はやはり30.6 mWなので、答えは正しいとわかります。使わなかった外側の閉路でも、9 − 3.4 − 0.6 − 5 = 0が成り立ちます。

この例題は、現実の回路で大切な注意点を教えてくれます。電圧の違う2つの電源を直接つなぐと、電圧の高いほうが低いほうへ電流を押し込みます。電池やUSBポート、レギュレーターがその逆向きの電流を想定して設計されていなければ、発熱します。充電できない電池は液漏れすることがあり、パソコンのUSBポートが壊れるおそれもあります。Arduino Unoでは、USBとVINを同時につないだときに、ボード上のコンパレーターとMOSFETの回路がこれを防いでいます。自分の回路で2つの電源をまとめる必要があるなら、間にダイオードを入れましょう。詳しくはArduinoを電池で動かす方法の記事で解説しています。

Arduinoで測ってキルヒホッフの法則を確かめる

理論を実験で確かめるために、分圧回路とLEDを1つの回路にまとめてみましょう。5VピンからR1 = 330 Ωを通って点Aへ行きます。点Aからは2本の枝が出ていて、1本はR2 = 2.2 kΩを通ってGNDへ、もう1本はR3 = 220 Ωを通って点Bへ行き、そこから赤色LEDのアノードにつながります。LEDのカソードはGNDにつなぎます。ボードは点Aと点Bの電圧をアナログ入力で読み取り、オームの法則で各抵抗の電流を計算して、節点AでKCLが成り立つかどうかを表示します。まずは予想を立てます。LEDを一定の1.9 Vの電圧降下とみなし、節点AでKCLを立てると、(5 − VA) / 330 = VA / 2200 + (VA − 1.9) / 220という式からVA ≈ 2.96 V、I1 ≈ 6.2 mA、I2 ≈ 1.35 mA、I3 ≈ 4.8 mAが得られます。

回路上の点Arduino UnoESP32Raspberry Pi Pico
電源(R1の上側の端)5V3V33V3(OUT)、36番ピン
点A(R1、R2、R3の接続点)A0GPIO 34GP26(ADC0)
点B(R3とLEDのアノード)A1GPIO 35GP27(ADC1)
R2の下側の端とLEDのカソードGNDGNDGND
ESP32とRaspberry Pi Picoのアナログ入力に加えられるのは最大3.3 Vまでです。これらのボードでは、回路を5VピンやVINピンから絶対に給電しないでください。R1の上側の端は3V3ピンにつなぎます。Arduino Unoなら、アナログ入力が5 Vまで測れるので、5Vピンを使っても安全です。
C++ (Arduino IDE)
1// Kirchhoff yasalarını ölçerek doğrulama / Verifying Kirchhoff's laws by measurement
2// Besleme -> R1 (330) -> A ; A -> R2 (2.2k) -> GND ; A -> R3 (220) -> B -> LED -> GND
3// Supply -> R1 (330) -> A ; A -> R2 (2.2k) -> GND ; A -> R3 (220) -> B -> LED -> GND
4
5#if defined(ARDUINO_ARCH_ESP32)
6const float VCC = 3.30;          // 3V3 pininde ölçtüğün gerilim / voltage you measured on 3V3
7const int PIN_A = 34;            // ADC1, yalnız giriş / ADC1, input only
8const int PIN_B = 35;
9float readVolts(int pin) {
10  return analogReadMilliVolts(pin) / 1000.0;   // kalibre edilmiş okuma / calibrated reading
11}
12#else
13const float VCC = 5.00;          // 5V pininde ölçtüğün gerilim / voltage you measured on 5V
14const int PIN_A = A0;
15const int PIN_B = A1;
16float readVolts(int pin) {
17  return analogRead(pin) * VCC / 1023.0;       // 10 bit ADC, referans 5V / 5V reference
18}
19#endif
20
21const float R1 = 330.0;          // ohm
22const float R2 = 2200.0;
23const float R3 = 220.0;
24
25float averageVolts(int pin) {    // 16 okumanın ortalaması / average of 16 readings
26  float sum = 0;
27  for (int i = 0; i < 16; i++) {
28    sum += readVolts(pin);
29  }
30  return sum / 16.0;
31}
32
33void setup() {
34  Serial.begin(115200);
35}
36
37void loop() {
38  float vA = averageVolts(PIN_A);
39  float vB = averageVolts(PIN_B);
40
41  float vR1 = VCC - vA;          // R1 gerilimi / voltage across R1
42  float vR2 = vA;                // R2 gerilimi / voltage across R2
43  float vR3 = vA - vB;           // R3 gerilimi / voltage across R3
44  float vLed = vB;               // LED gerilimi / voltage across the LED
45
46  float i1 = vR1 / R1 * 1000.0;  // Ohm kanunu, mA / Ohm's law, mA
47  float i2 = vR2 / R2 * 1000.0;
48  float i3 = vR3 / R3 * 1000.0;
49
50  // KAY: A düğümüne giren = çıkan / KCL: into node A = out of node A
51  Serial.print(F("I1 = "));
52  Serial.print(i1, 2);
53  Serial.print(F(" mA   I2 + I3 = "));
54  Serial.print(i2 + i3, 2);
55  Serial.print(F(" mA   fark / error = "));
56  Serial.print(i1 - i2 - i3, 3);
57  Serial.println(F(" mA"));
58
59  // KGY: dış çevre / KVL: outer loop
60  Serial.print(F("VR1 + VR3 + VLED = "));
61  Serial.print(vR1, 2);
62  Serial.print(F(" + "));
63  Serial.print(vR3, 2);
64  Serial.print(F(" + "));
65  Serial.print(vLed, 2);
66  Serial.print(F(" = "));
67  Serial.print(vR1 + vR3 + vLed, 2);
68  Serial.print(F(" V   kaynak / supply = "));
69  Serial.print(VCC, 2);
70  Serial.println(F(" V"));
71
72  // KGY: paralel kollar aynı gerilimde / KVL: parallel branches share one voltage
73  Serial.print(F("VR2 = "));
74  Serial.print(vR2, 2);
75  Serial.print(F(" V   VR3 + VLED = "));
76  Serial.print(vR3 + vLed, 2);
77  Serial.println(F(" V"));
78  Serial.println();
79  delay(2000);
80}

コードは各点を16回読み取って平均を取るので、ADCの小さな揺れがならされます。Arduino UnoのanalogRead()は0〜1023の数値を返し、基準は5Vラインなので、1ステップは約4.9 mVです。ESP32の部分では、analogReadMilliVolts()関数がキャリブレーション済みの値をミリボルトで直接返します。GPIO 34と35は入力専用のピンで、Wi-Fiがオンのときも動くADC1ユニットに属しています。#ifの行のおかげで、同じコードがどちらのボードでもコンパイルできます。シリアルモニタを115200ボーに設定すると、Unoでは「I1 = 6.17 mA I2 + I3 = 6.17 mA」のような行が表示されます。KCLの誤差はゼロに近いものの、ぴったりゼロにはなりません。たいていは0.3 mA未満で、抵抗の1〜5%の許容差とADCのステップの大きさから生じます。3.3 VのESP32ではI1が約3.1 mAになり、LEDは少し暗く光ります。

コードで計算した電圧の和は、いつもぴったり電源電圧に等しくなります。その理由は興味深いものです。Arduinoが測っているのは(GNDを基準とした)節点の電圧だけで、部品の電圧はそれらの測定値の差として計算しています。差を閉路に沿って足せば、自動的に電源電圧と等しくなるのです。つまり、この実験で本当に確かめているのはKCLです。KVLを独立して確かめるには、各部品の両端を1つずつテスターで測ります。また、定数VCCには、5Vピンをテスターで測った実際の値を入れてください。USBから給電したUnoでは、たいてい4.7〜5.1 Vの間です。

Raspberry Pi Pico(MicroPython)で同じ実験をする

Picoでは、回路を3V3(OUT)ピンから給電し、点AをGP26に、点BをGP27につなぎます。PicoのADCはread_u16()で0〜65535の値を返し、基準は約3.3 Vなので、生の値に3.3を掛けて65535で割れば電圧が求まります。3.3 Vでは抵抗にかかる電圧の余裕が小さくなるため、電流も小さくなります。LEDを1.8 Vとすると、VA ≈ 2.26 V、I1 ≈ 3.1 mA、I2 ≈ 1.0 mA、I3 ≈ 2.1 mAが目安です。まだPicoをセットアップしていないなら、Raspberry Pi Picoとは?の記事にあるThonnyの手順に従ってください。

MicroPython
1from machine import ADC, Pin
2import time
3
4VCC = 3.3                          # 3V3(OUT) pininde ölçtüğün gerilim / voltage you measured on 3V3(OUT)
5R1, R2, R3 = 330, 2200, 220        # ohm
6adc_a = ADC(Pin(26))               # GP26 = ADC0, A noktası / node A
7adc_b = ADC(Pin(27))               # GP27 = ADC1, B noktası / node B
8
9def volts(adc):
10    total = 0
11    for _ in range(16):            # 16 okumanın ortalaması / average of 16 readings
12        total += adc.read_u16()
13    return total / 16 * VCC / 65535
14
15while True:
16    v_a = volts(adc_a)
17    v_b = volts(adc_b)
18    i1 = (VCC - v_a) / R1 * 1000   # Ohm kanunu, mA / Ohm's law, mA
19    i2 = v_a / R2 * 1000
20    i3 = (v_a - v_b) / R3 * 1000
21    # KAY: A düğümüne giren = çıkan / KCL: into node A = out of node A
22    print("I1 = {:.2f} mA  I2 + I3 = {:.2f} mA  fark / error = {:.3f} mA".format(i1, i2 + i3, i1 - i2 - i3))
23    print("VR1 = {:.2f} V  VR2 = {:.2f} V  VR3 = {:.2f} V  VLED = {:.2f} V".format(VCC - v_a, v_a, v_a - v_b, v_b))
24    time.sleep(2)

テスターで法則を実験的に確かめる

キルヒホッフの法則を確かめるためのデジタルテスター
デジタルテスター(マルチメーター):電圧は部品の両端に並列に当てて測り、電流は回路を切り開いてテスターを直列に入れて測ります。

テスターを使えば、コードを1行も書かずに、キルヒホッフの法則を直接測って確かめられます。KVLを確かめるには、ロータリースイッチを直流電圧(DCV)に合わせます。まず電源の電圧を測り、次に閉路にある部品の電圧を1つずつ測ります。いつも、たどる向きで先に来る端に赤のテスト棒を、次の端に黒のテスト棒を当てれば、符号も自然に正しくなります。KCLを確かめるには回路を切り開く必要があります。赤のリード線をmA端子に挿し、測りたい枝を1か所で外して、そのすき間にテスターを直列に入れます。より手軽なのは、抵抗の電圧を測って抵抗値で割り、電流を求める方法です。これなら回路を一度も切り開かずに済みます。レンジとヒューズについてはテスターの使い方の記事で詳しく説明しています。

測定テスト棒を当てる場所予想値(5.00 Vのとき)
電源5VとGND5.00 V
V_R15Vと点A≈ 2.04 V
V_R2点AとGND≈ 2.96 V
V_R3点Aと点B≈ 1.06 V
V_LED点BとGND≈ 1.90 V
KVLの確認V_R1 + V_R3 + V_LED2.04 + 1.06 + 1.90 = 5.00 V
KCLの確認(mAレンジ)I1とI2 + I3を比べる≈ 6.18 mA = 1.35 + 4.83 mA

測定値が計算とぴったり同じになることは期待しないでください。2〜5%の差は普通です。理由は4つあります。抵抗の許容差(金色の帯の抵抗で5%、茶色の帯の抵抗で1%)、テスター自体の確度(安価なモデルでは直流電圧で約0.5%+数カウント)、mAレンジでのテスターの内部抵抗(数Ωから10 Ωほど。枝に直列に入るので電流をわずかに減らします)、そしてLEDの順方向電圧が温度で変わることです。電圧レンジではテスターの入力抵抗がふつう10 MΩあるので、kΩ単位の回路への影響は無視できます。差が10%を超える場合は、抵抗の値を読み間違えている、接続がゆるんでいる、ブレッドボードの列を取り違えているといった可能性があります。ブレッドボードとは?の記事にある内部の配線図と見比べて確認しましょう。

テスターが電流レンジ(mA端子や10A端子)になっているときは、絶対にテスト棒を部品の両端や電源の2つの端子に当てないでください。このレンジのテスターはほとんどショートと同じです。ヒューズが切れ、ヒューズがなければテスターと電源の両方が壊れるおそれがあります。電流を測り終えたら、赤のリード線を必ずV端子に戻しましょう。

キルヒホッフの法則はどこで役立つ?プロジェクトのアイデア

  • 電源の容量計画:プロジェクトにあるすべてのモジュールの電流を足し合わせ(KCL)、ACアダプターや電池でまかなえるかを確かめます。動作時間の見積もりには電池寿命計算ツールを使いましょう。
  • Arduino電圧計:0〜25 Vを測れる分圧回路を組み、アナログ入力による負荷をKCLで計算に入れます。手順はArduinoで電圧計を作るの記事で紹介しています。
  • 複数LEDのパネル:LEDごとに専用の抵抗を付け、合計電流を計算して、ピンとレギュレーターの上限を超えないかを確かめます。
  • LDRを使った照度計:LDRと固定抵抗で分圧回路ができます。測った電圧からKVLを使ってLDRの抵抗値を逆算しましょう(LDR光センサー)。
  • ホイートストンブリッジ:4つの抵抗でつくるブリッジでは、R1 / R2 = R3 / R4のとき、2つの中点の間の電圧がゼロになります。ロードセルはこの原理で動いています(HX711ロードセル)。
  • シャント抵抗で電流を測る:負荷のラインに1 Ωのような小さな抵抗を入れ、その両端の電圧を測って、I = V / Rで回路の電流を求めます。大きな電流にはACS712電流センサーのほうが向いています。

学生がよくする間違いとその直し方

  • 閉路の途中で符号のルールを変える:ある電圧降下をマイナスで、別の電圧降下をプラスで書くと、式が成り立たなくなります。たどる向きは最初に決め、表のルールを守り通しましょう。
  • マイナスの電流を間違いだと思う:マイナスになった電流は、逆向きに流れているだけです。回路を解き直す必要はなく、値を符号ごと使えば大丈夫です。
  • 式を多く立てすぎたり、重複した式を書いたりする:n個の節点すべてにKCLを立てても、独立した式は増えません。KCLはn − 1個、KVLはb − n + 1個にとどめ、同じ閉路を2回書かないようにしましょう。
  • 単位を混ぜてしまう:ΩとmAを掛けると、結果はボルトではなくミリボルトです。すべてV、A、Ωでそろえるか、すべてV、mA、kΩでそろえて書きましょう。
  • LEDを抵抗のように扱う:LEDには決まった抵抗値がありません。導通しているときは、ほぼ一定の電圧降下(赤色で1.8〜2.2 V)のように振る舞います。KVLでは−Vfとして書きましょう。
  • 電源を理想的なものとみなす:USBの5 Vはふつう4.75〜5.25 Vの間のどこかで、電池には内部抵抗があります。計算では5 Vではなく、実際に測った値を使いましょう。
  • 共通グラウンドを忘れる:別々の電源で動く2つの回路のGNDをつないでいないと、両者の間に共通の基準がなく、測定値は意味をなしません。詳しくはGNDと共通グラウンドの記事で解説しています。
  • 電流計を並列に、電圧計を直列につなぐ:電流は必ず回路を切り開いて直列に、電圧は必ず部品の両端に並列に当てて測ります。
キルヒホッフの法則は、直流や、Arduinoのプロジェクトで扱う低周波の信号では常に成り立ちます。交流でも瞬時値については成り立ちますが、コンデンサやインダクタ(コイル)を含む回路では、実効値(RMS)の電圧を単純に足すことはできず、位相も考慮する必要があります。非常に高い周波数(たとえば2.4 GHzのWi-Fiアンテナ)や、変化する磁界が閉路を貫く場合には、この単純な形の法則では足りなくなります。ただし、ブレッドボードの上でそうした状況に出会うことはありません。

キルヒホッフの法則はたった2つの文ですが、エレクトロニクスで計算するあらゆるものの土台になっています。電流は節点で消えず、電圧は閉路を1周すると和がゼロになる、ということです。オームの法則と組み合わせれば、LEDの抵抗や負荷をつないだ分圧回路から、電源が2つある回路、電源の容量計画まで、どんな問題もステップごとに解けます。学んだことを実際の回路で試したいなら、BlueGraysアプリのLED点灯、LDRによる明るさの測定、LCD表示のデジタル電圧計といったプロジェクトを見てみてください。どれも回路図とコードをステップごとに案内しているので、テスターを手元に置いて、測った値をここでの計算と比べられます。

よくある質問

キルヒホッフの電流則とは何ですか?

キルヒホッフの電流則(KCL)は、節点に流れ込む電流の和が、そこから流れ出る電流の和に等しいという法則です。電荷保存の法則に基づいていて、電荷がある点にたまったり消えたりすることはありません。たとえば30 mAの電流が2つの枝に分かれ、片方が10 mAなら、もう片方は20 mAです。

キルヒホッフの電圧則とは何ですか?

キルヒホッフの電圧則(KVL)は、どんな閉路でも、1周したときの電圧を符号つきで足した和がゼロになるという法則です。言い換えると、電源が供給する電圧は、その閉路にある部品での電圧降下の和に等しくなります。5 Vの回路で抵抗に3 Vかかっていれば、LEDには2 Vが残ります。

キルヒホッフの法則とオームの法則の違いは何ですか?

オームの法則(V = I × R)は、1つの抵抗の電圧・電流・抵抗の関係を表します。キルヒホッフの法則は、部品どうしのつながり方、つまり節点で電流がどう分かれ、閉路で電圧がどう足し合わされるかを表します。回路を解くときは両方を使います。キルヒホッフの式を立て、抵抗の電圧をオームの法則で書きます。

キルヒホッフの法則で電流がマイナスになるのはどういう意味ですか?

マイナスの電流は、答えが間違っているという意味ではなく、電流が最初に仮定した向きと逆に流れているという意味です。大きさは正しいので、回路図の矢印を逆向きにするだけで済みます。回路を解き直さなくても、その値を符号ごとほかの計算に使い続けられます。

キルヒホッフの法則ではいくつの式が必要ですか?

回路に枝がb本、節点がn個あるなら、未知の電流はb個です。電流則をn − 1個の節点について、電圧則をb − n + 1個の独立した閉路について立てれば、式の数と未知数の数が等しくなります。たとえば枝が3本、節点が2個の回路なら、KCLの式1つとKVLの式2つが必要です。

キルヒホッフの法則は交流回路にも使えますか?

はい、瞬時値については常に成り立ちます。ただし、コンデンサやインダクタを含む交流回路では、実効値(RMS)の電圧を単純に足すことはできません。フェーザや複素数を使い、位相も含めて足し合わせる必要があります。非常に高い周波数や長い伝送線路では、単純な形の法則に代わって波動のモデルが使われます。

全プロジェクトを見る
2個のLEDを点灯
#2初級

2個のLEDを点灯

2個のLEDが素早く交互に点滅します。一方が点くともう一方が消え、まるでボールを投げ合っているようです。ArduinoがそれぞれのLEDを5分の1秒ずつ点灯させ、次のLEDに切り替えます。1個のLEDの次に、複数の光をまとめて制御する方法を学ぶのに最適なステップです。

4.6(105)
343
LEDの点滅
#1初級

LEDの点滅

電子工作の第一歩は、1個のLEDを点けたり消したりすることです。Arduinoで短い間隔で点灯と消灯を繰り返すと、LEDが素早く点滅します。ボードが光を制御する仕組みを最もシンプルな形で確かめ、これから取り組むプロジェクトの基礎を身につけます。

4.6(188)
1127
LDRで光の強さを測定
#11初級

LDRで光の強さを測定

部屋の明るさを数値で見てみませんか?光に反応する小さな部品、LDRで周囲の光を測定し、Arduinoが0.5秒ごとにその値をコンピューターの画面に表示します。手で覆うと数値が変わる様子を確認できます。自動で点灯する常夜灯などのプロジェクトへの第一歩です。

4.6(81)
139
LDRで作る常夜灯
#12初級

LDRで作る常夜灯

暗くなると自動で点灯し、朝になると消灯する小さな常夜灯です。光センサーが部屋の明るさを測定し、Arduinoが十分に暗くなったらLEDを点灯させ、明るくなったら消灯させます。街灯が夕方になると自動で点灯する仕組みも理解できます。

4.8(102)
205
ESP32とLDRモジュールで光の強さを読み取る
#113初級

ESP32とLDRモジュールで光の強さを読み取る

LDRモジュールの生のADC値と、暗い状態・明るい状態の基準値から計算した相対的な明るさの割合を、シリアルモニタでリアルタイムに確認します。この割合はルクスの測定値ではありません。モジュールの校正の仕組みを学べます。しきい値の決定に使うため、プロジェクト10の前に取り組むのが適しています。

4.6(36)
55
Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)
#148初級

Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)

Picoの内蔵LEDの次は、ブレッドボードに外付けLEDを接続し、GP14ピンで制御します。このプロジェクトでは、Picoの汎用GPIOピンを出力として使う方法、LEDの極性(長い足=アノード/+、短い足=カソード/−)、電流制限抵抗(220Ω)が必要な理由を学びます。抵抗を入れないと、LEDに過大な電流が流れて壊れることがあります。回路はとても簡単です。Pico GP14 → 220Ω抵抗 → LED(+)→ LED(−)→ Pico GND。Wokwiでシミュレーションできます。

4.5(2)
7
LCDディスプレイ付きデジタル電圧計
#56中級
プレミアム

LCDディスプレイ付きデジタル電圧計

自作の測定器で、電池や電源アダプターが出力する電圧を調べます。2つの抵抗で作る分圧回路が、高い電圧をボードで読み取れるレベルまで下げます。Arduinoが元の電圧を計算し、2行のLCDディスプレイにボルト単位で表示します。この回路では約55ボルトまでの直流電圧を測定できます。コンセントの商用電源には絶対に接続しないでください。

4.5(27)
36
ESP32と可変抵抗でLEDの明るさを制御(アナログ→PWM)
#115中級
プレミアム

ESP32と可変抵抗でLEDの明るさを制御(アナログ→PWM)

可変抵抗を使ってLEDの明るさをアナログ操作で調整します。ESP32のADCピンで可変抵抗からの0-3.3Vの電圧を読み取り、PWM(パルス幅変調)信号に変換してLEDに出力します。可変抵抗を回すと、LEDが徐々に明るくなったり暗くなったりします。Arduino Core 3.0+ではanalogWrite()を直接使えます。ESP32-S2/S3ではADCの分解能を12ビットに固定します。

4.5(19)
32