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

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

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

Это первая статья из серии статей про сервоприводы и управление ими разными способами. Из данной статьи Вы узнаете, как устроены сервоприводы, какие они бывают, для чего предназначены и как ими можно управлять с помощью импульсных генераторов, через специальные контроллеры-драйверы, а также через порты (GPIO и PWM/ШИМ) наиболее распространённых одноплатных компьютеров - на примере отечественного микрокомпьютера Repka Pi, полноценно заменяющего, наверное, самый популярный во всём Мире одноплатный компьютер Respberry Pi. Более подробно каждый из способов управления сервоприводами мы разберём в следующих статьях данного цикла, а сейчас, для начала, рассмотрим устройство сервоприводов и общие принципы управления, так как это та база знаний, которая нужна для успешной работы с сервоприводами не зависимо от выбранного способа программирования управления их работой.

Перед тем, как перейти к основной части по существу вопроса, перечислим все статьи данной серии про сервоприводы и управление ими:

Содержание данной статьи

Области применения сервоприводов

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

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

Сервоприводы небольшой мощности

Выделим следующие области применения сервоприводов небольшого размера и мощности:

  • робототехника;

  • роботизированные игрушки и устройства для развлечения;

  • моделирование и авиамоделирование;

  • автоматизация;

  • фотография и видеосъемка;

  • медицинская техника

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

Рис. 1. Сервоприводы и моторы используются в робототехнике
Рис. 1. Сервоприводы и моторы используются в робототехнике

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

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

В качестве примера применения сервоприводов в робототехнике приведём пример учебной модели робота-манипулятора RoboIntellect RM001 как раз на основе программного управления ШИМ сервоприводами, на рис. 2 показан уже собранный образовательный конструктор RoboIntellect RM001 — это пример применения одного из наиболее бюджетных моделей серводвигателей, доступных на рынке - сервомотора MG90S.

Рис. 2. Учебная модель робота-манипулятора RoboIntellect RM001 на основе ШИМ сервоприводов
Рис. 2. Учебная модель робота-манипулятора RoboIntellect RM001 на основе ШИМ сервоприводов

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

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

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

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

Мощные сервоприводы

Мощные промышленные сервоприводы могут работать в тяжелых условиях. Им по плечу управление большими механизмами и тяжелым оборудованием.

Они применяются, например, для управления прессами, подъемниками, перемещения и позиционирования тяжелых заготовок, управления шлагбаумом и воротами. Мощные сервоприводы используются в станках с числовым программным управлением (ЧПУ), в роботизированных системах сварки и резки, в авиации и в космосе.

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

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

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

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

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

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

Крутящий момент

Одна из важнейших характеристик сервопривода — так называемый крутящий момент.

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

Рис. 3. Определение крутящего момента
Рис. 3. Определение крутящего момента

Крутящий момент, обозначенный на рис. 3 как вектор, вычисляется по следующей формуле:

Если, как это показано на рис. 3, вы подвесили груз массой m, равной, например, 2 кг, то он будет воздействовать на рычаг сервопривода с силой, равной произведению массы на ускорение свободного падения m*G, равной 19,6 Н (Ньютон):

2 кг * 9,8 м/с² = 19,6 Н

Представьте, что вы установили на вал мотора рычаг длиной 1 см. Если подвесить на конец этого рычага такой груз, и мотор будет в состоянии его удержать, то крутящий момент M по своему абсолютному значению (модулю) будет равен 2 кг/см. Здесь предполагается, что угол между радиус-вектором точки приложения силы L и вектором силы F составляет 90⁰ (как на рис. 3).

Заметим, что крутящий момент сервоприводов зависит от напряжения питания (табл. 1).

Табл. 1. Крутящий момент сервоприводов небольшого размера

Модель

Крутящий момент M, кг/см

sg90

1.8 кг/см при 4.8 В

mg90s

1.8 кг/см при 4.8 В

2.2 кг/см при 6.0 В

A0090

4,0 кг/см (при 4,8 V)

4,5 кг/см (при 6V)

mg996

9.4 кг/см при 4.8 В

