Драйвер шагового двигателя A4988. Подключения к Arduino и пример использования
Обзор драйвера A4988
Шаговые двигатели представляют собой электромеханические устройства, задачей которых является преобразование электрических импульсов в перемещение вала двигателя на определенный угол. Достоинствами шаговых двигателей по сравнению с простыми являются:
- Высокая точность позиционирования и повторяемости — качественные ШД имеют точность не хуже 2,5 % от величины шага, при этом данная ошибка не накапливается при последующих шагах;
- Шаговый двигатель может быстро стартовать, останавливаться и выполнять реверс;
- Четкая взаимосвязь угла поворота ротора от количества входных импульсов (в штатных режимах работы) позволяет выполнять позиционирование без применения обратной связи;
- Шаговые двигатели обеспечивают получение сверхнизких скоростей вращения вала без использования редуктора;
- Шаговые двигатели работают в широком диапазоне скоростей, поскольку. скорость напрямую зависит от количества входных импульсов.
Шаговые двигатели применяются там, где требуется высокая точность перемещений. Примеры использования – принтеры, факсы и копировальные машины, станки с ЧПУ, 3D-принтеры. Для управления шаговыми двигателями используют специальные устройства – драйверы шаговых двигателей. Популярный драйвер шагового двигателя А4988 (рис. 1) работает от напряжения 8 - 35 В и может обеспечить ток до 1 А на фазу без радиатора (и до 2 A с радиатором). Модуль A4988 имеет защиту от перегрузки и перегрева. Одним из параметров шаговых двигателей является количество шагов на один оборот 360°. Например, для шаговых двигателей Nema17 это 200 шагов на оборот, т.е 1 шаг равен 1.8°. Драйвер A4988 позволяет увеличить это значение за счёт возможности управления промежуточными шагами и имеет пять режимов микрошага (1(полный), 1/2, 1/4, 1/8 и 1/16).
Технические характеристики A4988
- напряжения питания: 8-35 В
- режим микрошага: 1, 1/2, 1/4, 1/8, 1/16
- напряжение логики: 3-5.5 В
- защита от перегрева
- максимальный ток на фазу: - 1 А без радиатора; - 2 А с радиатором
- размер: 20 х 15 мм
- без радиатора: 2 г
Назначение контактов драйвера A4988
- ENABLE – включение/выключение драйвера
- MS1, MS2, MS3 – контакты для установки микрошага
- RESET - cброс микросхемы
- STEP - генерация импульсов для движения двигателей (каждый импульс – шаг), можно регулировать скорость двигателя
- DIR – установка направление вращения
- VMOT – питание для двигателя (8 – 35 В)
- GND – общий
- 2B, 2A, 1A, 1B – для подключения обмоток двигателя
- VDD – питание микросхемы (3.5 –5В)
Выводы драйвера A4988
Значение микрошага устанавливается комбинацией сигналов на входах MS1, MS2, и MS3. Есть пять вариантов дробления шага
MS1 | MS1 | MS1 | Дробление шага |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 1/2 |
0 | 1 | 0 | 1/4 |
1 | 1 | 0 | 1/8 |
1 | 1 | 1 | 1/16 |
Для работы в режиме микрошага необходим слабый ток. На модуле A4988 поддерживает тока можно ограничить находящимся на плате потенциометром. Драйвер очень чувствителен к скачкам напряжения по питанию двигателя, поэтому производитель рекомендует устанавливать электролитический конденсатор большой емкости по питанию VMOT для сглаживания скачков.
Внимание ! - Подключение или отключение шагового двигателя при включённом драйвере может привести выходу двигателя из строя!!!
Подключение драйвера к Arduino
Схема подключения A4988 к плате Arduino
Схема подключения драйвера A4988 для управления биполярным шаговым двигателем показана на рисунке выше. Вывод RESET подключен к выводу SLEEP, чтобы на нем был высокий уровень HIGH. Загрузим на плату Arduino скетч из примера №1, который управляет движением биполярного шагового двигателя с постоянной скоростью на один оборот в одну сторону, затем в другую, и далее в цикле.
Пример №1
// пины для подключения контактов 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);
}
}
Если после загрузки скетча не происходит движения двигателя, проверьте правильность подключения обмоток к выводам драйвера A4988. К выводам 2B и 2A (1A и 1B) подключаются провода двигателя, которые "прозваниваются" тестером.
Второй пример использования
В качестве еще одного примера использования рассмотрим управление дроблением шага и направлением вращения шагового двигателя с платы Arduino. для этого нам потребуются следующие компоненты:
- Плата Arduino Uno -1;
- Драйвер A4988 - 1;
- Шаговый двигатель NEMA17 - 1;
- Потенциометр 10 кОм - 1;
- Кнопка - 1;
- Переключатель 2-х позиционный - 1;
- Резистор 10 кОм – 3;
- Провода MF - 20
Соединение деталей по схеме на рисунке ниже
Схема подключения для управления скоростью и направлением движения
Приступим к написанию скетча. Нажатие на кнопку включает/выключает двигатель, подавая сигнал LOW/HIGH на вход ENABLE драйвера A4988. С помощью переключателя выбираем направление вращения двигателя (сигнал с переключателя подается напрямую на вход DIR драйвера A4988). C помощью потенциометра мы выбираем один из режимов микрошага. Содержимое скетча представлено в примере кода №2. двигателя с постоянной скоростью на один оборот в одну сторону, затем в другую, и далее в цикле.
Пример кода №2
/// пины для подключения контактов STEP, DIR
const int STEP 3
int DIR 2
// для регулировки скорости - пин потенциометра
#define POT A0
// для кнопки
#define BUTTON 9
// для включения/выключения
#define EN 8
// количество шагов на 1 оборот
#define ROUND 200
// скорость двигателя
#define SPEED 10
// массив пинов для MS1,MS2,MS3
int pins_steps[]={7,6,5};
int steps[5][3]={
{0,0,0}, // 1
{1,0,0}, // 1/2
{0,1,0}, // 1/4
{1,1,0}, // 1/8
{1,1,1} // 1/16
};
// для кнопки
int prevB=0;
int tekB=0;
boolean movement=false;
void setup() {
// режим для выводов STEP и DIR как
pinModeSTEP, OUTPUT);
pinMode(DIR, OUTPUT);
// начальные значения
digitalWrite(STEP, 1);
digitalWrite(DIR, 0);
// режим для enable
pinMode(EN, OUTPUT);
// не разрешать
digitalWrite(EN, 1);
// для MS1,MS2,MS3
for(int i=0;i<3;i++) {
pinMode(pins_steps[i], OUTPUT);
}
}
void loop() {
// получить режим микрошага
digitalWrite(DIR, 1);
int mode=map(analogRead(POT),0,1024,0,5);
// установить
for(int i=0;i<3;i++) {
digitalWrite(pins_steps[i], steps[mode][i]);
}
// сделать 1 оборот
if(movement==true) {
digitalWrite(STEP, 1);
delay(SPEED);
digitalWrite(STEP, 0);
delay(SPEED);
}
// проверка нажатия кнопки
tekB = debounce(prevB, BUTTON);
if (prevB == 0 && tekB == 1) {
movement=!movement;
digitalWrite(EN,!movement);
}
prevB = tekB;
}
// проверка на дребезг
int debounce(int prev,int pin) {
int tek = digitalRead(pin);
if (prev != tek) {
delay(5);
tek = digitalRead(pin);
return tek;
}
}
Рекомендуемые товары
StepStick A4988 драйвер шагового двигателя с радиатором ( Красный)
StepStick драйвер шаговых двигателей, построенный на чипе Allegro’s A4988 DMOS.Используется со..
900 ₸
Плата расширения для драйвера A4988/DRV8825
Характеристики Для драйверы ШД: A4988, DRV8825 и TMC 2100;Подключение к источнику питания: 5В и 12В..
1 200 ₸
Шаговый двигатель Nema 17
Модель: 42BYGH40-1700AУгол шага : 1.8Размеры: 42мм * 42мм * 34ммРабочее напряжение DC(V): 12-24 ..
6 000 ₸