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

Search code, repositories, users, issues, pull requests...

Код для Arduino управления драйвером A4988 (DRV8825)с использованием библиотеки AccelStepper.

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

AccelStepper library поддерживает.

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

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

Чтобы установить библиотеку, перейдите в «Скетч» -> «Подключить библиотеку» -> «Управление» библиотеками. Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

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

Код Arduino с использованием библиотеки AccelStepper.

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

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>
// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1
// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Устанавливаем максимальную скорость, коэффициент ускорения,
  // начальную скорость и целевую позицию
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(50);
  myStepper.setSpeed(200);
  myStepper.moveTo(100);
}
void loop() {
  // Изменение направления вращения, когда двигатель достигнет заданного положения
  if (myStepper.distanceToGo() == 0) 
  {
    myStepper.moveTo(-myStepper.currentPosition());
  }
  // Передвинуть на 1 шаг
  myStepper.run();
}

Пояснение к коду:

Подключаем библиотеку AccelStepper.

#include <AccelStepper.h>

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

const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1

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

// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

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

void setup() {
    myStepper.setMaxSpeed(1000);
    myStepper.setAcceleration(50);
    myStepper.setSpeed(200);
    myStepper.moveTo(100);
}

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

void loop() {
    if (myStepper.distanceToGo() == 0) 
        myStepper.moveTo(-myStepper.currentPosition());
    myStepper.run();
}

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

Понравился Урок 2. Как подключить A4988 (DRV8825) к Arduino? Скетч, библиотека? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

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

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 1021 Скачать
Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 949 Скачать
библиотека AccelStepper.zip 86 Kb 998 Скачать

Wiring a Bipolar Stepper Motor to the L298N Module and Arduino

Let’s start by connecting the power supply to the module. In our experiment we are using a NEMA 17 bipolar stepper rated at 12V. Therefore, we will connect the external 12V power supply to the VS terminal.

Next, we need to supply 5V to the logic circuitry of the L298N. We will be using the on-board 5V regulator to derive 5V from the motor power supply, so leave the 5V-EN jumper in place.

You also need to keep both the ENA and ENB jumpers in place so that the motor is always enabled.

Now, connect the input pins (IN1, IN2, IN3 and IN4) of the L298N module to the four Arduino digital output pins (8, 9, 10 and 11).

Finally connect one phase of the motor to terminal A (OUT1 and OUT2) and the other phase to terminal B (OUT3 and OUT4). Polarity doesn’t matter.

The following image shows how to wire everything up.

Wiring NEMA 17 Stepper Motor with L298N & Arduino

Полезные советы по использованию шагового мотора Arduino без драйвера

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

Вот несколько полезных советов по использованию шагового мотора Arduino без драйвера:

1. Проверьте технические характеристики вашего мотора

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

2. Используйте транзисторы для управления шаговым мотором

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

3. Используйте PWM для управления скоростью вращения мотора

Если вам нужно управлять скоростью вращения шагового мотора, вы можете использовать функцию ШИМ (Широтно-импульсная модуляция) Arduino. ШИМ позволяет создавать переменное напряжение или ток, регулируя длительность и частоту импульсов. Подключите вывод мотора, управляющий его скоростью, к выходу ШИМ Arduino и используйте соответствующую функцию ШИМ для установки желаемой скорости вращения мотора.

4. Задайте правильное направление вращения мотора

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

5. Опережайте мотор и управляйте питанием

При использовании шагового мотора без драйвера Arduino, вы должны помнить о его особенностях

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

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

6. Варьируйте микрошаги для плавного движения

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

7. Экспериментируйте и учитесть из ошибок

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

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

Почему использование шагового мотора без драйвера выгодно?

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

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

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

  2. Упрощение схемы: Без драйвера необходимость в таких компонентах, как транзисторы, резисторы, конденсаторы и другие элементы, отпадает. Это сокращает количество деталей на схеме и упрощает процесс подключения мотора к микроконтроллеру Arduino или другому устройству.

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

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

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

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

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

Внешний вид шагового двигателя 28-BYJ48 (купить на AliExpress) представлен на следующем рисунке:

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

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


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

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

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

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

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

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

Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25)

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

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

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

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

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

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

Описание библиотеки AccelStepper

Давайте мы перейдём к интересной части нашей статьи

Это описание двух библиотек для работы с двигателями
myStepper

и
AccelStepper.

Больше буду обращать внимание на библиотеку
AccelStepper,

так как у нее больше функции, а именно:

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

Определение конфигурации моторов

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

Биполярный ШД, управляемый Н-мостом.

Униполярный мотор, управляемый четырмя транзисторами.

Максимальная скорость двигателя. Скорость заведомо низкая. Сначала моторчик ускоряется до этой скорости, затем снижает её

Ускорение шаговика, в шагах в секунду.

Управление положением

Переместиться в абсолютно указанное положение. Само движение запускается функцией run ().

Переместиться в относительно указанное положение. Само движение запускается функцией run (). Значение distance может быть больше или меньше нуля.

Вернуть текущее абсолютное положение.

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

Начать движение и подождать когда двигатель достигнет указанной точки. Функция не осуществляет возврата пока он не остановится.

Управление скоростью

Установить скорость в шагах за секунду. Сам процесс запускается функцией runSpeed ().

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Что такое шаговый двигатель? Название говорит само за себя: двигатель, который может не просто “крутиться”, а крутиться размеренно, управляемо… шагами! То есть, мы сами в программе “говорим” ему, на какой угол нужно повернуться. Для чего это может понадобиться? Например, вы хотите собрать свой станок с ЧПУ, 3d принтер… или любое другое устройство, которое нуждается в точном позиционировании движущихся частей. Подробнее о шаговых двигателях можно почитать в википедии .

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

В этой статье мы будем использовать:

Итак, задача: подключить к arduino uno шаговый двигатель и покрутить им.

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

Подключаем двигатель к драйверу, а драйвер, в свою очередь к плате arduino к цифровым пинам 2, 3, 4, 5 и к питанию (5В) как показано на фото.

Настоятельно рекомендую в своих проектах использовать отдельное питание для двигателя
(от другого блока питания, а не от arduino), потому как если дать серьезную нагрузку на двигатель – на плате arduino может перегреться микросхема, отвечающая за питание – что не есть хорошо!

Чтобы управлять двигателем, воспользуемся библиотекой Stepper, которую не нужно ни от куда качать – она входит в поставку Arduino IDE – среду разработки, в которой мы пишем код для arduino. В качестве параметров передаем количество шагов полного оборота и пины, к которым подключаем двигатель.

Stepper myStepper(2048,2,3,4,5);

Методом setSpeed() можно управлять скоростью, а step() отвечает за перемещение вала на заданное количество шагов (если значение отрицательное – вал крутится в обратную сторону).

Полный код программы:

#include
Stepper myStepper(2048,2,3,4,5);
void setup() {
myStepper.setSpeed(10);
}
void loop() {
myStepper.step(2048);
delay(1000);
myStepper.step(-2048);
delay(1000);
}

Небольшое замечание по драйверу.Плата согласования Arduino и шагового двигателя на основе UNL2003A имеет всего одну перемычку, которая замыкает 3 и 4 выводы. Данная перемычка подаёт питание на светодиоды. Если на шаговый двигатель подаётся питание +5 В (как в нашем случае), то данная перемычка позволяет наблюдать за переключением выводов управления шаговым двигателем. Если для кого-то важен потребляемый ток (например, для увеличения времени работы от батареи) и не нужна индикация, то перемычку можно смело снимать.

Вот и видео того, что получилось.

Удачных экспериментов!

Возможно, вам потребуются файлы:

на 28BYJ-48.

Как подключить шаговый мотор Arduino без драйвера?

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

Для подключения шагового мотора без драйвера вам потребуется:

  • Плата Arduino (например, Arduino Uno)
  • Шаговый мотор
  • Резистор сопротивлением 1k Ом
  • Провода для подключения
  • Электронные компоненты для создания схемы (опционально)

Прежде чем начать подключение, убедитесь, что у вас имеется все необходимое оборудование.

Шаги подключения шагового мотора к Arduino без драйвера:

  1. Подключите один из выводов шагового мотора к пину 8 на плате Arduino.
  2. Подключите другой вывод шагового мотора к пину 9 на плате Arduino.
  3. Подключите резистор к пину 9 и пину GND (земля) на плате Arduino.
  4. Подключите Arduino к компьютеру с помощью USB-кабеля.

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

В этой программе мы используем пины 8 и 9 на плате Arduino для управления шаговым мотором. Мы устанавливаем направление вращения с помощью пина 9, а шаговые импульсы генерируем на пине 8. В функции loop() мы выполняем два цикла вращения мотора, сначала в одну сторону, затем в другую.

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

About the driver

At the heart of the A4988 driver you will find a chip made by Allegro MicroSystems: the A4988 DMOS Microstepping Driver with Translator and Overcurrent Protection. This integrated motor driver makes interfacing with a microcontroller super easy as you only need two pins to control both the speed and the direction of the stepper motor.

The driver has a maximum output capacity of 35 V and ± 2 A which is great for driving small to medium-sized stepper motors like a NEMA 17 bipolar stepper motor.

If you need to control larger stepper motors like NEMA 23, take a look at the TB6600 stepper motor driver. This driver can be used with the same code as the A4988 and has a current rating of 3.5 A.

TB6600 Stepper Motor Driver with Arduino Tutorial

The A4988 driver chip has several safety functions built-in like overcurrent, short circuit, under-voltage lockout, and over-temperature protection. You can find more specifications in the table below.

A4988 Specifications

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? No
Dimensions 15.5 × 20.5 mm (0.6″ × 0.8″)
Cost Check price

For more information you can check out the datasheet here.

A4988 Datasheet

Differences between the A4988 and DRV8825

The DRV8825 is quite similar to the A4988 but there are some key differences:

  • The DRV8825 offers 1/32 microstepping, whereas the A4988 only goes down to 1/16-step. Higher microstepping results in smoother, quieter operation but is not always needed.
  • The current limit potentiometer is at a different location
  • The relation between the reference voltage and the current limit is different.
  • The DRV8825 requires a minimum STEP pulse duration of 1.9µs; the A4988 requires 1µs minimum.
  •  The DRV8825 can be used with a higher voltage motor power supply (45 V vs 35 V). This means it is less susceptible to damage from LC voltage spikes.
  •  The DRV8825 can deliver slightly more current than the A4988 without any additional cooling.

Note that the pinout of the DRV8825 is exactly the same as for the A4988, so it can be used as a drop-in replacement!

A4899 (left) vs DRV8825 (right)

Microstep settings

Stepper motors typically have a step size of 1.8° or 200 steps per revolution, this refers to full steps. A microstepping driver such as the A4988 allows higher resolutions by allowing intermediate step locations. This is achieved by energizing the coils with intermediate current levels.

For instance, driving a motor in quarter-step mode will give the 200-step-per-revolution motor 800 microsteps per revolution by using four different current levels.

A4988 pinout

The resolution (step size) selector pins (MS1, MS2, and MS3) allow you to select one of the five step resolutions according to the table below.

MS1 MS2 MS3 Microstep resolution
Low Low Low Full step
High Low Low 1/2 step
Low High Low 1/4 step
High High Low 1/8 step
High High High 1/16 step

All three inputs have internal 100 kΩ pull-down resistors, so leaving the three microstep selection pins disconnected results in full-step mode.

I often use a CNC-shield or expansion board in combination with these drivers. The expansion board has 3 dip switches to set MS1 – MS3 high or low and on the CNC-shield you can install jumpers. If you are using the driver with a breadboard, you can just use jumper wires to connect the selector pins to 5 V (i.e. make them HIGH).

L298N, Arduino и двигатель постоянного тока

Данный модуль дает возможность управлять одним или двумя двигателями постоянного тока. Для начала, подключите двигатели к пинам A и B на контроллере L298N.

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

После этого подключите источник питания. Плюс – к четвертому пину на L298N, минус (GND) – к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.

Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.

ШИМ-пины обозначены знаком “~” рядом с порядковым номером.

Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).

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

При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.

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

// подключите пины контроллера к цифровым пинам Arduino

// первый двигатель

int enA = 10;

int in1 = 9;

int in2 = 8;

// второй двигатель

int enB = 5;

int in3 = 7;

int in4 = 6;

void setup()