11 кг/см при 6.0 В

Corona DS929HV

2.2 кг/см при 6.0 В

2.4 кг/см при 7.4 В

Corona SB-9039

2.5 кг/см при 4.8 В

2.7 кг/см при 6.0 В

Corona DS843MG

4.0 кг/см при 4.8 В

4.8 кг/см при 6.0 В

Corona DS238MG

4.0 кг/см при 4.8 В

4.6 кг/см при 6.0 В

GXservo 150

150 кг/см при 7.4 В

160 кг/см при 8.4 В

DS04-NFC

5.5 кг/см при 4.8 В

Обратите внимание на водонепроницаемые сервоприводы GXservo. Они могут обеспечить крутящий момент от 100 до 150 кг/см.

Рабочее напряжение

Рекомендуется подавать на сервоприводы напряжение, которое находится в допустимых пределах (табл. 2). Для каждой модели диапазон рабочих напряжений можно найти в документации (в даташите сервопривода).

Табл. 2. Рабочее напряжение сервоприводов небольшого размера

Модель

Рабочее напряжение, В

sg90

4.8 – 6.0

mg90s

4.8 – 6.0

A0090

4.8 – 6.0

mg996

4.8 – 6.0

Corona DS929HV

4.8 – 6.0

Corona SB-9039

4.8 – 6.0

Corona DS843MG

4.8 – 6.0

Corona DS238MG

4.8 – 6.0

GXservo 150

6.0 – 7.4

DS04-NFC

4.8 – 6.0

Максимальный угол поворота

Максимальный угол поворота многих сервоприводов ограничен 180°, однако есть модели с более широким диапазоном. Например, сервопривод RDS3225 может удерживать угол до 270°.

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

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

Табл. 3. Максимальный угол поворота

Модель

Максимальный угол поворота, градусыа

sg90

180

mg90s

213,06

A0090

201,17

mg996

220

Corona DS929HV

195

Corona SB-9039

220

Corona DS843MG

157,5

Corona DS238MG

139,35

GXservo 150

180

DS04-NFC

360 (сервопривод постоянного вращения)

Скорость поворота

Принято определять скорость поворота вала сервопривода как время, необходимое для того, чтобы вал повернулся на 60°. Например, скорость поворота, равная 0,08 с означает, что для поворота вала на 60° сервоприводу требуется время 0,08 с.

Для распространенных сервоприводов скорость поворота и максимальная скорость приведены в табл. 4.

Табл. 4. Скорость поворота на 60° (сек) и максимальная скорость (градусы в секунду)

Модель

Скорость при 4.8 В

Скорость при 6 В

Макс. скорость при 4.8 В

Макс. скорость при 6 В

sg90

0.12

-

-

-

mg90s

0.1

0.08

600

750

A0090

0,09

0,07

666,66

428,57

mg996

0,17

0,14

352,94

857,14

Corona DS929HV

0,11

-

545,45

-

Corona SB-9039

0,14

0,13

428,57

461,53

Corona DS843MG

0,12

0,1

500

600

Corona DS238MG

0,15

0,14

400

428,57

GXservo 150

-

0.16

-

-

DS04-NFC

0,22

-

-

-

Обратите внимание, что эти скорости зависят от величины питающего напряжения.

Размеры и вес

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

Табл. 5. Размеры и вес

Модель

Размеры, мм

Вес, грамм

sg90

23 x 12.2 x 29

9

mg90s

23 x 12.2 x 29

9

A0090

23 x 12.2 x 29

9

mg996

40.7 x 19.7 x 42.9

55

Corona DS929HV

22.5 x 11.5 x 24.6

12,5

Corona SB-9039

22.5 x 11.5 x 24.6

12,5

Corona DS843MG

22.5 x 11.5 x 24.6

12,5

Corona DS238MG

29 x 13 x 30

22

GXservo 150

29 x 13 x 30

22

DS04-NFC

29 x 13 x 30

22

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

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

В состав сервопривода входят несколько компонентов:

  • мотор;

  • редуктор;

  • потенциометр;

  • контроллер.

На рис. 4 показан сервопривод с латунными шестеренками в разобранном виде.

Рис. 4. Сервопривод в разобранном виде
Рис. 4. Сервопривод в разобранном виде

Мотор

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

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

В простых сервоприводах применяют коллекторные электромоторы, состоящие из ротора с обмоткой, магнитов и щеток (рис. 5).

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

Редуктор

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

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

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

Потенциометр

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

Назначение потенциометра — обеспечение обратной связи и контроля положения вала.

Контроллер

Контроллер сервопривода (рис. 5) отслеживает текущее положение оси по изменению сопротивления потенциометра. Это позволяет организовать так называемую отрицательную обратную связь для удержания вала сервопривода в нужном положении.

Как это работает?

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

Если попробовать принудительно повернуть вал сервопривода, то он будет «сопротивляться». Контроллер обнаружит, что вал потенциометра изменил свое положение, и включит мотор, чтобы компенсировать изменение.

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

Подавая на плату сервопривода импульсы нужной длительности,  программа сможет задавать угол поворота оси сервопривода. Для многих сервоприводов с удержанием угла этот угол может изменяться в пределах от 0 до примерно 180 градусов (табл. 3).

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

На рис. 6 показано устройство сервопривода непрерывного вращения DS04-NFC с пластиковым редуктором.

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

Цифровые и аналоговые сервоприводы

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

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

В табл. 6 мы привели типы некоторых сервоприводов.

Табл. 6. Тип сервопривода

Модель

Тип сервопривода

sg90

аналоговый

mg90s

аналоговый

A0090

цифровой

mg996

цифровой

Corona DS929HV

цифровой

Corona SB-9039

цифровой

Corona DS843MG

цифровой

Corona DS238MG

цифровой

GXservo 150

цифровой

DS04-NFC

аналоговый

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

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

Интерфейсы управления

Для управления сервоприводами чаще всего используется широтно-импульсная модуляция (ШИМ), когда длительность импульса определяет положение вала сервопривода с удержанием угла или скорость вращения вала сервопривода непрерывного вращения. Этот тип модуляции мы рассмотрим подробно в следующем разделе.

Также есть сервоприводы с контроллерами, допускающими управление через интерфейсы I2C, UART, USB, CAN и EtherCAT.

При необходимости можно использовать конвертеры, позволяющие управлять сервоприводами, рассчитанными на использование ШИМ, с помощью I2C или USB.

На рис. 7. Показан RoboIntellect controller m1 - ШИМ-контроллер/Преобразователь USB – I2C, созданный на основе микросхемы PCA9685.

RoboIntellect controller m1

К контроллеру RoboIntellect controller m1 можно подключить до 16 сервоприводов с управлением PWM и учитывая, что контроллеры можно соединять по i2c последовательно, то у нас получается практически не ограниченная возможность подключения почти любого количества сервоприводов (ну почти, о максимальном количестве последовательных соединений i2c устройств можно посмотреть в спецификации - это около сотни). При этом сервоприводами можно управлять через I2C или USB. Контроллер также допускает подключение до 4 дополнительных устройств I2C.

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

Дополнительную индикацию обеспечивает встроенный на плату RGB-светодиод, подключенный по умолчанию к порту 16 ШИМ. Также к контроллеру можно подключить датчик тока, например, INA219 для контроля нагрузки.

Широтно-импульсная модуляция

Чтобы управлять скоростью электромоторов, яркостью свечения ламп накаливания и светодиодов применяется так называемая широтно-импульсная модуляция ШИМ (PWM, Pulse Width Modulation).

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

Для демонстрации импульсного сигнала с ШИМ-модуляцией соберем стенд из функционального генератора и осциллографа (рис. 8).

Выход канала CH1 генератора подключим ко входу CH1 осциллографа. Далее установим на выходе генератора сигнал с параметрами, показанными на рис. 9.

Здесь установлена частота импульсов FREQ, равная 50 Гц. Такая частота чаще всего нужна для управления сервоприводами, хотя её можно и изменять. Амплитуда импульсов AMPLS должна быть равна 3,3 В, потому что именно такое напряжение используется на входах и выходах интерфейса GPIO большинства микрокомпьютеров.

