0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Шаговый двигатель простой запуск

Подключение шагового двигателя к Arduino Uno

Шаговые двигатели с каждым годом находят все большее применение в мире электроники. Начиная от обычной камеры наблюдения до сложных станков с ЧПУ и роботов шаговые двигатели используются в качестве исполнительных механизмов, поскольку они обеспечивают точное управление. В этом проекте мы рассмотрим один из наиболее распространенных шаговых двигателей 28BYJ-48 и его подключение к плате Arduino с помощью модуля ULN2003.

Общие принципы работы шаговых двигателей

Внешний вид шагового двигателя 28BYJ-48 представлен на следующем рисунке:

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

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

Как можно видеть из рисунка, двигатель имеет однополярную катушку с 5 выводами. Но фактически это 4 катушки, на которые нужно подавать питание в определенной последовательности. На красные провода необходимо подать +5V, на остальные 4 провода необходимо подать землю чтобы запустить в работу соответствующую катушку. Мы будем использовать плату Arduino чтобы подавать питание на эти катушки в определенной последовательности и тем самым заставлять двигатель вращаться. Более подробно ознакомиться с принципами работы шаговых двигателей можно в статье про подключение шагового двигателя к микроконтроллеру AVR.

Так почему же этот двигатель называется 28BYJ-48? Честно говоря, мы не знаем точного ответа на этот вопрос. Некоторые наиболее важные технические характеристики этого шагового двигателя приведены на следующем рисунке.

На первый взгляд от такого количества характеристик может закружиться голова, но давайте попробуем выделить из них самые важные, те, которые нам понадобятся для дальнейшей работы. Во-первых, мы знаем, что это шаговый двигатель 5V, поэтому необходимо подавать на красный провод 5V. Также мы знаем что это четырехфазный шаговый двигатель поскольку в нем четыре катушки. Передаточное число этого двигателя — 1: 64. Это означает, что вал, который вы видите снаружи, сделает одно полное вращение в том случае, когда двигатель внутри сделает 64 оборота. Это происходит благодаря шестерням, которые включены между двигателем и выходным валом. Эти шестерни помогают в увеличении крутящего момента.

Еще одним важным показателем, который нам следует знать, является угол шага: 5.625°/64. Это значит что когда двигатель сделает последовательность в 8 шагов он будет поворачиваться на 5.625° при каждом шаге и за один полный оборот он сделает 64 шага (5.625*64=360).

Расчет шагов на оборот для шагового двигателя

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

В Arduino для управления двигателем мы будем использовать 4-шаговую последовательность, поэтому угол шага будет составлять 11.25°. Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25).

Справедлива следующая формула:

Количество шагов за оборот = 360 / угол шага.

В нашем случае 360/11.25 = 32 шага за оборот.

Зачем нужен драйвер мотора для управления шаговым двигателем

Большинство шаговых двигателей будут работать только с помощью модуля драйвера мотора. Это связано с тем, что микроконтроллер (в нашем случае плата Arduino) не может обеспечить достаточный ток на своих контактах ввода/вывода для работы двигателя. Поэтому мы будем использовать внешний драйвер мотора для управления нашим шаговым двигателем — модуль ULN2003 (купить на AliExpress). В сети интернет можно найти рейтинги эффективности различных драйверов мотора, но эти рейтинги будут меняться в зависимости от типа используемого шагового двигателя. Основной принцип, которого следует придерживаться при выборе драйвера мотора – он должен обеспечивать достаточный ток для управления шаговым двигателем.

Работа схемы

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

Мы использовали шаговый двигатель 28BYJ-48 и драйвер мотора ULN2003. Для подачи питания на 4 катушки шагового двигателя мы будем использовать контакты платы Arduino 8, 9, 10 и 11. Драйвер мотора запитывается от контакта 5V платы Arduino.

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

Разработка программы для платы Arduino

Перед тем как начать писать программу для платы Arduino давайте разберемся что должно происходить внутри этой программы. Как мы уже говорили ранее, мы будем использовать метод 4-шаговой последовательности, то есть нам нужно будет сделать 4 шага чтобы выполнить один полный оборот двигателя.

