Компонент · Исполнительный механизм

Сервопривод SG90

SG90 — компактный сервопривод массой 9 g для суставов первых роботов. Как он удерживает угол, что поднимает и как им управлять.

Что это такое

SG90 — это микросервопривод: компактный автономный исполнительный механизм, который поворачивается к заданному углу и удерживает его. Обычный двигатель постоянного тока просто вращается, а сервопривод наводится: задайте 90 градусов — и он повернётся на 90 градусов и будет сопротивляться внешнему воздействию. Поэтому это естественный выбор для любого механизма, которому необходимо перейти в известное положение: сустава роботизированной руки, захвата, который открывается и закрывается, поворотной платформы камеры или механизма поворота небольшого робота.

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

Схема управления сервоприводом: сигнал PWM частотой 50 Hz, ширина импульса которого задаёт угол сервопривода. Импульс длительностью 1 миллисекунду задаёт 0 градусов, 1.5 миллисекунды — 90 градусов, а 2 миллисекунды — 180 градусов; значения показаны на циферблатах транспортира.
Сервопривод считывает ширину импульса, а не напряжение: 1 ms — 0°, 1.5 ms — середина диапазона, 2 ms — полный ход; всё это повторяется 50 раз в секунду. Скачать SVG

Как это работает

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

Угол задаётся сигналом PWM частотой 50 Hz, причём сообщение несёт ширину импульса: примерно 1 ms для одного края диапазона, 1.5 ms для середины и 2 ms для другого края. Здесь PWM используется как код положения, а не скорости. На практике библиотека Arduino Servo скрывает формирование импульсов: достаточно задать угол.

Когда его следует использовать

Используйте SG90, когда деталь робота должна перейти в конкретный угол и удерживать его при небольшой нагрузке: пальцы захвата, небольшие суставы руки, подвесы датчиков или тяга механизма поворота лёгкого шасси. Диапазон ~180° и мгновенное управление «перейти в этот угол» идеально подходят для изучения кинематики и создания выразительных механизмов.

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

Подключение и важные нюансы

  • Питайте его отдельно. Остановившийся SG90 может потреблять 500–700 mA — намного больше, чем может обеспечить вывод 5 V микроконтроллера. Используйте отдельный источник 5 V и соедините его землю с землёй платы, иначе напряжение просядет и плата перезагрузится.
  • Он не вращается непрерывно. Стандартный SG90 поворачивается на ~180° и останавливается. Команда «вращаться постоянно» ничего не даёт; для приводного колеса нужен другой исполнительный механизм.
  • Не прикладывайте чрезмерное усилие и не допускайте останова. Нейлоновые шестерни ломаются от перегрузки или резкого удара. Поддерживайте небольшие нагрузки или переходите на металлические шестерни.
  • Ожидайте небольшого дрожания. Дешёвые сервоприводы слегка колеблются вокруг цели. Стабильное питание и отключение сигнала, когда удержание сустава не требуется, уменьшают его.

Подключение

Три провода, причём цвета у хобби-сервоприводов практически универсальны:

Провод Цвет (SG90) Назначение
1 Коричневый Земля
2 Красный Питание, 4.8–6 V
3 Оранжевый Сигнал — PWM частотой 50 Hz

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

SG90 Arduino Uno Примечание
Коричневый GND Должен иметь общую землю с источником питания сервопривода
Красный Не вывод 5 V Arduino Отдельный источник 5 V — см. ниже
Оранжевый Любой цифровой вывод Библиотека Servo работает на любом выводе

Почему нельзя питать от вывода 5 V Arduino

SG90 потребляет около 10 mA в режиме ожидания, 150–250 mA при движении и 650 mA при останове. Источник питания USB, от которого работает Uno, ограничен 500 mA для всей платы, а встроенный регулятор при питании через разъём имеет собственный тепловой предел.

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

Подайте отдельное питание 5 V, объедините земли и установите конденсатор 470 µF параллельно питанию сервопривода рядом с разъёмом.

Связь между шириной импульса и углом

Сервопривод не считывает напряжение. Он считывает длительность импульса пятьдесят раз в секунду.

Ширина импульса Номинальный угол Что фактически делает SG90
1.0 ms 0° Часто останавливается на 10–15° раньше
1.5 ms 90° Середина диапазона, обычно точная
2.0 ms 180° Часто останавливается на 10–15° раньше
< 0.5 ms или > 2.5 ms — Гудит, упираясь в крайний упор, и потребляет ток останова

