Компоненты · 3 мин чтения

Что такое сервопривод? Управление сервоприводом с Arduino

Что такое сервопривод, как он работает и как подключить его к Arduino? Сравнение SG90, MG90S и MG996R, библиотека Servo, питание сервоприводов и частые ошибки.

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

SG90
SG90
MG90S
MG90S
MG996R
MG996R

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

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

Угол передаётся сервоприводу PWM-сигналом: импульс приходит каждые 20 мс (50 Hz), а ширина импульса задаёт угол. Примерно 1 мс означает 0°, 1,5 мс — 90°, 2 мс — 180°. Большинство сервоприводов принимают диапазон 0,5–2,5 мс; точные значения немного отличаются у разных моделей.

Провода сервопривода и подключение

Цвет проводаНазначениеКуда подключается на Arduino
Коричневый / чёрныйGND (земля)GND
КрасныйПитание (+4,8–6 V)5V или внешний источник 5–6 V
Оранжевый / жёлтый / белыйСигнал (PWM)Любой цифровой пин (например, 9)
Не питай несколько сервоприводов или мощный сервопривод вроде MG996R от пина 5V платы Arduino. Под нагрузкой сервопривод может потреблять больше 1 A: плата перезагружается, а USB-порт может пострадать. Используй внешний источник 5–6 V и обязательно соедини его GND с GND платы Arduino.

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

FS90R
МодельМомент (примерно)ШестерниДля чего подходит
SG901,8 кг·смПластикЛёгкие задачи, первые эксперименты, pan-tilt
MG90S2,2 кг·смМеталлТот же размер, что у SG90, но прочнее
MG996R9–11 кг·смМеталлРуки роботов, тяжёлые крышки и механизмы
FS90R1,5 кг·смПластикПостоянное вращение: небольшие колёсные роботы
Сервоприводы постоянного вращения вроде FS90R не встают на угол: сигнал задаёт скорость и направление (90 — стоп, 0 — полный ход в одну сторону, 180 — полный ход в другую). Если нужно управлять положением, выбирай стандартный сервопривод.

Управление сервоприводом с Arduino: угол задаётся потенциометром

Потенциометр
Потенциометр
Arduino Uno
Arduino Uno
  1. Подключи коричневый провод сервопривода к GND, а красный к 5V (для одного SG90).
  2. Оранжевый сигнальный провод подключи к цифровому пину 9.
  3. Крайние ножки потенциометра подключи к 5V и GND, а среднюю к A0.
  4. Загрузи код ниже: при вращении потенциометра сервопривод должен поворачиваться в пределах 0–180°.
C++ (Arduino IDE)
1#include <Servo.h>
2
3Servo servo;                       // servo nesnesi / servo object
4const int POT_PIN = A0;            // potansiyometre / potentiometer
5
6void setup() {
7  servo.attach(9);                 // sinyal 9. pinde / signal on pin 9
8}
9
10void loop() {
11  int value = analogRead(POT_PIN);         // 0–1023 oku / read 0–1023
12  int angle = map(value, 0, 1023, 0, 180); // açıya çevir / convert to angle
13  servo.write(angle);                      // servoyu döndür / move the servo
14  delay(15);                               // servo yetişsin / let the servo settle
15}

servo.write(angle) принимает угол от 0 до 180. Для более точного управления используй servo.writeMicroseconds(1500), чтобы задать ширину импульса прямо в микросекундах. Какие пины твоей платы поддерживают PWM и какие цифровые, можно посмотреть в утилите распиновки.

Сервоприводы с ESP32 и Raspberry Pi Pico

  • ESP32: стандартная библиотека Servo не работает; установи в Arduino IDE библиотеку ESP32Servo. Она используется так же. Для большинства сервоприводов сигнала 3,3 V достаточно.
  • Raspberry Pi Pico (MicroPython): настрой PWM на 50 Hz и задай ширину импульса через duty_ns(): 1 000 000 ns ≈ 0°, 1 500 000 ns ≈ 90°, 2 000 000 ns ≈ 180°.
  • На обеих платах не питай сервопривод от пина 3,3 V платы; используй линию 5 V или внешний источник.

Самые частые ошибки с сервоприводами

  • Дрожание и случайные движения: чаще всего из-за нехватки питания. Используй внешний источник и поставь на питание сервопривода конденсатор 470–1000 µF.
  • Забытая общая GND: сервопривод с внешним питанием не понимает сигнал, если земли не соединены.
  • Сервопривод упирается в предел: упёршись в механический ограничитель, сервопривод жужжит и греется. При необходимости ограничь диапазон углом 10–170°.
  • Ожидание PWM на пинах 9 и 10: на Uno библиотека Servo использует Timer1, поэтому, пока подключён сервопривод, analogWrite на этих пинах не работает.
  • Ожидание угла от сервопривода постоянного вращения: модели вроде FS90R не знают своего положения, у них управляются только скорость и направление.

Чтобы увидеть, что можно сделать с сервоприводами, загляни в проекты с роботами и моторами в BlueGrays. Если ты только начинаешь с Arduino, сначала прочитай Что такое Arduino?, а чтобы собрать схему на плате, — Что такое макетная плата?.

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

На сколько градусов поворачивается сервопривод?

Стандартные сервоприводы поворачиваются примерно на 180°; некоторые модели на 90° или 270°. Сервоприводы постоянного вращения крутятся без ограничений, но не держат угол.

Можно ли питать сервопривод от пина 5V платы Arduino?

Один SG90 с лёгкой нагрузкой для пробы можно. Для нескольких сервоприводов, мощных моделей вроде MG996R или проектов под нагрузкой используй внешний источник 5–6 V и соедини земли.

Сколькими сервоприводами может управлять одна Arduino?

Библиотека Servo поддерживает до 12 сервоприводов на Arduino Uno и до 48 на Mega. Для большого количества сервоприводов практичнее 16-канальные I2C-драйверы вроде PCA9685.

Почему сервопривод дрожит?

Самые частые причины — нехватка питания, отсутствие общей земли и длинные сигнальные провода. Используй мощный источник, поставь конденсатор на питание сервопривода и делай провода короткими.

Чем сервопривод отличается от шагового двигателя?

Сервопривод благодаря обратной связи встаёт на заданный угол и остаётся там, обычно в пределах 180°. Шаговый двигатель поворачивается шаг за шагом без ограничений; для точного позиционирования ему нужна плата-драйвер, а своё положение он сам не измеряет.

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

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

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

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

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

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

4.6(37)
52
Управление сервоприводом джойстиком
#60Средний
Premium

Управление сервоприводом джойстиком

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

4.7(42)
58
Сервопривод на 360 градусов из шагового мотора
#68Средний
Premium

Сервопривод на 360 градусов из шагового мотора

Научи обычный шаговый мотор вставать на любой нужный угол по всему кругу. Arduino вычисляет, сколько шагов нужно для каждого угла; мотор по очереди поворачивается на 0, 90, 45, 180, 135 и 360 градусов

4.5(22)
32
Сервопривод на ESP32 (управление потенциометром)
#118Средний
Premium

Сервопривод на ESP32 (управление потенциометром)

В этом проекте сервопривод SG90 управляется потенциометром. Угол сервопривода задаётся сопоставлением аналогового значения потенциометра с диапазоном 0–180 градусов. Библиотека ESP32Servo формирует сигналы сервопривода на подходящих выходных пинах GPIO у ESP32; этот проект использует GPIO 18. Это базовый способ управления для роборук, подвесов камер и механизмов автоматических дверей.

4.3(29)
42
Дверной замок с RFID на ESP32 (RC522 + сервопривод + OLED + зуммер + светодиод)
#137Продвинутый
Premium

Дверной замок с RFID на ESP32 (RC522 + сервопривод + OLED + зуммер + светодиод)

Собираем умный дверной замок на ESP32, модуле RFID RC522, сервоприводе SG90, OLED-дисплее SSD1306, активном зуммере и 2 светодиодах. При поднесении карты её UID сравнивается со списком разрешённых карт в коде: если доступ разрешён, сервопривод поворачивается и открывает дверь (зелёный светодиод + 2 коротких сигнала), а через 5 секунд дверь снова запирается сама. При чужой карте загорается красный светодиод, звучат 3 быстрых сигнала, а прочитанный UID показывается на экране.

4.8(9)
15
Хореография сервоприводов по кругу — анимации на 32 сервоприводах
#102Продвинутый
Premium

Хореография сервоприводов по кругу — анимации на 32 сервоприводах

Визуальный анимационный проект на Arduino Mega с 32 сервоприводами, расставленными по кругу. Сервоприводы собраны в один массив и подключены к пинам 22–53 Mega; они показывают четыре движения: хаотичное дрожание на случайных углах, синхронный взмах всех сразу, плавную волну по кругу и, наконец, стрелку компаса, качающуюся влево и вправо. Эффект бегущей волны создаётся поворотом каждого сервопривода в зависимости от его расстояния до активного.

4.5(40)
62