Шаговые двигатели – это разновидность двигателей постоянного тока, в которых перемещение ротора происходит небольшими дискретными шагами. В настоящее время шаговые двигатели находят очень широкое применение – начиная от камер наблюдения и заканчивая сложными роботами и механизмами.
Рассматриваемый в данной статье шаговый двигатель NEMA 17 имеет шаг величиной 1.8°, что означает что он совершает 200 шагов за один оборот 360°. Изменяя подаваемое на шаговый двигатель напряжение мы легко можем управлять скоростью его вращения. Шаговый двигатель может функционировать в различных режимах: полного шага, половины шага, 1/4 шага. Чтобы лучше понять материал данной статьи целесообразно посмотреть статью об управлении шаговым двигателем 28-BYJ48 с помощью Arduino и потенциометра. Однако шаговый двигатель 28-BYJ48 имеет значительно меньший крутящий момент, чем более мощные двигатели такие как, например, NEMA 14, NEMA17.
В данной статье мы рассмотрим управление шаговым двигателем NEMA 17 с помощью платы Arduino и драйвера двигателя DRV8825. Для управления вращением шагового двигателя мы будем использовать потенциометр. Также на нашем сайте вы можете посмотреть статью об управлении шаговым двигателем NEMA 17 с помощью Arduino и драйвера A4988.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Шаговый двигатель NEMA 17 (купить на AliExpress).
- DRV8825 Stepper Driver Module (модуль драйвера шагового двигателя) (купить на AliExpress).
- Конденсатор 47 мкФ (купить на AliExpress).
- Потенциометр (купить на AliExpress).
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Шаговый двигатель NEMA17
Принцип действия шагового двигателя Nema17 аналогичен работе других шаговых двигателей. Более подробно о принципах работы шаговых двигателей можно прочитать в статье про подключение шагового двигателя к микроконтроллеру AVR.
Шаговый двигатель NEMA 17 имеет плиту размером 1.7 x 1.7 дюйма и он имеет больший крутящий момент по сравнению с другими аналогичными шаговыми двигателями меньшего размера, например, NEMA 14. Данный двигатель имеет 6 подводящих проводов и работает от напряжения 12 В. Он может работать и от напряжения меньшей величины, однако при этом соответствующим образом будет уменьшаться и его крутящий момент.
При каждом шаге ось двигателя NEMA17 поворачивается на угол, равный 1.8 градуса. Схема расположения подводящих проводов двигателя NEMA17 представлена на следующем рисунке.
Как вы можете видеть из представленного рисунка, шаговый двигатель 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
- рабочее напряжение: 12V DC (12 В постоянного тока);
- угол за один шаг (Step Angle): 1.8 градуса;
- 200 шагов за один полный оборот;
- число фаз: 4;
- длина двигателя: 1.54 дюйма;
- диапазон рабочих температур: от -10 до 40 °C;
- удерживающий крутящий момент: 22.2 oz-in.
Также на нашем сайте вы можете посмотреть все проекты, в которых были использованы шаговые двигатели.
DRV8825 – модуль драйвера шагового двигателя Nema 17
Модуль драйвера шагового двигателя управляет работой шагового двигателя, подавая на него различные фазы питания в необходимые моменты времени.
DRV8825 представляет собой модуль драйвера двигателя, похожий на модуль A4988. Он используется для управления биполярными (двухполюсными) шаговыми двигателями. Модуль DRV8825 имеет встроенный транслятор (преобразователь), что позволяет ему управлять и скоростью, и направлением вращения шаговых двигателей таких как NEMA 17 с использованием только двух контактов - STEP и DIR. Контакт STEP используется для управления шагами, а контакт DIR – для управления направлением вращения.
Драйвер двигателя DRV8825 может управлять работой шагового двигателя в 6 различных режимах: полного шага, половины шага, четверти шага, 1/8 шага, 1/16 шага и 1/32 шага. Вы можете изменить разрешающую способность шага используя контакты для управления микро шагами (M0, M1 и M2). Устанавливая соответствующие логические уровни на этих контактах мы можем устанавливать одно из шести разрешений шага. Таблица значений данных контактов для установки различных разрешений шага выглядит следующим образом:
Технические характеристики модуль драйвера шагового двигателя DRV8825:
- максимальное рабочее напряжение: 45 V;
- минимальное рабочее напряжение: 8.2 V;
- максимальный ток на одну фазу: 2.5 A;
- размеры печатной платы модуля: 15 mm x 20 mm.
Особенности модуля:
- шесть разрешений шага: полный шаг, ½ шага, ¼ шага, 1/8 шага, 1/16 шага и 1/32 шага;
- регулируемый с помощью потенциометра выходной ток;
- режим автоматического обнаружения уменьшения тока;
- схема автоматического отключения при перегреве;
- блокировка при пониженном напряжении;
- автоматическое отключение при превышении уровня тока.
Различия между драйверами двигателя DRV8825 и A4988
Оба этих драйвера двигателя предназначены для управления шаговым двигателем Nema 17, имеют похожую распиновку и области применения, но они отличаются в количестве микрошагов, рабочем напряжении и т.д. Ниже приведены следующие ключевые отличия этих модулей драйвера двигателя:
- модуль DRV8825 поддерживает 6 режимов шага, а модуль A4988 – только 5. Большее число этих режимов означает более равномерное и тихое функционирование шагового двигателя;
- минимальная длительность шага для DRV8825 составляет 1.9 мкс, а для A4988 – 1 мкс;
- без дополнительного охлаждения DRV8825 обеспечивает немного больший ток чем A4988;
- местоположение потенциометра, регулирующего лимит тока, в обоих модулях различно;
- DRV8825 может быть использован при более высоком напряжении питания;
- на контакте спящего режима (SLEEP pin) в DRV8825 по умолчанию не установлен режим с подтягивающим резистором как это сделано в A4988;
- вместо контакта напряжения питания DRV8825 имеет выходной контакт.
Схема проекта
Схема управления шаговым двигателем NEMA 17 с помощью Arduino и драйвера DRV8825 представлена на следующем рисунке.
Как видно из представленной схемы, шаговый двигатель запитывается от напряжения 12V, а модуль DRV8825 запитывается от платы Arduino. Контакты RST и SLEEP модуля подключены к контакту 5V платы Arduino чтобы модуль драйвера был готов к работе/доступен (enabled). Потенциометр подключен к контакту A0 платы Arduino – он используется для управления направлением вращения двигателя. Если вы будете поворачивать потенциометр по часовой стрелке, то и шаговый двигатель будет вращаться по часовой стрелке, а если вы будете поворачивать потенциометр против часовой стрелки, то и шаговый двигатель будет вращаться против часовой стрелки. Конденсатор 47 мкФ используется для защиты платы от выбросов напряжения. Контакты M0, M1 и M2 модуля драйвера двигателя оставлены в свободном состоянии, что означает что драйвер двигателя будет функционировать в режиме полного шага.
Внешний вид собранной конструкции проекта показан на следующем рисунке.
Таблица соединений платы Arduino, шагового двигателя Nema 17 и модуля драйвера двигателя DRV8825 выглядит следующим образом.
Контакт DRV8825 | Соединение |
VMOT | +ve Of Battery |
GND | -ve of Battery |
RST | 5V of Arduino |
SLP | 5V of Arduino |
GND | GND of Arduino |
STP | Pin 3 of Arduino |
DIR | Pin 2 of Arduino |
B2, B1, A1, A2 | шаговый двигатель |
Соблюдайте полярность подключаемого источника питания.
Ограничение тока
Перед использованием двигателя установите с помощью мультиметра предел ограничения тока для модуля DRV8825 равный 350mA. Для этого необходимо измерить ток между двумя точками GND и потенциометром и отрегулировать его до нужного значения.
Объяснение программы для Arduino
Полный код программы и видео с демонстрацией работы схемы приведены в конце статьи, здесь же мы кратко рассмотрим основные фрагменты кода.
Первым делом скачайте библиотеку для управления шаговым двигателем по следующей ссылке и добавьте ее в Arduino IDE. После этого подключите заголовочный файл этой библиотеки в программе и укажите число шагов для шагового двигателя NEMA 17 – оно равно 200.
1 2 |
#include <Stepper.h> #define STEPS 200 |
После этого укажем в программе контакты Arduino, к которым подключен модуль драйвера двигателя и определим тип интерфейса для двигателя как Type1 поскольку шаговый двигатель подключен к плате Arduino с помощью модуля драйвера двигателя.
1 2 |
Stepper stepper(STEPS, 2, 3); #define motorInterfaceType 1 |
Далее установим скорость для шагового двигателя с помощью функции stepper.setSpeed. Максимальная скорость двигателя NEMA 17 составляет 4688 RPM (число оборотов в минуту), но если его крутить со скоростью более 1000 RPM, то у него значительно падает крутящий момент.
1 2 |
void setup() { stepper.setSpeed(800); |
После этого, в основной функции loop мы будем считывать значения с потенциометра, подключенного к контакту A0. В этой функции мы будем использовать две переменные – potVal и Pval. Если текущее значение (potVal) больше его предыдущего значения (Pval), то мы будем вращать шаговый двигатель на 10 шагов по часовой стрелке, а если меньше - то мы будем вращать шаговый двигатель на 10 шагов против часовой стрелки.
1 2 3 4 5 6 |
potVal = map(analogRead(A0),0,1024,0,500); if (potVal>Pval) stepper.step(10); if (potVal<Pval) stepper.step(-10); Pval = potVal; |
После сборки аппаратной части проекта и загрузки кода программы в плату Arduino вы сможете управлять направлением вращения шагового двигателя Nema17 с помощью потенциометра. Более подробно этот процесс вы можете посмотреть на видео, приведенном в конце статьи.
Исходный код программы (скетча)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <Stepper.h> #define STEPS 200 //#define dirPin 2 //#define stepPin 3 // Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver: Stepper stepper(STEPS, 2, 3); #define motorInterfaceType 1 int Pval = 0; int potVal = 0; void setup() { // Set the maximum speed in steps per second: stepper.setSpeed(800); // pinMode(stepPin, OUTPUT); // pinMode(dirPin, OUTPUT); } void loop() { potVal = map(analogRead(A0),0,1024,0,500); if (potVal>Pval) stepper.step(10); if (potVal<Pval) stepper.step(-10); Pval = potVal; } |
Ограничение тока
Перед использованием двигателя установите с помощью мультиметра предел ограничения тока для модуля DRV8825 равный 350mA. Для этого необходимо измерить ток между двумя точками GND и потенциометром и отрегулировать его до нужного значения.
между GND и потенциометром ты закоротишь его просто
надо 350mV
Из даташита на модуль:
The DRV8825 supports such active current limiting, and the trimmer potentiometer on the board
can be used to set the current limit. You will typically want to set the driver’s current limit to be at or below the current rating of your stepper motor. One way to set the current limit is to put the driver into full-step mode and to measure the current running through a single motor coil without clocking the STEP input. The measured current will be 0.7 times the current limit (since both coils are always on and limited to approximately 70% of the current limit setting in full-step mode).
Another way to set the current limit is to measure the voltage on the “ref” pin and to calculate the
resulting current limit (the current sense resistors are 0.100Ω). The ref pin voltage is accessible on a via that is circled on the bottom silkscreen of the circuit board. The current limit relates to the reference voltage as follows:
Current Limit = VREF × 2
So, for example, if you have a stepper motor rated for 1 A, you can set the current limit to 1 A by
setting the reference voltage to 0.5 V.
Можно пойти по этому пути если уж точно не хотите накосячить