Сервоприводы: подключение, управление, скетчи Ардуино

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

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

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

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

Стереотипный хобби-сервопривод изображён ниже.

Управление сервоприводом ардуино

Каким же образом устроены сервоприводы?

Устройство сервопривода

Сервоприводы имеют несколько важных частей.

Управление сервоприводом ардуино

Привод — электрический мотор с редуктором. Чтобы изменить электричество в механический поворот, нужен электрический мотор. Но очень часто частота вращения мотора бывает очень большой для применения на практике.

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

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

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

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

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

Теперь давайте посмотрим, как управлять сервоприводом снаружи.

Управление сервоприводом. Интерфейс управляющих сигналов

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

Управление сервоприводом ардуино

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

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

Очень часто в хобби-сервах импульсы изготавливаются с частотой 50 Гц. Это означает, что импульс испускается и принимается раз в 20 мс.

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

В библиотеке Servo для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс — для 0° и 2400 мкс — для 180°.
Стоит обратить внимание, что на вашем определенном устройстве фабричные настройки могут быть прекрасными от типовых. Некоторые сервоприводы применяют ширину импульса 760 мкс.

Усредненное положение при этом отвечает 760 мкс, подобно тому, как в обыкновенных сервоприводах среднему положению отвечает 1520 мкс.
Также необходимо выделить, что это только общепринятые длины.

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

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

В нём очень важна длина импульсов и не так значительна частота их возникновения. 50 Гц — это норма, но сервопривод будет работать правильно и при 40, и при 60 Гц.

Одно, что необходимо при этом учитывать — это то, что при сильном уменьшении частоты он будет работать рывками и на пониженной мощности, а при сильном завышении частоты (к примеру, 100 Гц) может перегреться и поломаться.

Характеристики сервоприводов

Теперь давайте подумаем, какие бывают сервоприводы и какими свойствами они обладают.

Вращающий момент и скорость поворота

Сначала побеседуем о 2-ух не менее значимых характеристиках сервопривода: о крутящем моменте и о скорости поворота.
Момент силы, или вращающий момент — векторная физическая величина, равная произведению радиус-вектора, проведенного от оси вращения к точке приложения силы, на вектор этой силы.

Определяет вращательное действие силы на твёрдое тело.

Управление сервоприводом ардуино

Говоря проще, эта характеристика показывает, насколько тяжёлый груз сервопривод может удержать в покое на рычаге заданной длины. Если вращающий момент сервопривода равён 5 кг?см, то это означает, что сервопривод удержит на весу горизонтально рычажок длины 1 см, на свободный конец которого подвесили 5 кг.

Или, что эквивалентно, рычажок длины 5 см, к которому подвесили 1 кг.
Скорость сервопривода измеряется интервалом времени, который требуется рычагу сервопривода, чтобы повернуться на 60°.

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

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

Форм-фактор

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

Обладают они при этом следующими отличительными размерами:

Вес Линейные размеры небольшие

типовые

большие

8-25 г 22?15?25 мм
40-80 г 40?20?37 мм
50-90 г 49?25?40 мм

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

Внутренний интерфейс

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

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

Управление сервоприводом ардуино

управление сервоприводом — Сервоприводы и Arduino

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

Происходит это в большинстве случаев с частотой 50 Гц. Аналогичным образом приобретаем 20 мс — небольшое время реакции.

В данное время любое внешнее влияние способно скорректировать положение сервопривода. Однако это не только одна проблема.

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

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

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

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

В техническом проекте они безоговорочно побеждают аналоговые сервоприводы.

Материалы шестерней

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

Бионическая рука робота на сервоприводах

Управление сервоприводом ардуино

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

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

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

Коллекторные и бесколлекторные моторы

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

Управление сервоприводом ардуино

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

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

Управление сервоприводом ардуино

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

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

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

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

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

Ограничение по питанию

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

Благодаря этому, если вам в проекте нужно применять мощный сервопривод, имеет смысл подумать о выделении его в контур с добавочным питанием.
Рассмотрим на примере подсоединения 12V сервопривода:

Управление сервоприводом ардуино

Ограничение по количеству подключаемых сервоприводов

Usfika | Arduino | Элементарный манипулятор

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

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

