Сервопривод (Servo Motor)
Научитесь управлять точным позиционированием с помощью PWM и создавайте роботизированные системы.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
Сервопривод SG90
Микро серво 0-180°
Источник 5V
Внешнее питание серво
Макетная плата
400 точек + джамперы
Как работает сервопривод
Устройство сервопривода
Сервопривод содержит DC мотор, редуктор и потенциометр обратной связи. Плата управления сравнивает заданное положение с фактическим и корректирует мотор.
Brown
GND
Red
VCC (5V)
Orange
Signal
Типы сервоприводов
| Модель | Тип | Крутящий | Вес |
|---|---|---|---|
| SG90 | Пластик | 1.6 кг/см | 9g |
| MG90S | Металл | 2.2 кг/см | 13g |
| MG996R | Металл | 10 кг/см | 55g |
💡 Рекомендация
Для начала используйте SG90 — он дешёвый и лёгкий. Для серьёзных проектов выбирайте MG996R с металлическими шестернями.
Принцип PWM управления
1мс = 0°
Минимальная длительность импульса. Сервопривод поворачивается полностью влево.
1.5мс = 90°
Средняя позиция. Сервопривод смотрит прямо вверх (нейтраль).
2мс = 180°
Максимальная длительность. Сервопривод поворачивается полностью вправо.
📊 Формула расчёта
Duty Cycle
Duty Cycle = (Pulse Width / 20ms) × 100%
Пример: 1.5мс / 20мс = 7.5%
Частота PWM
Frequency = 1 / 20ms = 50 Гц
Стандарт для сервоприводов
Схема подключения
VCC Подключите внешний 5V к красному проводу
GND Общая земля с ESP32 к коричневому проводу
SIG Оранжевый провод → GPIO 18 (PWM)
⚠️ НЕ питать серво от 3.3V ESP32!
⚠️ Критически важно
Сервопривод потребляет до 500mA-2.5A при нагрузке. ESP32 может выдать только ~500mA на все пины. Используйте внешний источник 5V!
Программирование
Установка библиотеки
Откройте Sketch → Include Library → Manage Libraries
В поиске введите ESP32Servo
Установите библиотеку ESP32Servo (или используйте стандартную <Servo.h>)
Код в Arduino IDE
Монитор порта
График движения
Визуализация работы сервопривода: угол поворота 0°-180° с текущей позицией 90°
Восходящий фронт
Движение от 0° до 180° за ~2.7 секунды. Скорость зависит от delay().
Нисходящий фронт
Возврат от 180° до 0°. Треугольная волна повторяется циклически.
Период
Полный цикл (0°→180°→0°) занимает ~5.4 секунды.
Возможные проблемы
Сервопривод не двигается ↓
Проверьте питание: сервопривод требует внешний источник 5V, не подключайте к 3.3V ESP32! Убедитесь, что GND общий между ESP32 и источником питания. Проверьте, что сигнал подключён к PWM-пину (GPIO 18).
Сервопривод дёргается/вибрирует ↓
Плохой контакт проводов — проверьте соединения. Добавьте конденсатор 100мкФ параллельно питанию (между 5V и GND). Убедитесь, что источник питания достаточно мощный (минимум 1A).
ESP32 перезагружается при работе серво ↓
Недостаток тока — сервопривод потребляет до 500mA-2.5A при нагрузке. Используйте отдельный источник 5V на 2A+. Убедитесь, что GND общий между всеми компонентами.
Серво не достигает крайних позиций ↓
Калибровка углов: используйте servo.writeMicroseconds(1000) для 0° и servo.writeMicroseconds(2000) для 180°. Некоторые серво имеют немного другие диапазоны.
Странные звуки от мотора серво ↓
Механическое препятствие — проверьте, что ничто не мешает вращению. Износ шестерён — если серво старый, возможно нужна замена. Для SG90 используйте пластиковые насадки, не металлические.
Цех Испытаний
Отточите мастерство управления сервоприводами. Каждая задача — шаг к созданию роботизированных систем.
Базовое позиционирование
Три позиции с задержкой
Установите сервопривод в 3 позиции: 0°, 90°, 180° с задержкой 1 секунда между каждой. Используйте myServo.write(angle) и delay(1000).
Плавный разворот
Sweep от 0° до 180° и обратно
Реализуйте плавное движение сервопривода от 0° до 180° и обратно через цикл for. Скорость движения регулируйте через delay(15).
Управление потенциометром
Ручное управление углом через потенциометр
Используйте потенциометр для ручного управления углом сервопривода. Поворот ручки = изменение угла. Выводите текущий угол в монитор порта.
Световой сигнализатор
Реагирование на температуру с DHT датчика
Подключите кнопку к GPIO 15. Кнопка работает как триггер шлагбаума: первое нажатие плавно поднимает серво от 0° до 90° (шаг 1°, delay 10мс), второе нажатие плавно опускает обратно от 90° до 0°. Результат: при каждом нажатии шлагбаум открывается или закрывается, никогда не прыгает — только плавно.
Роботизированная рука
Прототип руки с 2 сервоприводами + управление через UART
Подключите 2 сервопривода: основание на GPIO 18 (поворот 0°–180°), захват на GPIO 19 (0° — закрыт, 90° — открыт). Управление через Serial Monitor командами: LEFT (основание –10°), RIGHT (основание +10°), OPEN (захват 90°), CLOSE (захват 0°), CENTER (основание 90°). Каждая команда выводит текущий угол обоих серво в порт.
Свой Проект
Создайте уникальное роботизированное устройство: манипулятор, камеру с управлением, световую турель... Ограничений нет!
Поздравляем! 🎉
Вы освоили управление сервоприводами! Теперь вы можете создавать роботизированные руки, камеры с управлением, световые турели и другие механические системы.