alexandre_frolov
alexandre_frolov
4348 просмотров1 комментариев

Repka Pi и управление сервоприводами, ЧАСТЬ 1. Сервоприводы - устройство и способы управления

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

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

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

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

Другие статьи серии про сервоприводы вы найдете здесь:

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

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

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

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

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

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

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

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

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

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

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

На рис. 2 показан конструктор RoboIntellect RM001 — учебная модель робота-манипулятора.

Рис. 2. Конструктор RoboIntellect RM001

Управление манипулятором в этом конструкторе осуществляется с помощью сервоприводов MG90S. Посмотрите на видео, как это происходит!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Согласно Википедии, крутящий момент или момент силы (момент силы относительно точки) — векторная физическая величина, характеризующая действие силы на механический объект, которое может вызвать его вращательное движение. Определяется как векторное произведение радиус-вектора точки приложения силы (рис. 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. Устройство коллекторного электромотора

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

Редуктор

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

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

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

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

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

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

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

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

Контроллер

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

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

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

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

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

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

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

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

Рис. 6. Сервопривод непрерывного вращения в разобранном виде

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

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

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

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

В табл. 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. Показан ШИМ-контроллер/Преобразователь USB – I2C, созданный на основе микросхемы PCA9685.

Рис. 7. ШИМ-контроллер/Преобразователь USB – I2C

К этому контроллеру можно подключить до 16 сервоприводов с управлением PWM. При этом сервоприводами можно управлять через I2C или USB. Контроллер также допускает подключение до 4 дополнительных устройств I2C.

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

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

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

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

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

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

Рис. 8. Стенд для изучения широтно-импульсной модуляции

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

Рис. 9. Параметры импульсного сигнала для демонстрации ШИМ

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

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

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

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

Рис. 10. Импульсы с коэффициентом заполнения 50%

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

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

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

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

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

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

Рис. 11. Импульсы с коэффициентом заполнения 20%

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

D = (4 / 20) * 100%

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

Рис. 12. Импульсы с коэффициентом заполнения 80%

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

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

Рис. 13. Управление яркостью светодиода при помощи ШИМ

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

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

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

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

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

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

Рис. 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 мс;

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

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

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

Конечно, тут подойдет любой функциональный генератор, такой как FY6900 (рис. 8), однако есть намного более удобные инструменты.

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

Несложен в использовании тестер сервопривода Readytosky (рис. 15).

Рис. 15. Тестер сервопривода Readytosky

С его помощью можно проверить сервопривод перед установкой в систему. Для этого подключите сервопривод и питание к тестеру через соответствующие разъемы. Напряжение питания должно находиться в пределах от 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).

Рис. 16. Управляем сервоприводом mg90s с помощью Repka Pi

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

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

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

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

Рис. 17. Подключение сервопривода к GPIO микрокомпьютера Repka Pi

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

После загрузки Repka OS установите пятый вариант распиновки, в результате чего контакт 33 будет играть роль выхода генератора ШИМ, встроенного в процессор. Для этого запустите утилиту repka-config и после выбора частоты процессора в меню 3 Frequency / Pinout Options в меню выбора варианта прошивки выберите пятый вариант, в описании которого встречается строка 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⁰).

Рис. 18. Импульсы ШИМ при установке угла поворота 90⁰

В данном случае длина импульса составляет 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

Для управления сервоприводом постоянного вращения 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. Процесс калибровки

Под нейтральным положением подразумевается то положение, в которое проворачивается вал при средней длительности импульса (на рис. 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).

Рис. 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 приведены режимы работы в зависимости от длительности управляющих импульсов.

Рис. 22. Режимы работы сервопривода mg996r

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

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

Полезные статьи

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

Итоги

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

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

Также приводим ссылки на ресурсы проекта Repka Pi:

Использование изображений

Рис. 1, Рис. 3


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

Для участия в обсуждении вы должны быть авторизованным пользователем
Alex Mollkov  

Отличная статья !

Навигация

ВойтиРегистрацияТемы