Функционал библиотеки Servo

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

Пример применения библиотеки Servo

По аналогичности подключим 2 сервопривода
Библиотека Servo не сочетаема с библиотекой VirtualWire для работы с приёмником и передатчиком на 433 МГц.

Альтернативная библиотека Servo2

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

Все методы библиотеки Servo2 совпадают с методами Servo.

Пример применения библиотеки Servo

Сервопривод постоянного вращения

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

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

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

Для иллюстрации работы с сервами постоянного вращения мы собрали 2-ух мобильных ботов — на Arduino Uno и Iskra JS. Инструкции по сборке и варианты скетчей смотрите в статье собираем ИК-бота.

Взамен заключения

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

Удачи в ваших начинаниях!

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

Управление сервоприводом ардуино

Внешний вид

Управление сервоприводом ардуино

Fritzing

Управление сервоприводом ардуино

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

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

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

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

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

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

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

Управление сервоприводом ардуино

Вращающий момент и скорость поворота

Вращающий момент — векторная физическая величина, равная произведению радиус-вектора, проведённого от оси вращения к точке приложения силы, на вектор этой силы. Определяет вращательное действие силы на твёрдое тело. Эта характеристика показывает, насколько тяжёлый груз сервопривод может удержать в покое на рычаге заданной длины.

Если вращающий момент сервопривода равён 5 кг?см, то это означает, что сервопривод удержит на весу горизонтально рычажок длины 1 см, на свободный конец которого подвесили 5 кг. Или, что эквивалентно, рычажок длины 5 см, к которому подвесили 1 кг.

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

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

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

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

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

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

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

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

Есть три типа моторов сервоприводов: обыкновенный мотор с сердечником, мотор без сердечника и бесколлекторный мотор.
Обыкновенный мотор с сердечником (с правой стороны) обладает уплотненным металлическим ротором с проволочной обмоткой и магнитами около него. Ротор имеет пару секций, благодаря этому когда мотор крутится, ротор вызывает маленькие колебания мотора при прохождении секций мимо магнитов, а в результате выходит сервопривод, который вибрирует и считается менее точным, чем сервопривод с мотором без сердечника.

Мотор с пустотелым ротором (слева) обладает единым магнитным сердечником с обмоткой в форме цилиндра или колокола вокруг магнита. Конструкция без сердечника легче по весу и не имеет секций, что приводит к более быстрому отклику и ровной работе без вибрации.

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

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

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

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

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

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

Благодаря этому, если вам в проекте нужно применять мощный сервопривод, имеет смысл подумать о выделении его в контур с добавочным питанием.
На большинстве плат Arduino библиотека Servo поддерживает управление не больше 12 сервоприводами, на Arduino Mega — 48. Есть при этом маленькой второстепенный эффект применения этой библиотеки: если вы работаете не с Arduino Mega, то будет невозможным применять функцию analogWrite(fengr.ru — сайт о полезных советах) на 9 и 10 контактах независимо от того, подключены сервоприводы к этим контактам либо нет.

На Arduino Mega можно подключить до 12 сервоприводов без нарушения функционирования ШИМ/PWM, во время использования большего количества сервоприводов мы не сможем применять analogWrite(fengr.ru — сайт о полезных советах) на 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(fengr.ru — сайт о полезных советах) — присоединяет объект к определенному выводу платы. Возможны 2 варианта синтаксиса для такой функции: servo.attach(pin) и servo.attach(pin, min, max). При этом pin — номер пина, к которому присоединяют сервопривод, min и max — длины импульсов в микросекундах, которые отвечают за углы поворота 0° и 180°. По умолчанию ставятся равными 544 мкс и 2400 мкс исходя из этого. Возвращаемого значения нет.
  • write(fengr.ru — сайт о полезных советах) — отдаёт команду сервоприводу принять определённое значение параметра. Синтаксис: servo.write(angle), где то — угол, на который должен повернуться сервопривод
  • writeMicroseconds(fengr.ru — сайт о полезных советах) — отдаёт команду послать на сервопривод имульс конкретной длины, считается низкоуровневым аналогом предыдущей команды. Синтаксис следующий: servo.writeMicroseconds(uS), где uS — длина импульса в микросекундах. Возвращаемого значения нет.
  • read(fengr.ru — сайт о полезных советах) — читает текущее значение угла, в котором находится сервопривод. Синтаксис: servo.read(fengr.ru — сайт о полезных советах), возвращается целое значение от 0 до 180
  • attached(fengr.ru — сайт о полезных советах) — проверка, была ли присоединён объект к определенному пину. Синтаксис следующий: servo.attached(fengr.ru — сайт о полезных советах), возвращается закономерная истина, если объект была присоединён к какому-то пину, или обман в обратном случае
  • detach(fengr.ru — сайт о полезных советах) — создает действие, обратное действию attach(fengr.ru — сайт о полезных советах), другими словами отсоединяет объект от пина, к которому был приписан. Синтаксис: servo.detach(fengr.ru — сайт о полезных советах)

В библиотеке Servo для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс — для 0° и 2400 мкс — для 180°.
Пример подсоединения 2-ух сервоприводов.
Библиотека 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).

Управление сервоприводом ардуино

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

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

Управление сервоприводом ардуино

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

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

Управление сервоприводом ардуино

Эта библиотека считается “дополнением” к типовой библиотеке Servo.h и дает возможность медленно управлять сервоприводом. Смысл работы прячется в методе tick(fengr.ru — сайт о полезных советах), который необходимо вызывать регулярно в loop (или прерывании таймера), в середине тика находится алгоритм со своим таймером, который по чуть чуть поворачивает серво к нужному положению.

Библиотека повторяет несколько методов из Servo.h (attach имеет расширенную инициализацию):

  • write(fengr.ru — сайт о полезных советах) и writeMicroseconds(fengr.ru — сайт о полезных советах) – повернут вал серво с самой большой скоростью
  • attach(fengr.ru — сайт о полезных советах) и detach(fengr.ru — сайт о полезных советах) – подключить и выключить серво от управления

Инициализация

Объект создаётся точно также, как в Servo.h, без показателей. Также можно передать рабочий угол серво (если не передавать, будет равным типовому 180 град.)

По инициализации ( attach(fengr.ru — сайт о полезных советах) ) существует несколько способов:

  • attach(pin) – подключит серво на указанный pin, поворотный угол будет поставлен на 0 градусов. Длина импульса* мин-макс будет типовая, 500-2400 мкс
  • attach(pin, target) – подключит серво на указанный pin, поворотный угол** будет поставлен на target градусов. Длина импульса* мин-макс будет типовая, 500-2400 мкс
  • attach(pin, min, max) – подключит серво на указанный pin, поворотный угол будет поставлен на 0 градусов. Длина импульса* будет поставлена min и max исходя из этого.
  • attach(pin, min, max, target) – подключит серво на указанный pin, поворотный угол будет поставлен на target градусов. Длина импульса* будет поставлена min и max исходя из этого.

*Длина импульса – сервопривод управляется ШИМ сигналом, в котором длина импульса прямо управляет углом поворота, другими словами подавая небольшую и самую большую длину мы приобретаем рабочий угол 180 градусов. По умолчанию мин. и макс. длина установлены 500 и 2400 исходя из этого, что подходит большинству сервоприводов, но лучше всего увидеть и “откалибровать” собственный привод таким образом, чтобы он работал на все 180 градусов. Мин. и макс. время импульса выделяются у различных изготовителей и моделей серво.

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

Управление

Движение серво происходит автоматично в методе tick(fengr.ru — сайт о полезных советах), нам необходимо только вызывать его почаще в loop (tick(fengr.ru — сайт о полезных советах) имеет встроенный таймер на 20 миллисекунд). Также есть метод tickManual(fengr.ru — сайт о полезных советах), который поворачивает серву на следующий “шаг” при каждом вызове (тот же tick(fengr.ru — сайт о полезных советах), однако не имеет собственного таймера). Оба метода tick(fengr.ru — сайт о полезных советах) возвращают false, пока серво двигается, и true, когда серво достигла поставленного угла, это можно применять.

Также серво автоматично выключается от управления при достижении заданного поворотного угла (это снижает жужжание серво в обычное). Подобную функцию можно выключить, вызвав setAutoDetach(false).

Инструменты для управления движением привода:

    setTarget(длина) – устанавливает целевую позицию для серво в величине длина импульса, мкс (

500-2400)

  • setTargetDeg(угол) – устанавливает целевую позицию для серво в градусах (0-180)
  • setSpeed(скорость) – установка самой большой скорости (условные единицы, 1 – 200)
  • setAccel(ускорение) – установка ускорения (0.01 – 1). При значении 1 ускорение максимальное
  • start(fengr.ru — сайт о полезных советах) – автоматизированный attach + разрешает работу tick – серво двигается к заданной позиции
  • stop(fengr.ru — сайт о полезных советах) – detach + запрещает работу tick – серво останавливается
  • Полезные подсобные методы для разных ситуаций:

    • setDirection(напр) – принимает NORMAL (false) или REVERSE (true), меняет направление серво
    • setCurrent(длина) – установка текущей позиции в мкс (500 – 2400). Может понадобиться в ситуациях, когда мы знаем настоящий угол серво и хотим сообщить о нём программе, чтобы алгоритм не дёргал привод.
    • setCurrentDeg(угол) – установка текущей позиции в градусах (0-180). Зависит от min и max.
    • getCurrent(fengr.ru — сайт о полезных советах) – получение текущей позиции в мкс (500 – 2400)
    • getCurrentDeg(fengr.ru — сайт о полезных советах) – получение текущей позиции в градусах (0-180). Зависит от min и max
    • getTarget(fengr.ru — сайт о полезных советах) – получение целевой позиции в мкс (500 – 2400)
    • getTargetDeg(fengr.ru — сайт о полезных советах) – получение целевой позиции в градусах (0-180). Зависит от min и max
    • setMaxAngle(fengr.ru — сайт о полезных советах) – установка макс. угла серво, по умолчанию 180. Позволяет комфортно работать с различными сервами (на 270 и 360 град.)

    Arduino для начинающих. Урок 4. Управление сервоприводом

    Управление сервоприводом ардуино
    Управление сервоприводом ардуино

    Продолжим серию уроков “Arduino для начинающих”. Сегодня собираем модель с сервоприводом — это также одна из базовых схем.

    Сервоприводы применяются в робототехнике для управления движениями робота. В посте кроме видео-инструкции листинг программы и схема подсоединения.
    Сервопривод — это мотор, положением вала которого мы можем управлять.

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

    Видео-инструкция сборки модели:

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

    • плата Arduino
    • 3 провода “папа-папа”
    • сервопривод
    • программа Arduino IDE, которую можно скачать с сайта Arduino.
    Управление сервоприводом ардуино

    Элементы для сборки модели Arduino с сервоприводом
    Схема подсоединения модели Arduino с сервоприводом:

    Управление сервоприводом ардуино

    Схема подсоединения сервопривода на Arduino
    Для работы данной модели подойдёт следующая программа (программу вы можете просто скопировать в Arduino IDE):
    #include //применяем библиотеку для работы с сервоприводом
    Servo servo; //объявляем переменную servo типа Servo
    void setup(fengr.ru — сайт о полезных советах) //процедура setup
    <
    servo.attach(10); //связываем привод к порту 10
    >
    void loop(fengr.ru — сайт о полезных советах) //процедура loop
    <
    servo.write(0); //ставим вал под 0
    delay(2000); //ждем 2 секунды
    servo.write(180); //ставим вал под 180
    delay(2000); //ждем 2 секунды
    >
    Последние 4-ре команды программы задают поворотный угол вала сервопривода и время ожидания (в миллисекундах) до последующего поворота. Данные цифры можно заменить — в видео в другом варианте мы поставили 0-1000-90-1000, что означает поворот на 90 градусов с ожиданием в 1 секунду (1000 миллисекунд), возврат обратно и т.д. (процедура loop повторяется циклично).
    Более того, в этом уроке мы первый раз применяем библиотеки.
    Библиотека — это набор дополнительных команд, который дает возможность вводить программу в упрощенном формате. Тут мы применяем библиотеку для работы с сервоприводами Servo.h.
    Так смотрится собранная модель Arduino с сервоприводом:

    Управление сервоприводом ардуино

    Собранная модель Arduino с сервоприводом
    Смотрите также:

    Посты по урокам:
    Все посты сайта «Интересная робототехника» по тегу Arduino.

    Наш YouTube канал, где публикуются видеоуроки.

    КАК ПОДКЛЮЧИТЬ СЕРВОПРИВОД К ARDUINO [Уроки Ардуино #15]

    Не знаете, где приобрести Arduino?

    Все применяемые в уроке комплектующие входят во многих готовых комплектов Arduino, их также можно выбрать отдельно. Подробнейшая инструкция по выбору тут. Маленькие цены, специальные предложения и бесплатная доставка на сайтах AliExpress и DealExtreme.

    Если не хватает времени ждать посылку из Китая — предлагаем online-магазины Амперка и DESSY. Маленькие цены и быструю доставку предлагает онлайн-магазин ROBstore.

    Смотри также перечень магазинов.

    Подключение сервопривода к Ардуино

    Как подключить и управлять сервоприводом Ардуино > разберем устройство и рабочий принцип сервоприводов, разберем скетч для управления микро серво мотора.
    Рассмотрим на этом занятии устройство и рабочий принцип сервоприводов.

    Разберем два обычных скетча для управления сервоприводом при помощи потенциометра на Ардуино. Также мы выясним новые команды в языке программирования C++ — servo.write, servo.read, servo.attach и научимся подсоединять в скетчах библиотеку для управления сервоприводами и прочими устройствами через Ардуино.

    Устройство сервомотора (servo) Arduino

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

    Что такое сервопривод. Схема устройства сервопривода
    Сервоприводы активно применяются для моделирования механических движений роботов.

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

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

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

    Как подключить сервопривод к Ардуино

    Схема подсоединения сервопривода к Arduino в большинстве случаев следующая: черный кабель подсоединяем к GND, провод красного цвета подсоединяем к 5V, оранжевый/жёлтый кабель к аналоговому выводу с ШИМ (Широтно Импульсная Модуляция). Управление сервоприводом на Ардуино очень просто, однако по углам поворота сервомоторы бывают на 180° и 360°, что необходимо учесть в робототехнике.

    Для занятий нам потребуются следующие детали:

    • плата Arduino Uno / Arduino Nano / Arduino Mega;
    • макетная плата;
    • USB-кабель;
    • 1 сервопривод и потенциометр;
    • провода «папа-папа» и «папа-мама».

    Схема подсоединения сервопривода к Ардуино UNO
    В первом скетче мы будем рассматривать как управлять сервоприводом на Arduino при помощи команды myservo.write(0) . Также мы будем применять типовую библиотеку Servo.h . Подсоедините сервомашинку к плате Ардуино, по схеме на фото выше и загрузите готовый скетч.

    В процедуре void loop(fengr.ru — сайт о полезных советах) мы будем просто задавать для сервопривода нужный поворотный угол и время ожидания до последующего поворота.

    Скетч для сервопривода на Ардуино

    Пояснения к коду:

    1. типовая библиотека Servo.h содержит набор дополнительных команд, которая дает возможность существенно упростить скетч;
    2. переменная Servo нужна, чтобы не было путанницы при подключении нескольких сервоприводов к Ардуино. Мы назначаем каждому приводу собственное имя;
    3. команда servo1.attach(10) привязывает привод к аналоговому выходу 10.
    4. в программе мы вращаем привод на 0-90-180 градусов и возвращаем в первое положение, так как процедура void loop повторяется циклично.

    Управление сервоприводом потенциометром

    Ардуино дает возможность не только управлять, но и считывать показания с сервопривода. Команда myservo.read(0) считывает нынешний поворотный угол вала сервопривода и его мы можем увидеть на мониторе порта.

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

    Скетч для сервопривода с потенциометром

    Пояснения к коду:

    1. в этот раз мы присвоили имя для сервопривода в скетче, как servo ;
    2. команда servo.write(analogRead(A0)/4) передает значения для вала сервопривода — получаемое напряжение с потенциометра мы делим на 4-ре и оправляем данное значение на сервопривод.
    3. команда Serial.println (servo.read(10)) считывает значение поворотного угла вала сервопривода и передает его на дисплей порта.

    Заключение. Сервомоторы часто применяются в самых разных проектах на Ардуино для разных функций: повороты конструкций, движение частей механизмов.

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