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

Управление сервомотором с использованием AVR ATmega16

Подобно шаговому двигателю, серводвигатель не нуждается ни в каком внешнем драйвере, например, ULN2003 или L293D. Для управления им нужен всего лишь сигнал ШИМ модуляции, который легко сформировать с помощью микроконтроллера семейства AVR. Вращающий момент используемого в нашем проекте серводвигателя составляет 2.5 кг/см, поэтому если вам нужен больший вращающий момент, то вам необходимо будет использовать другой серводвигатель.

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

Чтобы генерировать нужные нам импульсы мы будем использовать Таймер 1 микроконтроллера Atmega16. Микроконтроллер способен работать на частоте 16 МГц, но мы будем использовать частоту 1 МГц поскольку в нашем проекте нам ее вполне хватит для того чтобы микроконтроллер справился с возложенными на него функциями. Предделитель установим в 1, то есть получим шкалу 1 МГц/1 = 1 МГц. Таймер 1 будем использовать в режиме быстрой ШИМ (то есть Fast PWM Mode), то есть в режиме 14 (Mode 14). Вы можете использовать различные режимы таймера чтобы генерировать нужную вам последовательность импульсов. Более подробную информацию об этом вы можете найти в Atmega16 Official Datasheet.

Чтобы использовать Таймер 1 в режиме быстрой ШИМ нам необходимо будет верхнее значение (TOP value) регистра ICR1 (Input Capture Register1 – входной захватывающий регистр). Найти значение TOP можно по следующей формуле:

fpwm = fcpu / n x (1 + TOP)Это выражение можно упростить до следующего:

TOP = (fcpu / (fpwm x n)) – 1где N = коэффициент деления предделителяfcpu = частота процессораfpwm = частота следования импульсов на входе серводвигателя, которая равна 50 Гц

То есть мы должны подставить в приведенную формулу следующие значения переменных: N = 1, fcpu = 1MHz, fpwm = 50Hz.

Подставив все это, мы получим ICR1 = 1999.

Это значит, что для того чтобы достичь максимального уровня, т.е. 1800 (поворот оси сервомотора на 180 градусов), необходимо чтобы ICR1 = 1999.

Для частоты 16 МГц и коэффициенте деления предделителя равному 16, получим ICR1 = 4999.

Сравнение с шаговым двигателем

Другим вариантом точного позиционирования приводимых элементов без датчика обратной связи является применение шагового двигателя. В этом случае схема управления отсчитывает необходимое количество импульсов (шагов) от положения репера (этой особенности обязан характерный шум шагового двигателя в дисководах 3,5″ и CD/DVD при попытках повторного чтения). При этом точное позиционирование обеспечивается параметрическими системами с отрицательной обратной связью, которые образуются взаимодействующими между собой соответствующими полюсами статора и ротора шагового двигателя. Cистема управления шаговым двигателем, активизирующая соответствующий полюс статора, формирует cигнал задания для соответствующей параметрической системы  .

Так как датчик обычно контролирует приводимый элемент, электрический сервопривод имеет следующие преимущества перед шаговым двигателем:

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

Недостатки в сравнении с шаговым двигателем

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

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

P.S.:

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

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

Схема подключения ниже:

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

  1. Подключите Землю к GND Arduino.Сервомотор имеет гнездовой разъем с тремя контактами. Самый темный или даже черный — это обычно земля.
  2. Подключите кабель питания, который по всем стандартам должен быть красным к 5В на Ардуино.
  3. Подключите оставшийся контакт разъема сервопривода к цифровому выходу на Arduino.

Также ниже приводим пример подключения двигателя и Arduino Diecimilia. Фото найдено на официальном сайте производителя микроконтроллеров.

Для этого варианта подключение следующее:

  1. Подключите красный от сервопривода к +5 В на ардуине.
  2. Подключите черный/коричневый от сервопривода к Gnd на ардуино.
  3. Подключите белый/оранжевый от сервопривода к аналоговому 0 на arduino.

Переделка сервопривода в серво непрерывного вращения

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

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

Чтобы произвести вышеописанные действия, придется разобрать устройство и внести изменения в конструкцию.

В Ардуино IDE нужно создать небольшой скетч, который поставит качалку в среднее положение.

#include <Servo.h>

Servo myservo;

void setup(){
myservo.attach(9);
myservo.write(90);
}

void loop(){
}

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

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

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

Подключение серводвигателя к ардуино

Сервопривод обладает тремя контактами, которые окрашены в разные цвета. Коричневый провод ведет к земле, красный – к питанию +5В, провод оранжевого или желтого цвета – сигнальный. К Ардуино устройство подключается через макетную указанным на рисунке образом. Оранжевый провод (сигнальный) подключается к  цифровому пину, черный и красный – к земле и питанию соответственно. Для управления серводигателем не требуется подключение именно к шим-пинам – принцип управления серво мы уже описывали ранее.

Не рекомендуется подключать мощные серво напрямую к плате , т.к. они создают для схемы питания Arduino ток, не совместимый с жизнью – повезет, если сработает защита. Чаще всего симптомы перегрузки и неправильного питания сервопривода заключаются в “дергании” серво, неприятному звуку и перезагрузке платы. Для питания лучше использовать внешние источники, обязательно объединяя земли двух контуров.

Общие сведения

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

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

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

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

Рис. 1. Конструктивные особенности синхронных серводвигателей Kollmorgen

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

