Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Оценка 4.9

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Оценка 4.9
Образовательные программы
docx
информатика
11 кл +1
22.10.2018
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Шаговые двигатели — основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель. Шаговики применяют там, где требуется очень точно дозировать перемещение актуатора. Самый очевидный пример — робот манипулятор. Чтоб механическая рука коснулась рабочим инструментом нужной точки, необходимо чтобы каждый из узлов повернулся на строго заданный угол. Погрешность в доли градуса в основании руки, приведет к огромной погрешности на эффекторе.
7.3.3.1 Arduino Uno R3 - шаговый двигатель 28BYJ-48 и драйвер ULN2003.docx
Ардуино: шаговый двигатель 28BYJ­48 и драйвер ULN2003 Шаговые двигатели — основа точной робототехники. В отличие от двигателей  постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно  на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового  двигателя является серводвигатель. Шаговики применяют там, где требуется очень точно дозировать перемещение актуатора.  Самый очевидный пример — робот манипулятор. Чтоб механическая рука коснулась  рабочим инструментом нужной точки, необходимо чтобы каждый из узлов повернулся на  строго заданный угол. Погрешность в доли градуса в основании руки, приведет к огромной  погрешности на эффекторе. Другим известным примером может служить ЧПУ станок. Взять тот же 3D­принтер. Для точного перемещения печатающей головки применяют именно шаговые двигатели. В  старых дисководах шаговики использовались для перемещения магнитной головки. А в  современных фотоаппаратах микро­миниатюрные шаговые двигатели перемещают линзы. В этом уроке мы с помощью контроллера Ардуино Уно запустим популярный в  среде начинающих робототехников шаговый двигатель 28BYj­48. Этот миниатюрный  шаговик имеет встроенный редуктор, который позволяет совершать очень точные  перемещения выходного вала. Так, в 4­шаговом режиме двигатель совершает 2048 шагов за один оборот. В 8­ шаговом — 4096. Напряжение питания — 5 Вольт. Потребляемый ток — 160мА. А значит,  для эксперимента нам будет достаточно штатного питания от USB. В качестве драйвера для двигателя используем микросхему ULN2003,  которую часто продают в паре с 28BYj­48. Вот так выглядит плата драйвера: На плате есть 4 входа для микроконтроллера: IN1..IN4. Пять выходов на двигатель,  и два контакта питания. Также есть перемычка, разрывающая цепь питания двигателя. 1. Подключение Как правило, кабель двигателя 28BYj­48 уже имеет разъем с ключом,  который вставляется в плату только в правильном положении. В противном случае, при  подключении необходимо следовать цветовой схеме (см. рисунок). Контакты 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

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
22.10.2018