Перейти к основному содержимому

Сервопривод

Обычный мотор вращается, пока получает питание. Позиционный сервопривод работает иначе: программа задаёт целевое положение выходного вала, а встроенная электроника сама сравнивает команду с текущим положением и двигает механизм.

Скриншот Tinkercad: Arduino подключён к сервоприводу и потенциометру

Коротко

У сервопривода три разные линии: управляющий сигнал, питание и земля. Блок положения меняет ширину командного импульса на сигнальной линии — это не PWM-регулирование мощности. Для отдельного источника питания землю источника соединяют с землёй контроллера.

Зачем это нужно

Роботу часто требуется не непрерывное вращение, а определённое положение:

  • повернуть датчик влево, прямо или вправо;
  • открыть и закрыть небольшой захват;
  • поднять рычаг или заслонку;
  • направить камеру;
  • переместить стрелку индикатора.

В сервопривод уже встроены мотор, редуктор, датчик положения и регулятор. Поэтому визуальная программа может использовать понятную команду «задать положение». Но точность, диапазон, скорость и допустимая нагрузка зависят от модели, питания и механики.

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

Главная идея

Система состоит из внешнего и внутреннего контуров:

блок программы -> командный импульс -> электроника сервопривода
-> мотор и редуктор
датчик положения внутри привода ------> сравнение с целью

Arduino не подаёт напряжение на мотор напрямую и не знает точного движения шестерён. Он периодически передаёт командный импульс. Встроенный регулятор старается приблизить вал к соответствующему положению.

Скриншот Tinkercad: блоки плавного перемещения сервопривода

Положение, а не обещанный угол

Блок Tinkercad показывает значение в градусах, но это командная шкала виртуального привода. Для реального сервопривода безопасный диапазон и соответствие механическому углу определяются моделью, калибровкой и установленным рычагом.

Три провода — три разные роли

У большинства учебных хобби-сервоприводов три соединения:

ЛинияРольКуда идёт
сигналпередаёт командные импульсык подходящему цифровому контакту контроллера
питаниедаёт энергию мотору и электронике приводак источнику в допустимом диапазоне
землязамыкает питание и задаёт общий уровень сигналак земле источника и контроллера

Цвета проводов часто помогают, но не являются гарантией. Распиновку берут из документации конкретной модели или маркировки разъёма. Ошибка полярности может повредить сервопривод.

При отдельном источнике положительный провод источника идёт к питанию сервопривода. Землю источника соединяют с землёй сервопривода и контроллера. Сигнал идёт с отдельного контакта Arduino. Положительные линии двух источников нельзя объединять автоматически — схема питания зависит от платы и проекта.

Командные импульсы и положение

Хобби-сервопривод получает повторяющиеся импульсы. Информацию о цели несёт длительность активной части импульса. Более короткая, средняя и более длинная длительности соответствуют разным положениям внутри поддерживаемого диапазона.

Точные значения и период обновления зависят от модели и библиотеки. Нельзя считать произвольный диапазон универсальным. Официальная библиотека Arduino Servo предоставляет команды write() и writeMicroseconds(), а также позволяет задать границы импульсов при подключении канала. В блоковой среде эти детали может скрывать команда положения.

Что меняетсяЧто это означает
ширина командного импульсажелаемое положение
частота обновления в допустимом режимерегулярное подтверждение команды
напряжение питаниядоступный приводной режим в пределах спецификации
механическая нагрузкаток, скорость перехода и ошибка положения

Это отличается от analogWrite() для яркости или скорости мотора. Там коэффициент заполнения управляет средней передаваемой энергией внешней нагрузке. Здесь короткий импульс кодирует команду, а силовую энергию сервопривод берёт по отдельному проводу питания.

Блок положения в Tinkercad

В группе Output есть встроенный блок rotate servo on pin ... to ... degrees. Он сразу содержит два параметра: цифровой контакт Arduino и командное положение в градусах. Отдельный блок инициализации для этого примера не нужен: Tinkercad создаст его в текстовом коде.

Перед запуском:

  1. сверьте номер в блоке с сигнальным проводом на виртуальной схеме;
  2. начните со среднего положения, а не с крайнего;
  3. добавьте небольшое изменение в одну сторону;
  4. добавьте паузу, чтобы движение было видно;
  5. проверьте созданный код в Blocks + Text.

В тексте можно увидеть вызовы библиотеки Servo. Они помогают понять, что скрывает блок, но ручно добавлять библиотеку в режиме Blocks не требуется.

Безопасный первый запуск

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

  1. Отключите питание.
  2. Сверьте сигнальный, силовой и земляной контакты.
  3. Убедитесь, что источник подходит по напряжению и току.
  4. Соедините земли источника и контроллера.
  5. Соберите программу с одним безопасным средним положением.
  6. Включите источник и наблюдайте краткий переход.
  7. Добавьте небольшое изменение в одну сторону, затем в другую.
  8. Только после проверки установите рычаг и механизм.

Если привод сразу идёт в упор, отключите питание. Не пытайтесь удерживать рычаг рукой и не расширяйте диапазон наугад.