Однако возможности современных сервоусилителей могут быть более широкими. Например, к устройствам Kollmorgen можно легко, по принципу plug and play, подключить серводвигатели (в том числе асинхронные и индуктивные, с устройствами обратной связи и без них) не только того же производителя, но и других компаний — при использовании моделей SERVOSTAR S700 (рис. 2).

Рис. 2. Электродвигатели, сопрягаемые с сервоусилителями Kollmorgen S700

Рис. 3. Технологии передачи движения

Элементы сервопривода

Рассмотрим составные части сервопривода.

Электромотор с редуктором

За преобразование электричества в механический поворот в сервоприводе отвечает электромотор. В асинхронных сервоприводах установлен коллекторный мотор, а в синхронных — бесколлекторный.

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

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

Позиционер

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

Плата управления

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

Выходной вал

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

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

Выходной шлейф

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

  • Красный — питание сервомотора. Подключите к плюсовому контакту источнику питания. Значения напряжение смотрите в характеристиках конкретно вашего сервопривода.
  • Чёрный — земля. Подключите к минусовому контакту источника питания и земле микроконтроллера.
  • Жёлтый — управляющий сигнал. Подключите к цифровому пину микроконтроллера.

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

Сервопривод для Ардуино

Сервопривод – это такой вид привода, который может точно управлять параметрами движения. Другими словами, это двигатель, который может повернуть свой вал на определенный угол или поддерживать непрерывное вращение с точным периодом.

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

В проектах ардуино робототехники серво часто используется для простейших механических действий:

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

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

Схема и типы сервоприводов

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

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

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

Сервопривод непрерывного вращения 360, 180 и 270 градусов

Выделяют два основных вида серводвигателей – с непрерывным вращением и с фиксированным углом  (чаще всего, 180 или 270 градусов). Отличие серво ограниченного вращения заключается в механических элементах конструкции, которые могут блокировать движение вала вне заданных параметрами углов. Достигнув угла 180, вал окажет воздействие на ограничитель, а тот отдаст команду на выключение мотора. У серводвигателей непрерывного вращения таких ограничителей нет.

Материалы шестерней сервопривода

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

В более дорогих моделях можно найти элементы из карбона и даже титана.

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

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

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

Преимущества серводвигателей

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

Отличия серво и обычного двигателя

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

Отличия серво и шагового мотора

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

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

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

Скетч ниже заставит сервопривод переместиться в позицию 0 градусов, подождать 1 секунду, затем повернуться на 90 градусов, подождать еще одну секунду, после повернуться на 180 градусов и перейти в первоначальное положение.

Также дополнительно мы используем библиотеку servo — скачайте ниже или в нашем разделе Библиотеки.

Содержимое zip-файла размещается в папку arduino-xxxx/hardware/liraries.

Скетч № 1

// Подклоючаем библиотеку Servo
#include <Servo.h> 

// Пин для сервопривода
int servoPin = 3;
// Создаем объект
Servo Servo1;

void setup() {
  // Нам нужно подключить сервопривод к используемому номеру пина
  Servo1.attach(servoPin);
}

void loop(){
  // 0 градусов
  Servo1.write(0);
  delay(1000);
  // 90 градусов
  Servo1.write(90);
  delay(1000);
  // 180 градусов
  Servo1.write(180);
  delay(1000);
}

Если сервомотор подключен к другому цифровому контакту, просто измените значение servoPin на значение используемого цифрового вывода.

Помните! Использование библиотеки Servo автоматически отключает функцию PWM для PWM-контактов 9 и 10 на Arduino UNO и аналогичных платах.

Наш код просто объявляет объект и затем инициализирует сервопривод с помощью функции servo.attach(). Мы не должны забывать подключать серво библиотеку. В цикле мы устанавливаем сервопривод на 0 градусов, ждем, а затем устанавливаем его на 90, а затем на 180 градусов.

Скетч № 2

Второй скетч для варианта с Arduino Diecimilia ниже.

Нам достаточно будет скачать и подключить библиотеку из архива:

Сам код такой:

#include <Servo.h>

Servo servo1; Servo servo2; 


void setup() {

  pinMode(1,OUTPUT);
  servo1.attach(14); //analog pin 0
  //servo1.setMaximumPulse(2000);
  //servo1.setMinimumPulse(700);

  servo2.attach(15); //analog pin 1
  Serial.begin(19200);
  Serial.println("Ready");

}

void loop() {

  static int v = 0;

  if ( Serial.available()) {
    char ch = Serial.read();

    switch(ch) {
      case '0'...'9':
        v = v * 10 + ch - '0';
        break;
      case 's':
        servo1.write(v);
        v = 0;
        break;
      case 'w':
        servo2.write(v);
        v = 0;
        break;
      case 'd':
        servo2.detach();
        break;
      case 'a':
        servo2.attach(15);
        break;
    }
  }

  Servo::refresh();

}

Параметры

Абсолютно любой сервопривод классифицируется по следующим параметрам:

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

Поворотный угол выходного вала. Обычно этот параметр равен 180, 360.

Крутящий момент является самым важным параметром работы механизма и регулируется в зависимости от напряжения.

Управление сервопривода зависит от его типа – цифровой он или аналоговый.

Питание. Чаще всего в моделях используют напряжение, варьирующееся от 4.8 до 7.2 вольт.

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

Размер. По этому параметру приводы делят на микро-, стандартные и большие (существуют и другие размеры, но эти самые распространенные).

Сервопривод

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

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

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

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

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

Недостатки сервоприводов:

  • дорогостоящий ремонт;
  • высокая стоимость.

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

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

Adblock
detector