GNDとは?サーボやセンサーに共通グラウンドが必要な理由
GNDとは何か、なぜ共通グラウンドが欠かせないのかを解説します。基準電圧、外部電源とArduinoのGNDの接続、グラウンドループ、一点アース、商用電源の接地を紹介します。
GNDとは何かを簡単にいうと、回路内のすべての電圧を測る基準になる0ボルトの基準点です。名前は「ground」に由来し、コモン、シャーシ、単にマイナス側と呼ばれることもあります。Arduinoの5Vピンは、正確には「GNDに対して5ボルト」という意味です。センサーの2.5 V出力も、GNDを基準にして初めて意味を持ちます。サーボの震え、センサーの異常な測定値、ボードが勝手にリセットするといった初心者が遭遇する不可解な不具合の多くは、実は1本の配線、つまり共通グラウンドの欠落が原因です。
この記事では、GNDが「基準」である理由を簡単なたとえで説明し、外部電源を使うときの正しいグラウンドのつなぎ方を紹介します。グラウンドループやノイズが生じる理由を数値で解説し、一点アースでモーターとセンサーのグラウンド経路を分ける方法も説明します。回路のGNDとコンセントのアースの違いや、グラウンドを意図的に分離しておく場合も取り上げます。ボードへの電源供給の基本は、Arduinoの電源の取り方を参照してください。
GNDとは?電圧を2点間で測る理由
電圧は1つの点だけで決まる性質ではなく、2点間の電位差です。高さにたとえると分かりやすくなります。テーブルの「高さが80 cm」と言うとき、無意識に床を基準にしています。同じテーブルを建物の10階に置けば、海面からの高さは30メートルを超えます。電子回路でこの「床」にあたるのがGNDです。テスターの黒いテスト棒をGND、赤いテスト棒を測定する点に当てると、GNDを基準にしたその点の電圧が表示されます。黒いテスト棒を別の場所に当てれば、同じ点でもまったく違う値になります。回路で「5 V」と言うときは、常に「この回路のGNDを基準に」という意味が含まれています。
| 用語 | 意味 | 使われる場所 |
|---|---|---|
| GND / 0V | 回路の基準点 | Arduino、ESP32、Pico、各種モジュール |
| マイナス(-) | 電源の電流が戻る端子。通常はGNDに接続 | 電池、ACアダプター、実験用電源 |
| VCC / VIN / 5V / 3V3 | GNDを基準としたプラス側の電源 | モジュールやボードの電源ピン |
| COM | 共通端子。GNDの場合が多いが、リレーではスイッチの共通接点 | リレー、ボタン、測定器 |
| AGND / DGND | アナログとデジタルで分け、1点で接続するグラウンド | ADC、オーディオ回路、精密測定回路 |
| シャーシ | 金属製ケースに接続したグラウンド | ケース入りの機器、車両 |
| 保護接地(PE) | 安全のためのコンセント内の緑/黄色の配線 | 商用電源の配線 |
共通グラウンドが必要な理由
Arduinoがサーボやモジュールへ信号を送るとき、実際には「自分のGNDを基準に、このピンは5 Vです」と伝えています。受信側はその信号を自分のGNDを基準に読み取ります。2つの機器のグラウンドがつながっていなければ、共通の床がありません。サーボから見ると、Arduinoの5 Vは5 Vかもしれませんし、2 Vや-3 Vかもしれません。さらに基本的な問題もあります。電流は必ず閉じた経路を流れます。信号電流はArduinoのピンを出て、受信側の入力を通り、GNDを経由して戻る必要があります。戻る経路がなければ、信号が正しく成立しないか、配線がアンテナのように働いてノイズを拾います。つまり、2つの機器が信号をやり取りするなら、グラウンド同士をつなぐ必要があります。
外部電源とArduino:グラウンドのつなぎ方

よくある例は、サーボ、モーター、LEDテープの消費電流がArduinoから供給できる電流を超えるため、別のACアダプターで給電する場合です。正しい配線では、グラウンド同士だけをつなぎ、プラス側の配線は分けておきます。こうすると、負荷電流は外部電源から供給されてそこへ戻り、Arduinoは信号だけを送ります。下の表は、外部の5 V ACアダプターでMG996Rサーボを動かす配線です。同じ考え方が、12 VのLEDテープを駆動するMOSFETやモータードライバボードにも当てはまります。
| 配線 | 接続先 | 理由 |
|---|---|---|
| サーボの赤線(+) | 外部ACアダプターの+5 V | モーター電流をArduinoに流さないため |
| サーボの茶線(-) | 外部ACアダプターのGND | モーター電流の戻り経路 |
| サーボのオレンジ線(信号) | Arduino D9 | PWMの位置制御信号 |
| ジャンパーワイヤー | ACアダプターのGNDとArduinoのGNDの間 | 信号の基準を共有するため |
| ACアダプターの+5 VからArduinoの5Vへ | 接続しない | 2つの電源間で電流が流れ込むおそれがあるため |
1// Harici 5 V ile servo, ortak GND / servo on an external 5 V supply, common GND
2#include <Servo.h>
3
4const int SERVO_PIN = 9; // turuncu sinyal kablosu / orange signal wire
5Servo servo;
6
7void setup() {
8 servo.attach(SERVO_PIN);
9}
10
11void loop() {
12 for (int a = 0; a <= 180; a += 2) { // 0 -> 180 derece / degrees
13 servo.write(a);
14 delay(15);
15 }
16 for (int a = 180; a >= 0; a -= 2) { // 180 -> 0 derece / degrees
17 servo.write(a);
18 delay(15);
19 }
20}実際によくある不具合:「サーボが動かない」「センサーの値がおかしい」
| 症状 | グラウンドに関係する原因 | 対処法 |
|---|---|---|
| サーボが回らない、または震える | 外部電源のGNDがArduinoにつながっていない | 短い配線で2つのグラウンドをつなぐ |
| モーター始動時にArduinoがリセットする | モーター電流がArduinoのGNDを通って戻り、電圧が低下する | モーターのGNDを電源に直接つなぎ、一点アースにする |
| モーター動作中にアナログセンサーの値が急変する | 共用するGND配線でモーター電流による電圧降下が生じる | センサーのGNDをモーターの経路から分ける |
| シリアル通信が文字化けする | 2つのボードのグラウンドがつながっていない | TXとRXに加えてGNDもつなぐ |
| MOSFETでLEDテープがまったく点灯しない | 12 V電源のマイナス側がArduinoのGNDにつながっていない | MOSFETのソースと両方のグラウンドをつなぐ |
| 触れると測定値が変わる | 入力がフローティング状態、またはGNDの接続が緩い | プルアップ抵抗またはプルダウン抵抗を追加し、GND配線を確認する |
この表で特に原因が分かりにくいのは、モーター始動時にArduinoがリセットする不具合です。配線が「正しく」見えるためです。詳しいトラブルシューティングには、Arduinoがリセットを繰り返すときの手順も役立ちます。ESP32では、同じ問題が通常ブラウンアウトのメッセージとして現れます。
グラウンドループとノイズ:GND配線にも抵抗がある
回路図ではGNDが1本の線で描かれるため、どこでも正確に0 Vだと思いがちです。しかし実際には、ブレッドボードの接点、ジャンパーワイヤー、はんだ接合部には、いずれも多少の抵抗があります。ここでもオームの法則は例外なく働きます。V = I × Rです。2 Aのモーターの戻り電流が、合計抵抗0.1 ΩのGND配線を流れると、その配線の両端に0.2 Vの電位差が生じます。アナログセンサーがその配線を共用していると、センサーの「0 V」が0.2 V持ち上がります。Arduino Unoの10ビットADCでは、約41カウントの誤差です(0.2 / 5 × 1023)。モーターをPWMで駆動すると、このずれが毎秒数百回変動し、測定値が飛び跳ねるようになります。
グラウンドループは、2つの機器間にGNDの経路が複数あると生じます。例えば、ArduinoをUSBでパソコンにつなぎ、さらに別の配線で接地された電源にもつなぐと、グラウンド電流が2つの異なる経路を循環することがあります。この閉じた輪がアンテナのように働き、周囲の磁界を拾います。その結果、オーディオ回路でハム音が聞こえたり、測定値に50 Hzまたは60 Hzのリップルが現れたりします。対処法はGNDを切断することではなく、経路を1つだけにして、大電流と微小信号が配線を共用しないようにすることです。
一点アース:モーターとセンサーのグラウンド経路を分ける

一点アースとは、GND配線を数珠つなぎにせず、すべて1つの中心点に集める方法です。モーターの大電流は、専用の太い配線を通って電源のマイナス端子に戻します。一方、Arduino、センサー、信号回路のグラウンドは、それぞれ別の細い配線で同じ中心点につなぎます。こうすると、モーター電流による電圧降下はモーター用配線の中だけで生じ、センサーの基準がずれません。実際には、次の手順で配線します。
- 電源のマイナス端子、またはねじ端子を一点アースの接続点にします。
- モータードライバ(L298N、MOSFET、リレーコイル)のGNDを、短く太い配線でその点に直接つなぎます。
- ArduinoのGNDは、別の配線で同じ点につなぎます。モータードライバのGNDを経由させないでください。
- アナログセンサーのグラウンドはArduinoのGNDピンにつなぎ、センサーとADCで同じ基準を共有します。
- モーターの端子間に100 nFのセラミックコンデンサ、ドライバの電源入力に100〜470 µFの電解コンデンサを追加します。
- モーターの配線と信号線はできるだけ離し、各モーターの配線をそれぞれより合わせます。
ノイズを測る:Arduinoで行う簡単なGNDテスト
グラウンドの配線が適切かどうかは、推測せずに測定できます。5VとGNDの間に10 kΩの抵抗2本で分圧回路を作り、その中点をA0につなぎます。この点は安定した2.5 Vになるはずです。以下のコードはA0を連続して200回読み取り、最大値と最小値の差をピーク・ツー・ピークノイズとしてミリボルト単位で出力します。まずモーターを止めて測定し、次に動かして測定します。その後、GND配線を一点アースに組み替えて、もう一度測定してください。
1// Basit GND gürültü ölçer / simple ground noise meter
2const int SENSOR_PIN = A0; // ölçülen sinyal / signal under test
3const int SAMPLES = 200; // yaklaşık 22 ms'lik örnek / about 22 ms of samples
4const float VREF = 5.0; // Uno ADC referansı / Uno ADC reference
5
6void setup() {
7 Serial.begin(115200);
8}
9
10void loop() {
11 int minV = 1023, maxV = 0;
12 long sum = 0;
13 for (int i = 0; i < SAMPLES; i++) {
14 int v = analogRead(SENSOR_PIN);
15 if (v < minV) minV = v;
16 if (v > maxV) maxV = v;
17 sum += v;
18 }
19 float avgVolt = sum / (float)SAMPLES * VREF / 1023.0;
20 float ripplemV = (maxV - minV) * VREF / 1023.0 * 1000.0; // tepe-tepe / peak-to-peak
21
22 Serial.print("ortalama / average: ");
23 Serial.print(avgVolt, 3);
24 Serial.print(" V tepe-tepe / peak-to-peak: ");
25 Serial.print(ripplemV, 0);
26 Serial.println(" mV");
27 delay(500);
28}適切に組まれた回路では、ピーク・ツー・ピークノイズはADCの約1〜2カウント、つまり5〜10 mVです。モーターを動かしたときに50 mVを超えるなら、どこかの配線がモーターとGND経路を共用しています。200 mV以上なら、GNDの接続が緩い、モーター電流がブレッドボードを流れている、外部電源のGNDがそもそも接続されていない、といった原因が考えられます。この簡単なテストで、「センサーの値がおかしい」原因の多くが、センサーではなくグラウンドの配線にあることを数分で確認できます。
グラウンドを意図的に分離するのはどんな場合?
「グラウンドはすべてつなぐ」という原則の唯一の例外が、絶縁です。フォトカプラやリレーは光や磁界で信号を伝え、両側の間に電気的な接続を作りません。この場合、両側のグラウンドは意図的に分けておきます。一方はArduino側、もう一方は商用電源側やノイズの多いモーター側です。JD-VCCジャンパー付きのリレーモジュールでは、ジャンパーを外してコイルを別電源で動かすとき、その電源のGNDはArduinoにつなぎません。それこそが絶縁の目的です。詳しくは、フォトカプラとは?とリレーモジュールとは?を参照してください。絶縁がない場合、信号をやり取りする2つの回路には、必ず共通のGNDが必要です。
商用電源のアースと回路のGNDは同じ?
同じではありません。コンセントの緑/黄色の配線は保護接地で、実際に地中に埋めた電極につながっています。目的は安全の確保です。電源の活線が金属製機器のケースに触れると、この経路に電流が流れ、ヒューズや漏電遮断器が回路を遮断します。Arduino回路のGNDは、あくまでその回路自身の基準です。電池やACアダプターで動くプロジェクトでは、大地とまったくつながっていません。一部のACアダプターやパソコンでは、回路のGNDが保護接地につながっていることがあり、グラウンドループの原因の1つになります。趣味の工作で、回路のGNDを商用電源の中性線や接地線に自分でつなごうとしないでください。
ESP32やPicoに5 Vモジュールをつなぐときの共通GND
ESP32とRaspberry Pi Picoは3.3 Vで動作するため、5 Vモジュールをつなぐときは、間にレベル変換モジュールを入れます。レベル変換モジュールには低電圧側(LV)と高電圧側(HV)にGNDピンがあり、両方をつなぐ必要があります。共通の基準があって初めて、両側の信号を変換できるためです。ESP32をUSBで動かし、12 VのLEDテープを別のACアダプターで動かす場合も同様です。MOSFETのソース、ACアダプターのマイナス端子、ESP32のGNDを1点でつなぐ必要があります。動作の仕組みは、レベル変換モジュールで解説しています。
GNDのチェックリスト
- 信号をやり取りする両方の機器のグラウンドはつながっていますか?
- 外部電源では、グラウンドだけをつなぎ、プラス側は分けていますか?
- モーター、リレー、LEDテープの電流は、ArduinoのGNDピンを通らずに電源へ戻っていますか?
- アナログセンサーは、モーター電流が流れないGND経路につながっていますか?
- GND配線は信号線より太く、できるだけ短くなっていますか?
- フォトカプラやJD-VCC付きリレーで絶縁する場合、両側は本当に分離されていますか?
- 不確かな場合は、テスターの導通(ブザー)モードでGNDの各点の接続を確認しましたか?
GNDは回路で最も目立たず、最も重要な配線です。正しくつながっていれば気にも留まりませんが、忘れるとすべてがうまく動かなくなります。テスターで導通を調べる方法が分からない場合は、テスターの使い方が役立ちます。BlueGraysアプリには、サーボモーター、L298Nを使ったロボットカー、障害物を避けるロボット、リレーで制御する230 Vランプ、スマート水やりなど、外部電源を必要とするプロジェクトがあります。それぞれに段階ごとの回路図とコードがあるので、図の中ですべてのGND接続をたどれます。
よくある質問
GNDとは何で、どんな役割がありますか?
GND(グラウンド)は、回路内のすべての電圧を測る基準になる0ボルトの基準点です。電流が電源へ戻る経路にもなります。Arduinoのピンが5Vや3.3Vだと言うとき、その値は常にGNDを基準にしています。
GNDは大地への接地と同じですか?
電子回路のGNDは、その回路自身の基準であり、実際の大地につながっている必要はありません。コンセントの緑/黄色の保護接地線は、安全のために地中の電極につながっています。電池やACアダプターで動くArduinoプロジェクトでは、GNDは商用電源のアースとつながっていません。
外部電源のGNDはArduinoにつなぐ必要がありますか?
はい。外部電源で動く機器がArduinoから信号を受け取るなら、両方のグラウンドをつなぐ必要があります。つなぐのはグラウンドだけで、プラス側の配線は分けておきます。そうしないと、信号の共通の基準と戻り経路がなくなり、サーボが震えたり、まったく動かなかったりします。
GNDをつながないとどうなりますか?
受信側の機器が電圧を正しく解釈できず、サーボが不規則に動いたり、シリアル通信が文字化けしたり、センサーの測定値が不安定になったりします。場合によっては、予期しない経路に電流が戻り、ピンを破損することもあります。
マイナス(-)とGNDは同じですか?
ほとんどの単電源回路では、電源のマイナス端子をGNDとして使うため、実質的には同じ点です。ただし、±12 Vなどの両電源では、GNDは2つの電源の中点で、マイナス端子は-12 Vになります。そのため、回路図のGND記号を確認するのが確実です。
グラウンドループを防ぐにはどうすればいいですか?
2つの機器間のGND経路を1つだけにし、大電流が流れるモーター配線を微小信号を扱うセンサーのグラウンドから離して、すべてを一点アースの接続点に集めます。必要に応じて、フォトカプラや絶縁モジュールで両側を電気的に分離してください。
この記事を読んだ後に作れるプロジェクト
全プロジェクトを見る
サーボモーターの使い方
小型サーボモーターのアームが、一方の端、中央、もう一方の端の3つの位置へ順番に回り、それぞれの位置で2秒間止まります。Arduinoが保持する角度をモーターに指示すると、モーターはその位置まで動いて止まります。ロボットアームや自動開閉するふたが動く仕組みを学べます。

ポテンショメーターでサーボモーターを操作
ポテンショメーターのつまみを回すと、サーボモーターのアームもそれに合わせて回ります。つまみの一方の端が0度、もう一方の端が半回転に対応します。Arduinoがつまみの位置を常に読み取り、サーボモーターが動きにすぐ反応します。ロボットアームや回転式カメラ台などのプロジェクトへの第一歩です。

L298Nで作るBluetooth操作の車
スマートフォンをリモコンにして、自作のロボットカーを操作できます。ArduinoはBluetoothモジュールを通じてスマートフォンのリモコンアプリから指令を受け取り、モータードライバーで車輪を回します。前進、後退、左右や斜めへの移動ができ、速度もスマートフォンから調整できます。停止ボタンを押すと、短いブレーキ動作でモーターがすぐに止まります。

障害物回避ロボット
自分で進む道を見つける、賢い車を作ってみませんか?障害物回避ロボットは、前面の超音波センサーで周囲を常に調べます。障害物を見つけると停止し、サーボモーターで左右を確認して、最も障害物の少ない方向を選んで進みます。自動運転の基礎を学ぶのにぴったりの入門プロジェクトです。

ボタンを押している間だけ220V電球を点灯
ボタンを押している間は実際の220ボルトの電球が点灯し、離すとすぐに消灯します。Arduinoの小さな信号では電球を直接点灯できないため、電気で動くスイッチであるリレーを間に入れ、電球の回路を開閉します。ボードで家庭の照明を操作するための第一歩です。家庭用電源を扱う際は十分に注意し、不安がある場合は詳しい人に手伝ってもらってください。

スマート水やりステーション
旅行中も植物が枯れないよう、自動で水やりをするシステムです。土壌水分センサーで土の湿り具合を測定し、乾燥するとArduinoが給水ポンプを数秒間動かして、青いライトを点灯させます。水分が適切なときは緑のライトが点灯します。土がひどく乾燥すると、赤いライトが点滅し、ブザーが鳴って知らせます。

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

LCDディスプレイ付きデジタル電圧計
自作の測定器で、電池や電源アダプターが出力する電圧を調べます。2つの抵抗で作る分圧回路が、高い電圧をボードで読み取れるレベルまで下げます。Arduinoが元の電圧を計算し、2行のLCDディスプレイにボルト単位で表示します。この回路では約55ボルトまでの直流電圧を測定できます。コンセントの商用電源には絶対に接続しないでください。
ほかの記事
BlueGraysアプリ
この回路をスマホでステップごとに作る
回路図、コード、部品リストを1つの画面で確認できます。Arduino、ESP32、Picoのプロジェクトを200件以上用意しています。

