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

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

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

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

Чтобы лучше понять материал данной статьи целесообразно посмотреть статью об управлении шаговым двигателем 28-BYJ48 с помощью Arduino и потенциометра. Однако шаговый двигатель 28-BYJ48 имеет значительно меньший крутящий момент, чем более мощные двигатели такие как, например, NEMA 14, NEMA17.

В данной статье мы рассмотрим управление шаговым двигателем NEMA 17 с помощью платы Arduino и драйвера двигателя A4988. Для управления направлением вращения шагового двигателя мы будем использовать потенциометр. Ранее на нашем сайте мы также рассматривали управление шаговым двигателем NEMA 17 с помощью Arduino и драйвера DRV8825.

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

Шаговый двигатель NEMA17

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

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

Шаговый двигатель NEMA 17 имеет плиту размером 1.7 x 1.7 дюйма и он имеет больший крутящий момент по сравнению с другими аналогичными шаговыми двигателями меньшего размера, например, NEMA 14. Данный двигатель имеет 6 подводящих проводов и работает от напряжения 12 В. Он может работать и от напряжения меньшей величины, однако при этом соответствующим образом будет уменьшаться и его крутящий момент.

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

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

Как вы можете видеть из представленного рисунка, шаговый двигатель NEMA17 имеет униполярное расположение 6 проводов. Эти провода подсоединены к двум раздельным обмоткам. Черный, желтый и зеленый провода подключены к первой обмотке, а красный, белый, и синий провода – к другой обмотке. В обычном режиме центральные провода обмоток (черный и белый) оставляют неподключенными.

Число шагов за оборот для двигателя NEMA17

Число шагов за полный оборот (Steps per Revolution) для каждого определенного шагового двигателя рассчитывается с помощью угла, на который поворачивается шаговый двигатель за один шаг (step angle). Для двигателя NEMA17 этот шаг равен 1.8 градуса, соответственно, получаем:

Steps per Revolution = 360/ step angle
360/1.8 = 200 Steps Per Revolution

Технические характеристики двигателя Nema 17

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

Модуль драйвера шагового двигателя A4988

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

Модуль драйвера шагового двигателя A4988 предназначен для управления работой шагового двигателя Nema 17 и другими аналогичными биполярными (двухполюсными) шаговыми двигателями. Этот модуль имеет встроенный транслятор (преобразователь), что позволяет ему управлять и скоростью, и направлением вращения шаговых двигателей, используя для этого небольшое число контактов.

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

Для управления шаговым двигателем Nema 17 нам понадобится всего два контакта модуля A4988 – STEP (для управления шагами) и DIRECTION (для управления направлением вращения двигателя).

Драйвер двигателя A4988 может управлять работой шагового двигателя в 5 различных режимах: полного шага, половины шага, четверти шага, 1/8 шага и 1/16 шага. Вы можете выбрать необходимый вам режим шага используя контакты выбора режима (MS1, MS2 и MS3). На следующем рисунке представлена таблица задействования этих контактов для выбора необходимого режима шага.

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

Технические характеристики драйвера двигателя A4988:

Различия между драйверами двигателя DRV8825 и A4988

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

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

Схема управления шаговым двигателем NEMA 17 с помощью Arduino и драйвера A4988 представлена на следующем рисунке.

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

Поскольку модуль драйвера A4988 имеет встроенный транслятор (преобразователь), поэтому к плате Arduino достаточно подсоединить только его контакты Step и Direction. Контакт Step используется для управления шагами двигателями, а контакт Direction – для управления направлением его вращения. Шаговый двигатель запитывается от источника питания 12V, а модуль A4988 – от платы Arduino. Потенциометр используется для управления направлением вращения двигателя.

Если вы будете поворачивать потенциометр по часовой стрелке, то и шаговый двигатель будет вращаться по часовой стрелке. Если вы будете поворачивать потенциометр против часовой стрелки, то и шаговый двигатель будет вращаться против часовой стрелки. Конденсатор 47 мкФ используется для защиты платы Arduino от выбросов напряжения. Контакты MS1, MS2 и MS3 остаются неподключенными, что означает что драйвер будет функционировать в режиме полного шага.

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

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

Таблица соединений платы Arduino, шагового двигателя Nema 17 и модуля драйвера двигателя A4988 выглядит следующим образом.

Контакт A4988Соединение
VMOT+ve Of Battery
GND-ve of Battery
VDD5V of Arduino
GNDGND of Arduino
STPPin 3 of Arduino
DIRPin 2 of Arduino
1A, 1B, 2A, 2Bшаговый двигатель

Соблюдайте полярность источника питания.

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

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

Первым делом скачайте библиотеку для управления шаговым двигателем по следующей ссылке и добавьте ее в Arduino IDE. После этого подключите заголовочный файл этой библиотеки в программе и укажите число шагов для шагового двигателя NEMA 17 – оно равно 200.

Источник

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

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

Шаговый двигатель 28byj-48 Arduino ► предназначен для перемещения объекта на заданное количество шагов вала. Рассмотрим управление шаговым двигателем от Ардуино

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.

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

Принцип работы шагового двигателя

В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).

Как подключить шаговый двигатель к arduino nano. Смотреть фото Как подключить шаговый двигатель к arduino nano. Смотреть картинку Как подключить шаговый двигатель к arduino nano. Картинка про Как подключить шаговый двигатель к arduino nano. Фото Как подключить шаговый двигатель к arduino nanoФото. Устройство шагового мотора в разрезе

Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.

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

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

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

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

Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.

Как подключить шаговый двигатель к Ардуино

Для этого занятия нам потребуется:

Источник

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

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

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

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

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

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

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

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

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

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

Драйвер шагового двигателя А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 шага

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Потом открываем среду разработки программ для 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, согласно схеме, и зальём код программы.

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

Код программы, которая демонстрирует все пять режимов работы мотора, вращая мотор в одну и другую сторону на 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;
>

Источник

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

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