Для того чтобы импульсы были положительные, указано смещение OFFS, равное половине амплитуды импульсов, то есть 1,65 В.

Здесь также выбран параметр коэффициента заполнения DUTY, равный 50%.

Полученный сигнал показан на рис. 10.

Как видите, здесь время включения напряжения Твкл (длительность импульса) равна длительности паузы Tвыкл. Период обозначен как Т, и для частоты импульсов 50 Гц он равен 20 мс.

Коэффициент заполнения D (Duty cycle) вычисляется по формуле:

D = (Твкл / T) * 100%

Здесь длительность импульса делится на период сигнала, а затем результат умножается на 100%.

Таким образом, на рис.10 длительность импульсов равна 10 мс, период сигнала  — 20 мс, а коэффициент заполнения D — 50%.

Изменим теперь на генераторе значение DUTY, установив его равным 20% (рис. 11).

Как видите, теперь импульсы стали короче, а паузы между ними длинее. Согласно формуле, коэффициент заполнения теперь равен 20%:

D = (4 / 20) * 100%

При установке значение DUTY, равном 80%, импульсы стали длиннее пауз между ними (рис. 12).

Теперь длительность импульсов составляет 16 мс, что при периоде 20 мс дает коэффициент заполнения D, равный 80%.

Если сигнал ШИМ управляет лампой накаливания или светодиодом, то чем больше коэффициент заполнения, тем ярче будет свет (рис.13, картинка скопирована с этого сайта).

Аналогично, при управлении с помощью ШИМ коллекторным электродвигателем его вал будет крутиться быстрее при увеличении коэффициента заполнения.

Для снижения мерцания при управлении яркостью светодиода рекомендуется устанавливать частоту импульсов порядка 100–300 Гц.

Что же касается коллекторных электродвигателей, то для уменьшения вибраций и шума, а также для обеспечения плавного движения частота импульсов ШИМ может составлять порядка 2–20 кГц. Следует, однако, отметить, что слишком высокая частота ШИМ может привести к увеличению нагрузки, а также выделению тепла. Для определения допустимой частоты обратитесь к документации на электродвигатель.

Применение ШИМ для управления сервоприводами

Для управления сервоприводами применяется метод модуляции ШИМ. Заметим, что при установке частоты и длительности управляющих импульсов, необходимо руководствоваться документацией на сервоприводы.

Угол поворота задается длительностью управляющих импульсов (рис. 14, картинка скопирована с этого сайта).

Если вы будете подавать на вход сервопривода импульсы ШИМ без оглядки на допустимую частоту и длительность импульсов, можно повредить сервопривод. Дело в том, что длина управляющих импульсов сервоприводов должна находиться в определенных пределах.

Минимальная и максимальная длительности управляющих импульсов для небольших сервоприводов приведены в табл. 7.

Табл. 7. Минимальная и максимальная длительность управляющих импульсов

Модель

Минимальная длительность, мс

Максимальная длительность, mc

sg90

1

2

mg90s

0.267

2.722

A0090

0.5

2.4

mg996

0.35

2.55

Corona DS929HV

0.5

2.45

Corona SB-9039

0.8

2.1

Corona DS843MG

0.8

2.2

Corona DS238MG

0.9

2.1

GXservo 150

0.5

2.5

DS04-NFC

1

2

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

Например, для сервоприводов SG90 и mg90s для установки вала сервопривода в нейтральную и крайние позиции нужно при частоте 50 Гц подавать управляющие импульсы следующей длины:

  • -90⁰ — 1 мс;

  • 0⁰ — 1.5 мс;

  • 90⁰ — 2 мс;

Также используют другую систему углов:

  • 0⁰ — 1 мс;

  • 90⁰ — 1.5 мс;

  • 180⁰ — 2 мс;

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

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

