Микросервопривод SG90 — один из самых популярных и доступных исполнительных механизмов в среде Arduino‑разработчиков. Благодаря компактности, простоте подключения и достаточной точности он стал «рабочей лошадкой» для множества проектов: от учебных моделей до функциональных роботов и автоматизированных устройств.
Что такое сервопривод и как он работает
Сервопривод (сервомотор) — это модуль, который точно позиционирует выходной вал в заданном угле и удерживает его. В отличие от обычного мотора, он «знает», на какой угол повернулся, благодаря обратной связи от потенциометра внутри корпуса.
Принцип работы микросервопривода SG90 TZT для Arduino:
- Микроконтроллер (Arduino) посылает управляющий сигнал в виде ШИМ‑импульса.
-
Встроенная схема сравнивает длительность импульса с текущим положением вала (по данным потенциометра).
-
Мотор корректирует положение, пока не достигнет заданного угла.
-
Вал фиксируется, пока не поступит новый сигнал.
Ключевые характеристики микросервопривода SG90 TZT для Arduino
- Угол поворота: 180°.
-
Рабочее напряжение: 4,8–6,0 В.
-
Крутящий момент: 1,6 кг·см (при 4,8 В).
-
Скорость поворота: 0,12 с на 60° (при 4,8 В); 0,1 с на 60° (при 6,0 В).
-
Материал шестерён: нейлон (лёгкость, но ограниченная прочность).
-
Материал корпуса: пластик.
-
Длина кабеля: 180–250 мм.
-
Габариты: ~23 × 12,2 × 29 мм.
-
Вес: 9–15 г.
-
Рабочий температурный диапазон: –30 … +60 °C.
-
Интерфейс: аналоговый (ШИМ‑сигнал).
Важные замечания:
При питании от Arduino через USB ток может быть недостаточным — используйте внешний источник 5 В.
Для нескольких сервоприводов обязателен отдельный блок питания с общим GND с Arduino.
Длинные провода (более 30 см) могут вызывать помехи — добавьте конденсатор 100 мкФ между VCC и GND у сервопривода.
Типичные проекты и сценарии
1. Роботы‑манипуляторы
- захват и перемещение мелких предметов;
-
моделирование суставов робота.
2. Автоматические заслонки и клапаны
- управление потоком воздуха/жидкости в умных системах;
-
вентиляция, полив, дымоходы.
3. Камеры и датчики с поворотным механизмом
- сканирование пространства;
-
слежение за объектом (с добавлением датчика расстояния).
4. Интерактивные модели и игрушки
- движущиеся глаза/рот у роботов;
-
аниматроника, диорамы.
5. Системы безопасности
- поворотные камеры наблюдения;
-
блокирующие механизмы (засовы, люки).
6. Учебные проекты
- изучение принципов обратной связи и управления движением;
-
прототипирование механизмов.
Плюсы и ограничения микросервопривода SG90 TZT для Arduino
Преимущества:
- низкая стоимость и доступность;
-
простое подключение и программирование;
-
достаточная точность для большинства любительских задач;
-
малый вес и габариты;
-
совместимость со всеми платами Arduino.
Ограничения:
- нейлоновые шестерни — не подходят для высоких нагрузок (легко ломаются);
-
ограниченный угол поворота (180° в базовой версии);
-
заметный люфт вала из‑за пластиковых деталей;
-
при питании от USB Arduino может не хватать тока (требуется внешний источник);
-
чувствительность к перепадам напряжения.
Советы по эксплуатации микросервопривода SG90 TZT для Arduino
1. Используйте внешний источник питания для сервопривода (5 В, 1–2 А), если:
- подключаете более одного SG90;
-
нагрузка на вал значительна (например, рычаг длиной более 5 см).
2. Закрепляйте корпус жёстко — люфт снижает точность.
3. Ограничьте механическую нагрузку — не допускайте заклинивания вала.
4. Добавляйте задержки между командами write() (минимум 200–500 мс), чтобы сервопривод успевал дойти до позиции.
5. Защищайте от влаги и пыли — модуль не герметичен.
6. Проверяйте полярность при подключении питания — ошибка может вывести сервопривод из строя.
7. Используйте демпферы (резиновые прокладки) при креплении, чтобы снизить вибрации.
8. Не оставляйте под нагрузкой надолго — нейлоновые шестерни изнашиваются.
Скетч для микросервопривода SG90 TZT на Arduino
Необходимые компоненты:
- Плата Arduino (Uno, Nano, Mega и др.);
-
Сервопривод SG90;
-
Соединительные провода.
-
Схема подключения
-
Красный провод (VCC) сервопривода → 5 V Arduino;
-
Чёрный провод (GND) сервопривода → GND Arduino;
-
Жёлтый/оранжевый провод (сигнал) → цифровой пин 9 Arduino (PWM‑пин).
Важно! Для одного сервопривода питание от Arduino допустимо. При подключении нескольких сервоприводов используйте внешний источник 5 В с общей землёй.
Базовый скетч (пошаговое перемещение)
#include <Servo.h> // Подключаем библиотеку для работы с сервоприводами
Servo myServo; // Создаём объект для управления сервоприводом
void setup() {
myServo.attach(9); // Привязываем сервопривод к пину 9
myServo.write(0); // Устанавливаем начальный угол 0°
delay(1000); // Ждём 1 с для установки начального положения
}
void loop() {
// Последовательно меняем углы с задержкой 1 с
myServo.write(0); // 0 градусов
delay(1000);
myServo.write(45); // 45 градусов
delay(1000);
myServo.write(90); // 90 градусов
delay(1000);
myServo.write(135); // 135 градусов
delay(1000);
myServo.write(180); // 180 градусов
delay(1000);
}
|
Расширенный скетч (плавное вращение туда‑обратно)
#include <Servo.h>
Servo myServo;
int angle; // Переменная для угла поворота
void setup() {
myServo.attach(9); // Пин для подключения сервопривода
}
void loop() {
// Плавный поворот от 0° до 180° (шаг 1°, задержка 15 мс)
for (angle = 0; angle <= 180; angle++) {
myServo.write(angle); // Устанавливаем угол
delay(15); // Ждём, пока сервопривод повернётся
}
// Плавный поворот от 180° до 0° (шаг 1°, задержка 15 мс)
for (angle = 180; angle >= 0; angle--) {
myServo.write(angle);
delay(15);
}
}
|
Скетч с управлением от потенциометра
#include <Servo.h>
Servo myServo;
const int POT_PIN = A0; // Аналоговый пин для потенциометра
void setup() {
myServo.attach(9);
}
void loop() {
int sensorValue = analogRead(POT_PIN); // Считываем значение потенциометра (0–1023)
int angle = map(sensorValue, 0, 1023, 0, 180); // Преобразуем в угол (0–180°)
myServo.write(angle); // Устанавливаем угол сервопривода
delay(10); // Небольшая задержка для стабильности
}
|
Пояснения к коду
1. Библиотека Servo.h
- Стандартная библиотека Arduino для управления сервоприводами.
-
Поддерживает до 12 сервоприводов на Arduino Uno.
2. Объект Servo
- Servo myServo; — создаём объект для управления одним сервоприводом.
-
Для нескольких приводов создавайте отдельные объекты (Servo servo1, Servo servo2 и т. д.).
3. Функция attach()
- myServo.attach(9); — привязывает сервопривод к цифровому пину 9 (PWM).
-
Можно использовать пины 3, 5, 6, 9, 10, 11 на Arduino Uno/Nano.
4. Функция write()
- myServo.write(90); — устанавливает угол поворота сервопривода (0–180°).
-
0° — крайнее левое положение, 180° — крайнее правое.
5. Плавное движение
- Реализуется через цикл for с пошаговым изменением угла.
-
Задержка delay() определяет скорость поворота (меньше задержка — быстрее движение).
6. Управление от потенциометра
- analogRead() считывает значение потенциометра (0–1023).
- map() преобразует диапазон 0–1023 в 0–180° для сервопривода.
Калибровка
Некоторые экземпляры SG90 могут не достигать точных 0° или 180°.
Подберите крайние углы экспериментально для вашего проекта.
Скорость движения
Меняйте задержку
delay() в цикле для регулировки скорости поворота.
Меньшая задержка = быстрее движение, но выше нагрузка на сервопривод.
Многозадачность
Библиотека Servo использует таймеры Arduino, что может конфликтовать с другими библиотеками (например, Tone).
Для сложных проектов рассмотрите использование внешних сервоконтроллеров.