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

15.04.2019

Для самых начинающих. Проверенный код в статье. Подключим, повернем, разберемся с питанием.
В руки прибыл сервопривод SD90 с диагнозом неправильной работы и практически с полным отказом (По словам). Надо разобраться.
Общая информация нужна, информация важна
SD-90 - практически самый дешевый сервопривод на рынке электроники.
Вес всего 15 грамм, а крутящий момент 2кг/см. Работает данный сервопривод SD90 в температурах от -30 до +60 градусов.
Рабочее напряжение от 4В до 8В.
Потребление в движении 70 мА, а в удержании 15 мА.
Угол поворота составляет всего 180 градусов.
Сервопривод SD90 идеально подходит для установки на авиамодели.

Для управления сервоприводами с помощью Ардуин есть стандартная библиотека в IDE Arduino Servo.h , которая включает в себя функции для установки настроек сервопривода, необходимого угла, считывания состояния. Некоторые методы являются перегруженными.

Обращаемся к китайским друзьям за мануалами и судя по рисунку ниже подключение сервопривода SG90 не составляет труда.

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

    * Специально для сайта сайт

    * Сервопривод SG90 + Arduino. Подключение

    //Библиотека для работы с сервоприводом

    #include ‹Servo.h›

    //Обьявление переменной - объекта

    Servo servo;

  1. void setup()

    //К пину №7 подключен управляющий вывод сервопривода

    //Данный метод библиотеки указывает пин через который происходит управление

    servo.attach (7 ) ;

    //servo.detach(7); - этот метод отключит управление от указанного пина.

  2. void loop()

    //Установка вала в 0 градусов

    servo.write (0 ) ;

    delay(2000 ) ; //ждем 2 секунды. Необходимо как минимум 30 микросекунд для установки.

  3. servo.write (90 ) ; //ставим вал под 90 градусов

  4. // В библиотеке есть функция для чтения текущего положения (угла) сервопривода.

    // Будет считано последнее установленное значение в сервоприводе.

    // int AngleServo=servo.read();

    // От 0 до 180 градусов.

  5. servo.write (180 ) ; //ставим вал под 190 градусов

    delay(2000 ) ; //ждем 2 секунды.

  6. //Медленно возвращаемся обратно с интервалом в 1 градус

    for (int p= 179 ; p>= 1 ; p-- )

    servo.write (p) ;

    delay(20 ) ;

    //Угол (Установить) можно задать во времени от нуля.

    //Так как у сервопривода есть характеристика скорости поворота 0.12 сек/60 град

    1 - Коннектор для подключения
    2 - Схема управления сервоприводом, обработки сигналов
    3 - Потенциометр
    4 - Двигатель
    5 - Вал

    Так вот, в самом начале я говорил что в руки попал почти не рабочий сервопривод (По словам). После разбирательств стало понятно что Ардуина имела питание от USB компьютера, а сам сервопривод от Arduino.
    Если углубится в подробности то в экспериментах с было установлено то что китайская версия MEGA не вытягивает нагрузку 150 мА. Сервопривод SG90 в момент движения вала создает нагрузку 75-90 мА в зависимости от нагрузки вала. В итоге при старте Ардуины у человека который попросил разобраться в данной проблеме происходил сброс самой ардуины от повышенной нагрузки и соответственно сервопривод не подавал никаких признаков.

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

    В итоге что бы предотвратить нагрузку на Arduino необходимо между питанием и землей установить поддерживающий конденсатор емкостью 1000мФ 10V. И керамический конденсатор любой емкости для предотвращения дребезга от сервопривода (при нагрузке) на Ардуину. Это решение нельзя использовать для постоянного использования, но в экстренных случаях этот вариант вполне подойдет.

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

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

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

Используемые компоненты (купить в Китае):

. Управляющая плата

. Соединительные провода

Полезная вещь для проверки сервориводов

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

Управляющий сигнал представляет из себя импульсы с нужной нам шириной, которые посылаются с определенной частотой. Для рассматриваемых нами сервоприводов частота посылания импульса почти всегда будет около 50 Гц (это примерно 1 раз в 20мс), а ширина импульса будет лежать в пределе от 544мкс до 2400мкс.

Как видно из картинке, импульс шириной в 544мкс выставит выводной вал в положение 0°, 1520мск соответствует углу в 90°, а 2400мкс соответствует 180°.

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

Для подключения к контроллеру от сервопривода тянется 3 провода обжатых стандартным 3 пиновым разъемом с шагом 2.54мм. Цвета проводов могут варьироваться. Коричневый или черный - земля (GND), красный - плюс источника питания (VTG), оранжевый или белый - управляющий сигнал (SIG).

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

У старых Ардуин, укомплектованных мегой 8, имеется всего три ШИМ вывода (digital 9,10,11), у Ардуин укомплектованных мегой 168 или 328 их 6 (digital 3,5,6,9,10,11). Семейство Arduino MEGA имеет на своем борту целых 14 ШИМ выводов.

Купить в России

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

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

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

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

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

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

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

Как работает сервопривод

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

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

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

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

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

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

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

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

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

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

Виды и характеристики

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

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

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

Каждый сервопривод характеризуется определенными параметрами:

  • Крутящий момент или усилие, создаваемое на валу. Считается наиболее важным показателем работы сервопривода. Для каждой величины напряжения существует собственный крутящий момент, отражаемый в паспорте изделия.
  • Скорость поворота. Данный параметр представляет собой определенный период времени, который требуется, чтобы изменить позицию выходного вала на 600. Эта характеристика также зависит от конкретного значения напряжения.
  • Максимальный угол поворота, на который может развернуться выходной вал. Чаще всего эта величина составляет 180 или 3600.
  • Все сервоприводы разделяются на цифровые и аналоговые. В зависимости от этого и осуществляется управление сервоприводом.
  • Питание серводвигателей. В большинстве моделей используется напряжение от 4,8 до 7,2В. Питание и управление осуществляется с помощью трех проводников.
  • Возможность модернизации в сервопривод постоянного вращения.
  • Материалы для редуктора могут использоваться самые разные. Шестерни изготавливаются из металла, карбона, пластика или комбинированных составов. Каждый из них обладает своими преимуществами и недостатками. Например, пластиковые детали плохо выдерживают ударные нагрузки, но устойчивы к износу в процессе длительной эксплуатации. Металлические шестерни, наоборот, быстро изнашиваются, зато они обладают высокой устойчивостью к динамическим нагрузкам.

Плюсы и минусы сервомоторов

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

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

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

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

красный – питание подключается к контакту 5V или непосредственно к источнику питания
коричневый или черный земля (GND контакт Arduino)
желтый или белый сигнал; подключается к цифровому выходу Arduino.

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

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

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

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

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

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

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

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

Для управления изменением положения сервопривода можно использовать потенциометр. Он имеет три контакта подключаемые следующим образом:
Два крайних контакты (как правило) это питание и земля, а средний – информационный. Подсоединяем питания потенциометра –> 5 V Arduino, земля –> GND Arduino, информационный –> аналоговый пин Arduino.
Вот так может выглядеть схема:

А так примитивная программа:

#include Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there }

#include

Servo myservo ; // create servo object to control a servo

int potpin = 0 ; // analog pin used to connect the potentiometer

int val ; // variable to read the value from the analog pin

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

Обычно сервоприводы не расчитаны на полный оборот, вал может поворачиваться на ограниченный угол (чащевсего 180 градусов). Этого вполне достаточно, чтобы управлять рулевыми колесами или магипулятором. Поэтому и примеяют сервоприводы чаще всего для шарниров. Основным показателем мощности сервопривода является крутящий момент, обычно выражается в кг⋅см. Для длинных манипуляторов, которые должны подымать приличный вес, уже потребуются сервоприводы с крутящим моментом 30-40 кг⋅см и больше. Если же мы хотим с помощью нашего сервопривода совершать не очень тяжелую работу, то вполне достаточно самых простейших, на 1,8 или 3,2 кг⋅см.

Вообще, крутящий момент выражается в Н⋅м. Но для большей простоты вычислений его часто приводят к в кг⋅см (1 кг⋅см ~ 0.01 кг⋅м ~ 0.098 Н⋅м) Это усилие, которое может обеспечить сервопривод на определенном расстоянии от оси вращения. Т.е, например сервопривод с моментом 4 кг⋅см может поднять груз в 4 кг, в 1см от оси, или 400 грамм, но уже на расстоянии 10 см от оси. Если мы хоти сделать манипулятор, то нужно прикинуть вес движущихся частей и подбирать соответствующие сервоприводы для каждого сустава.

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

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

Запитываем сервопривод от пина “5V” (красный провод), землю подключаем к пину “Gnd” (черный провод). Управление (белый провод) можно подключить к любому из свободных выходов, например к пину номер 2 (выходов контроллера 0 и 1 используются для связи по последовательному интерфейсу, поэтому использовать их не рекомендуется)

Для управления сервоприводом используется стандартынй класс Servo . Нам требуется процедура attach() , которая служит для инициализации сервопривода и write() , для управления его движением:

#include // Подключаем библиотеку для работы с сервоприводом

servo1.write(90); // Даем команду сервоприводу принять положение в 90 градусов,которое соответствует среднему положению

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

Servo servo1; // Создаем один объект типа «сервопривод»

int angle = 0; // Переменная,в которой хранится положение сервопривода

servo1.attach(2); // Объясняем контроллеру, что управляющий провод сервопривода подключен к пину 2

Похожие статьи