Главная страница » Как сделать чтобы сервопривод вращался без остановки

Как сделать чтобы сервопривод вращался без остановки

  • автор:

Работаем с сервоприводами

СервоприводВнешний вид

СервоприводFritzing СервоприводУсловное обозначение на схеме

Сервопривод — это механизм с электромотором с управлением. Вы можете вращать механический привод на заданный угол с заданной скоростью или усилием.

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

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

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

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

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

Servo

Крутящий момент и скорость поворота

Крутящий момент — векторная физическая величина, равная произведению радиус-вектора, проведённого от оси вращения к точке приложения силы, на вектор этой силы. Характеризует вращательное действие силы на твёрдое тело. Эта характеристика показывает, насколько тяжёлый груз сервопривод способен удержать в покое на рычаге заданной длины. Если крутящий момент сервопривода равен 5 кг×см, то это значит, что сервопривод удержит на весу в горизонтальном положении рычаг длины 1 см, на свободный конец которого подвесили 5 кг. Или, что эквивалентно, рычаг длины 5 см, к которому подвесили 1 кг.

Скорость сервопривода измеряется интервалом времени, который требуется рычагу сервопривода, чтобы повернуться на 60°. Характеристика 0,1 с/60° означает, что сервопривод поворачивается на 60° за 0,1 с. Из неё несложно вычислить скорость в более привычной величине, оборотах в минуту, но так сложилось, что при описании сервоприводов чаще всего используют такую единицу.

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

Виды сервоприводов

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

Шестерни для сервоприводов бывают из разных материалов: пластиковые, карбоновые, металлические.

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

Карбоновые шестерни более долговечны, практически не изнашиваются, в несколько раз прочнее нейлоновых. Основной недостаток — дороговизна.

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

Существует три типа моторов сервоприводов: обычный мотор с сердечником, мотор без сердечника и бесколлекторный мотор.

Обычный мотор с сердечником (справа) обладает плотным железным ротором с проволочной обмоткой и магнитами вокруг него. Ротор имеет несколько секций, поэтому когда мотор вращается, ротор вызывает небольшие колебания мотора при прохождении секций мимо магнитов, а в результате получается сервопривод, который вибрирует и является менее точным, чем сервопривод с мотором без сердечника. Мотор с полым ротором (слева) обладает единым магнитным сердечником с обмоткой в форме цилиндра или колокола вокруг магнита. Конструкция без сердечника легче по весу и не имеет секций, что приводит к более быстрому отклику и ровной работе без вибраций. Такие моторы дороже, но они обеспечивают более высокий уровень контроля, вращающего момента и скорости по сравнения со стандартными.

Сервоприводы с бесколлекторным мотором появились сравнительно недавно. У бесколлекторных моторов нет щёток, а значит они не создают сопротивление вращению и не изнашиваются, скорость и момент выше при токопотреблении равном коллекторным моторам. Сервоприводы с бесколлекторным мотором — самые дорогие сервоприводы, однако при этом они обладают лучшими характеристиками по сравнению с сервоприводами с другими типами моторов.

Подключение к Arduino

Многие сервоприводы могут быть подключены к Arduino непосредственно. Для этого от них идёт шлейф из трёх проводов:

  • красный — питание; подключается к контакту 3.3/5V или напрямую к источнику питания
  • коричневый или чёрный — земля
  • жёлтый или белый — сигнал; подключается к цифровому выходу Arduino

Servo

Обычный хобби-сервопривод во время работы потребляет более 100 мА. При этом Arduino способно выдавать до 500 мА. Поэтому, если вам в проекте необходимо использовать мощный сервопривод, есть смысл задуматься о выделении его в контур с дополнительным питанием.

На большинстве плат Arduino библиотека Servo поддерживает управление не более 12 сервоприводами, на Arduino Mega — 48. При этом есть небольшой побочный эффект использования этой библиотеки: если вы работаете не с Arduino Mega, то становится невозможным использовать функцию analogWrite() на 9 и 10 контактах независимо от того, подключены сервоприводы к этим контактам или нет. На Arduino Mega можно подключить до 12 сервоприводов без нарушения функционирования ШИМ/PWM, при использовании большего количества сервоприводов мы не сможем использовать analogWrite() на 11 и 12 контактах.