Диапазон 1–2 ms является соглашением, а не стандартом. Многие SG90 достигают настоящих крайних положений ближе к 0.6 ms и 2.4 ms, поэтому библиотека Arduino Servo с функцией attach() принимает необязательные минимальную и максимальную ширины импульса:

servo.attach(9, 600, 2400);   // instead of the 544/2400 defaults

Такая калибровка для каждого сервопривода — разница между рукой, достигающей рабочего пространства, и рукой, которая по непонятной причине не достигает его на обоих краях примерно на 20°.

Минимальный рабочий код

#include <Servo.h>

Servo joint;
const int PIN = 9;

void setup() {
  joint.attach(PIN, 600, 2400);   // calibrate these two numbers per servo
  joint.write(90);                 // centre before doing anything else
  delay(500);
}

// Move gently instead of jumping — a servo commanded to jump goes at full speed.
void sweepTo(int target, int stepDelayMs) {
  int current = joint.read();
  int step = (target > current) ? 1 : -1;
  while (current != target) {
    current += step;
    joint.write(current);
    delay(stepDelayMs);
  }
}

void loop() {
  sweepTo(20, 15);
  delay(400);
  sweepTo(160, 15);
  delay(400);
}

joint.write(160) и плавное перемещение заканчиваются при 160°, но это полностью разные электрические события. Скачок команды задаёт полную скорость, а при нагруженном суставе это всплеск 650 mA и механический удар через нейлоновые шестерни. Плавное перемещение распределяет то же движение на две секунды и потребляет лишь долю тока. На многосуставной руке это разница между источником питания, который справляется, и тем, который не справляется.

Момент: что означает 1.8 kg·cm

Характеристика — 1.8 kg·cm при 4.8 V: сервопривод может удерживать 1.8 kg на расстоянии 1 cm от вала или 1.8/L kg при расстоянии L в сантиметрах. Именно последняя часть часто вводит в заблуждение.

Длина плеча от вала Максимальная нагрузка (при останове) Безопасная рабочая нагрузка (~30%)
1 cm 1800 g 540 g
5 cm 360 g 108 g
10 cm 180 g 54 g
15 cm 120 g 36 g

Следует запомнить два обстоятельства. Во-первых, момент линейно уменьшается с увеличением вылета, поэтому плечо длиной 15 cm при абсолютном останове может поднять только 120 g. Во-вторых, никогда не проектируйте исходя из момента останова. Сервопривод в останове потребляет полный ток, не совершает движения и нагревается; треть момента останова — разумный предел для сустава, который должен удерживать положение в течение значительного времени.

Эта величина также указана для 4.8 V. При 6 V тот же сервопривод обеспечивает примерно 2.2 kg·cm — одно из немногих бесплатных улучшений в хобби-робототехнике, если источник питания способен отдавать соответствующий ток.

Уменьшение дрожания

Дешёвые сервоприводы слегка колеблются вокруг цели, и этому есть четыре разные причины, которые стоит различать:

  • Шум источника питания. Самая частая причина. Сервопривод питается по общей шине с двигателями и воспринимает каждый бросок тока как возмущение. Нужен отдельный источник питания и конденсатор возле сервопривода.
  • Дрожание временных интервалов сигнала. Библиотека Servo формирует импульсы программно, поэтому нагруженный цикл или другое прерывание сдвигают их фронты. Полностью устраняет это переход на PCA9685: он формирует импульсы аппаратно.
  • Мёртвая зона. Собственный регулятор сервопривода игнорирует ошибки примерно менее 5 µs по ширине импульса, то есть около 1°. Ниже этого разрешения он просто не реагирует, поэтому требование более мелких шагов не даёт результата.
  • Удержание против нагрузки. Сервопривод, преодолевающий гравитацию на пределе момента, непрерывно гудит. Вызывайте detach(), когда сустав не должен удерживаться, или уравновесьте его механически.

Диагностика

Симптом Вероятная причина Исправление
Плата перезагружается при движении сервопривода Ток сервопривода проходит через Arduino Отдельный источник 5 V, общая земля, конденсатор 470 µF
Постоянно гудит и нагревается Команда выходит за крайний упор Сузить диапазон ширины импульса в attach()
Проходит только около 150° Значения библиотеки по умолчанию не достигают настоящих упоров Использовать attach(pin, 600, 2400) и выполнить настройку
Перемещается в полностью неверный угол Вал установлен под произвольным углом Каждому суставу нужен калибровочный сдвиг и, возможно, изменение знака
Дрожит в покое Шум питания или программное формирование импульсов Сначала конденсатор; при сохранении дрожания — PCA9685
Сломана и теперь проскальзывает Нейлоновые шестерни разрушены ударом или перегрузкой Металлические шестерни MG90S; уменьшить нагрузку или скорость
Со временем движется медленнее и слабее Просадка питания по мере разряда батареи Момент пропорционален напряжению — измерить шину под нагрузкой
Не вращается непрерывно Это позиционный сервопривод Использовать сервопривод непрерывного вращения или редукторный двигатель постоянного тока

SG90 или что-то другое?

Деталь Момент @ 4.8 V Шестерни Когда выбирать
SG90 1.8 kg·cm Нейлон Обучение, небольшие захваты, подвесы датчиков
MG90S 2.2 kg·cm Металл Тот же размер, устойчивость к ударам — взаимозаменяемое улучшение
MG996R 9.4 kg·cm Металл Суставы стандартного размера со значительной нагрузкой
SG90 непрерывного вращения — Нейлон Приводное колесо, где нужна скорость, а не угол
Шаговый двигатель NEMA 17 ~40 N·cm — Точное повторяемое позиционирование без мёртвой зоны

Одно предупреждение о «небольших захватах» в первой строке. Захват — единственное применение, в котором SG90 проводит большую часть времени в останове: удержание объекта не является движением, поэтому обмотка потребляет около 0.5 A без охлаждения — обычная причина гибели таких сервоприводов. По этой причине усилие захвата определяется длиной плеча, а не моментом на табличке: 0.176 N·m при длине пальца 30 mm даёт 5.87 N при останове и около 4.11 N, которые действительно можно удержать. Руководство расчёт сервоприводного захвата рассматривает оба вопроса, а симулятор захвата выполнит расчёт для ваших пальцев.

Честный итог: SG90 — это исполнительный механизм для обучения. Он быстрее всего позволяет понять ощущения управления положением, но недостаточно силён и не обеспечивает достаточной повторяемости для важного сустава. Когда проект перестаёт работать из-за недостаточных возможностей сервопривода, обычно подходит MG90S: те же размеры, то же подключение, но металлические шестерни.

Исследуйте граф

Используется в этих сборках

Проекты, учебные пути и симуляторы, в которых используется Сервопривод SG90.

Сравнение

Альтернативы

Вопросы

Сервопривод SG90: частые вопросы

Что такое сервопривод SG90?

SG90 — это хобби-сервопривод массой 9 g: небольшой редукторный двигатель, который поворачивается к заданному углу и удерживает его вместо свободного вращения. Это самый дешёвый и распространённый сервопривод для начинающих разработчиков робототехники; его применяют в суставах рук, захватах, поворотных платформах для камер и механизмах поворота.

Как работает сервопривод?

Внутри находятся двигатель постоянного тока (DC), редукторная передача, потенциометр и управляющая схема. Потенциометр сообщает схеме текущий угол; она сравнивает его с заданным углом и приводит двигатель в движение до их совпадения. Эта встроенная обратная связь позволяет сервоприводу удерживать точное положение.

Как управлять SG90 с помощью Arduino?

Передайте сигнал PWM частотой 50 Hz, в котором ширина импульса задаёт угол: примерно 1 ms соответствует 0°, 1.5 ms — 90°, а 2 ms — 180°. На практике используйте библиотеку Arduino Servo и вызывайте servo.write(angle): она сформирует временные параметры сама.

Какую массу может поднять SG90?

Момент останова SG90 составляет около 1.8 kg·cm: сервопривод может удерживать 1.8 kg на плече 1 cm или ~180 g на плече 10 cm. Допустимая постоянная нагрузка значительно ниже. Для большей массы или более длинного плеча нужен сервопривод с металлическими шестернями, например MG90S, либо сервопривод стандартного размера.

SG90 или MG90S — что лучше?

Они одного размера и управляются одинаково, но у MG90S металлические шестерни и немного больший момент, поэтому он выдерживает остановы и нагрузки, которые сломали бы нейлоновые шестерни SG90. Используйте SG90 для обучения и небольших нагрузок; выбирайте MG90S, когда сустав несёт значимую массу или подвергается ударам.

Какой ток потребляет SG90?

В режиме ожидания SG90 потребляет лишь несколько миллиампер, но при останове или движении под нагрузкой ток может возрасти до 500–700 mA. Это слишком много для вывода 5 V Arduino, поэтому питайте сервоприводы от отдельного источника 5 V с общей землёй, иначе напряжение просядет и плата перезагрузится.

Дополнительные материалы

Источники