Ардуино запуск шагового двигателя от принтера

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

Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора.

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

Шаговый двигатель – принцип работы

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

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

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

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

Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

Ардуино запуск шагового двигателя от принтераАрдуино запуск шагового двигателя от принтера

Ардуино запуск шагового двигателя от принтераУпрощенные анимированные схемы работы шагового двигателя

Основные виды шаговых моторов:

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

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

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

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

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

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

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

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Ардуино запуск шагового двигателя от принтераДрайвер двигателя L298N

Драйвер шагового двигателя ULN2003

Ардуино запуск шагового двигателя от принтераОписание драйвера шаговых двигателей UNL2003

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

Другие драйвера

Существует другой вид драйверов –  STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

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

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Ардуино запуск шагового двигателя от принтераПодключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Ардуино запуск шагового двигателя от принтераПодключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Ардуино запуск шагового двигателя от принтераПодключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Ардуино запуск шагового двигателя от принтераПринципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17  через драйвер L298 выглядит следующим образом.

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

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные  характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

Характеристики двигателя:

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

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

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов  может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

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

#include

const int stepsPerRevolution = 200;

Stepper myStepper(stepsPerRevolution, 8,9,10,11); //подключение к пинам 8…11 на Ардуино

void setup() {

myStepper.setSpeed(60); //установка скорости вращения ротора

Serial.begin(9600);

}

void loop() {

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

Serial.println(«Move right»); //по часовой стрелке

myStepper.step(stepsPerRevolution);

delay(1000);

Serial.println(«Move left»); //против часовой стрелки

myStepper.step(-stepsPerRevolution);

delay(1000);

}

Заключение

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

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

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

Читайте также:  Двигатель 4м41 егр что это

Драйвер шагового двигателя DRV8825. Подключение к Arduino

В предыдущей статье уже рассмотрели самый распространённый драйвер шагового двигателя A4988.

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

Не смотря на то, что драйвер шагового двигателя DRV8825 полностью взаимозаменяем с драйвером A4988, драйвер DRV8825 имеет ряд преимуществ: рабочее напряжение до 45В, ток до 2,5 А и деление микрошага до 1/32.

Ардуино запуск шагового двигателя от принтера

Технические характеристики драйвер DRV8825

    • Напряжение питания: от 8.2 до 45 В.
    • Установка шага: 1; 1/2; 1/4; 1/8; 1/16; 1/32.
    • Напряжение логики: 3,3 В.
    • Защита от перегрева: Есть.
    • Максимальный ток на фазу: 1,5 А без радиатора, 2,5 А с радиатором.
    • Габариты модуля: 20 мм х 15 мм х 10 мм.
    • Габариты радиатора: 9 мм х 5 мм х 9 мм.

Ардуино запуск шагового двигателя от принтера

Общая информация о драйвере DRV8825

Основная микросхема модуля — это драйвер от TI (Texas Instruments Inc.) DRV8825, который способен управлять одним биполярным шаговым двигателем. Данный драйвер полностью взаимозаменяемый с драйвером A4988.

Микросхема DRV8825 может работать с выходным напряжением до 45 В. и током до 1,5 на катушку без радиатора и до 2,5 А. с радиатором (дополнительным охлаждением).

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

Драйвер позволяет использовать шесть вариантов шага: 1; 1/2; 1/4; 1/8; 1/16; 1/32.

Распиновка драйвера DRV8825

Ардуино запуск шагового двигателя от принтера

На драйвере DRV8825 расположено 16 контактов:

  • EN — включение и выключение модуля (0 — включен, 5 В. — выключен).
  • M0, M1 и M2— выбор режима микрошаг (смотрите таблицу ниже).
  • RST — сброс драйвера.
  • SLP — вывод включения спящего режима, если подтянуть его к низкому состоянию драйвер перейдет в спящий режим.
  • STEP — управляющий вывод, при каждом положительном импульсе, двигатель делает шаг (в зависимости от настройки микрошага), чем быстрее импульсы, тем быстрее вращается двигатель.
  • DIR — управляющий вывод, если подать +5 В. двигатель будет вращаться по часовой стрелке, а если подать 0 В. против часовой стрелки.
  • VMOT&GND MOT — питание шагового двигателя от 8,2 до 45 В. (обязательное наличие конденсатора на 100 мкФ.).
  • B2, B1, A1, и A2 — подключение обмоток двигателя.
  • FAULT — Выход включения защиты, если состояние «0», значит, полевые транзисторы H-моста отключены в результате защиты от перегрузки по току, или был перегрев.
  • GND LOGIC — заземление микроконтроллера.

Подключение питания

Ардуино запуск шагового двигателя от принтера

Модуль может питаться от источника постоянного тока до 45 В. и до 2,5 Ампер при 24 В. А при 45 В. номинального тока до 2,2 А. В общем случае напряжение может быть между 8 и 45 Вольт постоянного тока.

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

Выводы для подключения шагового двигателя

Ардуино запуск шагового двигателя от принтера

Выходные контакты: 1B, 1A, 2A ,2B.

Выводы управления

Ардуино запуск шагового двигателя от принтера

STEP — управляет микрошагом мотора. Каждый высокий импульс, отправляемый на этот вывод, приводит двигатель в действие на количество микрошагов, заданное выводами Microstep Selection (MS1, MS2 и MS3). Чем быстрее импульсы, тем быстрее будет вращаться двигатель.

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

Если вы просто хотите, чтобы двигатель вращался только в одном направлении, то вы можете соединить вывод DIR непосредственно с VCC или GND соответственно.

Настройка микрошага драйвера DRV8825

Ардуино запуск шагового двигателя от принтера

Драйвер DRV8825 может работать в микрошаговом режиме, то есть может подавать питание на катушки с промежуточным уровнем. Например, если взять двигатель NEMA17 с шагом 1.8 градусов или 200 шагов на оборот, в режиме 1/4, двигатель будет выдавать 800 шагов за оборот.

Дня настройки микрошага на драйвере DRV предусмотрены три выхода, а именно M0, M1 и M2. Установив соответствующие логические уровни для этих выводов, можно выбрать режим микрошага.

Ардуино запуск шагового двигателя от принтера

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

Система охлаждения DRV8825

Ардуино запуск шагового двигателя от принтера

При интенсивной работе микросхемы драйвер DRV8825 начинает сильно греться и если температура превысит предельное значение, то он может сгореть. По документации DRV8825 может работать с током до 2,5 А. на катушку, но на практике микросхема не греется, если ток не превышает 1,2 А. на катушку. Поэтому если ток выше 1,2 А. необходимо устанавливать радиатор охлаждения, который идет в комплекте.

Настройка тока DRV8825

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

Ардуино запуск шагового двигателя от принтера

  • Vref = Current Limit / 2
  • где,
  • Current Limit — номинальный ток двигателя.
  • Для примера рассмотрим двигатель NEMA 17 17HS4401 с током 1,7 А.
  • Vref = 1,7 / 2 = 0,85 В.
  • Осталось только настроить, берем отвертку и вольтметр, плюсовый щуп вольтметра устанавливаем на потенциометр, а щуп заземления на вывод GND и выставляем нужное значение.

Подключение драйвера шагового двигателя DRV8825 к Arduino UNO

Подключим двигатель DRV8825 к Arduino UNO по схеме.

Для этого подключаем GND LOGIC к GND на Arduino. Контакты DIR и STEP подключим к цифровым контактам 2 и 3 на Arduino. Подключение шагового двигателя к контактам B2, B1, A2 и A1.

Предупреждение: Подключение или отключение шагового двигателя при включенном приводе может привести к его повреждению.

Затем необходимо подключить контакт RST к соседнему контакту SLP к 5В на Arduino, чтобы включить драйвер. А контакты выбора микрошага необходимо оставить не подключенными, чтобы работал режим полный микрошаг.

Теперь осталось подключить питание двигателя к контактам VMOT и GND MOT, главное не забудьте подключить электролитический конденсатор на 100 мкФ к контактам питания двигателя.

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

Скетч вращения шагового двигателя NEMA 17, драйвер DRV8825

Как уже было упомянуто выше, драйвер DRV8825 заменим драйвером A4988, поэтому и код вращения двигателем можно взять из предыдущей статьи: Драйвер шагового двигателя A4988. Но для увеличения кругозора сегодня будем использовать код вращения двигателя nema 17 без использования библиотеки.

const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

void setup()
{
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
digitalWrite(dirPin, HIGH); // Установка вращения по часовой стрелки

for(int x = 0; x > stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
}
delay(1000);

digitalWrite(dirPin, LOW); // Установка вращения против часовой стрелки

for(int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(1000); digitalWrite(stepPin, LOW); delayMicroseconds(1000); } delay(1000); }

Описание скетча:

Для работы данного скетча, не требуется никаких библиотек. Программа начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR. Так же указываем stepsPerRevolution количество шагов на оборот.

  1. В функции void setup() указываем управляющие контакты как выход.
  2. В основной функции void loop(), вращаем двигатель по часовой стрелке, затем против, с разной скоростью.
  3. Подробнее о подключении шаговых двигателей к Ardiono смотрите на сайте Ардуино технологии.
Читайте также:  В двигателе что то стучит мопед альфа

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

Распиновку и как подключать модуль драйвера DRV8825будем рассматривать в следующей статье.

Использование драйвера DRV8825 с CNC shield v3

Драйвер DRV8825 можно установить на CNC shield v3. CNC shield используются для управления ЧПУ станками и облегчают сборку электроники.

Данный набор позволяет без пайки собрать электронику для двух осевых, трех осевых, четырех осевых ЧПУ станков, а также для самостоятельной сборки 3D принтеров. При реализации ЧПУ станков данные шилды используются достаточно часто благодаря своей низкой цене и простоте сборки. Более подробно CNC shield v3 будем рассматривать в следующих статьях.

Вывод можно сделать следующий. Драйвер DRV8825 обладает рядом преимуществ перед драйвером A4988.

А также, при использовании драйвера шагового двигателя DRV8825, меньше шума от шаговых двигателей. Это актуально при сборке лазерного гравера, 3D принтера.

Когда при работе главный источник шума — это механика и гул шаговых двигателей.

Понравился статья Драйвер шагового двигателя DRV8825? Не забудь поделиться с друзьями в соц. сетях.

Arduino и шаговый мотор

Содержание

  • 1 Описание
  • 2 Подключение
  • 3 Библиотеки
  • 4 Примеры
  • 5 Домашнее задание

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

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

Шаговые моторы используются в ЧПУ станках и прочих устройствах с точным позиционированием частей механизма (2D/3D принтеры, манипуляторы, плоттеры…). В наборе GyverKIT идёт шаговый мотор 28BYJ-48 с драйвером ULN2003:

Ардуино запуск шагового двигателя от принтераДанный мотор питается от 5V, имеет 32 шага на оборот (в полношаговом режиме) и встроенный редуктор с отношением 1/63.68395. Таким образом получается 2038 шагов на один оборот выходного вала.

Фазы мотора выведены следующим образом:

Ардуино запуск шагового двигателя от принтера

Подключение

Мотор управляется через драйвер, который по сути усиливает сигнал с пинов микроконтроллера (подключать моторы напрямую к пинам нельзя!). Драйвер подключается к питанию 5V, а 4 управляющих входа – к любым цифровым пинам МК. Фаза мотора потребляет около 100 мА, поэтому возможно питание драйвера напрямую от платы Arduino.

Ардуино запуск шагового двигателя от принтера

Библиотеки

Для шаговых моторов существует несколько библиотек, самые известные из них:

  • Stepper – стандартная (идёт в комплекте с Arduino IDE) библиотека с минимальными возможностями
  • AccelStepper – позволяет вращать мотор с плавным ускорением и торможением
  • GyverStepper – моя библиотека с большим количеством возможностей и эффективными алгоритмами движения, читайте на странице библиотеки. Также есть расширенная документация

В примерах на этом сайте мы будем использовать GyverStepper как самую удобную и функциональную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverStepper. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры

Воспользуемся версией библиотеки GyverStepper2 (входит в набор GyverStepper). Создаём объект GStepper2, в угловых скобках указываем тип драйвера STEPPER4WIRE, так как используем 4х проводной драйвер. Далее в круглых скобках – количество шагов на один оборот и пины в порядке (фаза А1, фаза А2, фаза В1, фаза В2).

Из второй картинки (с описанием проводов мотора) видно, что первая фаза это провода 2 и 4, а вторая – 3 и 1. Драйвер не меняет порядок проводов, поэтому в программе нам нужно будет указать пины в порядке (1, 3, 2, 4), т.е. центральные нужно поменять местами. На схеме я подключил драйвер к пинам D2, D3, D4, D5, и в программе укажу их как (2, 4, 3, 5).

Если прописать по порядку пинов – мотор будет работать некорректно!

Данный пример просто крутит мотор на один пол оборота, затем возвращает обратно. Каждый раз ждём, когда мотор приедет на позицию.

#include «GyverStepper2.h»
GStepper2< STEPPER4WIRE> stepper(2038, 2, 4, 3, 5);

void setup() {
stepper.setMaxSpeed(400); // скорость движения к цели
stepper.setTargetDeg(180); // отправляем на 180 градусов
}

void loop() {
while (stepper.tick()); // ждём, когда мотор доедет
stepper.setTargetDeg(0); // отправляем обратно
while (stepper.tick()); // ждём, когда мотор доедет
stepper.setTargetDeg(180); // отправляем на 180
}

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

#include «GyverStepper2.h»
GStepper2< STEPPER4WIRE> stepper(2038, 2, 4, 3, 5);

void setup() {
Serial.begin(9600);
stepper.setMaxSpeed(400); // скорость движения к цели
stepper.setTargetDeg(0); // начинаем движение с позиции 0
}

bool dir = 1; // направление
void loop() {
// движение мотора происходит здесь
stepper.tick();

// если мотор доехал до заданной позиции
if (stepper.ready()) {
dir = !dir; // разворачиваем (меняется 1,0,1,0…)
stepper.setTargetDeg(dir * 180); // едем в другую сторону (0 или 180)
}

// асинхронно вывожу в порт графики
static uint32_t tmr;
if (millis() — tmr >= 20) {
tmr = millis();
Serial.println(stepper.pos);
}
}

  • В этом примере также вывожу позицию мотора в порт, можно открыть плоттер и увидеть график:
  • Ардуино запуск шагового двигателя от принтера
  • Позиция здесь выводится в шагах, максимум как раз соответствует половине оборота

В библиотеке также есть поддержка движения с ускорением, добавим настройку setAcceleration()

#include «GyverStepper2.h»
GStepper2< STEPPER4WIRE> stepper(2038, 2, 4, 3, 5);

void setup() {
Serial.begin(9600);
stepper.setAcceleration(500); // ускорение
stepper.setMaxSpeed(400); // скорость движения к цели
stepper.setTargetDeg(0); // начинаем движение с позиции 0
}

bool dir = 1; // направление
void loop() {
// движение мотора происходит здесь
stepper.tick();

// если мотор доехал до заданной позиции
if (stepper.ready()) {
dir = !dir; // разворачиваем
stepper.setTargetDeg(dir * 180); // едем в другую сторону
}

// асинхронно вывожу в порт графики
static uint32_t tmr;
if (millis() — tmr >= 20) {
tmr = millis();
Serial.println(stepper.pos);
}
}

Мотор перестанет дёргаться при смене направления движения, а график будет выглядеть вот так:

Ардуино запуск шагового двигателя от принтера

Также в библиотеке можно отправить мотор вращаться с заданной скоростью

#include «GyverStepper2.h»
GStepper2< STEPPER4WIRE> stepper(2038, 2, 4, 3, 5);

void setup() {
stepper.setSpeedDeg(90); // крутимся 90 градусов в секунду
}

void loop() {
// движение мотора происходит здесь
stepper.tick();
}

Домашнее задание

  • Изучить остальные возможности библиотеки

Управление шаговым двигателем с помощью Arduino

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

Ардуино запуск шагового двигателя от принтера

Это коллекторные электродвигатели постоянного тока. Они могут напрямую подключатся к источнику питания и будут всегда вращаться с постоянной скоростью, в зависимости от подаваемого напряжения. Если необходимо изменить направление вращения, то на нашем моторе нужно просто поменять местами «+» и «-» и он сразу начнёт крутиться в другую сторону. За счёт их простой конструкции, они имеют небольшую стоимость и простоту в управлении.

  1. Но есть ещё один из распространенных типов двигателей — это шаговые электродвигатели.
  2. Вы могли их встречать, если разбирали CD-DVD привода, жёсткие диски, принтеры или другие электронные устройства, в механической части которых нужно чётко контролировать обороты, перемещения или другие необходимые кинематические движения.
  3. Вот так выглядит шаговый электродвигатель с винтовым валом из оптического привода:

Ардуино запуск шагового двигателя от принтера

Как видно — здесь уже больше, чем 2 провода и напрямую подключить такой мотор к источнику питания просто так не получиться из-за совсем другой конструкции самого двигателя.

Читайте также:  F9q двигатель не заводится

Если для нашего первого моторчика достаточно было подать «+» и «-» на соответственные клемы и он начинал вращаться, то для шагового электродвигателя нужно подавать цифровые электронные сигналы управления, которые будут сообщать двигателю на сколько и в какую сторону ему необходимо вращаться.

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

Мы рассмотрим пример, как подключить шаговый электродвигатель к Arduino Mega 2560 — именно оно и будет тем устройством, которое генерирует нужные электронные сигналы управления.

Я взял мотор формата Nema 17 — это гибридный шаговый двигатель, который часто встречается в 3Д принтерах, ЧПУ системах, робототехнике и т.д.

Фото двигателя в разрезе:

Ардуино запуск шагового двигателя от принтера

Драйвер на микросхеме TB6600 — это довольно неплохой контроллер, который можно использовать с двигателями до 4.5 А, 50 В. Для домашних 3Д принтеров и ЧПУ систем его полностью достаточно.

Схема драйвера:

Ардуино запуск шагового двигателя от принтера

Чтобы драйвер работал, необходим внешний источник питания с напряжением 8-50 В (рекомендуется 36 В). Именно с него наш двигатель будет получать энергию для своей работы. А логические сигналы Dir — направление вращения и Pulse — сигнал шага, драйвер будет получать от ардуино.

У данного двигателя 4 обмотки: A+, A-, B+, B-, их нужно соединить с соответствующими выходами на плате драйвера.

Ардуино запуск шагового двигателя от принтера

Для управления шаговым двигателем можно использовать различные библиотеки, которые упрощают жизнь, если необходимо как-то динамически управлять двигателем, например «AccelStepper» и тому подобные. Также есть различные программные комплексы для управления 3Д принтерами или ЧПУ станками.

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

Воспользуемся этим несложным кодом: https://gist.github.com/anonymous/f556f387d90c6a5bbebaa4b57a…

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

Примерно так всё работает:

P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится 🙂

Ардуино шаговый двигатель: управляем с помощью микроконтроллера

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

Шаг 1. Что такое шаговый двигатель?

Шаговый двигатель состоит из двух основных частей: ротора и статора.

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

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

Ротор приводится в движение путем чередования тока на катушках, протекающий через них.

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

Шаг 2: Список деталей