Библиотеки для управления сервоприводами (Servo) и для работы с приёмниками/ передатчиками на 433 МГц VirtualWire используют одно и то же прерывание. Это означает, что их нельзя использовать в одном проекте одновременно. Существует альтернативная библиотека для управления сервомоторами — Servo2.

Сервоприводы обычно имеют ограниченный угол вращения 180 градусов, их так и называют «сервопривод 180°». Но существуют сервоприводы с неограниченным углом поворота оси. Это сервоприводы постоянного вращения или «сервоприводы 360°».

Иногда при подключении серводвигателя не отрабатывают заданные команды или отрабатывают некорректно. Причина в том, что сервомоторы требуют достаточно большую мощность для питания, особенно в начале движения ротора. Эти резкие скачки потребляемой мощности могут сильно «просаживать» напряжение на Arduino. Может произойти даже перезагрузка платы. Если подобное происходит, вам надо добавить конденсатор (470 мкФ или больше) между рельсами GND и 5V на вашей макетке. Конденсатор выполняет роль своеобразного резервуара для электрического тока. Когда серводвигатель начинает работать, он получает остатки заряда с конденсатора и от источника питания Arduino одновременно. Длинная нога конденсатора — это позитивный контакт, она подключается к 5V. Отрицательный контакт часто маркируется символом ‘-‘.

Управляем через импульсы

Для начала попробуем управлять вручную без библиотек. Считываем показания из Serial Monitor — нужно ввести число от 0 до 9. Эти значения равномерно распределим на 180 градусов и получим 20 градусов на каждую единицу показаний.

Библиотека Servo

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

Сервопривод постоянного вращения можно управлять с помощью библиотек Servo или Servo2. Отличие заключается в том, что функция Servo.write(angle) задаёт не угол, а скорость вращения привода.

Библиотека Servo позволяет осуществлять программное управление сервоприводами. Управление осуществляется следующими функциями:

  • attach() — присоединяет объект к конкретному выводу платы. Возможны два варианта синтаксиса для этой функции: servo.attach(pin) и servo.attach(pin, min, max). При этом pin — номер пина, к которому присоединяют сервопривод, min и max — длины импульсов в микросекундах, отвечающих за углы поворота 0° и 180°. По умолчанию выставляются равными 544 мкс и 2400 мкс соответственно. Возвращаемого значения нет.
  • write() — отдаёт команду сервоприводу принять некоторое значение параметра. Синтаксис: servo.write(angle), где angle — угол, на который должен повернуться сервопривод
  • writeMicroseconds() — отдаёт команду послать на сервопривод имульс определённой длины, является низкоуровневым аналогом предыдущей команды. Синтаксис следующий: servo.writeMicroseconds(uS), где uS — длина импульса в микросекундах. Возвращаемого значения нет.
  • read() — читает текущее значение угла, в котором находится сервопривод. Синтаксис: servo.read(), возвращается целое значение от 0 до 180
  • attached() — проверка, была ли присоединён объект к конкретному пину. Синтаксис следующий: servo.attached(), возвращается логическая истина, если объект была присоединён к какому-либо пину, или ложь в обратном случае
  • detach() — производит действие, обратное действию attach(), то есть отсоединяет объект от пина, к которому был приписан. Синтаксис: servo.detach()

В библиотеке Servo для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс — для 0° и 2400 мкс — для 180°.

Пример подключения двух сервоприводов.

Библиотека Servo не совместима с библиотекой VirtualWire для работы с приёмником и передатчиком на 433 МГц, так как они используют одно и то же прерывание. Это означает, что их нельзя использовать в одном проекте одновременно. Существует альтернативная библиотека для управления сервомоторами — Servo2. Все методы библиотеки Servo2 совпадают с методами Servo.

