Сервопривод SG90: подключение к Arduino, характеристики и питание
Классический вечер новичка выглядит так: SG90 воткнута в 5V и сигнальный пин, в скетче write(0) — а плата на первом же ходе уходит в перезагрузку, серво дёргается, гудит, и виноватый ещё три часа ищется в коде. Виноват обычно ток: на старте движения мини-сервопривод тянет 100-250 мА, а упёршийся в препятствие вал поднимает аппетит до 650-700 мА, и USB-порт с его полумпера проседает. Сам привод при этом честный: девять граммов веса, 1,8 кг·см момента при 4,8 В — столько держит килограммовый груз на рычаге длиной в сантиметр, — 0,1 секунды на 60°. За эти деньги привода лучше не бывает.
Ниже — раскладка трёх проводов с ценой каждой переполюсовки, питание с числами по трём режимам (покой, ход, стопор), минимальный скетч на встроенной Servo.h с плавным ходом вместо рывка и таблица выбора: SG90 против MG90S и MG996R. Раскладка и первые углы уже разобраны в базовом уроке про SG90 — здесь собрано то, что обычно ищут перед покупкой: сколько ест, чем кормить и когда переплачивать за металл.
Паспорт на девять грамм: читаем цифры правильно
В паспорте SG90 четыре строки, и каждая привязана к условиям. Момент 1,8 кг·см при 4,8 В — то есть от четырёх свежих батареек; от 6 В цифра выше, от просевшего USB — ниже. Скорость 0,1 с на 60° — паспортная, для хода без нагрузки: под плечом с грузом тот же путь длится вдвое-втрое дольше. Питание 4,8-6 В. Редуктор нейлоновый — лёгкий и тихий, но срезанный зуб после удара об упор никто не вернёт. Размах угла держится в пределах 0-180°: формат импульсов 1000-2000 мкс размечает весь ход, и больше из классической SG90 не выжать — у многих партий фактический край и того меньше, 150-170°.
| Параметр | SG90 | MG90S | MG996R |
|---|---|---|---|
| Момент при 4,8 В | 1,8 кг·см | 1,8 кг·см (2,2 при 6 В) | 9,4 кг·см (11 при 6 В) |
| Ток в движении | 100-250 мА | сотни мА, зависит от нагрузки | около 1,2 А при 6 В |
| Ток стопора (вал упёрт) | 650-700 мА | 0,7-1 А | 2,5 А, рывком до 3 А |
| Шестерни | пластик | металл | металл |
| Вес | 9 г | 13-14 г | 55 г |
| Скорость на 60° | 0,1 с | 0,1-0,11 с | 0,14-0,17 с |
| Питание | 4,8-6 В | 4,8-6,6 В | 4,8-7,2 В |
Три провода: коричневый, красный, оранжевый
Раскладка у мини-серво одинаковая во всех партиях: коричневый — земля, красный — плюс питания, оранжевый — сигнал. Иногда вместо коричневого попадается чёрный, вместо оранжевого — жёлтый; порядок на разъёме слева направо всё тот же: земля, питание, сигнал. Сигнальный провод втыкается в любой цифровой пин — скажем, D9 — а разговор идёт импульсами: пятьдесят раз в секунду плата отсылает посылку длиной 1000-2000 мкс, и каждая длина означает свой угол. Механику этого языка и цену нестандартных импульсов разбирает урок про импульсы 1000-2000 мкс; весь путь от вскрытия коробки до первого угла с фото — в уроке про подключение SG90.
Перепутать провода стоит дорого. Красный и коричневый местами — электроника серво умирает без всяких защитных диодов; оранжевый на питание — то же самое. С питанием держите в голове простое правило: земля серво — в GND платы, плюс — в 5V только у одной серво с лёгкой нагрузкой, о числах дальше. Куда именно втыкаться на плате, показывает распиновка Uno.
Питание с числами: покой, ход, стопор
Потребление SG90 живёт в трёх режимах, и между крайними — разница в семьдесят раз. Таблица ниже собрана из паспортных цифр и моих замеров на макетке с юсб-мультиметром; у вашего экземпляра числа будут в тех же вилках, но не дословно.
| Режим | Ток SG90 | Что происходит | Что делать |
|---|---|---|---|
| Покой | около 10 мА | электроника слушает импульсы и изредка подкручивает вал | detach() в простое — уйдут гул и ток удержания |
| Ход без нагрузки | 100-250 мА | мотор раскручивает вал, редуктор шумит ровно | от USB живёт одна серво |
| Стопор (вал упёрт) | 650-700 мА | мотор давит в препятствие, корпус греется | границы угла в коде, концевик, таймаут |
| Старт движения | короткий бросок, близкий к стопорному | рывок на разгоне длится миллисекунды | конденсатор 470-1000 мкФ у разъёма |
USB-порт отдаёт около 500 мА, из которых Uno забирает свои 40-50. Отсюда практическое правило: одна SG90 с флажком из картона — USB вывозит; две серво, плечо с грузом или любая механика, где возможен упор, — отдельный БП 5-6 В на 1-2 А с запасом под стопор. Земля блока обязательно соединяется с GND платы: без общего минуса сигнал висит в воздухе, и серво не слушает ни один скетч. Для MG996R арифметика своя — блок подбирают по стопорному току с полуторным запасом, что по даташиту посчитано в уроке про MG996R; схема с конденсатором и разводкой земли — в уроке про отдельное питание и общий GND, а обзор источников целиком — в гайде по питанию Arduino.
Минимальный скетч: attach, write и плавный ход
Библиотека Servo.h встроена в Arduino IDE — ничего ставить не нужно. attach(9) закрепляет серву за пином, write(90) посылает угол. Одна тонкость: библиотека забирает Timer1, и ШИМ на пинах 9 и 10 рядом с серво молчит — это не поломка, а плата за кадр 50 Гц; если ШИМ нужнее серво, есть ходы против этого конфликта, а detach() отпускает серво и возвращает таймер — об этом урок про свободный рог.
#include <Servo.h> Servo sg90; void setup() { sg90.attach(9); // оранжевый на D9, красный на 5 В, коричневый на GND} void loop() { sg90.write(0); // крайнее левое delay(1000); sg90.write(180); // крайнее правое — резко, с рывком delay(1000);}Резкий write из крайнего в крайнее — это удар качалки, бросок тока и звон редуктора; механика и электроника платят за такое одновременно. Плавный ход лечит всё сразу: серва проходит по градусу за шагом, без рывков и без пиковой просадки. Паузу на градус держите в пределах 5-20 мс — быстрее 5 мс серва всё равно не съест, её кадр длится 20 мс.
#include <Servo.h> Servo sg90;int ugol = 0; // где вал сейчасint cel = 180; // куда едемunsigned long tStep = 0;const unsigned long STEP_MS = 10; // 10 мс на градус: 180° за ~1,8 с void setup() { sg90.attach(9); sg90.write(ugol);} void loop() { unsigned long now = millis(); if (now - tStep >= STEP_MS) { tStep += STEP_MS; // ровная сетка шагов, без дрейфа if (ugol < cel) ugol++; else if (ugol > cel) ugol--; else cel = (cel == 180) ? 0 : 180; // доехали — разворот sg90.write(ugol); }}Мой вердикт по этой таблице: если ось лёгкая — флажок, стрелка, шторка из картона — переплата за MG90S не окупается, SG90 хватает с запасом. Металлические шестерни MG90S покупают тогда, когда удар об упор встроен в механику: момент тот же, редуктор переживает то, что у SG90 кончается треском и зубом на столе. А MG996R — уже не про макетку: он ждёт груза и отдельного блока, потому что стопорный ток вчетверо выше мини-серво. Если сомневаетесь между классами приводов целиком — серво, шаговик, щёточный мотор — есть отдельный разбор выбора привода.
Какой сервопривод выбрать: цена лишнего ньютона
Двигаюсь от задачи, а не от характеристик. Флажок-указатель, стрелочный индикатор, шторка, лёгкая кулиса кормушки — SG90: дешевле всех, ток вписывается в плату, девять граммов не ломают механику. Ворота, заслонка с уплотнителем, рычаг с резиновым буфером на конце — MG90S: момент тот же, но металлические шестерни переживают то, на чём SG90 теряет зуб. Плечо с грузом, пан-тилт с камерой, крупный дозатор — MG996R и отдельный блок по стопору. Пишете на ESP32 — помните про 3,3-вольтовую логику сигнала, у неё свои грабли.
- задал 60° — вал реально доезжает до 54°: момент кончился, серва недоезжает под нагрузкой
- треск и скрежет при ходе — шестерни уже с задирами, срезанный зуб на подходе
- корпус греется в статике — вал держится против упора, так серва донашивается за вечер
- плата перезагружается на первом ходе — питание кончилось раньше, чем заработал код
Скептикам про «возьму MG996R на всякий случай»: у крупной сервы другая цена ошибки — на заклинивании она валит плату так же уверенно, как SG90 на USB, только блок питания нужен уже на 5 А. Момент покупают под задачу, а не про запас; недоезд под нагрузкой лечится лёгкой механикой чаще, чем покупкой монстра.