Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Оценка 4.9
Лекции
docx
информатика
11 кл +1
20.10.2018
Шаговые двигатели — основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель.
Шаговики применяют там, где требуется очень точно дозировать перемещение актуатора. Самый очевидный пример — робот манипулятор. Чтоб механическая рука коснулась рабочим инструментом нужной точки, необходимо чтобы каждый из узлов повернулся на строго заданный угол. Погрешность в доли градуса в основании руки, приведет к огромной погрешности на эффекторе.
Другим известным примером может служить ЧПУ станок. Взять
7.3.3.1 Arduino Uno R3 - шаговый двигатель 28BYJ-48 и драйвер ULN2003.docx
Ардуино: шаговый двигатель 28BYJ48 и драйвер ULN2003
Шаговые двигатели — основа точной робототехники. В отличие от двигателей
постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений,
которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно
на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового
двигателя является серводвигатель.
Шаговики применяют там, где требуется очень точно дозировать перемещение актуатора.
Самый очевидный пример — робот манипулятор. Чтоб механическая рука коснулась
рабочим инструментом нужной точки, необходимо чтобы каждый из узлов повернулся на
строго заданный угол. Погрешность в доли градуса в основании руки, приведет к огромной
погрешности на эффекторе.
Другим известным примером может служить ЧПУ станок. Взять тот же 3Dпринтер.
Для точного перемещения печатающей головки применяют именно шаговые двигатели. В
старых дисководах шаговики использовались для перемещения магнитной головки. А в
современных фотоаппаратах микроминиатюрные шаговые двигатели перемещают линзы.
В этом уроке мы с помощью контроллера Ардуино Уно запустим популярный в
среде начинающих робототехников шаговый двигатель 28BYj48. Этот миниатюрный
шаговик имеет встроенный редуктор, который позволяет совершать очень точные
перемещения выходного вала.
Так, в 4шаговом режиме двигатель совершает 2048 шагов за один оборот. В 8
шаговом — 4096. Напряжение питания — 5 Вольт. Потребляемый ток — 160мА. А значит,
для эксперимента нам будет достаточно штатного питания от USB. В качестве драйвера для двигателя используем микросхему ULN2003,
которую часто продают в паре с 28BYj48. Вот так выглядит плата драйвера:
На плате есть 4 входа для микроконтроллера: IN1..IN4. Пять выходов на двигатель,
и два контакта питания. Также есть перемычка, разрывающая цепь питания двигателя.
1. Подключение
Как правило, кабель двигателя 28BYj48 уже имеет разъем с ключом,
который вставляется в плату только в правильном положении. В противном случае, при
подключении необходимо следовать цветовой схеме (см. рисунок). Контакты IN1..IN4
можно подключить к любым цифровым выходам Ардуино Уно.
И «детская» схема подключения 2. Программа: вариант №1
Что нужно сделать, чтобы шаговый двигатель сделал один оборот? Нужно подавать
напряжение на его обмотки в строго определенной последовательности. Мы реализуем
одну из нескольких схем коммутации, называемую полушаговой. Для этого, обратим
внимание на таблицу коммутации:
ПОЛУШАГОВАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ
ШАГ
0
1
2
3
4
5
6
7
A
1
0
0
0
0
0
1
1
B
1
1
1
0
0
0
0
0
A\
B\
0
0
1
1
1
0
0
0
0
0
0
0
1
1
1
0
В этой таблице, колонка A соответствует катушке, управляемой сигналом
IN3. Колонка B — IN4. A\ и B\ — управляются через IN1 и IN2, соответственно. Получается такая вот незамысловатая программа. Переменная dl в ней — это время,
между соседними коммутациями.
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
const int dl = 5;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
digitalWrite( in1, LOW );
digitalWrite( in2, LOW );
digitalWrite( in3, HIGH );
digitalWrite( in4, HIGH );
delay(dl);
digitalWrite( in1, LOW );
digitalWrite( in2, LOW );
digitalWrite( in3, HIGH );
digitalWrite( in4, LOW );
delay(dl);
digitalWrite( in1, LOW );
digitalWrite( in2, HIGH );
digitalWrite( in3, HIGH );
digitalWrite( in4, LOW );
delay(dl);
digitalWrite( in1, LOW );
digitalWrite( in2, HIGH );
digitalWrite( in3, LOW );
digitalWrite( in4, LOW );
delay(dl);
digitalWrite( in1, HIGH );
digitalWrite( in2, HIGH );
digitalWrite( in3, LOW );
digitalWrite( in4, LOW );
delay(dl);
digitalWrite( in1, HIGH ); digitalWrite( in2, LOW );
digitalWrite( in3, LOW );
digitalWrite( in4, LOW );
delay(dl);
digitalWrite( in1, HIGH );
digitalWrite( in2, LOW );
digitalWrite( in3, LOW );
digitalWrite( in4, HIGH );
delay(dl);
digitalWrite( in1, LOW );
digitalWrite( in2, LOW );
digitalWrite( in3, LOW );
digitalWrite( in4, HIGH );
delay(dl);
}
Чтобы заставить двигатель двигаться быстрее или медленнее, необходимо будет
изменить переменную dl. Увеличиваем паузу между коммутациями — двигатель вращается
медленнее. Уменьшаем паузу — крутится быстрее.
2. Стандартная библиотека: вариант №2
Для управления шаговыми двигателями в Arduino IDE есть стандартная библиотека,
которая осуществляет только полношаговый режим коммутации.
#include
const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;
const int stepsPerRevolution = 32; // шагов за один оборот
Stepper myStepper(stepsPerRevolution, IN1, IN2, IN3, IN4);
void setup() {
myStepper.setSpeed(50); // скорость 5 об/минуту
}
void loop() {
myStepper.step(stepsPerRevolution); // шаг в одном направлении
delay(50);
Serial.println("counterclockwise");
myStepper.step(stepsPerRevolution); // шаг в обратную сторону
delay(50); }
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.