что такое сервопривод ардуино
Arduino для начинающих. Урок 4. Управление сервоприводом
Продолжаем серию уроков “Arduino для начинающих”. Сегодня собираем модель с сервоприводом — это также одна из базовых схем. Сервоприводы используются в робототехнике для управления движениями робота. В посте помимо видео-инструкции листинг программы и схема подключения.
Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.
Видео-инструкция сборки модели:
Для сборки модели с сервоприводом нам потребуется:
Компоненты для сборки модели Arduino с сервоприводом
Схема подключения модели Arduino с сервоприводом:
Схема подключения сервопривода на Arduino
Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):
#include //используем библиотеку для работы с сервоприводом
Servo servo; //объявляем переменную servo типа Servo
void setup() //процедура setup
<
servo.attach(10); //привязываем привод к порту 10
>
void loop() //процедура loop
<
servo.write(0); //ставим вал под 0
delay(2000); //ждем 2 секунды
servo.write(180); //ставим вал под 180
delay(2000); //ждем 2 секунды
>
Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота. Эти цифры можно поменять — в видео во втором варианте мы поставили 0-1000-90-1000, что означает поворот на 90 градусов с ожиданием в 1 секунду (1000 миллисекунд), возврат обратно и т.д. (процедура loop повторяется циклично).
Кроме того, в этом уроке мы впервые используем библиотеки.
Библиотека — это набор дополнительных команд, который позволяет вводить программу в упрощенном формате. Здесь мы используем библиотеку для работы с сервоприводами Servo.h.
Так выглядит собранная модель Arduino с сервоприводом:
Собранная модель Arduino с сервоприводом
Смотрите также:
Посты по урокам:
Все посты сайта «Занимательная робототехника» по тегу Arduino.
Наш YouTube канал, где публикуются видео-уроки.
Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.
Сервоприводы: подключение, управление, примеры работы
Познакомимся поближе с сервоприводами. Рассмотрим их разновидности, предназначение, подсказки по подключению и управлению.
Что такое сервопривод?
Сервопривод — это мотор с управлением через отрицательную обратную связь, позволяющую точно управлять параметрами движения. Сервомотором является любой тип механического привода, имеющий в составе датчик положения и плату управления.
Простыми словами, сервопривод — это механизм с электромотором, который может поворачиваться в заданный угол и удерживать текущее положение.
Элементы сервопривода
Рассмотрим составные части сервопривода.
Электромотор с редуктором
За преобразование электричества в механический поворот в сервоприводе отвечает электромотор. В асинхронных сервоприводах установлен коллекторный мотор, а в синхронных — бесколлекторный.
Однако зачастую скорость вращения мотора слишком большая для практического использования, а крутящий момент — наоборот слишком слабый. Для решения двух проблем используется редуктор: механизм из шестерней, передающий и преобразующий крутящий момент.
Включая и выключая электромотор, вращается выходной вал — конечная шестерня редуктора, к которой можно прикрепить нечто, чем мы хотим управлять.
Позиционер
Для контроля положения вала, на сервоприводе установлен датчик обратной связи, например потенциометр или энкодер. Позиционер преобразует угол поворота вала обратно в электрический сигнал.
Плата управления
За всю обработку данных в сервоприводе отвечает плата управления, которая сравнивает внешнее значения с микроконтроллера со показателем датчика обратной связи, и по результату соответственно включает или выключает мотор.
Выходной вал
Вал — это часть редуктора, которая выведена за пределы корпуса мотора и непосредственно приводиться в движение при подаче управляющих сигналов на сервопривод. В комплектации сервомоторов идут качельки разных формфакторов, которые одеваются на вал сервопривода для дальнейшей коммуникации с вашими задумками. Не рекомендуем прилагать к валу нагрузки, которые больше крутящего момента сервопривода. Это может привести к разрушению редуктора.
Выходной шлейф
Для работы сервопривода его необходимо подключить к источнику питания и к управляющей плате. Для коммуникации от сервопривода выходит шлейф из трёх проводов:
Если сервопривод питается напряжением от 5 вольт и потребляет ток менее 500 мА, то есть возможность обойтись без внешнего источника питания и подключить провод питания сервомотора непосредственно к питанию микроконтроллера.
Управление сервоприводом
Алгоритм работы
Интерфейс управления
Чтобы указать сервоприводу желаемое состояние, по сигнальному проводу необходимо посылать управляющий сигнал — импульсы постоянной частоты и переменной ширины.
То, какое положение должен занять сервопривод, зависит от длины импульсов. Когда сигнал от микроконтроллера поступает в управляющую схему сервопривода, имеющийся в нём генератор импульсов производит свой импульс, длительность которого определяется через датчик обратной связи. Далее схема сравнивает длительность двух импульсов:
Для управления хобби-сервоприводами подают импульсы с частотой 50 Гц, т.е. период равен 20 мс:
Обратите внимание, что на вашем конкретном устройстве заводские настройки могут оказаться отличными от стандартных. Некоторые сервоприводы используют ширину импульса 760 мкс. Среднее положение при этом соответствует 760 мкс, аналогично тому, как в обычных сервоприводах среднему положению соответствует 1520 мкс.
Это всего лишь общепринятые длины. Даже в рамках одной и той же модели сервопривода может существовать погрешность, допускаемая при производстве, которая приводит к тому, что рабочий диапазон длин импульсов отличается. Для точной работы каждый конкретный сервопривод должен быть откалиброван: путём экспериментов необходимо подобрать корректный диапазон, характерный именно для него.
Часто способ управления сервоприводами называют PWM (Pulse Width Modulation) или PPM (Pulse Position Modulation). Это не так, и использование этих способов может даже повредить привод. Корректный термин — PDM (Pulse Duration Modulation) в котором важна длина импульсов, а не частота.
Характеристики сервопривода
Рассмотрим основные характеристики сервоприводов.
Крутящий момент
Момент силы или крутящий момент показывает, насколько тяжёлый груз сервопривод способен удержать в покое на рычаге заданной длины. Если крутящий момент сервопривода равен 5 кг×см, то это значит, что сервопривод удержит на весу в горизонтальном положении рычаг длины 1 см, на свободный конец которого подвесили 5 кг. Или, что эквивалентно, рычаг длины 5 см, к которому подвесили 1 кг.
Скорость поворота
Скорость сервопривода — это время, которое требуется выходному валу повернуться на 60°. Характеристика 0,1 с/60° означает, что сервопривод поворачивается на 60° за 0,1 с. Из неё можно вычислить скорость в оборотах в минуту, но так сложилось, что при описании сервоприводов чаще всего используют именно интервал времени за 60°.
Форм-фактор
Сервоприводы различаются по размерам. И хотя официальной классификации не существует, производители давно придерживаются нескольких размеров с общепринятым расположением крепёжных элементов.
Форм-фактор | Вес | Размеры |
---|---|---|
Микро | 8-25 г | 22×15×25 мм |
Стандартный | 40-80 г | 40×20×37 мм |
Большой | 50-90 г | 49×25×40 мм |
Внутренний интерфейс
Сервоприводы бывают аналоговые и цифровые. Так в чём же их отличия, достоинства и недостатки?
Внешне они ничем не отличаются: электромоторы, редукторы, потенциометры у них одинаковые, различаются они лишь внутренней управляющей электроникой. Вместо специальной микросхемы аналогового сервопривода у цифрового собрата можно заметить на плате микропроцессор, который принимает импульсы, анализирует их и управляет мотором. Таким образом, в физическом исполнении отличие лишь в способе обработки импульсов и управлении мотором.
Оба типа сервопривода принимают одинаковые управляющие импульсы. После этого аналоговый сервопривод принимает решение, надо ли изменять положение, и в случае необходимости посылает сигнал на мотор. Происходит это обычно с частотой 50 Гц. Таким образом получаем 20 мс — минимальное время реакции. В это время любое внешнее воздействие способно изменить положение сервопривода. Но это не единственная проблема. В состоянии покоя на электромотор не подаётся напряжение, в случае небольшого отклонения от равновесия на электромотор подаётся короткий сигнал малой мощности. Чем больше отклонение, тем мощнее сигнал. Таким образом, при малых отклонениях сервопривод не сможет быстро вращать мотор или развивать большой момент. Образуются «мёртвые зоны» по времени и расстоянию.
Эти проблемы можно решать за счёт увеличения частоты приёма, обработки сигнала и управления электромотором. Цифровые сервприводы используют специальный процессор, который получает управляющие импульсы, обрабатывает их и посылает сигналы на мотор с частотой 200 Гц и более. Получается, что цифровой сервопривод способен быстрее реагировать на внешние воздействия, быстрее развивать необходимые скорость и крутящий момент, а значит, лучше удерживать заданную позицию, что хорошо. Конечно, при этом он потребляет больше электроэнергии. Также цифровые сервоприводы сложнее в производстве, а потому стоят заметно дороже. Собственно, эти два недостатка — все минусы, которые есть у цифровых сервоприводов. В техническом плане они безоговорочно побеждают аналоговые сервоприводы.
Материалы шестерней
Шестерни для сервоприводов бывают из разных материалов: пластиковые, карбоновые, металлические. Все они широко используются, выбор зависит от конкретной задачи и от того, какие характеристики требуются в установке.
Пластиковые, чаще всего нейлоновые, шестерни очень лёгкие, не подвержены износу, более всего распространены в сервоприводах. Они не выдерживают больших нагрузок, однако если нагрузки предполагаются небольшие, то нейлоновые шестерни — лучший выбор.
Карбоновые шестерни более долговечны, практически не изнашиваются, в несколько раз прочнее нейлоновых. Основной недостатой — дороговизна.
Металлические шестерни являются самыми тяжёлыми, однако они выдерживают максимальные нагрузки. Достаточно быстро изнашиваются, так что придётся менять шестерни практически каждый сезон. Шестерни из титана — фавориты среди металлических шестерней, причём как по техническим характеристикам, так и по цене. К сожалению, они обойдутся вам достаточно дорого.
Коллекторные и бесколлекторные моторы
Существует три типа моторов сервоприводов: обычный мотор с сердечником, мотор без сердечника и бесколлекторный мотор.
Обычный мотор с сердечником (справа) обладает плотным железным ротором с проволочной обмоткой и магнитами вокруг него. Ротор имеет несколько секций, поэтому когда мотор вращается, ротор вызывает небольшие колебания мотора при прохождении секций мимо магнитов, а в результате получается сервопривод, который вибрирует и является менее точным, чем сервопривод с мотором без сердечника. Мотор с полым ротором (слева) обладает единым магнитным сердечником с обмоткой в форме цилиндра или колокола вокруг магнита. Конструкция без сердечника легче по весу и не имеет секций, что приводит к более быстрому отклику и ровной работе без вибраций. Такие моторы дороже, но они обеспечивают более высокий уровень контроля, вращающего момента и скорости по сравнения со стандартными.
Сервоприводы с бесколлекторным мотором появились сравнительно недавно. Преимущества те же что и у остальных бесколлекторных моторов: нет щёток, а значит они не создают сопротивление вращению и не изнашиваются, скорость и момент выше при токопотреблении равном коллекторным моторам. Сервоприводы с бесколлекторным мотором — самые дорогие сервоприводы, однако при этом они обладают лучшими характеристиками по сравнению с сервоприводами с другими типами моторов.
Сервопривод постоянного вращения
Сервоприводы обычно имеют ограниченный угол вращения 180 градусов, их так и называют «сервопривод 180°».
Но существуют сервоприводы с неограниченным углом поворота оси. Это сервоприводы постоянного вращения или «сервоприводы 360°».
Функция Arduino | Сервопривод 180° | Сервопривод 360° |
---|---|---|
Servo.write(0) | Крайне левое положение | Полный ход в одном направлении |
Servo.write(90) | Середнее положение | Остановка сервопривода |
Servo.write(180) | Крайне правое положение | Полный ход в обратном направлении |
Для иллюстрации работы с сервами постоянного вращения мы собрали двух мобильных ботов — на Arduino Uno и Iskra JS. Инструкции по сборке и примеры скетчей смотрите в статье собираем ИК-бота.
Примеры работы с Arduino
Схема подключения
Многие сервоприводы могут быть подключены к Arduino непосредственно. Для этого от них идёт шлейф из трёх проводов:
Для подключения к Arduino будет удобно воспользоваться платой-расширителем портов, такой как Troyka Shield. Хотя с несколькими дополнительными проводами можно подключить серву и через breadboard или непосредственно к контактам Arduino.
Ограничение по питанию
Обычный хобби-сервопривод во время работы потребляет более 100 мА. При этом Arduino способно выдавать до 500 мА. Поэтому, если вам в проекте необходимо использовать мощный сервопривод, есть смысл задуматься о выделении его в контур с дополнительным питанием.
Рассмотрим на примере подключения 12V сервопривода:
Ограничение по количеству подключаемых сервоприводов
На большинстве плат Arduino библиотека Servo поддерживает управление не более 12 сервоприводами, на Arduino Mega это число вырастает до значения 48. При этом есть небольшой побочный эффект использования этой библиотеки: если вы работаете не с Arduino Mega, то становится невозможным использовать функцию analogWrite() на 9 и 10 контактах независимо от того, подключены сервоприводы к этим контактам или нет. На Arduino Mega можно подключить до 12 сервоприводов без нарушения функционирования ШИМ/PWM, при использовании большего количества сервоприводов мы не сможем использовать analogWrite() на 11 и 12 контактах.
Пример использования библиотеки Servo
По аналогии подключим 2 сервопривода
Библиотека Servo не совместима с библиотекой VirtualWire для работы с приёмником и передатчиком на 433 МГц.
Альтернативная библиотека Servo2
Библиотеки для управления сервоприводами (Servo) и для работы с приёмниками / передатчиками на 433 МГц VirtualWire используют одно и то же прерывание. Это означает, что их нельзя использовать в одном проекте одновременно. Существует альтернативная библиотека для управления сервомоторами — Servo2.
Все методы библиотеки Servo2 совпадают с методами Servo.
Пример использования библиотеки Servo
Примеры работы с Espruino
Примеры работы с Raspberry Pi
Вывод
Сервоприводы бывают разные, одни получше — другие подешевле, одни надёжнее — другие точнее. И перед тем, как купить сервопривод, стоит иметь в виду, что он может не обладать лучшими характеристиками, главное, чтобы подходил для вашего проекта. Удачи в ваших начинаниях!
Arduino и сервопривод
Описание
Сервопривод, он же сервомашинка, он же просто серво – простейший “модельный” актуатор, использовался в радиоуправляемых моделях ещё до появления Ардуино. Сервопривод поворачивает свой выходной вал в диапазоне
180 градусов и обладает вполне приличным моментом для перемещения частей механизмов. В маленьком корпусе располагаются:
Серво комплектуется набором “качалок” и винтами для крепления
Характеристики 9-граммового сервопривода:
Сервопривод управляется ШИМ сигналом, точнее длиной импульса: минимальная (0 градусов) и максимальная (
180 градусов) длина импульса колеблется в зависимости от модели и производителя сервопривода.
Подключение
Примечание: сервопривод потребляет довольно приличный ток (стартовый до 1А), поэтому рекомендуется питать его от внешнего источника. При питании от компьютера напряжение может просесть и МК перезагрузится, при высокой нагрузке (с 2 и больше приводов) может выгореть защитный диод на плате Arduino!
Библиотеки
Для управления сервоприводом можно использовать стандартную библиотеку Servo. Эта библиотека отбирает у микроконтроллера первый таймер, поэтому в некоторых случаях будет удобно использовать библиотеку SoftServo. Стандартная библиотека управляет сервоприводом очень резко, на максимальной скорости, поэтому для реальных применений лучше использовать библиотеку плавного движения серво – ServoSmooth.
Servo.h
Библиотека стандартная и идёт в комплекте с Arduino IDE. Подключаем и создаём объект сервопривода. При создании никакие аргументы не передаются:
Библиотека имеет следующие методы:
При “подключении” серво через attach(pin) диапазон длины импульса устанавливается стандартный: 544.. 2400 мкс (задан в библиотеке). Если есть желание настроить серво идеально, чтобы она работала на весь диапазон – нужно попробовать покрутить её через writeMicroseconds() в крайних значениях диапазона и найти минимум и максимум, при которых серво “упирается”.
Примеры
Вращаем туда сюда быстро (как blink, только серво):
Что такое сервопривод на Ардуино
Точное позиционирование механического рабочего органа имеет важное значение в робототехнике, металлообрабатывающей промышленности и других областях. Исследовать вопрос и получить практические навыки помогут схемы с применением сервоприводов «Ардуино».
Для чего нужен сервопривод
Конструкция необходима для точного позиционирования управляемого элемента за счет отрицательной обратной связи. Это позволяет достигать высокой точности движения и обработки деталей (до тысячных долей мкм). Датчик движения, иначе называемый энкодером, отслеживает перемещения рабочего органа, посылая сигналы на управляющее устройство. При отклонении от заданных параметров это устройство корректирует работу мотора.
Отличия от других типов двигателей
Сервомоторы целесообразно сравнивать с наиболее близкими устройствами — шаговыми электродвигателями. В некоторых случаях эти типы машин взаимозаменяемы. Результаты приведены в таблице 1.
Параметр сравнения | Шаговый мотор | Мотор с сервоприводом | |
---|---|---|---|
Наивысшая точность обработки детали, мкм | 10 | 0,002 | |
Стоимость двигателя | Фланец до 110 мм | Низкая | Высокая |
Фланец более 110 мм | Сопоставимая | ||
Затраты по настройке | Низкие | Высокие за счет большего числа настраиваемых параметров, что требует участия специалистов высокой квалификации. | |
Способность к быстрому ускорению | Низкая из-за инертности: при быстром ускорении отмечены пропуски шагов или остановка вращения вала. Максимум 120 об/мин за 1 секунду. | Высокая благодаря возможности повышения тока через обмотки в 3 или 4 раза от номинального. Максимум 1000 об/мин за 0,2 секунды. | |
Устойчивость к принудительной остановке | Высокая | Низкая: необходимо дооборудование системы, в противном случае возможно сгорание обмоток. | |
Наработка на отказ | 20000 часов | Бесколлекторные модели — 17000 часов, щеточные — 5000 часов до замены щеток. | |
Нагрев | Сильный: может потребоваться принудительное охлаждение. | Слабый | |
Уровень шума при эксплуатации | Высокий | Низкий |
Разновидности сервоприводов
Различают следующие виды следящих приводов:
Подключение к «Ардуино»
В стандартную схему подключения сервопривода к Arduino входит плата программируемого контроллера, двигатель и потенциометр, который имеет жесткую связь с рабочим органом мотора и является энкодером. Черный или коричневый провод энкодера соединяется с клеммой GND («земля») на плате контроллера, красный — с клеммой +5 В, желтый или оранжевый — с аналоговой клеммой ШИМ.
После включения системы активируется загрузчик контроллера. При отсутствии ошибок на плате начинает мигать светодиод, показывающий, что контроллер готов к загрузке прикладной программы, иначе называемой скетчем. Он загружается в «Ардуино» из ПК через кабель USB.
Управлять схемой допускается также с помощью джойстика, соединенного с платой контроллера «Ардуино Нано» и серводвижком. К плате манипулятор подключается земляным и плюсовым проводами питания, проводом управления и 2 проводами координат по осям X и Y. Еще один провод необходим для работы кнопки в режиме «нажата»/»отжата».
Для полноценной реализации поворотов в режиме 3D плата способна управлять сразу несколькими устройствами.
Скетч для сервопривода
Задача: вал должен занять позицию 15° на 2 секунды, затем перейти в позицию 45° на 3 секунды, совершить оборот на 180° и через 0,5 секунды вернуться в начальную позицию 15°. Соответствующий поставленной задаче скетч показан в таблице 2.
При необходимости можно не только воздействовать на движок, но и считать величину угла поворота вала в тот или иной момент времени с помощью команды myServo read.
Если используется переменный резистор, то инструкцией int potPin объявляется аналоговый штырек (пин), к которому он будет подключен, а также переменная int val для считывания показаний с этого штырька.
В рабочий программный блок вписываются команды val = analogRead(potPin) (она нужна для чтения показаний потенциометра в диапазоне от 0 до 1023) и val = map(val, 0, 1023, 0, 179) для преобразования данных резистора в позиции вала серводвигателя от 0 до 180° командой myServo.write(val).
Управление устройством
Управление сервоприводом осуществляется при помощи компаратора путем сравнения длины контрольного импульса с длиной импульса, поступившего с энкодера. Частота следования импульсов задается не выше 80-90 Гц. Стандартные значения, принятые на практике, равны 40, 50 или 60 Гц. Возможны 3 ситуации:
Первая ситуация соответствует правильному позиционированию. Управляющая схема останавливает вал мотора. Второй и третий варианты сигнализируют о некорректном положении рабочего вала, которое контроллер исправит путем вращения элемента против (или по) часовой стрелки до тех пор, пока длины импульсов не совпадут.