При работе с сервоприводами на 360 градусов функции работают по другому.

Функция Arduino Сервопривод 180° Сервопривод 360°
Servo.write(0) Крайне левое положение Полный ход в одном направлении
Servo.write(90) Среднее положение Остановка сервопривода
Servo.write(180) Крайне правое положение Полный ход в обратном направлении

Sweep

Скетч File | Examples | Servo | Sweep постоянно поворачивает насадку на 180 градусов и возвращает её обратно. В примере используется встроенная библиотека Servo.

Общая схема — красный провод идёт к питанию 5V, чёрный или коричневый идёт к GND, а жёлтый или белый к выводу платы (в нашем примере вывод 9).

Sweep

Скетч File | Examples | Servo | Knob управляет сервоприводом при помощи потенциометра. В примере используется встроенная библиотека Servo.

Общая схема: у сервопривода — красный провод идёт к питанию 5V, чёрный или коричневый идёт к GND, а жёлтый или белый к выводу платы (в нашем примере вывод 9). У потенциометра средняя ножка соединяется с аналоговым выходом A0, остальные к питанию и земле.

Knob

Случайные повороты

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

Сервоприводы PDM постоянного вращения: особенности применения и примеры кода

Сервоприводы PDM постоянного вращения — это моторы, которые управляются сигналом PDM (Pulse Duration Modulation) и поддерживает скорость вращения вала в любом направлении без ограничений по углу поворота.

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

Список моделей

Модель Форм-фактор Сигнал управления Обратная связь Назначение Внутренний интерфейс Диапазон вращения
Feetech FS90R / Документация Микро PDM Нет Постоянное вращение Аналоговый 360°
Feetech FT90R / Документация Микро PDM Нет Постоянное вращение Цифровой 360°
Feetech FS5103R Стандарт PDM Нет Постоянное вращение Аналоговый 360°
Feetech FS5113R Стандарт PDM Нет Постоянное вращение Аналоговый 360°
Feetech FB5317M-360 / Документация Стандарт PDM Да Постоянное вращение Цифровой 360°

Интерфейс управления

В сервоприводах PDM постоянного вращения скорость вращения вала зависит от длины импульса. Для управления мотором необходимо подавать особый сигнал PDM (Pulse Duration Modulation) — импульсы постоянной частоты и переменной ширины. При поступлении с внешнего контроллера управляющего импульса начинка сервопривода генерирует свой сигнал мотору.

В сигнале PDM частота импульсов постоянна и равна 50 Гц, т. е. период подачи импульсов равен 20 мс. А вот ширина импульса изменяется, и именно от неё зависит направление и скорость вращения мотора. Принято считать, что рабочая ширина импульса лежит в пределах 544–2400 мкс.

В качестве примера приведём данные для популярного хобби-сервопривода Feetech FS90R.

Период импульсов Ширина импульса Положение сервопривода
20 мс 544 мкс Вал сервопривода вращается по часовой стрелке (CW) с максимальной скоростью.
20 мс 1540 мкс Вал сервопривода стоит на месте.
20 мс 2400 мкс Вал сервопривода вращается против часовой стрелки (CWW) с максимальной скоростью.

На разных приводах диапазон ширины импульсов и скорости поворота вала может отличатся от стандартного. Эти данные можно уточнить в характеристиках.

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

Часто способ управления сервоприводами называют PWM (Pulse Width Modulation) или PPM (Pulse Position Modulation). Это не так, и использование этих способов может даже повредить привод. Корректный термин — PDM (Pulse Duration Modulation) в котором важна длина импульсов, а не частота.

Если ваш сервопривод дребезжит, дёргается или стоит задача управлять несколькими серво, обратите внимание на плату расширения Multiservo Shield.

Сервоприводы с обратной связью

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

Обычно наличие сигнала обратной связи явно указывается в характеристиках сервопривода.

Питание сервопривода

Сервопривод можно запитать двумя способами: напрямую от контроллера (если позволяют характеристики) или же от внешнего источника питания.

Без внешнего источника питания

Если сервопривод питается напряжением 5 вольт и потребляет ток менее 500 мА, есть возможность запитать сервомотор непосредственно от контроллера.

Схема подключения
Цвет провода Контакт Функция Подключение
Оранжевый / Жёлтый / Белый S Пин управления сервоприводом Подключите к пину ввода-вывода контроллера.
Красный V Питание Подключите к питанию контроллера.
Коричневый / Чёрный G Земля Подключите к земле контроллера.

С внешним источником питания

Если сервопривод питается напряжением свыше 5 вольт или потребляет ток более 500 мА, то ему необходим внешний источник питания.

Схема подключения
Цвет провода Контакт Функция Подключение
Оранжевый / Жёлтый / Белый S Пин управления сервоприводом Подключите к пину ввода-вывода контроллера.
Красный V Питание Подключите к внешнему источнику питания с подходящим вольтажом.
Коричневый / Чёрный G Земля Подключите к земле внешнего источника питания и земле контроллера.

Примеры работы для Arduino

Возьмём для тестовых проектов популярный сервопривод Feetech FS90R. А мозгом выступит платформа Arduino Uno.

Подключение и настройка

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

Arduino – плавное управление сервоприводом v3.8

Вы наверняка работали с сервоприводами из под Arduino и знаете, как это выглядит: сервоприводу можно приказать повернуться на угол, и он с максимальной скоростью начнёт поворачиваться на этот угол. Это очень неправильно применять в реальных устройствах, потому что создаются лишние нагрузки и растёт потребление тока (большой стартовый ток). Можно ли крутить серво плавно? Можно! Я сделал библиотеку ServoSmooth, которая в этом поможет.

Зачем это нужно? В реальных устройствах, где нужно сервой повернуть/подвинуть тяжёлый объект, стандартный подход (дать сигнал и ждать поворота) работает на уничтожение редуктора привода, потому что объекты инерционные и быстро их разогнать и остановить невозможно! Ограничив максимальную скорость серво, разгон и торможение мы продлеваем ресурс редуктора в десятки раз, а также потребляем меньший ток за счёт плавности прикладывания момента. И очевидно получаем приятный визуальный эффект – нет резких рывков всей конструкции при разгоне-остановке.

Так как ESC контроллеры используют такой же протокол связи, мы автоматически получаем плавный разгон и торможение для бесколлекторных моторов (в этом случае за ускорение мотора отвечает максимальная скорость, метод setSpeed. Подумайте, это уже производная). И это круто!

[УСТАРЕЛО] Алгоритм работы для любопытных: работает всё на экспоненциальном бегущем среднем, именно оно обеспечивает плавный разгон и торможение. Ограничение скорости делается “дроблением” поворота серво по времени: серво поворачивается на несколько градусов по таймеру.

Новый алгоритм работает по другому, обеспечивая более плавный разгон. Ускорение осуществляется двойным интегрированием позиции: к ней прибавляется скорость, к которой прибавляется ускорение. Торможение начинается с момента, полученного из школьной формулы S=V*V/(2*a). Для любознательных прикреплю алгоритм ниже.

Бесконечное вращение сервопривода с эхолокатором

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

пример кода из сети:

Контроль сервопривода
Да, хотел сам реализовать. Благодаря ссылочкам raxp определился с тем что мне нужно. Сделаю на.

? реализация сервопривода
Здравствуйте, так и не нашел как связаться с di-halt, напишу тут. Как воздух нужна ? реализация.

Ускорение сервопривода
Здравствуйте. Имеется сервопривод, которому можно задать угол отклонения. Для проекта требуется.

Поворот сервопривода
Доброго дня ! Прошу прощения за глупый вопрос, он мне уже давно не даёт покоя. Если повернуть.

Лучший ответСообщение было отмечено aysium как решение

Решение

Зависит от типа сервопривода. Для сервопривода постоянного вращения типа FS5103R угол 0° задаёт полный ход в одном направлении, 180° — полный ход в обратном направлении, угол 90° задаёт остановку привода.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *