Основы · 9 мин чтения

Что такое GND? Зачем нужна общая земля для сервоприводов и датчиков

Что такое GND и почему необходима общая земля? Опорное напряжение, соединение внешнего источника питания с GND Arduino, земляные петли, заземление звездой и защитное заземление электросети.

Короткий ответ на вопрос «Что такое GND?»: это точка отсчёта с потенциалом 0 V, относительно которой измеряются все напряжения в схеме. Название происходит от слова «ground» («земля»); также встречаются обозначения «общий», «корпус» или просто «минус». Пин 5V на Arduino на самом деле означает «5 вольт относительно GND»; выходные 2,5 V датчика тоже имеют смысл только относительно GND. Большинство загадочных неисправностей у новичков — дёргающиеся сервоприводы, бессмысленные показания датчиков и самопроизвольные перезагрузки плат — на деле связаны с одним отсутствующим проводом: общей землёй.

В этой статье на простой аналогии объясним, почему GND — это «точка отсчёта», покажем, как правильно соединять земли при использовании внешнего источника питания, разберём на числах, откуда берутся земляные петли и шум, и научимся разделять земли моторов и датчиков с помощью заземления звездой. Также рассмотрим, чем GND схемы отличается от земли в розетке и в каких случаях земли намеренно оставляют раздельными. Основы питания плат ты найдёшь в статье «Питание Arduino».

Что такое GND? Почему напряжение измеряют между двумя точками?

Напряжение — не свойство одной точки, а разность потенциалов между двумя точками. Представь высоту: когда ты говоришь, что стол «высотой 80 см», то неосознанно используешь пол как точку отсчёта. Если тот же стол стоит на 10-м этаже здания, его высота над уровнем моря превышает 30 метров. В электронике GND — это такой «пол». Если коснуться чёрным щупом мультиметра GND, а красным — какой-то точки, прибор покажет напряжение этой точки относительно GND. Переставь чёрный щуп в другое место — и у той же точки окажется совсем другое значение. Поэтому, говоря о «5 V» в схеме, мы всегда подразумеваем «относительно GND этой схемы».

ТерминЗначениеГде встречается
GND / 0VТочка отсчёта схемыArduino, ESP32, Pico и любой модуль
Минус (-)Вывод источника питания для возврата тока, обычно соединён с GNDБатареи, адаптеры, лабораторные блоки питания
VCC / VIN / 5V / 3V3Положительное питание относительно GNDПины питания модулей и плат
COMОбщий вывод; часто GND, но у реле — общий контакт переключателяРеле, кнопки, измерительные приборы
AGND / DGNDРаздельные аналоговая и цифровая земли, соединённые в одной точкеАЦП, звуковые схемы и схемы точных измерений
КорпусЗемля, соединённая с металлическим корпусомОборудование в корпусах, транспортные средства
Защитное заземление (PE)Жёлто-зелёный провод в розетке, обеспечивающий безопасностьСетевая электропроводка

Зачем нужна общая земля?

Когда Arduino отправляет сигнал сервоприводу или модулю, она фактически говорит: «На моём пине 5 V относительно моего GND». Приёмник считывает этот сигнал относительно собственного GND. Если земли двух устройств не соединены, у них нет общего «пола»; для сервопривода 5 V Arduino могут оказаться и 5 V, и 2 V, и -3 V. Есть и более фундаментальная проблема: ток всегда течёт по замкнутому контуру. Сигнальный ток выходит из пина Arduino, проходит через вход приёмника и должен вернуться через GND. Без обратного пути сигнал не формируется правильно либо провода работают как антенны и улавливают помехи. Итак: если два устройства обмениваются сигналами, их земли должны быть соединены.

Внешний источник питания и Arduino: соединяем земли

Сервопривод MG996R
Мощные сервоприводы, например MG996R, под нагрузкой потребляют больше 1 A; их следует питать от внешнего источника на 5–6 V, а не от пина 5V Arduino.

Самая распространённая ситуация: сервопривод, мотор или светодиодная лента питается от отдельного адаптера, потому что потребляет больше тока, чем может дать Arduino. При правильном подключении соединяют только земли, а плюсовые провода оставляют раздельными. Тогда ток нагрузки поступает от внешнего источника и возвращается в него, а Arduino только подаёт сигнал. В таблице ниже показано подключение сервопривода MG996R с питанием от внешнего адаптера на 5 V; та же логика применима к MOSFET, управляющему светодиодной лентой на 12 V, или к плате драйвера мотора.

ПроводКуда подключитьЗачем?
Красный провод сервопривода (+)+5 V внешнего адаптераЧтобы ток мотора не проходил через Arduino
Коричневый провод сервопривода (-)GND внешнего адаптераОбратный путь для тока мотора
Оранжевый провод сервопривода (сигнал)Arduino D9ШИМ-сигнал положения
ПеремычкаМежду GND адаптера и GND ArduinoОбщая точка отсчёта для сигнала
+5 V адаптера к 5V ArduinoНе подключатьДва источника могут подавать ток друг в друга
C++ (Arduino IDE)
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Соедини обе земли коротким проводом
Arduino перезагружается при запуске мотораТок мотора возвращается через GND Arduino, и напряжение проседаетПодключи GND мотора напрямую к источнику, используй заземление звездой
Показания аналогового датчика скачут при работе мотораПадение напряжения от тока мотора на общем проводе GNDОтдели GND датчика от пути тока мотора
Мусорные символы в последовательном портуЗемли двух плат не соединеныПодключи GND вместе с TX и RX
Светодиодная лента с MOSFET вообще не загораетсяМинус источника на 12 V не соединён с GND ArduinoСоедини исток MOSFET и обе земли
Показания меняются от прикосновенияВход «висит в воздухе» или ненадёжное соединение GNDДобавь подтяжку к питанию или земле (pull-up/pull-down), проверь провод GND

Перезагрузка Arduino при запуске мотора — самая запутанная неисправность в этой таблице, потому что подключение выглядит «правильным». Для подробной диагностики можно также пройти по шагам из статьи «Arduino постоянно перезагружается»; на ESP32 та же проблема обычно проявляется сообщением о просадке питания (brownout).

Земляные петли и шум: провод GND тоже резистор

Поскольку на схемах GND изображают одной линией, мы предполагаем, что везде на ней ровно 0 V. На деле контактные полоски макетной платы, перемычки и паяные соединения имеют некоторое сопротивление. Закон Ома здесь неумолим: V = I × R. Если обратный ток мотора в 2 A течёт по проводу GND с общим сопротивлением 0,1 Ω, между концами этого провода возникает разность 0,2 V. Если аналоговый датчик использует тот же провод, его «0 V» теперь на 0,2 V выше. Для 10-битного АЦП Arduino Uno это ошибка примерно в 41 отсчёт (0,2 / 5 × 1023). Если мотор управляется ШИМ, смещение колеблется сотни раз в секунду, и показания скачут.

Земляная петля возникает, когда между двумя устройствами есть больше одного пути GND. Например, если Arduino соединена с компьютером по USB, а отдельным проводом — ещё и с заземлённым источником питания, ток земли может циркулировать по двум разным путям, и этот замкнутый контур работает как антенна, улавливающая окружающие магнитные поля. Результат — гул в звуковых схемах или пульсации на 50 либо 60 Hz в измерениях. Решение — не разрывать GND, а оставить единственный путь и не допускать, чтобы большие токи шли по одному проводу с чувствительными сигналами.

Заземление звездой: разделяем земли мотора и датчиков

Модуль питания для макетной платы MB102
Модули питания для макетной платы, например MB102, подают 5 V или 3,3 V на две боковые шины; GND обеих шин соединён на модуле, поэтому он хорошо подходит в качестве центра звезды.

Заземление звездой означает, что все провода GND сходятся в одной центральной точке, а не соединяются цепочкой. Большой ток мотора возвращается на минус источника по собственному толстому проводу, а земли Arduino, датчиков и сигнальных схем приходят в ту же центральную точку по отдельным тонким проводам. Так падение напряжения от тока мотора остаётся на его проводе и не смещает точку отсчёта датчиков. На практике действуй так:

  1. Выбери минусовой вывод источника питания или винтовую клемму в качестве центра звезды.
  2. Подключи GND драйвера мотора (L298N, MOSFET, катушки реле) напрямую к этой точке коротким толстым проводом.
  3. Подключи GND Arduino к той же точке отдельным проводом; не прокладывай его через GND драйвера мотора.
  4. Подключи земли аналоговых датчиков к пину GND Arduino, чтобы у датчика и АЦП была общая точка отсчёта.
  5. Добавь керамический конденсатор на 100 nF между выводами мотора и электролитический на 100–470 µF на входе питания драйвера.
  6. Прокладывай провода моторов и сигналов как можно дальше друг от друга и скручивай провода каждого мотора между собой.
Тонкие контактные полоски макетной платы не рассчитаны на ток больше нескольких сотен миллиампер и имеют высокое контактное сопротивление. Не пропускай токи моторов через макетную плату; подключай провода мотора и питания к винтовым клеммам или прямо к плате драйвера, а макетную плату используй только для сигналов. Почему здесь помогают конденсаторы, объясняется в статье «Что такое конденсатор?».

Измеряем шум: простой тест GND с Arduino

Качество заземления можно измерить, а не угадывать. Собери делитель напряжения из двух резисторов по 10 kΩ между 5V и GND и подключи его среднюю точку к A0; в этой точке должно быть стабильное напряжение 2,5 V. Код ниже последовательно снимает 200 показаний с A0 и выводит разность между наибольшим и наименьшим значениями как размах шума в милливольтах. Сначала измерь его при выключенном моторе, затем при работающем; после этого расположи провода GND звездой и повтори измерение.

C++ (Arduino IDE)
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}

В хорошо собранной схеме размах шума составляет около 1–2 отсчётов АЦП, то есть 5–10 mV. Если при работе мотора он превышает 50 mV, какой-то провод использует общий с мотором путь GND. Значение 200 mV и выше обычно указывает на ненадёжное соединение GND, ток мотора, проходящий через макетную плату, или внешний источник, землю которого вообще не соединили с остальными. Этот простой тест за несколько минут доказывает, что в большинстве случаев «датчик выдаёт бессмыслицу» проблема в заземлении, а не в датчике.

Когда земли намеренно оставляют раздельными?

Единственное исключение из правила «соединяй все земли» — гальваническая развязка. Оптопара или реле передаёт сигнал с помощью света или магнитного поля, не оставляя электрического соединения между двумя сторонами. В этом случае земли сторон намеренно разделяют: одна сторона — Arduino, другая — электросеть или мотор, создающий помехи. На модулях реле с перемычкой JD-VCC, если снять перемычку и запитать катушку от отдельного источника, GND этого источника не подключают к Arduino; в этом и состоит весь смысл развязки. Подробнее смотри в статьях «Что такое оптопара?» и «Что такое модуль реле?». Без развязки любым двум схемам, которые обмениваются сигналами, нужен общий GND.

Земля электросети и GND схемы — одно и то же?

Нет. Жёлто-зелёный провод в розетке — это защитное заземление, и он действительно идёт к электроду, закопанному в землю. Его задача — безопасность: если фазный провод коснётся металлического корпуса прибора, ток пойдёт по этому пути, а предохранитель или УЗО разомкнёт цепь. GND в схеме Arduino — лишь собственная точка отсчёта этой схемы, и в проекте с питанием от батареи или адаптера она вообще не связана с землёй. В некоторых адаптерах и компьютерах GND схемы может быть соединён с защитным заземлением; это одна из причин земляных петель. В любительских проектах никогда не пытайся самостоятельно подключать GND схемы к нулевому или заземляющему проводу электросети.

Сетевое напряжение смертельно опасно. В проектах, подключённых к электросети через реле или оптопару, GND низковольтной стороны никогда не соединяют с сетевой стороной, а между ними оставляют изоляционный промежуток хотя бы в несколько миллиметров. Если есть сомнения, поручай работу с сетевой стороной электрику.

Общий GND при подключении модулей на 5 V к ESP32 и Pico

ESP32 и Raspberry Pi Pico работают при 3,3 V; при подключении модуля на 5 V между ними ставят преобразователь уровней. У преобразователя есть пины GND на низковольтной (LV) и высоковольтной (HV) сторонах, и подключать нужно оба; преобразовывать сигналы двух сторон он может только относительно общей точки отсчёта. То же относится к ситуации, когда ESP32 питается от USB, а светодиодная лента на 12 V — от отдельного адаптера: исток MOSFET, минус адаптера и GND ESP32 должны сходиться в одной точке. Принцип работы преобразователей описан в статье «Преобразователь логических уровней».

Чек-лист GND

  • Соединены ли земли обоих устройств, которые обмениваются сигналами?
  • При использовании внешних источников соединены только земли, а плюсы оставлены раздельными?
  • Возвращаются ли токи мотора, реле и светодиодной ленты к источнику, минуя пин GND Arduino?
  • Подключены ли аналоговые датчики к пути GND, по которому не течёт ток мотора?
  • Провода GND толще сигнальных и настолько короткие, насколько возможно?
  • Если для развязки используется оптопара или реле с JD-VCC, действительно ли две стороны разделены?
  • Если есть сомнения, проверено ли соединение точек GND мультиметром в режиме прозвонки со звуковым сигналом?

GND — самый незаметный, но самый важный провод в схеме: когда всё сделано правильно, его никто не замечает, а когда о нём забывают, всё перестаёт работать. Если ты не знаешь, как прозвонить соединение мультиметром, поможет статья «Как пользоваться мультиметром». В приложении BlueGrays ты найдёшь проекты, которым нужен внешний источник питания: сервоприводы, робот-машинка на L298N, робот, объезжающий препятствия, лампа на 230 V с реле и умный полив. В каждом есть схемы подключения и пошаговый разбор кода, чтобы можно было проследить каждое соединение GND на схеме.

Частые вопросы

Что такое GND и для чего он нужен?

GND (ground) — точка отсчёта с потенциалом 0 V, относительно которой измеряются все напряжения в схеме. Он также образует путь возврата тока к источнику питания. Когда говорят, что на пине Arduino 5 V или 3,3 V, всегда имеют в виду напряжение относительно GND.

GND — это то же самое, что заземление?

В электронике GND — собственная точка отсчёта схемы, и она не обязана быть связана с настоящей землёй. Жёлто-зелёный защитный провод в розетке идёт к электроду в земле для обеспечения безопасности. В проекте на Arduino с питанием от батарей или адаптера GND не связан с заземлением электросети.

Нужно ли подключать GND внешнего источника питания к Arduino?

Да. Если устройство с питанием от внешнего источника получает сигналы от Arduino, обе земли нужно соединить. Соединяют только земли; плюсовые провода остаются раздельными. Иначе у сигнала нет общей точки отсчёта и обратного пути, поэтому сервопривод дёргается или вообще не работает.

Что будет, если не подключить GND?

Принимающее устройство не сможет правильно интерпретировать напряжение; сервоприводы двигаются случайным образом, в последовательном соединении появляются мусорные символы, а датчики дают нестабильные показания. Иногда ток возвращается неожиданными путями и может повредить пины.

Минус (-) и GND — одно и то же?

В большинстве схем с однополярным питанием минусовой вывод источника используется как GND, поэтому на практике это одна точка. Но при двухполярном питании, например ±12 V, GND — средняя точка между двумя источниками, а на минусовом выводе -12 V. Поэтому лучше ориентироваться на символ GND на схеме.

Как предотвратить земляную петлю?

Оставь между двумя устройствами только один путь GND, отдели провода мотора с большим током от земель чувствительных датчиков и соедини всё в одном центре звезды. При необходимости электрически раздели стороны оптопарами или модулями с гальванической развязкой.

Все проекты
Работа с сервоприводом
#35Новичок
Premium

Работа с сервоприводом

Рычаг маленького сервопривода по очереди поворачивается в три положения: до упора в начало, ровно на середину и до упора в конец, задерживаясь на каждой остановке на две секунды. Arduino сообщает мото

4.7(48)
67
Управление сервоприводом потенциометром
#36Новичок
Premium

Управление сервоприводом потенциометром

Когда ты поворачиваешь ручку потенциометра, рычаг сервопривода поворачивается вместе с ней: одно крайнее положение ручки — ноль градусов, другое — пол-оборота. Arduino всё время читает положение ручки

4.6(37)
53
Машинка на L298N с управлением по Bluetooth
#80Продвинутый
Premium

Машинка на L298N с управлением по Bluetooth

Преврати телефон в пульт и управляй своей машинкой-роботом. Arduino получает команды из приложения-пульта на телефоне через Bluetooth-модуль и вращает колёса через драйвер моторов; машинка едет вперёд

5.0(38)
65
Робот, объезжающий препятствия
#81Продвинутый
Premium

Робот, объезжающий препятствия

Как насчёт того, чтобы собрать умную машину, которая сама находит дорогу? Робот, объезжающий препятствия, постоянно осматривает всё вокруг благодаря ультразвуковому датчику спереди. Встретив препятств

5.0(38)
49
Включение лампы 220V кнопкой (удержание)
#19Продвинутый
Premium

Включение лампы 220V кнопкой (удержание)

Пока ты держишь кнопку, горит настоящая лампа на 220 вольт, а как только отпустишь — гаснет. Слабый сигнал Arduino не может зажечь лампу напрямую, поэтому между ними стоит реле — выключатель с электри

4.4(30)
38
Умная станция полива
#83Продвинутый
Premium

Умная станция полива

Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян

5.0(42)
57
Измерение освещённости с LDR
#11Новичок

Измерение освещённости с LDR

Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

4.6(81)
141
Цифровой вольтметр с LCD-дисплеем
#56Средний
Premium

Цифровой вольтметр с LCD-дисплеем

Узнай, какое напряжение даёт батарейка или блок питания, с помощью измерителя, собранного своими руками. Делитель из двух резисторов понижает высокое напряжение до уровня, который может прочитать плат

4.5(27)
36