Номер шагаКонтакты, на которое подается питаниеКатушки, на которое подается питание
Шаг 18 и 9A и B
Шаг 29 и 10B и C
Шаг 310 и 11C и D
Шаг 411 и 8D и A

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

Читать еще:  Что такое двигатель шоера

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

Как мы рассчитали ранее, полное число шагов для полного оборота нашего шагового двигателя, равно 32, пропишем это в следующей строчке кода:

#define STEPS 32

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

Stepper stepper (STEPS, 8, 10, 9, 11);

Примечание : последовательность номеров контактов, указанная в приведенной команде (8,10,9,11) – специально упорядочена таким образом чтобы подавать питание на катушки шагового двигателя в правильном порядке. Если вы измените номера контактов, к которым подключен шаговый двигатель, то вы соответствующим образом должны их упорядочить для подачи в приведенную команду.

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

Для двигателя 28-BYJ48 скорость вращения можно установить в диапазоне от 0 до 200.

Теперь, чтобы двигатель сделал один шаг, мы можем использовать следующую команду:

Количество шагов, которое должен сделать двигатель, определяется переменной “ val ”. Поскольку мы имеем 32 шага (для оборота) и передаточное число 64 мы должны сделать 2048 (32*64=2048) “шагов” в этой команде для совершения одного полного оборота двигателя.

Значение переменной “val” в нашей программе мы будем вводить из окна монитора последовательной связи.

Работа проекта

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

Теперь загрузите код программы в плату Arduino UNO и откройте окно монитора последовательной связи (serial monitor). Как мы уже указывали, мы должны сделать 2048 шагов для совершения одного полного оборота, то есть если мы в окне монитора последовательной связи введем 2048, то вал шагового двигателя совершит один полный оборот по часовой стрелке, а сам двигатель в это время сделает 2048 шагов. Для вращения против часовой стрелки просто вводите нужное число шагов со знаком “–“. То есть если вы введете -1024, то вал мотора совершит пол-оборота против часовой стрелки. Чтобы протестировать работу проекта вы можете вводить любые числа.

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

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

#include // заголовочный файл библиотеки для работы с шаговыми двигателями
// измените необходимое число шагов в зависимости от модели вашего шагового двигателя
#define STEPS 32
// создайте класс для шагового двигателя и запишите для него правильную последовательность контактов
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;
void setup() <
Serial.begin(9600);
stepper.setSpeed(200);
>
void loop() <
if (Serial.available()>0)
<
val = Serial.parseInt();
stepper.step(val);
Serial.println(val); //for debugging
>
>

Видео, демонстрирующее работу схемы

Настройка драйвера A4988. Первый запуск шаговых двигателей

Продолжаю сборку станка ЧПУ. Шаговые двигателя я уже подобрал. Для проверки электроники, собрал тестовое подключение на столе.

Более подробное описание драйверов A4988 читайте на моем втором сайте ЧПУ технологии (CNC-tex.ru).

Сперва я подключил к CNC shield v3 шаговые двигателя:

  1. 17HS4401 — ток 1,7A
  2. EM-181 — ток 1,2A
  3. EM-142— значение максимального тока не нашел.

Двигателя выбраны сейчас нам нужно настроить рабочий ток драйверов A4988 для каждого шагового двигателя. Это можно сделать двумя способами:

1. Подключить двигатель в полношаговом режиме и замерить ток на одной обмотки. Он должен быть 70% от номинального тока двигателя. Т.е. для 17HS4401 1,7*0,7= 1,19 А

2. Рассчитать значение Vref — напряжение на переменном резисторе расположенном на драйвере А4988.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два черных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Vref = Imax * 8 * (RS)

Imax — ток двигателя;

RS — сопротивление резистора. В моем случае RS = 0,100.
Для 17HS4401 Vref = 1,7 * 8 * 0,100 = 1,36 В.

В связи с тем что рабочий ток двигателя равен 70% от тока удержания. Полученное значение нам нужно умножить на 0,7. В противном случае двигателя в режиме удержания будут сильно греться.

Для 17HS4401 Vref ист. = 1,36*0,7 = 0,952 В.

Аналогично рассчитываю значения для EM-181

Vref = 1,2 * 8 * 0,100 = 0,96 В

Vrefист. = 0,96*0,7 = 0 ,672 В.

Так как я не смог найти datasheets для ЕМ-142. Для расчетов предложил, что ток на обмотку данного двигателя составляет 0,6 А. Если двигатель будит издавать гул сильнее обычного значит ток превышает максимальное значение. Его нужно понижать. Так как я взял ток обмотки. При расчете Vref ист. Не нужно умножать на 0,7, как я говорил выше ток одной обмотки составляет 70% от номинального. Расчет будет вот таким:

Vrefист. = 0,6 * 8 * 0,100 = 0,48 В.

По моим ощущениям я угадал с током двигателя ЕМ-142. Останется рассчитать сколько шагов он делает для совершения одного оборота. Об этом расскажу в следующей статье.

В видео подключил кнопки «Пауза», «Продолжить», «Аварийная остановка» . Подключил на пины шпинделя светодиод. И протестировал работу. Так же установил один конечный выключатель. Все работает. Если у вас возникли вопросу что куда подключается к CNC shield v3, читайте статью: Плата расширения для Arduino UNO, CNC shield v3 и драйверов A4988

Читать еще:  213 двигатель какой карбюратор поставить

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Понравилась статья? Поделитесь ею с друзьями:

Системы и схемы управления шаговыми двигателями без обратной связи

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

5.1. Система управления

Простая система управления для ШД показана на схеме рис. 5.1.

Рис. 5.1. Схема системы управления ШД: 1 — логический блок; 2 — коммутатор; 3 — двигатель; 4 — входной контроллер.

Для удоб­ства объяснения она разделена на две части, ШД в примере четырехфазный на рис. 5.1, а представлена часть системы управления от логического бло­ка до двигателя.

Сигнал управления, приходящий на логический блок, обеспечивает подачу сигнала управления на коммутатор, тем самым способствуя пере­мещению ротора двигателя на один шаг. Направление вращения опреде­ляется логическим состоянием входа, т.е. Н-уровень для вращения по ча­совой стрелке и L-уровень против часовой стрелки. В некоторых случаях применяются логические блоки с не зависящим от направления выход­ным сигналом. Если один инкремент движения осуществляется за один шаг, то на схеме рис. 5.1, а представлена вся система управления. Но если шагов два или больше, то перед логическим блоком необходимо поставить еще одно устройство для создания соответствующей инкре­менту цепочки входных импульсов. Это устройство называется входным контроллером (рис. 5.1, б). В сложных случаях функцию входного конт­роллера выполняют такие электронные устройства, как микропроцессо­ры, которые генерируют цепочки импульсов для ускорения или замедле­ния движения оптимальным образом. В гл. 5 будут рассмотрены элемен­ты логических блоков, а затем устройств коммутаторов и входных конт­роллеров. В заключение приведен пример использования микропроцессо­ра в схеме управления без обратной связи.

5.2. Логические блоки системы управления

Логический блок — это логическая схема, которая управляет последова­тельностью возбуждения обмоток в соответствии с поступлением вход­ных импульсов. Обычно логический блок состоит из регистра сдвига и логических схем (функций) таких, как НЕ-И, НЕ-ИЛИ и т.д. В настоящее время в качестве регистра сдвига применяют универсальные схемы. Одна­ко для конкретных целей можно сконструировать необходимый логи­ческий блок подбором соответствующей интегральной микросхемы, реализующей триггер с логическим входом, срабатывающий по обратно­му фронту сигнала управления (триггеры JK-FF), и логических схем. Базисные функции схем и триггеров приведены на рис. 5.2.

Рис. 5.2. Логические блоки и их функции

Триггер JK-FF реализует функцию, задаваемую таблицей и выполняемую тогда, когда на вход* поступает сигнал Н. Если на вход* поступает сигнал L, то на выходе О будет сигнал L, а на Q — Н. Поэтому вместо составления логического блока из набора соответствующих интегральных микросхем можно использовать универсальные логические блоки, разработанные для ШД.

