Управление сервоприводом Arduino: от SG90 до 360° и лазерного рисования
В этом подробном руководстве разберём, как управлять сервоприводами Arduino — от самых популярных моделей SG90 и MG995 до сервоприводов непрерывного вращения 360°. Научимся подключать, программировать, избегать типичных ошибок и реализуем интересный проект — управление лазером двумя сервоприводами для рисования простых фигур.
Что такое сервопривод и чем он отличается от шагового двигателя
Сервопривод (сервомотор) — это замкнутая система, состоящая из двигателя постоянного тока, редуктора, потенциометра (или другого датчика положения) и электронной платы управления. Главное преимущество — способность точно удерживать заданный угол благодаря обратной связи.
В отличие от шагового двигателя, который просто считает шаги и может «потерять» их при перегрузке, сервопривод постоянно сравнивает текущее положение с целевым и корректирует его. Именно поэтому сервоприводы широко используются в робототехнике, моделях, камерах слежения и умном доме.
Подключение сервопривода к Arduino
Стандартный сервопривод имеет три провода:
- Красный — питание +4,8…6 В (обычно 5 В)
- Коричневый/чёрный — GND
- Оранжевый/жёлтый — сигнал (PWM)
Важно: мощные сервоприводы (MG995, MG996R и др.) нельзя питать напрямую от 5V Arduino — это приведёт к просадкам напряжения, сбоям и даже выходу платы из строя. Используйте внешний источник 5–6 В и обязательно соединяйте общий GND.
Управление движением сервопривода
Положение вала задаётся длительностью импульса PWM (50 Гц, период 20 мс):
- 544 мкс → 0°
- 1520 мкс → 90°
- 2400 мкс → 180°
В библиотеке Servo.h по умолчанию используются 544 мкс для 0° и 2400 мкс для 180°. Скорость регулируется шагом и задержкой в коде.
Сервопривод SG90 — самый популярный выбор для начинающих
Характеристики SG90:
- Угол поворота: 180°
- Скорость: ~0,12 с/60° при 4,8 В
- Крутящий момент: ~1,8 кг·см при 4,8 В
- Питание: 4,8–6 В
- Вес: всего 9 г
Совет: для продления срока службы и устранения треска устанавливайте крайние положения не 0°/180°, а 10°/170°.
Сервоприводы непрерывного вращения 360° (MG995/MG996R модификация)
В отличие от обычных сервоприводов, здесь write() задаёт не угол, а скорость и направление:
- 90 — полная остановка
- 0 — максимальная скорость в одну сторону
- 180 — максимальная скорость в другую сторону
Примеры кода для управления сервоприводом
Базовое управление одной сервой (0° → 180° → 0°)
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9); // пин 9
}
void loop() {
myservo.write(10); // безопасный минимум
delay(1000);
myservo.write(90);
delay(1000);
myservo.write(170); // безопасный максимум
delay(1000);
myservo.write(90);
delay(1000);
}
В setup() происходит привязка сервопривода к пину.
В loop() сервопривод последовательно перемещается:
в безопасное минимальное положение 10°,
в центр 90°,
в безопасное максимальное положение 170°,
снова в центр 90°, с паузами по 1 секунде между позициями.
Код реализует циклическое перемещение сервопривода между крайними и центральным положениями.
Плавное управление двумя сервоприводами
#include <Servo.h>
Servo servo1;
Servo servo2;
void setup() {
servo1.attach(9);
servo2.attach(10);
servo1.write(90);
servo2.write(90);
delay(500);
}
void loop() {
for (int pos = 10; pos <= 170; pos += 1) {
servo1.write(pos);
servo2.write(180 - pos); // зеркальное движение
delay(15);
}
delay(1000);
for (int pos = 170; pos >= 10; pos -= 1) {
servo1.write(pos);
servo2.write(180 - pos);
delay(15);
}
delay(1000);
}
В setup() устанавливает оба сервопривода в среднее положение 90° и делает небольшую паузу.
В loop():
Первый цикл постепенно перемещает servo1 от 10° до 170°, а servo2 зеркально (от 170° до 10°).
Пауза 1 секунда.
Второй цикл возвращает сервоприводы обратно к исходным положениям, снова с зеркальной синхронизацией.
Реализует плавное зеркальное движение двух сервоприводов туда и обратно с задержкой 15 мс на каждый шаг.
Проект: рисование фигур лазером с помощью двух сервоприводов
Один из самых зрелищных проектов — создание простого XY-плоттера с лазерной указкой. Две обычные сервы управляют положением лазера по горизонтали и вертикали.
Для более плавного движения рекомендуется:
- Использовать сервоприводы с металлическим редуктором
- Добавить небольшую задержку между шагами
- Калибровать крайние точки
Заключение
Сервоприводы — одно из самых востребованных устройств в проектах Arduino. SG90 идеально подходит для простых поделок, а модификации 360° — для колесных роботов и конвейеров. Главное — правильное питание, калибровка крайних положений и аккуратная работа с библиотекой Servo.h. Освоив управление сервоприводами, вы сможете создавать роботов, манипуляторы, умные замки, системы слежения и многое другое.