Как работает сервомотор SG90 и как его подключить к ESP32


Сервомотор (серводвигатель) – это двигатель, используемый для точного управления движениями устройства. Обычно он состоит из электродвигателя постоянного тока, схемы управления и механизма обратной связи. Механизм обратной связи необходим для получения информации о положении оси двигателя – она необходима схеме управления для управления двигателем. Сервомоторы находят широкое применение в робототехнике, станках с ЧПУ, 3D принтерах и других устройствах, где требуется точное управление каким либо механизмом.

Внешний вид проекта подключения сервомотора SG90 к модулю ESP32

В данной статье мы рассмотрим принципы работы сервомотора SG90 и его подключение к модулю ESP32. Также на нашем сайте мы рассматривали подключение серводвигателя к другим микроконтроллерам (платам):

Необходимые компоненты

  1. Модуль ESP32 (купить на AliExpress).
  2. Сервомотор SG90 (купить на AliExpress).

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Как управлять углом поворота сервомотора?

Работа сервомотора состоит в управлении углом поворота оси в системе с замкнутым циклом управления и использовании механизма обратной связи (feedback) для настройки скорости и угла поворота оси.

Схема работы составных частей сервомотора

Сервомотор SG90, который мы будем использовать в нашем проекте, представляет собой систему с замкнутым циклом управления. Чтобы управлять углом поворота его оси необходим сигнал ШИМ (широтно-импульсной модуляции) с частотой 50 Гц и изменяемым коэффициентом заполнения. Его плата управления настроена таким образом, чтобы принимать импульс каждые 20 мс, длина этого импульса определяет угол поворота оси сервомотора. Если импульс имеет длительность 1 мс, то ось сервомотора будет в нулевом положении (0 градусов). Импульс длительностью 1,5 мс повернет ось сервомотора на угол 90 градусов, а импульс длительностью 2 мс – на угол 180 градусов.

Компоненты сервомотора SG90

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

Компоненты сервомотора SG90

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

Распиновка сервомотора SG90

Большинство сервомоторов, доступных в настоящее время на рынке, имеют 3 провода. Распиновка (назначение контактов) сервомотора SG90 представлена на следующем рисунке.

Распиновка (назначение контактов) сервомотора SG90

GND – контакт общего провода (земли).

VCC – контакт для подачи питающего напряжения на сервомотор.

Control – управляющий контакт сервомотора.

Наиболее часто задаваемые вопросы про сервомотор

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

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

Сервомотор работает от постоянного (DC) или переменного тока (AC)?
Существует два типа сервомоторов – работающие от постоянного и переменного тока. Основное различие между ними заключается в способе подачи на них питания. Сервомоторы переменного тока получают питание от розетки, а сервомоторы постоянного тока – от батареек (аккумуляторов).

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

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

Схема проекта

Схема подключения сервомотора SG90 к модулю ESP32 представлена на следующем рисунке.

Схема подключения сервомотора SG90 к модулю ESP32

Как видите, схема подключения достаточно проста. Необходимо подать питание на сервомотор, а его управляющий контакт подключить к любому цифровому контакту (GPIO pin) модуля ESP32.

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

Внешний вид собранной на макетной плате конструкции проекта

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Прежде чем приступать к написанию программы вам необходимо скачать библиотеку esp32 servo motor и установить ее в Arduino IDE.

Первым делом в коде программы подключим библиотеку Servo.h и создадим объект для работы с сервомотором. Затем объявим переменную pos, в которой будем хранить информацию о положении оси сервомотора.

В функции setup() мы с помощью метода attach "прикрепим" сервомотор к контакту 26 модуля ESP32.

В функции void loop() мы запрограммируем два цикла, в одном из которых мы будем поворачивать ось сервомотора от 0 до 180 градусов, а в другом – от 180 градусов до 0. Этот процесс будет продолжаться бесконечно до тех пор пока на наш проект подается питание.

Тестирование работы проекта

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

Возможные проблемы при работе с сервомотором

Иногда сервомоторы не очень хорошо работают если они запитываются от модуля ESP32. Поскольку вначале работы сервомотор потребляет достаточно большой ток, то возникающий при этом импульс тока может сбросить микроконтроллер или даже повредить его. Для решения этой проблемы можно использовать включение электролитического конденсатора большой емкости (470 - 1000 мкФ) между контактами GND и 5V модуля ESP32. В данном случае конденсатор будет играть роль своеобразного хранилища и будет защищать модуль во время потребления сервомотором большого тока. У подобного конденсатора два вывода - более длинный необходимо подключить к контакту 5V модуля ESP32, а более короткий - к общему проводу модуля.

Исходный код программы

Источник статьи

(Проголосуй первым!)
Загрузка...
6 042 просмотров

Комментарии

Как работает сервомотор SG90 и как его подключить к ESP32 — 8 комментариев

  1. Всем привет!

    А не нужен ли токоограничивающий резистор?
    Что пишут:
    У сервы ток около 650 мА.

    Для микроконтроллера ESP32, на базе которого построена NodeMCU 32, максимально допустимый ток на один вывод составляет 40 мА.

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

      Почему резистор не нужен: разделение силовой и сигнальной цепей
      Вы путаете силовую цепь (питание двигателя) и сигнальную цепь (управление).
      Силовая цепь (VCC и GND): Серводвигатель SG90 действительно потребляет значительный ток (вплоть до 650 мА и более при нагрузке или старте). Этот ток течёт от источника питания (в статье используется пин 5V платы ESP32) через обмотки двигателя на землю. Этот ток не проходит через сигнальный вывод GPIO.
      Сигнальная цепь (управляющий провод): На управляющий контакт сервопривода подаётся только сигнал ШИМ (PWM). Вход управления сервопривода имеет высокое сопротивление. Потребляемый им ток ничтожно мал (обычно менее 1 мА) . Он не идёт на питание двигателя, а лишь служит командой для внутренней схемы управления.

      Поэтому управляющий сигнал с вывода ESP32 (максимум 40 мА) управляет лишь «мозгом» сервопривода, а не его «мышцами» (двигателем). Резистор здесь не только не нужен, но и может быть вреден: он может ослабить сигнал, если вход сервопривода имеет недостаточное сопротивление, что приведёт к сбоям в работе.

      Главная проблема проекта и её решение
      Хотя резистор в сигнальной линии не нужен, в статье справедливо отмечена реальная проблема: питание сервопривода напрямую от платы ESP32 (особенно от порта USB) — плохая практика. В момент старта или под нагрузкой сервопривод создаёт импульсный бросок тока, который может вызвать просадку напряжения питания и перезагрузку ESP32.
      Правильное решение (как указано в статье):
      Установите электролитический конденсатор большой ёмкости (470–1000 мкФ) между контактами 5V и GND как можно ближе к сервоприводу (или к пину питания платы). Конденсатор работает как буфер, сглаживая пиковые броски тока и защищая микроконтроллер от перезагрузки.
      Рекомендация: Для надёжной работы лучше всего использовать отдельный источник питания 5V (например, блок питания или DC-DC преобразователь) для сервопривода. При этом GND сервопривода и GND ESP32 должны быть соединены, а сигнальный провод идёт от ESP32 к сервоприводу.

  2. А если с гитхаба по ссылке в описании качать библиотеку, то вообще нужно писать в коде #include «ESP32_Servo.h»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *