Как подключить шаговый двигатель nema 17

Советы для начинающих. Arduino и шаговый двигатель Nema 17

Перед началом очередного проекта на Arduino, было решено использовать шаговый двигатель Nema 17.

Почему именно Nema 17? В первую очередь, из-за отличного соотношения цена/качество.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Выбор драйвера для управления Nema 17

Google подсказал, что для оживления Nema 17 можно использовать драйвер A4988 от Poulou (даташит).

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Кроме того, есть вариант использования микросхем L293D. Но A4988 считается более подходящим вариантом, так что на нем и остановились во избежание потенциальных проблем.

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

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

Подключение Nema 17 через A4988

Подключение было реализовано на основании этой темы на Arduino форуме. Рисунок приведен ниже.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Собственно, данная схема присутствует практически на каждом блоге-сайте, посвященном Arduino. Плата была запитана от 12 вольтового источника питания. Но двигатель не вращался. Проверили все соединения, еще раз проверили и еще раз.

Первая проблема

Наш 12 вольтовый адаптер не выдавал достаточной силы тока. В результате адаптер был заменен на 8 батареек АА. И двигатель начал вращаться! Что ж, тогда захотелось перескочить с макетной платы на прямое подключение. И тут возникла

Вторая проблема

Когда все было распаяно, двигатель опять перестал двигаться. Почему? Не понятно до сих пор. Пришлось вернуться к макетной плате. И вот тут возникла вторая проблема. Стоит предварительно было посидеть на форумах или внимательно почитать даташит. Нельзя подключать-отключать двигатель когда на контроллер подано питание! В результате контроллер A4988 благополучно сгорел.

Эта проблема была решена покупкой нового драйвера на eBay. Теперь, уже с учетом накопленного грустного опыта, Nema 17 был подключен к A4988и запущен, но.

Шаговый двигатель сильно вибрирует

Программа для Arduino

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

Основные выводы

Скетчи для управления шаговым двигателем

Простой Arduino-код для проверки шагового двигателя

//простое подключение A4988

//пины reset и sleep соединены вместе

//подключите VDD к пину 3.3 В или 5 В на Arduino

//подключите GND к Arduino GND (GND рядом с VDD)

//подключите 1A и 1B к 1 катушке шагового двигателя

//подключите 2A и 2B к 2 катушке шагового двигателя

//подключите VMOT к источнику питания (9В источник питания + term)

int stp = 13; //подключите 13 пин к step

int dir = 12; //подключите 12 пин к dir

if (a 400) // вращение на 200 шагов в направлении 2

Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.

int dir = 1; //используется для смены направления

Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)

dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

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

Источник

Шаговый мотор NEMA 17, серии 17HS4402 + драйвер A4988 + Arduino NANO.

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Шаговый мотор NEMA 17 — это биполярный двигатель с высоким крутящим моментом. Может поворачиваться на заданное число шагов. За один шаг совершает оборот на 1,8°, соответственно полный оборот на 360° осуществляет за 200 шагов.
Биполярный двигатель имеет две обмотки, по одной в каждой фазе, которая для изменения направления магнитного поля переполюсовывается драйвером. Соответственно, от мотора отходят четыре провода.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Такой мотор широко применяется в станках ЧПУ, 3D принтерах, сканерах и т. д.
Управляться он будет с помощью платы Arduino NANO.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Эта плата способна выдавать напряжение 5V, тогда как мотор работает от большего напряжения. Мы выбрали блок питания 12V. Так что нам понадобится дополнительный модуль — драйвер, способный управлять более высоким напряжением через маломощные импульсы Arduino. Для этого отлично подходит драйвер А4988.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Драйвер шагового двигателя А4988.

Модель: A4988;
напряжения питания: от 8 до 35 В;
возможность установки шага: от 1 до 1/16 от максимального шага;
напряжение логики: 3-5.5 В;
защита от перегрева;
максимальный ток на фазу: 1 А без радиатора, 2 А с радиатором;
расстояние между рядами ножек: 12 мм;
размер платы: 20 х 15 мм;
габариты драйвера: 20 х 15 х 10 мм;
габариты радиатора: 9 х 5 х 9 мм;
вес с радиатором: 3 г;
без радиатора: 2 г.

MS1MS2MS3Разрешение микрошага
НизкийНизкийНизкийПолный шаг
ВысокийНизкийНизкий1/2 шага
НизкийВысокийНизкий1/4 шага
ВысокийВысокийНизкий1/8 шага
ВысокийВысокийВысокий1/16 шага

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Каждый импульс на входе STEP соответствует одному микрошагу двигателя, направление вращения которого зависит от сигнала на выводе DIRECTION. Выводы STEP и DIRECTION не подтянуты к какому-либо конкретному внутреннему напряжению, поэтому их не стоит оставлять плавающими при создании приложений. Если вы просто хотите вращать двигатель в одном направлении, можно соединить DIR непосредственно с VCC или GND. Чип имеет три различных входа для управления состоянием питания: RESET, SLEEP и ENABLE. Вывод RESET плавает, если его не нужно использовать, то следует подключить его к соседнему контакту SLEEP на печатной плате, чтобы подать на него высокий уровень и включить плату.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Мы использовали вот такой блок питания (12V).

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Для удобства подключения к плате Arduino UNO, мы использовали собственноручно сделанную деталь. Пластиковый корпус напечатан на 3D принтере, к нему приклеены контакты.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Соединяем всё согласно схеме.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Потом открываем среду разработки программ для Arduino и пишем программу, вращающую мотор сначала в одну сторону на 360°, потом в другую.

/*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. Сначала мотор совершает полный оборот в одну сторону, потом в другую*/
/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
const int pinStep = 5;

//временная задержка между шагами мотора в мс
const int move_delay = 3;

//шагов на полный оборот
const int steps_rotate_360 = 200;

/*Функция, в которой происходит инициализация всех переменных программы*/
void setup()
<
/*задаём контактам Step и Direction режим вывода, то есть они выдают напряжение*/
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
//устанавливаем начальный режим
digitalWrite(pinStep, HIGH);
digitalWrite(pinDir, LOW);
>

/*Функция-цикл в которой задаётся поведение программы*/
void loop()
<
//устанавливаем направление вращения
digitalWrite(pinDir, HIGH);