Для сервопривода непрерывного вращения DS04-NFC нужно использовать такие импульсы:

  • вращение против часовой стрелки — 1 мс;

  • останов вращения — 1.5 мс;

  • вращение по часовой стрелки — 2 мс;

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

Способы управления сервоприводом

Для управления сервоприводом можно использовать разные способы, вот некоторые из них:

  • применение специальных генераторов импульсов, позволяющих задавать необходимые параметры ШИМ,

  • применение GPIO портов с возможностью управления длительностью подаваемых на них значений логических 0 и 1,

  • применение аппаратных PWM (ШИМ) портов микроконтроллеров или процессоров, выводимых в разъёмах плат контроллеров типа ардуино или на одноплатных компьютерах.

Рассмотрим все перечисленные способы подробнее и с примерами, начав с генераторов импульсов или как их часто называют ШИМ- генераторов или просто ШИМ. Конечно, тут подойдет любой функциональный генератор, такой как FY6900 (рис. 8), однако есть намного более удобные инструменты.

Тестер сервопривода

Пример варианта тестера сервопривода - рис. 15.

С его помощью можно проверить сервопривод перед установкой в систему. Для этого подключите сервопривод и питание к тестеру через соответствующие разъемы. Напряжение питания должно находиться в пределах от 4.8 В до 6 В.

Кнопка PulseWidth задает частоту импульсов ШИМ  (50, 125 или 250Гц), что позволяет проверять сервоприводы различных типов.

Кнопка Select предназначена для выбора одного из трех режимов:

  • ручной;

  • обычный;

  • автоматический

В ручном режиме вращение ручки Servo Consistency Test приводит к изменению длительности управляющих импульсов ШИМ с поворотом вала сервопривода на соответствующий угол. Длительность импульсов в мкс отображается на цифровом индикаторе.

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

И, наконец, в автоматическом режиме ось сервопривода вращается автоматически, а с помощью ручки Servo Consistency Test можно регулировать скорость вращения.

Хорошая видеоинструкция по использованию тестера есть на YouTube.

Управление через GPIO микрокомпьютера Repka Pi

Соберем стенд из микрокомпьютера Repka Pi, сервопривода SG90, sg90s или подобного, а также осциллографа (рис. 16).

Коричневый провод сервопривода подключаем к земле одноплатного компьютера Repka Pi (физические контакты 6, 9, 14, 20, 25, 30, 34 или 39).

Красный провод подключите к питанию +5 В (физические контакты 2 или 4).

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

Соединения показаны на рис.17.

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

После загрузки Repka OS утилитой repka-config установите пятый вариант распиновки 40 pin разъёма одноплатного компьютера, как показано на иллюстрации ниже, в результате чего контакт 33 будет играть роль выхода аппаратного генератора ШИМ, встроенного в процессор Repka Pi. Для этого после запуска утилиты repka-config и после выбора частоты процессора в меню 3 Frequency / Pinout Options в меню выбора варианта прошивки выберите 5 вариант, в описании которого есть в перечислении указание на PWM-1. Затем перезагрузите Репка ОС.

Перед запуском приведенных ниже программ на микрокомпьютера Repka Pi необходимо установить библиотеку RepkaPi.GPIO, доступную на GitFlic, а также другие программы и библиотеки.

Установка библиотеки RepkaPi.GPIO выполняется следующим образом:

# apt-get update
# apt-get install python3-dev git
# git clone https://github.com/DikShv/RepkaPi3.GPIO.git
# cd RepkaPi3.GPIO
# apt-get install python3-setuptools
# python3 setup.py install 

Далее загрузите из репозитория GitHub программу sg90.py (листинг 1).

Листинг 1. https://raw.githubusercontent.com/AlexandreFrolov/repka-pi-pwm/main/sg90.py

import RepkaPi.GPIO as GPIO
from time import sleep
import sys

def setServoAngle(servo, frequency_Hz, angle):
    servo.start_pwm()  
    dutyCycle = angle / 18. + 3.
    
    print("Угол поворота: " + str(angle) + "\xb0")
    print("Коэффициент заполнения Duty: " + str(dutyCycle) + "%")

    period_duration = 1 / frequency_Hz * 1000
    print("Длительность периода: ", period_duration, "мс, частота " + str(frequency_Hz) + " Гц")
    
    pulse_duration = (period_duration / 100) * dutyCycle
    print("Длительность импульса ШИМ :", round(pulse_duration, 1), "мс")    
    
    servo.duty_cycle(dutyCycle)
    sleep(0.3)
    servo.stop_pwm()

if __name__ == "__main__":

    PWM_chip = 0
    PWM_pin = 0
    frequency_Hz = 50
    Duty_Cycle_Percent = 8
    servo = GPIO.PWM_A(PWM_chip, PWM_pin, frequency_Hz, Duty_Cycle_Percent)

    setServoAngle(servo, frequency_Hz, int(sys.argv[1]))
    servo.pwm_close()
    del servo

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

# python3 sg90.py 0
Угол поворота: 0°
Коэффициент заполнения Duty: 3.0%
Длительность периода:  20.0 мс, частота 50 Гц
Длительность импульса ШИМ : 0.6 мс

# python3 sg90.py 90
Угол поворота: 90°
Коэффициент заполнения Duty: 8.0%
Длительность периода:  20.0 мс, частота 50 Гц
Длительность импульса ШИМ : 1.6 мс

# python3 sg90.py 180
Угол поворота: 180°
Коэффициент заполнения Duty: 13.0%
Длительность периода:  20.0 мс, частота 50 Гц
Длительность импульса ШИМ : 2.6 мс

При помощи осциллографа вы можете контролировать длину управляющих импульсов. На рис. 18 показаны импульсы при установке вала сервопривода в нейтральное положение, соответствующее углу поворота 90⁰ (при изменении этого угла в диапазоне от 0⁰ до 180⁰).

В данном случае длина импульса составляет 1.6 мс.

Как работает программа sg90.py?

Прочитав значение угла поворота из параметра запуска в командной строке, программа взывает функцию setServoAngle. Ее задача — пересчет угла поворота в градусах в коэффициент заполнения ШИМ для функции duty_cycle, которая выдает управляющий сигнал на сервопривод.

Чтобы преобразовать угол в коэффициент заполнения dutyCycle, используется следующая формула:

dutyCycle = angle / 18. + 3.

Здесь сначала выполняется деление значения угла на 18. В итоге диапазон изменения угла [0, 180] приводится к диапазону [0, 10].

Далее этот диапазон смещается добавлением значения 3. Как результат получается диапазон [3, 13].

Что касается диапазона изменения длительности импульса ШИМ, то для изменения угла в пределах [0, 180] он составит [0.6, 2.6]. Такой диапазон вполне подходит для управления сервоприводами SG90 и mg90s.

Если нужно задавать другой диапазон изменения длительностей, укажите вместо 3 другое значение в приведенной выше формуле.

Управление сервоприводом постоянного вращения DS04-NFC

Напомним, что, подавая управляющие импульсы ШИМ на сервопривод постоянного вращения, такого как DS04-NFC (рис. 19), можно управлять направлением и скоростью его вращения.

Рис. 19. Сервопривод постоянного вращения DS04-NFC
Рис. 19. Сервопривод постоянного вращения DS04-NFC

Для управления сервоприводом постоянного вращения DS04-NFC выполните подключение следующим образом.

Черный провод сервопривода подключите к земле Repka Pi (физические контакты 6, 9, 14, 20, 25, 30, 34 или 39).

Красный провод подключите к питанию +5 В (физические контакты 2 или 4).

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

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

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

Импульсы длительностью 2 мс вызовут вращение вала сервопривода с полной скоростью в направлении по часовой стрелке.

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

Промежуточные значения длительности импульсов от 1 мс до 1.5 мс и от 1.5 мс до 2 мс можно использовать для управления скоростью вращения вала.

Для управления скоростью и направлением вращения вала сервопривода DS04-NFC мы подготовили программу DS04-NFC.py (листинг 2).

Листинг 2. https://raw.githubusercontent.com/AlexandreFrolov/repka-pi-pwm/main/DS04-NFC.py

import RepkaPi.GPIO as GPIO
import time
import warnings

if __name__ == '__main__':
    try:
        PWM_chip = 0
        PWM_pin = 0
        frequency_Hz = 50
        Duty_Cycle_Percent = 0
        servo = GPIO.PWM_A(PWM_chip, PWM_pin, frequency_Hz, Duty_Cycle_Percent)    

        while True:
            pulse_width = float(input("Введите длительность импульса (1-2): "))
            pulse_width = pulse_width / 1000;
            duty = pulse_width / (1 / frequency_Hz) * 100
            print(pulse_width)
            print(duty)
            
            servo.start_pwm()
            servo.duty_cycle(duty)
            time.sleep(10)
            servo.stop_pwm()
    except KeyboardInterrupt:
        servo.pwm_close()
        del servo
        GPIO.cleanup()

Запустите программу DS04-NFC.py в командной строке без параметров. После запуска программа попросит вас ввести длительность импульса в мс. Указывайте здесь значения в диапазоне [1, 2]:

# python3 DS04-NFC.py
Введите длительность импульса (1-2): 1
Длительность импульса ШИМ :0.001 mc
Коэффициент заполнения Duty: 5.0%
Введите длительность импульса (1-2): 2
Длительность импульса ШИМ :0.002 mc
Коэффициент заполнения Duty: 10.0%
Введите длительность импульса (1-2): 1.5
Длительность импульса ШИМ :0.0015 mc
Коэффициент заполнения Duty: 7.5%

Убедитесь, что сервопривод работает, как ожидается. Для завершения работы программы нажмите в консоли комбинацию клавиш Ctrl+C.

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

Испытывая сервоприводы при помощи тестера Readytosky или описанных выше программ, запущенных на микрокомпьютере Repka Pi, вы, возможно, обнаружили, что некоторые сервоприводы ведут себя не так, как ожидается. Если такие сервоприводы исправны, то, возможно, для них необходимо провести процедуру калибровки.

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

Как правило, частота управляющих импульсов для сервоприводов составляет 50 Гц, что соответствует периоду следования импульсов 20 мс. В то же время длительность управляющих импульсов может изменяться в разных пределах — от 1 мс до 2 мс, от 0.75 мс до 1.85 мс, от 0.5 мс до 2.4 мс и так далее.

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

Под нейтральным положением подразумевается то положение, в которое проворачивается вал при средней длительности импульса (на рис. 20 это 1.5 мс).

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

Иногда под нейтральным положением подразумевается 0⁰, а крайние положения обозначаются как -90⁰ и +90⁰.

При управлением позицией сервопривода важно задать правильную длительность управляющего импульса или коэффициент заполнения (duty cycle).

Ниже приведено вычисление коэффициента заполнения для углов 0⁰, 90⁰ и 180⁰:

  • исходное положение 0⁰ — длительность импульса 1 мс, коэффициент заполнения 1 мс/20 мс*100% = 5%

  • нейтральное положение 90⁰ — длительность импульса 1,5 мс, коэффициент заполнения 1,5 мс/20 мс*100% = 7,5%

  • конечная позиция 180⁰ — длительность импульса 2 мс, коэффициент заполнения 2 мс/20 мс*100% = 10%

Таким образом при перемещении вала сервопривода из исходной в конечную позицию коэффициент заполнения варьируется от 5% до 10%.

Установка сервопривода в нейтральное положение

Перед выполнением калибровки установите вал сервопривода в нейтральное положение. Например, если вал сервопривода поворачивается в диапазоне от 0⁰ до 180⁰, установите его в положение 90⁰.

Далее подайте на сервопривод импульсы длительностью 1.5 мс. Это можно сделать с помощью тестера сервопривода Readytosky или программы, приведенной в листинге 1. Вал должен остаться в нейтральном положении.

Если теперь повернуть вал, а потом снова подать на него импульсы 1.5 мс, то вал должен вернуться в нейтральное положение.

Определение длины импульсов для крайних положений вала

Подайте на сервопривод от тестера сервопривода Readytosky в ручном режиме импульсы, длительность которых должна соответствовать крайним положениям вала сервопривода. Зафиксируйте минимальную и максимальную длину импульса.

Вы также можете воспользоваться программой (листинг 1), чтобы проверить установку вала в крайние позиции, запуская эту программу из командной строки и передавая ей значения крайних углов поворота — 0⁰ и 180⁰. Программа выведет на консоль длительности импульсов и коэффициенты заполнения.

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

Калибровка сервопривода постоянного вращения DS04-NFC

Вращение вала сервопривода DS04-NFC должно полностью остановиться при подаче на него управляющих импульсов 1.5 мс.

Вы можете подавать импульсы такой длины с помощью тестера сервопривода Readytosky или программы, приведенной в листинге 2.

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

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

Особенности сервоприводов

Приведем особенности сервоприводов с удержанием угла поворота оси и сервоприводов непрерывного вращения, полученных в результате исследований, проведенных в компании ООО НПО "ИНТЕЛЛЕКТ", разработчике конструкторов учебных моделей роботов-манипуляторов, приведённых в начале статьи.

Сервоприводы с удержанием угла поворота оси

Для управления разными сервоприводами используются разные диапазоны изменения длительностей управляющих импульсов (рис. 21).

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

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

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

В табл. 8 мы привели рабочие диапазоны управляющих импульсов для некоторых сервоприводов.

Табл. 8. Рабочий диапазон длительности управляющих импульсов

Модель

Рабочий диапазон импульсов, мс

Размер рабочего диапазона, мс

mg90s

0.267-2.722

2.455

A0090

0.5-2.4

1.900

mg996

0.35-2.55

2.200

Corona DS929HV

0.5-2.45

1.950

Corona SB-9039

0.8-2.1

1.300

Corona DS843MG

0.8-2.2

1.400

Corona DS238MG

0.9-2.1

1.200

В табл. 9 вы увидите диапазон значений импульсов для поворота на 1⁰ и 180⁰, а также описание особенностей конкретных моделей сервоприводов.

Табл. 9. Рабочий диапазон длительности управляющих импульсов и особенности

Модель

Импульс для поворота на 1⁰ и 180⁰, мс

Максимальный угол поворота

Особенности

mg90s

0.267-2.722

213,0⁰

Есть другие режимы работы за рамками крайних положений

A0090

0.5-2.4

201,1⁰

Запоминает последнее состояние в рамках рабочего диапазона

mg996

0.35-2.55

220⁰

На одном сервоприводе минимальный импульс был 17500

Corona DS929HV

0.5-2.45

195⁰

Жужжит и нагревается при крайних положениях

Corona SB-9039

0.8-2.1

130⁰

-

Corona DS843MG

0.8-2.2

157,5⁰

Запоминает последнее состояние в рамках рабочего диапазона

Corona DS238MG

0.9-2.1

139,3⁰

-

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

Для сервопривода непрерывного вращения mg996r на рис. 22 приведены режимы работы в зависимости от длительности управляющих импульсов.

Ниже мы привели параметры импульсов управления сервопривода непрерывного вращения mg996r :

  • рабочий диапазон импульсов по часовой стрелке: 400 мс - 1420 мс;

  • размер рабочего диапазона движения по часовой стрелке: 1020 мс;

  • рабочий диапазон импульсов против часовой стрелки: 1020 мс - 1540 мс;

  • размер рабочего диапазона движения против часовой стрелки: 1020 мс

Итоги и выводы

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

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

Компактные сервоприводы с которых проще всего начинать свои опыты:

  • Сервопривод цифровой A0090 9g

  • Сервопривод MG90S Micro Servo

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

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

Успешных проектов всем увлечённым и интересующимся автоматикой!

Комментарии (3)


  1. Jury_78
    22.08.2023 14:10

    Шаговый двигатель нельзя считать сервоприводом?


    1. Sergiv
      22.08.2023 14:10

      У сервопривода обратная связь должна быть. У шагового мотора её нет.


    1. vbifkol
      22.08.2023 14:10
      +2

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