Необходимые детали для проекта Ардуино шагового двигателя:

  • Шаговый двигатель (этот двигатель был взят от старого принтера)
  • Arduino
  • Изолированный медный провод
  • Проволочные резаки / стрипперы
  • Регулятор тока
  • транзистор
  • драйвер двигателя H-Bridge 1A
  • моторный шилд

Дополнительные детали:

  • паяльник
  • припой
  • инструменты
  • безопасные очки

Шаг 3: Присоединяем провода

Большинство шаговых двигателей имеют четыре провода, поэтому вам нужно будет обрезать четыре медных провода (обратите внимание, что цвет не коррелирует с чем-либо конкретным (обычно есть правило, что черный — это земля, но не сейчас). Различные цвета были использованы только для облегчения понимания. Эти выводы будут использоваться для управления, какая катушка в настоящее время активна в двигателе. Для этого проекта Ардуино шаговый двигатель был взят от старого принтера, поэтому пайка проводов была самым простым вариантом для этого проекта. В любом случае, вы можете безопасно установить соединение (пайка, штекер, клипы).

Шаг 4: Эскиз/скетч Arduino

Arduino уже имеет встроенную библиотеку для шаговых двигателей. Просто перейдите в меню:

Файл → Примеры → Шаговые → stepper_oneRevolution
File → Examples → Stepper → stepper_oneRevolution

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

То, что на самом деле делает библиотека Stepper — чередует сигналы HIGH и LOW для каждой катушки, как показано в анимации выше.

Шаг 5: Что такое мост H-bridge?

H-Bridge — схема, состоящая из 4 переключателей, которые могут безопасно управлять двигателем постоянного тока или шаговым двигателем. Эти переключатели могут быть реле или (чаще всего) транзисторами. Транзистор представляет собой твердотельный переключатель, который можно закрыть, посылая небольшой ток (сигнал) на один из его контактов.

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

Важно! Переключатели 1 и 2 или 3 и 4 никогда не должны быть закрыты вместе. Это приведет к короткому замыканию и возможному повреждению устройства.

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

Когда ток больше не посылается двигателям, магнитная энергия возвращается в электрическую энергию и может повредить компоненты. H-Bridge помогает изолировать ваш Arduino лучше всего.

Вы не должны подключать двигатель непосредственно к Arduino.

Хотя H-Bridges можно легко сделать самому многие предпочитают покупать H-Bridge (например, чип L293NE / SN754410) из-за удобства. Это чип, который мы будем использовать в этом уроке. Физические номера контактов и их назначение ниже:

  • Пин 1 (1, 2EN) → Мотор 1 Включен/Выключен (HIGH/LOW)
  • Пин 2 (1A) → Мотор 1 логический выход 1
  • Пин 3 (1Y) → Мотор 1 терминал 1
  • Пин 4 → Земля
  • Пин 5 → Земля
  • Пин 6 (2Y) → Мотор 1 терминал 2
  • Пин 7 (2A) → Мотор 1 логический выход 2
  • Пин 8 (VCC2) → Питание для двигателей
  • Пин 9 → Мотор 2 Включен/Выключен (HIGH/LOW)
  • Пин 10 → Мотор 2 логический выход 1
  • Пин 11 → Мотор 2 терминал 1
  • Пин 12 → Земля
  • Пин 13 → Земля
  • Пин 14 → Мотор 2 терминал 2
  • Пин 15 → Мотор 2 логический выход 2
  • Пин 16 (VCC1) → Питание для H Bridge (5В)

Шаг 6: Схема соединения

  • Схема соединения нашего проекта Ардуино шагового двигателя ниже.

Для шагового двигателя Ардуино 4 вывода на H-Bridge должны подключаться к 4 выводам двигателя.

Затем 4 логических вывода подключаются к Arduino (8, 9, 10 и 11). Как показано на диаграмме выше, для питания двигателей можно подключить внешний источник питания.

Чип может обрабатывать внешний источник питания от 4,5 до 36 В (мы выбрали батарею 9В).

Шаг 7: Загрузка кода и тестирование

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

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

Ссылка на основную публикацию
Adblock
detector