Урок 21: Управление Сервоприводом
1. Введение

Серводвигатель — это роторный актуатор с управлением положением. Он состоит из корпуса, платы управления, мотора, шестерён и датчика положения. В этом уроке мы рассмотрим принцип работы и управление сервоприводами с помощью Arduino.
2. Принцип работы
Микроконтроллер (MCU) выдает сигнал на серводвигатель. Двигатель имеет встроенную схему обратной связи, которая формирует сигнал с циклом 20 мс и шириной 1–2 мс. Двигатель сравнивает полученное напряжение с напряжением потенциометра и выдает разницу. Микросхема определяет направление вращения и управляет мотором. Шестерни передают силу на вал, а датчик определяет, достиг ли вал командной позиции.

Сервоприводы имеют три провода: коричневый (GND), красный (VCC), оранжевый (сигнал). Цвета могут отличаться в зависимости от бренда.

Сервоприводы используются в системах управления, требующих поддержания различных углов. Обычно диапазон угла вращения составляет от 0 до 180 градусов.
Цвет |
Назначение |
Куда подключать |
---|---|---|
Коричневый/Чёрный |
GND |
GND Arduino |
Красный |
VCC (+5V) |
5V Arduino |
Оранжевый/Жёлтый/Белый |
Сигнал (PWM) |
Цифровой пин Arduino (обычно 9) |
Предупреждение
Если вы используете несколько сервоприводов или мощные модели, обязательно используйте отдельный источник питания для сервоприводов, чтобы не повредить Arduino!
3. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
9G Сервомотор |
3 |
Перемычки |
1 |
USB-кабель |
4. Подключение

Коричневый — GND
Красный — 5V
Оранжевый — цифровой пин 9 (сигнал)
5. Принципы управления
Угол поворота сервомотора контролируется скважностью сигнала ШИМ (широтно-импульсная модуляция). Стандартный цикл сигнала — 20 мс (50 Гц), ширина импульса — от 1 до 2 мс (угол от 0° до 180°). Для разных брендов значения могут отличаться.
6. Методы управления
Существует два способа управления сервоприводом с Arduino:
Ручное формирование ШИМ-сигнала (без библиотеки)
Использование библиотеки Servo (рекомендуется)
Метод 1: Ручной ШИМ
Подключите двигатель к цифровому пину 9. Скомпилируйте программу для управления двигателем, чтобы он вращался под командным углом и отображал угол на экране.
int servopin = 9; // выбор цифрового пина 9 для сигнальной линии сервомотора
int myangle; // инициализация переменной угла
int pulsewidth; // инициализация переменной ширины импульса
int val;
void servopulse(int servopin, int myangle) // определение функции импульса серво
{
pulsewidth = (myangle * 11) + 500; // преобразование угла в ширину импульса 500-2480
digitalWrite(servopin, HIGH);
delayMicroseconds(pulsewidth);
digitalWrite(servopin, LOW);
delay(20 - pulsewidth / 1000);
}
void setup()
{
pinMode(servopin, OUTPUT);
Serial.begin(9600);
Serial.println("servo=o_seral_simple ready");
}
void loop()
{
val = Serial.read();
if (val >= '0' && val <= '9')
{
val = val - '0';
val = val * (180 / 9);
Serial.print("moving servo to ");
Serial.print(val, DEC);
Serial.println();
for (int i = 0; i <= 50; i++)
{
servopulse(servopin, val);
}
}
}
Метод 2: Библиотека Servo
Этот способ проще и надёжнее. Подключите серво к пину 9.
#include <Servo.h>
Servo myservo;
void setup(){
myservo.attach(9); // выбор пина серво (9 или 10)
}
void loop(){
myservo.write(90); // установка угла вращения мотора
}
Основные команды библиотеки Servo:
attach(pin)
— выбор пина для сервоwrite(angle)
— установка угла (0–180)read()
— чтение текущего углаattached()
— проверка, подключён ли сервоdetach()
— отключение серво от пина
7. Результат теста
Загрузите один из примеров кода на Arduino. Серво повернётся на заданный угол. Если подключить Serial Monitor и отправлять цифры 0–9, можно управлять углом вручную (метод 1).
8. Частые ошибки
Серво дёргается или не двигается — недостаточно питания, плохой контакт или ошибка в подключении.
Серво греется — не отключён после движения (используйте detach()), либо слишком большой ток.
Не реагирует на команды — проверьте правильность пинов и библиотеку.
9. Практические задачи
Управляйте сервоприводом с помощью потенциометра.
Сделайте «умный замок» или шлагбаум.
Реализуйте плавное движение серво с помощью цикла.
10. Идеи для расширения
Управление несколькими сервоприводами (с внешним питанием)
Управление с помощью потенциометра или кнопок
Реализация обратной связи по положению
Использование сервоприводов в робототехнике, моделях, автоматике
Подробнее о библиотеке Servo: https://www.arduino.cc/reference/en/libraries/servo/