for(int i = 0; i //устанавливаем направление вращения обратное
digitalWrite(pinDir, LOW);

for(int i = 0; i /*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. Программа приводит мотор в движение.
По-умолчанию вращение происходит по часовой стрелке, так как на контакт DIRECTION драйвера подключён к земле. Если его подключить к питанию 5V, то
мотор вращается против часовой стрелки*/
/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
const int pinStep = 5;

//временная задержка между шагами мотора в мс
const int move_delay = 3;

/*Функция, в которой происходит инициализация всех переменных программы*/
void setup()
<
/*задаём контакту Step режим вывода, то есть он выдают напряжение*/
pinMode(pinStep, OUTPUT);
//устанавливаем начальный режим
digitalWrite(pinStep, LOW);
>

/*Функция-цикл в которой задаётся поведение программы*/
void loop()
<
/*через заданную задержку происходит перемещение мотора на один шаг*/
digitalWrite(pinStep, HIGH);
delay(move_delay);
digitalWrite(pinStep, LOW);
delay(move_delay);
>

Всё это мы рассматривали шаговый режим мотора, то есть 200 шагов за полный оборот. Но, как уже было описано, мотор может работать, в 1/2, 1/4, 1/8, 1/16 шаговых режимах, в зависимости от того, какая комбинация сигналов подаётся на контакты драйвера MS1, MS2, MS3.
Давайте с этим потренируемся, подключим эти три контакта к плате Arduino, согласно схеме, и зальём код программы.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

/*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. В программе попеременно сменяются режимы шага: полношаговый, 1/2, 1/4, 1/8, 1/16 шага, при каждом из них мотор совершает оборот на 200 шагов в одну сторону, потом в другую*/
/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
const int pinStep = 5;

//временная задержка между шагами мотора в мс
const int move_delay = 3;

//шагов на полный оборот
const int steps_rotate_360 = 200;

//размер массива StepModePins
const int StepModePinsCount = 3;

/*Массив, хранящий состояния контактов MS1, MS2, MS3 драйвера, при которых задаются разные режимы вращения: полношаговый, 1/2, 1/4, 1/8, 1/16я шага*/
bool StepMode[5][3] = <
< 0, 0, 0>,
< 1, 0, 0>,
< 0, 1, 0>,
< 1, 1, 0>,
< 1, 1, 1>>;

//размер массива StepMode
const int StepModeSize = 5;

/*Функция, в которой происходит инициализация всех переменных программы*/
void setup()
<
/*задаём контактам Step и Direction режим вывода, то есть они выдают напряжение*/
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);

for(int i = 0; i //устанавливаем начальный режим
digitalWrite(pinStep, HIGH);
digitalWrite(pinDir, LOW);
>

/*Функция-цикл в которой задаётся поведение программы*/
void loop()
<
for(int i = 0; i //вращаем мотор в одну сторону, затем в другую
MakeRoundRotation();
>
>

/*функция, в которой мотор совершает 200 шагов в одном направлении, затем 200 в обратном*/
void MakeRoundRotation()
<
//устанавливаем направление вращения
digitalWrite(pinDir, HIGH);

for(int i = 0; i //устанавливаем направление вращения обратное
digitalWrite(pinDir, LOW);

for(int i = 0; i /*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. В схему включены кнопка с 3мя положениями (I, II, среднее — выключено) и потенциометр. Кнопка регулирует направление вращения мотора, а данные с потенциометра показывают какой из пяти режимов шага мотора включить (полношаговый, 1/2, 1/4, 1/8, 1/16 шага)*/
/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
const int pinStep = 5;

//временная задержка между шагами мотора в мс
const int move_delay = 3;

/*целочисленная константа, показывающая временную задержку между считыванием состояния кнопки и потенциометра*/
const int CheckButtonDelay = 15;

/*Целочисленная переменная показывающая, сколько прошло времени и не пора ли считывать состояние кнопки*/
int CurrentButtonDelay = 0;

//размер массива StepModePins
const int StepModePinsCount = 3;

//состояние кнопки включено-выключено
int ButtonState = 0;

/*Массив, хранящий состояния контактов MS1, MS2, MS3 драйвера, при которых задаются разные режимы вращения: полношаговый, 1/2, 1/4, 1/8, 1/16я шага*/
bool StepMode[5][3] = <
< 0, 0, 0>,
< 1, 0, 0>,
< 0, 1, 0>,
< 1, 1, 0>,
< 1, 1, 1>>;

//размер массива StepMode
const int StepModeSize = 5;

//текущий индекс массива StepMode
int StepModeIndex = 0;

/*Функция, в которой происходит инициализация всех переменных программы*/
void setup()
<
/*задаём контактам Step и Direction режим вывода, то есть они выдают напряжение*/
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);

for(int i = 0; i /*контакты от кнопки и потенциометра устанавливаем в режим входных*/
pinMode(ButtonOn1, INPUT);
pinMode(ButtonOn2, INPUT);
pinMode(PotenciomData, INPUT);

//устанавливаем начальный режим
digitalWrite(pinStep, LOW);
digitalWrite(pinDir, LOW);
>

/*Функция-цикл в которой задаётся поведение программы*/
void loop()
<
if(CurrentButtonDelay >= CheckButtonDelay)
<
CheckButtonState();
CurrentButtonDelay = 0;
>

if(ButtonState == 1)
<
MakeMotorStep();
>

delay(move_delay);
CurrentButtonDelay += move_delay;
>

//функция, в которой совершается один шаг мотора
void MakeMotorStep()
<
digitalWrite(pinStep, HIGH);
digitalWrite(pinStep, LOW);
>

/*функция, в которой проверяется текущее состояние кнопки и потенциометра*/
void CheckButtonState()
<
int CurrentButtonState = 0, CurrentButtonDirection = 0, CurrentStepModeIndex = 0;

bool readbuttonparam = digitalRead(ButtonOn1);

if(readbuttonparam)
<
CurrentButtonState = 1;
CurrentButtonDirection = 1;
>

if(readbuttonparam)
<
CurrentButtonState = 1;
CurrentButtonDirection = 0;
>

Источник

БИБЛИОТЕКА ДЛЯ ШАГОВОГО ДВИГАТЕЛЯ ARDUINO

Для подключения шаговых моторов к Arduino нужно использовать драйверы. Очень дешёвые и популярные моторы 28byj-48-5v часто продаются вместе со своим драйвером (транзисторная сборка ULN2003), подключить можно к любым 4-м пинам Ардуино и использовать.

Для работы с большими шаговиками (типа Nema 17) нужно использовать специализированные драйверы, ниже вы найдёте описания и схемы подключения для A4988, DRV8825 и TMC2208, драйверы такого формата подключаются и работают практически одинаково, т.к. разработаны для CNC шилдов и взаимозаменяемы. У этих драйверов нужно настроить ток при помощи крутилки на плате. Это можно сделать “на глаз”, заставив мотор вращаться и регулируя крутилку. Мотор должен вращаться, но не вибрировать как перфоратор и сильно не нагреваться. Лучше настроить ток по опорному напряжению Vref, у каждого драйвера оно считается по своей формуле (см. картинки ниже). Берём ток своего мотора из описания, подставляем в формулу вместо current, считаем, и накручиваем полученное напряжение крутилкой. Для измерения опорного напряжения нужно подключить щупы вольтметра к самой крутилке и пину GND.

Главное преимущество дорогущих драйверов TMC – отсутствие шума/свиста/вибраций при работе, так как драйвер своими силами интерполирует сигнал до микрошага 1/256.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

БИБЛИОТЕКА GYVERSTEPPER

GyverStepper v1.8

GyverStepper – производительная библиотека для управления шаговыми моторами

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версия 1.1: добавлена возможность плавно менять скорость в режиме KEEP_SPEED. Добавлены примеры multiStepper и accelDeccelButton
v1.2 – добавлена поддержка ESP8266
v1.3 – изменена логика работы setTarget(, RELATIVE)
v1.4 – добавлена задержка для STEP, настроить можно дефайном DRIVER_STEP_TIME
v1.5 – пофикшен баг для плат есп
v1.6 – Исправлена остановка для STEPPER4WIRE_HALF, скорость можно задавать во float (для медленных скоростей)

ДОКУМЕНТАЦИЯ

Документация

Инициализация

Библиотека поддерживает два типа драйверов:

При инициализации указывается тип драйвера, количество шагов на оборот и пины:

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

Время шага [NEW!]

Для драйверов STEP-DIR сделана задержка между переключением состояния пина STEP, эта задержка является минимальной, т.е. она может быть больше, чем нужно, но если будет меньше – возможна нестабильная работа драйвера. По умолчанию она составляет 4 микросекунды, но разным драйверам она нужна разная (для других драйверов см. даташит):

Также увеличение задержки может повысить стабильность работы при использовании длинных неэкранированных проводов от микроконтроллера к драйверу (к пину STEP).

Для изменения величины задержки сделай дефайн DRIVER_STEP_TIME перед подключением библиотеки:

Медленные скорости (new!)

Тик и тайминги

Смена направления

Режимы работы

Режим FOLLOW_POS

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

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

Установленную целевую позицию можно прочитать:

Дополнительно можно настроить максимальную скорость и ускорение при движении к целевой позиции:

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

Режим KEEP_SPEED

В этом режиме мотор просто крутится с заданной скоростью. Скорость задаётся при помощи

(New!) Вторым аргументом можно передать включение плавного изменения скорости, по умолчанию стоит false ( NO_SMOOTH ). Смотри пример accelDeccelButton

Установленную скорость можно прочитать:

Алгоритм планировщика скорости

В библиотеке реализовано два алгоритма планирования скорости для режима плавного движения к позиции с ненулевым ускорением:

Остановка и сброс

Управление питанием

Источник

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

Если вы планируете создать свой собственный 3D-принтер или станок с ЧПУ, вам нужно будет управлять несколькими шаговыми двигателями. Если использовать для этого только Arduino, то большая часть скетча будет занята кодом управления шаговыми двигателями и не останется много места для чего-то еще.

Модуль A4988 может контролировать как скорость, так и направление вращения биполярного шагового двигателя, такого как NEMA 17, использую всего два вывода контроллера.

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

От характера управляющих импульсов зависит поведение шагового двигателя, а именно:

Микросхема драйвера шагового двигателя A4988

Модуль собран на чипе A4988. Не смотря на свой малый размер (всего 0,8 ″ × 0,6 ″), но обладает хорошими характеристиками.

Драйвер шагового двигателя A4988 имеет высокую выходную мощность (до 35 В и 2 А) и позволяет управлять одним биполярным шаговым двигателем с выходным током до 2 А на катушку, например NEMA 17.

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

Драйвер предлагает 5 различных разрешений шага, а именно:

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

Драйвер A4988 имеет всего 16 контактов, которые связывают его с внешним миром. Распиновка у A4988 следующая:

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Давайте ознакомимся со всеми контактами по очереди.

Выводы питания

На самом деле A4988 требует подключения двух источников питания.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

VDD и GND используется для управления внутренней логической схемой. Напряжение питания должно находиться в пределах от 3 до 5,5 В.

Vmot и GND для обеспечения питания шагового двигателя. Тут напряжение в пределах от 8 до 35 В.

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

Один из способов защитить драйвер от таких скачков — подключить электролитический конденсатор емкостью 100 мкФ (или как минимум 47 мкФ) к контактам источника питания двигателя.

Выводы выбора микрошага

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Например, если вы решите управлять шаговым двигателем NEMA 17 с шагом 1,8 градуса (200 шагов на оборот) в режиме 1/4 шага, то двигатель будет выдавать 800 микрошагов на оборот.

Драйвер A4988 имеет три вывода селектора размера шага (разрешения), а именно: MS1, MS2 и MS3. Установив соответствующие логические уровни на эти контакты, мы можем настроить двигатели на одно из пяти ступенчатых разрешений.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

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

Драйвер A4988 имеет два управляющих входа, а именно: STEP и DIR.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

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

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

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

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

A4988 имеет три различных вывода для управления состоянием питания, а именно. EN, RST и SLP.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

EN — вывод включения (0)/ выключения (1) драйвера A4988. По умолчанию на этом выводе установлен низкий уровень, поэтому драйвер всегда включен.

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

RST — при подаче сигнала низкого уровня все входные данные STEP игнорируются, до тех пор пока не будет установлен высокий уровень. Низкий уровень также сбрасывает драйвер, устанавливая внутренний транслятор в предопределенное состояние Home. Исходное состояние — это в основном начальное положение, с которого запускается двигатель, и оно различается в зависимости от разрешения микрошага.

Если вам не нужно использовать вывод RST, вы можете подключить его к соседнему контакту SLP / SLEEP, чтобы вывести его на высокий уровень и включить драйвер.

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

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

К этим выводам можно подключить любой биполярный шаговый двигатель с напряжением питания от 8 до 35 В.

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

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

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

Даже если микросхема драйвера A4988 имеет максимальный номинальный ток 2 А на катушку, микросхема может подавать только около 1 А на катушку без перегрева.

Для достижения более 1 А на катушку требуется радиатор или другой метод охлаждения.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Драйвер A4988 обычно поставляется с радиатором. Желательно установить его перед использованием драйвера.

Ограничение тока

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

Для этого есть два метода:

Способ 1:

В данном случае мы собираемся установить ограничение тока путем измерения напряжения (Vref) на выводе «ref».

ограничение тока = Vref x 2,5

Например, если ваш двигатель рассчитан на 350mA, вы должны установить опорное напряжение 0,14В.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Способ 2:

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

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

Подключения довольно простое. Начните с подключения VDD и GND (рядом с VDD) к контактам 5V и минус на Arduino. Входные контакты DIR и STEP подключите к цифровым контактам №2 и №3 на Arduino соответственно. Шаговый двигатель подключите к контактам 2B, 2A, 1A и 1B.

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

Затем подключите вывод RST к соседнему выводу SLP/SLEEP, чтобы драйвер оставался включенным. Также держите контакты выбора микрошага отключенными, чтобы двигатель работал в полношаговом режиме.

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

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Код Arduino — простой пример

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

Пояснение к скетчу:

Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR A4988. Мы также определяем stepsPerRevolution. Установите его в соответствии со спецификациями шагового двигателя.

В разделе setup() кода все контакты управления двигателем объявлены как цифровой выход.

В цикле loop() мы медленно вращаем двигатель по часовой стрелке, а затем быстро вращаем его против часовой стрелки с интервалом в секунду.

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

Скорость двигателя определяется частотой импульсов, которые мы посылаем на вывод STEP. Чем чаще импульсы, тем быстрее вращается двигатель. Импульсы — это не что иное, как установка высокого уровня, некоторое ожидание, затем установка низкого уровня и снова ожидание. Изменяя задержку между двумя импульсами, вы изменяете частоту этих импульсов и, следовательно, скорость двигателя.

Скетч Arduino — использование библиотеки AccelStepper

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

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

Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.

Установка библиотеки

Чтобы установить библиотеку, перейдите в Эскиз> Include Library> Manage Libraries… Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Отфильтруйте результаты поиска, набрав «Accelstepper». Щелкните первую запись и выберите «Установить».

Как подключить шаговый двигатель nema 17. Смотреть фото Как подключить шаговый двигатель nema 17. Смотреть картинку Как подключить шаговый двигатель nema 17. Картинка про Как подключить шаговый двигатель nema 17. Фото Как подключить шаговый двигатель nema 17

Скетч Arduino

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

Пояснение к скетчу:

Мы начинаем с подключения недавно установленной библиотеки AccelStepper.

Определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Устанавливаем motorInterfaceType значение 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).

Затем мы создаем экземпляр библиотеки с именем myStepper.

В функции setup() мы сначала устанавливаем максимальную скорость двигателя 1000. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя.

Затем мы устанавливаем обычную скорость 200 и количество шагов, например, 200 (поскольку NEMA 17 совершает 200 шагов за оборот).

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

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

Источник

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

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