Механические границы

Значение блока не гарантирует, что механика допускает такое положение. Ограничения появляются на нескольких уровнях:

ОграничениеПример последствия
внутренний диапазон сервоприводаредуктор достигает конструктивного упора
установка рычага на шлицпрограммный центр не совпадает с геометрическим
тяги и шарнирымеханизм заклинивает раньше привода
момент нагрузкивал не достигает цели и привод нагревается
питание и проводанапряжение проседает, контроллер перезапускается

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

Гудение — сигнал для проверки

Если сервопривод долго гудит и удерживает упор, он продолжает пытаться исправить ошибку положения. Ток и нагрев растут. Уменьшите нагрузку или диапазон и проверьте механику и питание.

Пример: поворот датчика

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

при запуске
установить среднее безопасное положение
ждать завершения движения

повторять
задать левое проверенное положение
ждать завершения движения
прочитать датчик

задать среднее положение
ждать завершения движения
прочитать датчик

задать правое проверенное положение
ждать завершения движения
прочитать датчик

Пауза относится к механическому переходу, а не к времени распространения сигнала датчика. Её подбирают экспериментально. Если читать датчик сразу после команды, результат может относиться к промежуточному положению.

Для плавного сканирования цель изменяют небольшими шагами. Однако слишком частое создание новых команд не делает дешёвый привод точнее. Полезнее дать механике время, исключить люфт и не требовать недостижимой скорости.

Пример: захват

У захвата есть минимум три полезных состояния: открыто, удержание предмета и безопасный нейтральный режим. Команда «закрыть до максимума» опасна: предметы имеют разные размеры, а редуктор может постоянно давить на упор.

Порядок настройки:

  • найти положение полностью открытого механизма без удара;
  • медленно уменьшать раскрытие с лёгким предметом;
  • остановиться, когда удержание достаточно;
  • записать рабочие границы;
  • предусмотреть остановку или ослабление нагрузки, если конструкция это позволяет.

Один лишь позиционный сервопривод обычно не сообщает внешней программе фактический ток или силу захвата. Для контролируемого усилия нужен дополнительный датчик, специализированный привод или механическое ограничение.

Питание и пиковый ток

Даже небольшой сервопривод может кратковременно брать большой ток. Несколько приводов, стартующих одновременно, создают общий пик. Признаки слабого питания:

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

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

Позиционный и непрерывный сервопривод

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

Перед написанием блоков уточните тип:

ТипЧто задаёт командаЧто наблюдаем
позиционныйцелевое положение в рабочем диапазоневал стремится к положению и удерживает его
непрерывного вращениянаправление и условную скоростьвал продолжает вращаться

Этот урок посвящён позиционному типу.

Что запомнить про сервопривод

  • Позиционный сервопривод получает цель и сам управляет встроенным мотором.
  • Сигнал, питание и земля — три отдельные линии.
  • Отдельный источник требует общей земли с контроллером.
  • Ширина командного импульса кодирует положение и не питает мотор.
  • Значение блока не гарантирует точный физический угол.
  • Рабочие границы находят от центра, не упирая редуктор и механизм.
  • Резкие переходы и упоры увеличивают ток и нагрев.

Практика

Задание 1. Проверка трёх линий

По документации своего сервопривода составьте таблицу сигнала, питания и земли. Нарисуйте схему с отдельным источником и общей землёй. Питание подключайте только после проверки наставником.

Задание 2. Поиск безопасного диапазона

Соберите блоковую программу, которая начинает со среднего положения и затем делает малые шаги в обе стороны. Разработайте журнал наблюдений для поиска рабочих границ без упора.

Задание 3. Сканер расстояния

Спроектируйте последовательность из трёх положений датчика. Для каждого укажите момент команды, паузу на механику, чтение датчика и сохранение результата. Готовые значения положений не используйте.

Задание 4. Диагностика питания

Составьте порядок проверки для случая, когда один сервопривод работает, а при подключении второго контроллер перезапускается. Разделите программные и электрические причины.

Проверьте себя

  1. Чем позиционный сервопривод отличается от обычного мотора?
  2. Какие три линии нужны сервоприводу?
  3. Зачем соединять земли отдельного источника и контроллера?
  4. Что кодирует ширина командного импульса?
  5. Почему сервосигнал нельзя считать PWM-питанием мотора?
  6. Почему программное значение не гарантирует точный угол?
  7. Чем опасен длительный упор механизма?
  8. Как отличается команда для привода непрерывного вращения?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

  • Сервопривод — привод со встроенным мотором, редуктором, датчиком и регулятором.
  • Целевое положение — положение, к которому стремится вал по команде.
  • Командный импульс — короткий сигнал, длительность которого кодирует цель.
  • Обратная связь — измерение внутреннего положения для коррекции движения.
  • Редуктор — механизм, изменяющий скорость и момент мотора.
  • Механический упор — физическая граница движения.
  • Пиковый ток — кратковременно высокий ток при старте или тяжёлой нагрузке.
  • Привод непрерывного вращения — сервоподобный привод, где команда задаёт вращение, а не угол.

Связанные темы

Источники