{

// инициализируем все пины для управления двигателями как outputs

pinMode(enA, OUTPUT);

pinMode(enB, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void demoOne()

{

// эта функция обеспечит вращение двигателей в двух направлениях на установленной скорости

// запуск двигателя A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// устанавливаем скорость 200 из доступного диапазона 0~255

analogWrite(enA, 200);

// запуск двигателя B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// устанавливаем скорость 200 из доступного диапазона 0~255

analogWrite(enB, 200);

delay(2000);

// меняем направление вращения двигателей

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(2000);

// выключаем двигатели

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void demoTwo()

{

// эта функция обеспечивает работу двигателей во всем диапазоне возможных скоростей

// обратите внимание, что максимальная скорость определяется самим двигателем и напряжением питания

// ШИМ-значения генерируются функцией analogWrite()

// и зависят от вашей платы управления

// запускают двигатели

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// ускорение от нуля до максимального значения

for (int i = 0; i < 256; i++)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// торможение от максимального значения к минимальному

for (int i = 255; i >= 0; –i)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// теперь отключаем моторы

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void loop()

{

demoOne();

delay(1000);

demoTwo();

delay(1000);

}

Как подключить

Чтобы провести подсоединение шагового прибора к Arduino требуется подготовить:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • Драйвер, можно применять дешевый вариант ULN2003;
  • Шаговый двигатель 28BYJ-48;
  • Провода.

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

Для облегчения процесса часто применяются библиотеки stepper.h и accelstepper.h. Но можно производить вращение вала без библиотек, в этом случае шаговое устройство подсоединяется к микроконтроллеру, а также проводится загрузка подходящего скетча.

Скетч для управления

Ниже указан код скетча, который подходит для подключения:

Пояснительная информация:

  • Порты 8, 9, 10, 11 можно заменить на разные числовые порты;
  • Длительность задерживания выражается в миллисекундах int dl = 5;
  • Показатели продолжительности могут быть изменены.

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

Как работает шаговик?

Для практических задач с точным перемещением объекта обязательно требуется ШД. Это мотор, который перемещает свой вал в зависимости от заданных шагов в программе контроллера. Чаще всего их применяют в станках ЧПУ, робототехнике, манипуляторах, 3D-принтерах.

Мы же с вами рассмотрим конкретный двигатель 28BYj-48 с драйвером управления ULN2003 . Он достаточно дешёвый, прост в сборке и легко писать программу.

В 4-шаговом режиме он может совершать 2048 шагов, в 8-шаговом 4096 шагов. Питание 5 В, ток потребления 160 мА. Передаточное число 1:64 , то есть один шаг он совершит на 5,625 градусов. Крутящий момент составляет 34 мН.м. Средняя скорость 15 об/мин, с помощью программного кода можно ускорить до 35 об/мин, но вы должны понимать, что мы при этом теряем мощность и точность.

Размеры двигателя указаны из первоисточника — даташита производителя Kiatronics.

А вот таким образом он выглядит изнутри:

Для небольших технических проектов — 28BYj-48 идеальный вариант. Его главным преимуществом является дешевизна и простота. Прилагаю спецификацию:

Тип мотора Униполярный шаговый двигатель
Число фаз 4
Рабочее напряжение 5-12 вольт
Частота 100 Гц
Частота под нагрузкой > 600 Гц
Крутящий момент > 34.3 мН*м (120 Гц)
Режим шага рекомендуется полушаговый режим (8-шаговая управляющая сигнальная последовательность)
Угол шага

8-шаговая управляющая сигнальная последовательность — 5.625º/шаг

4-шаговая управляющая сигнальная последовательность — 11.25º/шаг

Передаточное отношение редуктора Производителем заявлено 64:1

Вес 30 г

ШД имеет четыре обмотки, которые запитываются последовательно:

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

1.Шаговый режим — это когда две из четырех обмоток запитываются на каждом шаге. Смотрите карту включения обмоток: Для этого способа используется библиотека my Stepper.h.

Провод Фазы для шагового режима
1 2 3 4
4 оранжевый
3 желтый
2 розовый
1 синий

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

Провод Фазы для полушагового режима
1 2 3 4 5 6 7 8
4 оранжевый
3 желтый
2 розовый
1 синий

Описание драйвера ULN2003

Плата представляет собой силовой модуль, который содержит в себе семь независимых транзисторов Дарлингтона. Каждая пара представляет собой каскад из двух биполярных транзисторов. ULN2003 является неким усилителем с током нагрузки 500 мА и напряжением 50 В. На изображении отображена сама плата и описание выводов к ней.

Понравилась статья? Поделиться с друзьями:
Автоэксперт
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: