Servo sg90 подключение серво и управление с телефона
Сегодня мы рассмотрим как управлять сервоприводом, или как его многие называют сервомотором или серводвигателем. Я тоже в видео буду называть их по разному, но надо иметь ввиду, что это одно и тоже. Подключать будем такой распространённый сервомотор SG90.
Для каких-нибудь серьёзных разработок он конечно не подойдёт, а так, поиграться в самый раз.
Давайте посмотрим что мы получим на выходе.
Управление мотором происходит с помощью этого ползунка с экрана монитора или телефона.
Это немного изменённый код из видео про управление яркостью светодиода. Посмотреть его можно вот по этой ссылке. Здесь я не буду повторяться, а расскажу только то что было изменено и только то что касается сервомотора. Если, что вам будет не понятно то смотрите это видео.
Для начала надо просто подключить сервомотором и попробовать поуправлять им. Для этого загружаем скетч из библиотеки SERVO или мой скетч из архива. Ссылка на архив как всегда будет в описании. Библиотеку устанавливать не надо. Так как она идёт в стандартной установке ARDUINO IDE.
Скетч прокомментирован и думаю, что здесь всё понятно. Сначала серво устанавливается по центру, то есть в 90 градусов. Затем через каждые 3 секунды изменяется положение на 45 градусов. Дойдя до конца, до 180 градусов, снова устанавливается в положение ноль и всё начинается сначала.
Я с помощью транспортира нарисовал метки на которых должен будет останавливаться сервомотор. Но то ли мне попались плохие сервы, или они все такие, не знаю, но из 5 штук которые были в наличии у меня ни одна не показала правильные результаты. 0 и 180 градусов это чудо техники не может показать даже если перемещать его руками, да и средние значения он указывает так себе. Может вам повезёт и у вас более качественно собранные сервы. Так что смотрим, что бы у нас просто работал мотор – это показывает что он правильно подключен и можно приступать к следующему этапу.
Здесь мы задаём цикл от 0 до 180 градусов с шагом в 1 градус и паузой в 15 миллисекунд для того чтобы он успел переместиться в новое положение. Так как серво не будет ждать успеет ли переместиться в заданное положение, а начнёт выполнять новую команду. Поэтому надо обязательно дать время на выполнение предыдущей команды.
Дойдя до крайнего положения, мотор, после паузы в 3 секунды начнёт обратных ход.
Давайте посмотрим как это работает. Видим, что серво плавно, без рывков двигается от 0 до 180 градусов. Потом подождав, возвращается на место. Если у вас движение происходит рывками, то это значит у вас не хватает питания и надо подключить отдельное питание на 5 вольт.
У меня есть ещё одно видео, где я подробно рассматриваю два типа серв. Один - это сервы с движением от 0 до 180 градусов, а второй это сервомоторы непрерывного движение. Посмотреть можно здесь.
Изменять скорость движения можно двумя способами.
Первый это уменьшением паузы, а второй – это увеличением количество шагов пройденных за одну итерацию цикла. Увеличим скорость в 10 раз. Датчик стал двигаться быстрее- это сразу стало заметно.
Это происходит потому, что теперь мотор проходит не 180 шагов, а всего лишь 18 и соответственно пауз осталось тоже 18. За счёт этого и происходит увеличение скорости. И положение конечных точек осталось на месте. Всё так же 0 и 180. В следующем примере объясню о чём это я.
Теперь сделаем шаги с интервалом в 50.
Теперь мотор сделает всего лишь 3 шага. Это 0, 50, 100 и 150 в одну сторону.
И 180, 130, 80 и 30 в другую. И как я говорил количество пауз тоже уменьшилось. А ещё теперь мотор не может дойти до своих крайних точек.
Теперь мы знаем, что наш сервомотор работает, и подключен правильно. Можно переходить к управлению через WIFI.
Для этого загрузим второй скетч из архива. Как я уже говорил это почти полная копия скетча из урока про управления яркостью светодиодом. Поэтому я не буду объяснять про то что надо установить библиотеки и как настроить сеть. Куда ввести имя сети и пароль. Если не знаете о чём я, то посмотрите то видео.
Теперь как и обещал подписчикам вкратце расскажу как вывести на страницу слайдер, заголовок и цвет фона.
Здесь мы устанавливаем поддержку русской кодировки.
- Title – отвечает за заголовок страницы.
- Устанавливаем шрифт Arial и выравниваем по центру страницы.
- Размер заголовка делаем вот таким, размер, жирность и цвет цифр-значений вот таким.
- В body устанавливаем ширину и цвет фона.
- Здесь различные настройки для слайдера. Отступы, ширина, высота, цвет фона. Для FIREFOX сделаны отдельные настройки.
Это заголовок 2 уровня.
Эта строка отвечает за отправку значений из слайдера. Оно как и практически всё в Ардуино в диапазоне от 0 до 1023.
Про javascript я рассказывать не буду – это довольно сложно. Скажу только, что эта строчка отвечает за вывод значения на экран. Так как сюда нельзя вставить функцию map, мне пришлось сделать деление на 5.68. Получил я эту цифру разделив 1023 на 180. А это get запрос в который передаётся значение от слайдера и всё это отправляется на сервер.
В setup нам нужно только установить скорость, указать к какому контакту подключена серва и передать в get значение от 0 до 180. Вот здесь мы воспользуемся стандартной Ардуиновской функцией map.
Вот и все настройки. Теперь снова посмотрим как это работает. Уже зная и умея создавать такие сложные страницы.
Если вам интересна эта тема, то я могу снять ещё много видео про сервомоторы и не только.
Объём вашего интереса, я буду оценивать по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео с другими. Это очень поможет мне в продвижении канала, а меня будет стимулировать выпускать уроки чаще и интереснее.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне.
Спасибо.
А пока на этом всё. До встречи в новых видео. И ещё раз спасибо за то, что досмотрели до конца.
Пока.
В этой статье мы поговорим о сервоприводах в проектах Ардуино. Именно благодаря серводвигателям обычные электронные проекты становятся робототехническими. Подключение серво к Arduino проекту позволяет реагировать на сигналы датчиков каким-то точным движением, например, открыть дверцу или повернуть в нужную сторону сенсоры. В статье рассмотрены вопросы управления сервоприводами, возможные схемы подключения серво к ардуино, а также примеры скетчей.
Сервопривод для Ардуино
Схема работы сервопривода основана на использовании обратной связи (контура с замкнутой схемой, в котором сигнал на входе и выходе не согласован). В качестве сервопривода может выступать любой тип механического привода, в составе которого есть датчик и блок управления, который автоматически поддерживает все установленные параметры на датчике. Конструкция сервопривода состоит из двигателя, датчика позиционирования и управляющей системы. Основной задачей таких устройств является реализация в области сервомеханизмов. Также сервоприводы нередко используются в таких сферах как обработка материалов, производство транспортного оборудования, обработка древесины, изготовление металлических листов, производство стройматериалов и другие.
В проектах ардуино робототехники серво часто используется для простейших механических действий:
- Повернуть дальномер или другие датчики на определенный угол, чтобы измерить расстояние в узком секторе обзора робота.
- Сделать небольшой шаг ногой, движение конечностью или головой.
- Для создания роботов-манипуляторов.
- Для реализации механизма рулевого управления.
- Открыть или закрыть дверку, заслонку или другой предмет.
Конечно, сфера применения серво в реальных проектах гораздо шире, но приведенные примеры являются самыми популярными схемами.
Схема и типы сервоприводов
Вся схема управления серво находится внутри корпуса, управляющие сигналы и питание подаются, как правило, идут по трем проводам: земля, напряжение питания и управляющий сигнал.
Сервопривод непрерывного вращения 360, 180 и 270 градусов
Материалы шестерней сервопривода
У большинства сервоприводов связующим звеном между валом и внешними элементами является шестеренка, поэтому очень важно, из какого материала она сделана. Наиболее доступных вариантов два: металлические или пластмассовые шестерни. В более дорогих моделях можно найти элементы из карбона и даже титана.
Пластмассовые варианты, естественно, дешевле, проще в производстве и часто используются в недорогих моделях серво. Для учебных проектов, когда сервопривод делает несколько движений, это не страшно. Но в серьезных проектах использование пластмассы невозможно, в виду очень быстрого снашивания таких шестеренок под нагрузкой.
Металлические шестеренки надежнее, но это, безусловно, сказывается как на цене, так и на весе модели. Экономные производители могут сделать часть деталей пластмассовыми, а часть металлическими, это тожно нужно иметь в виду. Ну и, естественно, что в самых дешевых моделях даже наличие металлической шестеренки не является гарантией качества.
Преимущества серводвигателей
Широкое использование сервоприводов связано с тем, что они обладают стабильной работой, высокой устойчивостью к помехам, малыми габаритами и широким диапазоном контроля скорости. Важными особенностями сервоприводов являются способность увеличивать мощность и обеспечение обратной информационной связи. И этого следует, что при прямом направлении контур является передатчиком энергии, а при обратном – передатчиком информации, которая используется для улучшения точности управления.
Отличия серво и обычного двигателя
Включая или выключая обычный электрический двигатель, мы можем сформировать вращательное движение и заставить двигаться колеса или другие предметы, прикрепленные к валу. Движение это будет непрерывным, но для того, чтобы понять, на какой угол повернулся вал или сколько оборотов он сделал, потребуется устанавливать дополнительные внешние элементы: энкодеры. Сервопривод уже содержит все необходимое для получения информации о текущих параметрах вращения и мжет самостоятельно выключаться, когда вал повернется на необходимый угол.
Отличия серво и шагового мотора
Где купить популярные серво SG90, MG995, MG996
Управление сервоприводом
Решающее значение в управлении сервоприводами выполняет управляющий сигнал, который представляет собой импульсы постоянной частоты и переменной ширины. Длина импульса – это один из важнейших параметров, который определяет положение сервопривода. Эту длину можно задать в программе вручную методом подбора через угол или использовать команды библиотеки. Для каждой марки устройства длина может быть различной.
Когда сигнал попадает в управляющую схему, генератор подает свой импульс, длительность которого определяется с помощью потенциометра. В другой части схемы происходит сравнение длительности поданного сигнала и сигнала с генератора. Если эти сигналы разные по длительности, включается электромотор, направление вращения которого определяется тем, какой из импульсов короче. При равенстве длины импульсов мотор останавливается.
Важно учитывать, что на конкретном устройстве настройки могут несколько отличаться от общепринятых значений. У некоторых устройств среднее положение и ширина импульса может быть равной 760 мкс. Все принятые значения также могут незначительно отличаться из-за погрешности, которая может быть допущена при производстве устройства.
Способ управления приводом часто по ошибке называют PWM/ШИМ, но это не совсем корректно. Управление напрямую зависит именно от длины импульса, частота их появления не так важна. Корректная работа будет обеспечена как при 40 Гц, так и при 60 Гц, вклад внесет только сильное уменьшение или увеличение частоты. При резком спаде сервопривод начнет работать рывками, при завышении частоты выше 100 Гц устройство может перегреться. Поэтому правильнее называть PDM.
По внутреннему интерфейсу можно выделить аналоговые и цифровые сервоприводы. Внешних отличий нет – все различия только во внутренней электронике. Аналоговый сервопривод внутри содержит специальную микросхему, цифровой – микропроцессор, принимающий и анализирующий импульсы.
При получении сигнала аналоговый сервопривод принимает решение, менять или нет положение, и по необходимости подает на мотор сигнал с частотой 50 Гц. За время реакции (20 мс) могут произойти внешние воздействия, которые изменят положение сервопривода, и устройство не успеет среагировать. Цифровой сервопривод использует процессор, который подает и обрабатывает сигналы с большей частотой – от 200 Гц, поэтому он может быстрее отреагировать на внешние воздействия, быстрее развивать нужную скорость и крутящий момент. Следовательно, цифровой сервопривод будет лучше удерживать заданное положение. При этом для работы цифрового сервопривода требуется больше электроэнергии, что повышает их стоимость. Большой вклад в цену делает и сложность их производства. Высокая стоимость – единственный недостаток цифровых сервоприводов, в техническом плане они намного лучше аналоговых устройств.
Подключение серводвигателя к ардуино
Скетч для управления сервоприводом в Arduino
Алгоритм работы прост:
- Для начала мы подключаем Servo.h
- Создаем объект класса Servo
- В блоке setup указываем, к какому пину подключен серво
- Используем методы объекта обычным для C++ способом. Самым популярным является метод write, которому мы подаем целочисленное значение в градусах (для сервопривода 360 эти значения будут интерпретироваться по-другому).
Пример простого скетча для работы с сервоприводом
Пример проекта, в котором мы сразу сначала устанавливаем серводвигатель на нулевой угол, а затем поворачиваем на 90 градусов.
Скетч для двух сервпоприводов
А в этом примере мы работаем сразу с двумя сервоприводами:
Управление сервоприводом с помощью потенциометра
В этом примере поворачиваем серво в зависимости от значения, полученное от потенциометра. Считываем значение и преобразовываем его в угол с помощи функции map:
Сервопривод SG90
Характеристики и подключение SG-90
Если вы собрались купить самый дешевый и простой сервопривод, то SG 90 будет лушим вариантом Этот серво чаще всего используется в управлении небольшими легкими механизмами с углом поворота от 0° до 180°.
Технические характеристики SG90:
- Скорость отработки команды 0,12с/60 градусов;
- Питание 4,8В;
- Рабочие температуры от -30С до 60 С;
- Размеры 3,2 х 1,2 х 3 см;
- Вес 9 г.
Описание SG90
Цвета проводов стандартные. Сервопривод стоит недорого, он не обеспечивает точных настроек начальных и конечных позиций. Для того, чтобы избежать лишних перегрузок и характерного треска в положении 0 и 180 градусов лучше выставлять крайние точки в 10° и 170°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.
Сервоприводы MG995 и MG996 tower pro
Серво MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервомоторы, обладающие гораздо лучшими характеристиками по сравнению с SG90.
Характеристики MG995
Выходной вал у MG995 поворачивается на 120 градусов (по 60 в каждом направлении), хотя многие продавцы указывают на 180 градусов. Устройство выполняется в пластиковом корпусе.
- Вес 55 г;
- Крутящий момент 8,5 кг х см;
- Скорость 0,2с/60 градусов (при 4,8В);
- Рабочее питание 4,8 – 7,2В;
- Рабочие температуры – от 0С до -55С.
Описание MG995
Подключение к ардуино также происходит по трем проводам. В принципе, для любительских проектов допускается подключение MG995 напрямую к Arduino, но ток двигателя всегда будет создавать опасную нагрузку для входов платы, поэтому рекомендуется все-таки запитывать серво отдельно, не забыв соединить землю обоих контуров питания. Другим упрощающим жизнь вариантом будет использование готовых сервоконтроллеров и шилдов, обзор которых мы подготовим в отдельной статье.
MG996R похож на MG995 по своим характеристикам, только он выполняется в металлическом корпусе.
Переделка сервопривода в серво непрерывного вращения
Как описывалось выше, сервопривод управляется импульсами переменной ширины, которые задают угол поворота. Текущее положение считывается с потенциометра. Если рассоединить вал и потенциометр, серводвигатель будет принимать положение движка потенциометра как в средней точке. Все эти действия приведут к тому, что будет убрана обратная связь. Это позволяет управлять скоростью и направлением вращения по сигнальному проводу, и создать серво непрерывного вращения. При этом важно отметить, что серво постоянного вращения не может поворачиваться на определенный угол и делать строго заданное количество оборотов.
Чтобы произвести вышеописанные действия, придется разобрать устройство и внести изменения в конструкцию.
В Ардуино IDE нужно создать небольшой скетч, который поставит качалку в среднее положение.
После этого устройство нужно подключить к Ардуино. При подключении серво начнет вращаться. Нужно добиться ее полной остановки путем регулирования резистора. После того, как вращение прекратится, нужно найти вал, вытащить из него гибкий элемент и установить обратно.
Этот метод имеет несколько недостатков – настройка резистора до полной остановки неустойчива, при малейшем ударе/нагреве/охлаждении настроенная нулевая точка может сбиться. Поэтому лучше использовать способ замены потенциометра подстроечником. Для этого нужно вытащить потенциометр и заменить его на подстроечный резистор с таким же сопротивлением. Нулевую точку нужно настроить калибровочным скетчем.
Любой из методов переделки сервопривода в серво непрерывного вращения имеет свои недостатки. Во-первых, сложно настроить нулевую точку, любое движение может ее сбить. Во-вторых, диапазон регулирования мал – при небольшом изменении ширины импульса скорость может значительно измениться. Расширить диапазон можно программно в Ардуино.
Заключение
В этой статье мы постарались раскрыть разные аспекты использования сервоприводов в проектах arduino: от подключения до написания скетчей. Выбрав самую простую модель серво (например, sg 90) вы сможете без труда повторить приведенные примеры и создать свои первые проекты, в которых что-то движется и изменяется. Надеемся, эта статья поможет вам в этом.
Для подключения сервопривода SG90 к Arduino, нам нужно:
Для данной схемы рассмотрим стандартный скетч:
Файл -> Примеры ->Servo->Sweep
Servo myservo ; // create servo object to control a servo // twelve servo objects can be created on most boards myservo . attach ( 9 ) ; // attaches the servo on pin 9 to the servo object for ( pos = 0 ; pos < = 180 ; pos += 1 ) < // goes from 0 degrees to 180 degrees myservo . write ( pos ) ; // tell servo to go to position in variable 'pos' delay ( 15 ) ; // waits 15ms for the servo to reach the position for ( pos = 180 ; pos > = 0 ; pos -= 1 ) < // goes from 180 degrees to 0 degrees myservo . write ( pos ) ; // tell servo to go to position in variable 'pos' delay ( 15 ) ; // waits 15ms for the servo to reach the positionКак всегда убираем комментарии и ещё я изменил начальную позицию на 1 (int pos = 1;), так как на позиции 0 мой сервопривод начинает противно пищать и явно ему не комфортно:
Данный скетч заставляет двигаться сервопривод SG90 в свои крайние позиции туда-обратно.
И так разберём, что происходит в скетче:
Здесь мы объявляем переменную-объект myservo, типа Servo, который появился после объявления библиотеки Servo.h. И объявляется переменная pos в которой будет содержаться текущая позиция сервопривода.
В блоке setup у нас выполняется команда:
Данная команда назначает 9 ножку на плате Arduino, под дата кабель сервопривода. Это тоже функция библиотеки Servo.h объекта типа Servo.
Переходим к блоку loop:
здесь у нас два цикла for первый будет увеличивать позицию(pos) сервопривода от 1 до 180, второй цикл уменьшает позицию(pos) от 180 до 1. И серво привод будет перемещаться влево в право. Хотелось бы сказать на 180 градусов, но серво привод SG90 где то на pos=177 прекращает своё движение и поэтому полных 180 градусов не получается, опять же для измерения углов я бы этот инструмент не использовал.
Одним из важнейших элементов робототехники является сервопривод, с его помощью мы меняем направление робота, крутим датчики и другие элементы роботов, с его помощью двигаются манипуляторы, руки и ноги роботов.
В этой статье мы поговорим о сервоприводах в проектах Ардуино. Именно благодаря серводвигателям обычные электронные проекты становятся робототехническими. Подключение серво к Arduino проекту позволяет реагировать на сигналы датчиков каким-то точным движением, например, открыть дверцу или повернуть в нужную сторону сенсоры. В статье рассмотрены вопросы управления сервоприводами, возможные схемы подключения серво к ардуино, а также примеры скетчей.
Сервопривод для Ардуино
Сервопривод — это такой вид привода, который может точно управлять параметрами движения. Другими словами, это двигатель, который может повернуть свой вал на определенный угол или поддерживать непрерывное вращение с точным периодом.
Схема работы сервопривода основана на использовании обратной связи (контура с замкнутой схемой, в котором сигнал на входе и выходе не согласован). В качестве сервопривода может выступать любой тип механического привода, в составе которого есть датчик и блок управления, который автоматически поддерживает все установленные параметры на датчике. Конструкция сервопривода состоит из двигателя, датчика позиционирования и управляющей системы. Основной задачей таких устройств является реализация в области сервомеханизмов. Также сервоприводы нередко используются в таких сферах как обработка материалов, производство транспортного оборудования, обработка древесины, изготовление металлических листов, производство стройматериалов и другие.
В проектах ардуино робототехники серво часто используется для простейших механических действий:
- Повернуть дальномер или другие датчики на определенный угол, чтобы измерить расстояние в узком секторе обзора робота.
- Сделать небольшой шаг ногой, движение конечностью или головой.
- Для создания роботов-манипуляторов.
- Для реализации механизма рулевого управления.
- Открыть или закрыть дверку, заслонку или другой предмет.
Конечно, сфера применения серво в реальных проектах гораздо шире, но приведенные примеры являются самыми популярными схемами.
Схема и типы сервоприводов
Принцип работы сервопривода основан на обратной связи с одним или несколькими системными сигналами. Выходной показатель подается на вход, где сравнивается его значение с задающим действием и выполняются необходимые действия — например, выключается двигатель. Самым простым вариантов реализации является переменный резистор, который управляется валом — при изменении параметров резистора меняются параметры питающего двигатель тока.
В реальных сервоприводов механизм управления гораздо сложнее и использует встроенные микросхемы-контроллеры. В зависимости от типа используемого механизма обратной связи выделяют аналоговые и цифровые сервоприводы. Первые используют что-то, похожее на потенциометр, вторые — контроллеры.
Вся схема управления серво находится внутри корпуса, управляющие сигналы и питание подаются, как правило, идут по трем проводам: земля, напряжение питания и управляющий сигнал.
Сервопривод непрерывного вращения 360, 180 и 270 градусов
Выделяют два основных вида серводвигателей — с непрерывным вращением и с фиксированным углом (чаще всего, 180 или 270 градусов). Отличие серво ограниченного вращения заключается в механических элементах конструкции, которые могут блокировать движение вала вне заданных параметрами углов. Достигнув угла 180, вал окажет воздействие на ограничитель, а тот отдаст команду на выключение мотора. У серводвигателей непрерывного вращения таких ограничителей нет.
Материалы шестерней сервопривода
У большинства сервоприводов связующим звеном между валом и внешними элементами является шестеренка, поэтому очень важно, из какого материала она сделана. Наиболее доступных вариантов два: металлические или пластмассовые шестерни. В более дорогих моделях можно найти элементы из карбона и даже титана.
Пластмассовые варианты, естественно, дешевле, проще в производстве и часто используются в недорогих моделях серво. Для учебных проектов, когда сервопривод делает несколько движений, это не страшно. Но в серьезных проектах использование пластмассы невозможно, в виду очень быстрого снашивания таких шестеренок под нагрузкой.
Металлические шестеренки надежнее, но это, безусловно, сказывается как на цене, так и на весе модели. Экономные производители могут сделать часть деталей пластмассовыми, а часть металлическими, это тожно нужно иметь в виду. Ну и, естественно, что в самых дешевых моделях даже наличие металлической шестеренки не является гарантией качества.
Титановые или карбоновые шестерни — самый предпочтительный вариант, если вы не ограничены бюджетом. Легкие и надежные, такие сервоприводы активно используются для создания моделей автомобилей, дронов и самолетов.
Преимущества серводвигателей
Широкое использование сервоприводов связано с тем, что они обладают стабильной работой, высокой устойчивостью к помехам, малыми габаритами и широким диапазоном контроля скорости. Важными особенностями сервоприводов являются способность увеличивать мощность и обеспечение обратной информационной связи. И этого следует, что при прямом направлении контур является передатчиком энергии, а при обратном – передатчиком информации, которая используется для улучшения точности управления.
Отличия серво и обычного двигателя
Включая или выключая обычный электрический двигатель, мы можем сформировать вращательное движение и заставить двигаться колеса или другие предметы, прикрепленные к валу. Движение это будет непрерывным, но для того, чтобы понять, на какой угол повернулся вал или сколько оборотов он сделал, потребуется устанавливать дополнительные внешние элементы: энкодеры. Сервопривод уже содержит все необходимое для получения информации о текущих параметрах вращения и мжет самостоятельно выключаться, когда вал повернется на необходимый угол.
Отличия серво и шагового мотора
Управление сервоприводом
Решающее значение в управлении сервоприводами выполняет управляющий сигнал, который представляет собой импульсы постоянной частоты и переменной ширины. Длина импульса – это один из важнейших параметров, который определяет положение сервопривода. Эту длину можно задать в программе вручную методом подбора через угол или использовать команды библиотеки. Для каждой марки устройства длина может быть различной.
Когда сигнал попадает в управляющую схему, генератор подает свой импульс, длительность которого определяется с помощью потенциометра. В другой части схемы происходит сравнение длительности поданного сигнала и сигнала с генератора. Если эти сигналы разные по длительности, включается электромотор, направление вращения которого определяется тем, какой из импульсов короче. При равенстве длины импульсов мотор останавливается.
Стандартная частота, с которой подаются импульсы, равна 50 Гц, то есть 1 импульс в 20 миллисекунд. При таких значениях длительность составляет 1520 микросекунд, и сервопривод занимает среднее положение. Изменение длины импульса приводит к повороту сервопривода – при увеличении длительности поворот осуществляется по часовой стрелке, при уменьшении – против часовой стрелки. Имеются границы длительности – в Ардуино в библиотеке Servo для 0° установлено значение импульса в 544 мкс (нижняя граница), для 180° — 2400 мкс (верхняя граница).
Важно учитывать, что на конкретном устройстве настройки могут несколько отличаться от общепринятых значений. У некоторых устройств среднее положение и ширина импульса может быть равной 760 мкс. Все принятые значения также могут незначительно отличаться из-за погрешности, которая может быть допущена при производстве устройства.
Способ управления приводом часто по ошибке называют PWM/ШИМ, но это не совсем корректно. Управление напрямую зависит именно от длины импульса, частота их появления не так важна. Корректная работа будет обеспечена как при 40 Гц, так и при 60 Гц, вклад внесет только сильное уменьшение или увеличение частоты. При резком спаде сервопривод начнет работать рывками, при завышении частоты выше 100 Гц устройство может перегреться. Поэтому правильнее называть PDM.
По внутреннему интерфейсу можно выделить аналоговые и цифровые сервоприводы. Внешних отличий нет – все различия только во внутренней электронике. Аналоговый сервопривод внутри содержит специальную микросхему, цифровой – микропроцессор, принимающий и анализирующий импульсы.
При получении сигнала аналоговый сервопривод принимает решение, менять или нет положение, и по необходимости подает на мотор сигнал с частотой 50 Гц. За время реакции (20 мс) могут произойти внешние воздействия, которые изменят положение сервопривода, и устройство не успеет среагировать. Цифровой сервопривод использует процессор, который подает и обрабатывает сигналы с большей частотой – от 200 Гц, поэтому он может быстрее отреагировать на внешние воздействия, быстрее развивать нужную скорость и крутящий момент. Следовательно, цифровой сервопривод будет лучше удерживать заданное положение. При этом для работы цифрового сервопривода требуется больше электроэнергии, что повышает их стоимость. Большой вклад в цену делает и сложность их производства. Высокая стоимость – единственный недостаток цифровых сервоприводов, в техническом плане они намного лучше аналоговых устройств.
Подключение серводвигателя к ардуино
Сервопривод обладает тремя контактами, которые окрашены в разные цвета. Коричневый провод ведет к земле, красный – к питанию +5В, провод оранжевого или желтого цвета – сигнальный. К Ардуино устройство подключается через макетную указанным на рисунке образом. Оранжевый провод (сигнальный) подключается к цифровому пину, черный и красный — к земле и питанию соответственно. Для управления серводигателем не требуется подключение именно к шим-пинам — принцип управления серво мы уже описывали ранее.
Не рекомендуется подключать мощные серво напрямую к плате , т.к. они создают для схемы питания Arduino ток, не совместимый с жизнью — повезет, если сработает защита. Чаще всего симптомы перегрузки и неправильного питания сервопривода заключаются в «дергании» серво, неприятному звуку и перезагрузке платы. Для питания лучше использовать внешние источники, обязательно объединяя земли двух контуров.
Скетч для управления сервоприводом в Arduino
Управление сервоприводом напрямую через изменение в скетче длительности импульсов — достаточно нетривиальная задача, но у нас, к счастью, есть отличная библиотека Servo, встроенная в среду разработки Arduino. Все нюансы программирования и работы с сервоприводами мы рассмотрим в отдельной статье. Здесь же приведем простейший пример использования Servo.
Алгоритм работы прост:
- Для начала мы подключаем Servo.h
- Создаем объект класса Servo
- В блоке setup указываем, к какому пину подключен серво
- Используем методы объекта обычным для C++ способом. Самым популярным является метод write, которому мы подаем целочисленное значение в градусах (для сервопривода 360 эти значения будут интерпретироваться по-другому).
Пример простого скетча для работы с сервоприводом
Пример проекта, в котором мы сразу сначала устанавливаем серводвигатель на нулевой угол, а затем поворачиваем на 90 градусов.
Читайте также: