Драйвер A4988 к Arduino

25-02-2020, 16:48 1 комментариев
Подключение A4988 к Ардуино понадобится во многих проектах, которые «гуляют» по Интернету. Данный драйвер активно используется при создании своими руками станков ЧПУ, факсов, принтеров для 3D-печати, копировальной техники и других подобных устройств с управлением шаговыми двигателями (и высокой точностью перемещения). Он популярен и известен многим пользователям, кроме того бюджетен по стоимости (продается на Али) и достаточно функционален.

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

Технические параметры модуля таковы:
  • напряжение питания: 8-35 В;
  • 5 режимов микрошага: полный, полшага, четверть, 1/8, 1/16;
  • напряжение логики: 3-5.5 В;
  • имеется защита от перегрева и короткого замыкания;
  • габариты: 20 мм х 15 мм х 10 мм.
Распиновка (иными словами назначение контактов – их тут 16) выглядит следующим образом:

где ENABLE – включение (0) / выключение (5 В),
MS1, MS2, MS3 – выбор микрошага,
RESET – сброс данных,
DIR – направление вращения,
GND – общий.

Подключаем драйвер A4988 к Arduino Uno – обратите внимание на принципиальную схему:
Прописываем скетч для контроля движения шагового двигателя (ничего не меняем, пишем как есть):
// пины для подключения контактов STEP, DIR
#define PIN_STEP 3
#define PIN_DIR 2

// количество шагов на 1 оборот
#define STEP_ROUND 200

// скорость двигателя
#define SPEED 10

void setup() {
// режим для STEP и DIR как OUTPUT
pinMode(PIN_STEP, OUTPUT);
pinMode(PIN_DIR, OUTPUT);
// начальные значения
digitalWrite(PIN_STEP, 1);
digitalWrite(PIN_DIR, 0);
}

void loop() {
// направление вращения
digitalWrite(PIN_DIR, HIGH);
// сделать 1 оборот
for(int j = 0; j < STEP_ROUND; j++) {
digitalWrite(PIN_STEP, HIGH);
delay(SPEED);
digitalWrite(PIN_STEP, LOW);
delay(SPEED);
}
// изменить направление вращения
digitalWrite(PIN_DIR, HIGH);
// сделать 1 оборот
for(int j = 0; j < STEP_ROUND; j++) {
digitalWrite(PIN_STEP, HIGH);
delay(SPEED);
digitalWrite(PIN_STEP, LOW);
delay(SPEED);
}
}
Если что-либо не функционирует и двигатель не работает, рекомендуем проверить еще раз корректность подключения модуля, правильность прописанных кодов, а также следует на всякий случай протестировать мощность блока питания.
Чтобы избавиться от вибрации двигателя, советуем использовать библиотеку AcclStepper (ссылки ищем в сети).

Важно! Не забывайте - подключение ∕ отключение шагового двигателя при включенном приводе приведет к его поломке.
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

В этой статье мы хотим продолжить тему подключения шаговых двигателей к Ардуино – на очереди рассказ о ШД Nema 17. Почему именно он? Эта модель считается...

Тема нашей сегодняшней статьи - драйвер для шаговых двигателей TB6560 и его подключение к Ардуино. Мы уже говорили с вами о практичности и основных...

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

Подключение Motor Shield к Arduino у многих любителей электроники вызывает определенные затруднения. Тем не менее этот драйвер двигателей очень популярен и...

DRV8825 - один из самых популярных контроллеров биполярного шагового двигателя. Сегодня мы рассмотрим его базовые параметры и познакомимся со схемой...

1 комментария
  1. GoGo
    12 марта 2024 15:04 GoGo

    Вот так второй части вращения надо исправить:

    digitalWrite(PIN_DIR, LOW);

    replyОтветить
Оставить комментарий