Рассмотрим несколько типов логических блоков, состоящих из инте­гральных микросхем с транзисторно-транзисторной логической схемой (TTL), изготовленных по КМОП — технологии.

5.2.1. Двухфазное управление четырехфазным двигателем.

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

Драйвер шагового двигателя своими руками

Шаговый двигатель используется в машинах для точного перемещения. Наладим управление шаговым двигателем через USB с компьютера своими руками. Нам потребуется:

1) Шаговый двигатель, возьмем — Nema23 76 мм, вместо него может быть другой, управлять будем биполяным методом, любой гибридный и биполярный шаговый двигатель будет работать с таким же управлением.

2) Блок питания, возьмем — импульсный блок питания мощностью 360W с выходным напряжением 24V / 15A, может использоваться любой другой блок питания, если будет достаточно мощности и напряжения для работы двигателя. Более мощному двигателю будет нужно больше напряжения. Предел напряжения нашего драйвера ограничивается максимальным напряжением, которое выдерживают транзисторы, это 100V, у нас блок питания на 24V. В случае большего напряжения транзисторы в схеме необходимо заменить на более мощные, также при увеличении напряжения, транзисторы могут начать греться, если такое случилось, необходимо дополнительно обдувать их куллером (у меня все в порядке и куллер не требуется). Для подключения блока питания к сети 220V также нужен шнур и нужно определить где в вашей розетке ноль, а где фаза. Контакт блока N подключается к нулю, а L к фазе, также можно подключить заземление (но не обязательно). Определение возможно при помощи индикаторной отвертки, у меня определилось, что слева ноль, а справа фаза.

Как крутить шаговый двигатель

Шаговый двигатель работает от подачи комбинаций напряжения в разных направлениях на его обмотки, у этого шагового двигателя 2 обмотки — 4 провода, первая обмотка — черный (A) и зеленый (A*) провод, вторая обмотка — красный (B) и синий (B*). За одну смену комбинаций делается 1 шаг — 1,8 градусов. Если комбинации быстро менять, то двигатель будет быстро и точно позиционироваться — крутиться. Смена комбинаций возможна в двух направлениях, соответственно двигатель будет крутиться вперед или назад.

Чтобы крутить шаговый двигатель, надо:

1) Собрать устройство — USB контроллер шагового двигателя на микроконтроллере AVR и драйвер шагового двигателя, 2 в 1. Перед тем как собирать это сложное устройство, рекомендую сначало отдельно собрать и проверить работу только USB контроллера, его я уже собрал вот тут — контроллер USB. Если USB связь работает нормально, то можно приступать к изготовлению драйвера.

2) Написать программу для компьютера, которая будет посылать USB команды устройству.

3) Написать программу для микроконтроллера AVR, которая будет принимать USB команды и крутить двигатель.

Читать еще:  4пфм280мг что за двигатель

USB контроллер шаговых двигателей и USB драйвер шагового двигателя

Взятый нами двигатель является гибридным и поддерживает несколько вариантов управления. Управлять двигателем будем биполярным методом и соответственно собираем мы драйвер биполярного шагового двигателя с USB контроллером. Сначало покажу готовый результат, а потом подробно рассмотрим его. Вот фото собранного драйвера шагового двигателя с USB управлением, который я собрал:

Драйвер шагового двигателя с USB управлением своими руками

Схема драйвера биполярного шагового двигателя и USB контроллера (схема длинная и нуждается в прокрутке для просмотра):

Драйвер шагового двигателя USB на микроконтроллере AVR своими руками

Дополнительно нужно (нет в наличии):

1) Модуль питания DC-DC SMAU01L-12 (вместо него пойдет любой конвертер DC-DC с 5V до 10V-15V) — 1 шт., возможно можно без него, от 5V питать (не проверено)

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

Слева от ATmega16A находятся компоненты для организации связи по протоколу USB — к выводам XTAL подключен внешний кварцевый резонатор с USB-совместимой частотой 12 МГц. Для сглаживания сигнала у него есть 2 конденсатора по 20 пФ, все это соединяется с минусом питания. К контактам, через которые идет обмен сообщениями с USB, подключены 2 резистора по 68 Ом, как того требует протокол USB. Резистор на 1.5 кОм, подключенный к D- линии задает низкоскоростной режим работы USB устройства. Диоды Зенера 3V6 понижают напряжение на линиях, через которые идет обмен данными USB с 5 до 3.6V.

Управление двигателем подключается к контактам PB0, PB1, PB2, PB3, на остальные свободные P-контакты можно в будующем подключить еще двигатели и рабочие инструменты, но пока они пустуют. Микроконтроллер ATmega16 отдает команды и обрабатывает USB сигналы после того как в него записана программа (ниже она будет написана). После него идет конструкция из микросхем IR2102 и транзисторов IRF540N (2 так называемых H-моста) — она приводит шаговый двигатель в движение.

Драйвер IR2101 нужен для преодаления большой емкости затвора транзистора IRF540N, что позволяет открывать и закрыть транзистор с большой скоростью (например принимать сигнал ШИМ, которым может регулироваться скорость двигателя при необходимости — об этом сигнале дальше напишу), что нам и нужно. К сожалению для питания этого драйвера необходимо 10-15V, у нас есть только 5V от USB. Поэтому пришлось поставить компонент DC-DC SMAU01L-12, который преобразует 5V в 12V, вместо него можно использовать любой другой способ получения такого напряжения, например, при помощи трансформатора или любым другим путем. К VCC подключается +12V, к COM -12V. Один драйвер работает с 2мя транзисторами — верхним (H) и нижним (L). Контакты HIN и LIN — входной сигнал с микроконтроллера для верхнего и нижнего транзистора, по этому сигналу транзисторы открываются и закрываются. HO и LO — это выходные сигналы, транзисторы подключаются гейтами (G) к этим контактам. Они подключаются не просто так — справа на линиях 2 резистора 10/100 Ом и диод, они нужны для нормальной работы транзисторов — чтобы они замедлялись при открытии и не замедлялись при закрытии, эти транзисторы слишком быстро открываются и это может вызвать проблемы. Диод и конденсаторы 3300 пФ — нужны для работы драйвера IR2101 согласно документации на эту микросхему.

Каждая обмотка (фаза) двигателя (у двигателя 2 обмотки A и B — 4 контакта) подключается к H-мосту из транзисторов IRF540N. H-мост — это специальная схема соединения транзисторов, которая позволяет подавать через них напряжение высокого уровня (24V) в разных направлениях. Один мост изготавливается из 4-х транзисторов. В итоге здесь вы видите 2 H-моста, которые позволяют гонять разнонаправленное напряжение высокого уровня по 2м обмоткам двигателя и тем самым крутить его.

Обратите внимание, что в мосту — HIN верхнего драйвера соединяется с LIN нижнего драйвера, а LIN верхнего с HIN нижнего. Это сделано для одновременной подачи сигналов. Если вы включили HIN сверху, то обязаны включить LIN с низу, иначе произойдет короткое замыкание. Такое подключение позволяет автоматом включать пару. Впрочем короткое замыкание все же возможно, если вы откроете и HIN и LIN на одном мосте, поэтому не допускайте этого. На контактах PB0 — PB3 допустимы только значения 0000, 1010, 0110, 0101, 1001. Их перебор крутит двигатель. Подача других значений скорей всего приведет к короткому замыканию моста.

Мощные резисторы с низким номиналом 0.1 Ом и высокой мощностью (3-5 Вт) нужны для защиты от высокого тока — это шунты. Если что их можно снять и заменить простым соединением с минусом питания, если например не будет хватать мощности. Для слабых резисторов мощность берется от тока USB: 0.05 А * 5 V = 0.25 Вт (ток USB задается программно, по умолчанию в нашей программе стоит 0.05). Черная полоска на диодах соответствует вертикальной линии на схеме.

Шаговый двигатель и блок питания подключаются к H-мостам, как показано на схеме. Минусы питания 24V, 12V и 5V соединяются. Между плюсом и минусом 24V линии ставится сглаживающий пленочный конденсатор.

Отдельное крупное фото драйвера шагового двигателя:

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты