Uln2003 шаговым двигателем схема

ardu_stepper_0Шаговые двигатели — основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель.

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

Другим известным примером может служить ЧПУ станок. Взять тот же 3D-принтер. Для точного перемещения печатающей головки применяют именно шаговые двигатели. В старых дисководах шаговики использовались для перемещения магнитной головки. А в современных фотоаппаратах микро-миниатюрные шаговые двигатели перемещают линзы.

motor_stp64В этом уроке мы с помощью контроллера Ардуино Уно запустим популярный в среде начинающих робототехников шаговый двигатель 28BYj-48. Этот миниатюрный шаговик имеет встроенный редуктор, который позволяет совершать очень точные перемещения выходного вала.

Так, в 4-шаговом режиме двигатель совершает 2048 шагов за один оборот. В 8-шаговом — 4096. Напряжение питания — 5 Вольт. Потребляемый ток — 160мА. А значит, для эксперимента нам будет достаточно штатного питания от USB.

В качестве драйвера для двигателя используем микросхему ULN2003, которую часто продают в паре с 28BYj-48. Вот так выглядит плата драйвера:

motor_drv_uln2003

На плате есть 4 входа для микроконтроллера: IN1..IN4. Пять выходов на двигатель, и два контакта питания. Также есть перемычка, разрывающая цепь питания двигателя.

1. Подключение

Как правило, кабель двигателя 28BYj-48 уже имеет разъем с ключом, который вставляется в плату только uln2003 шаговым двигателем схема в правильном положении. В противном случае, при подключении необходимо следовать цветовой схеме (см. рисунок). Контакты IN1..IN4 можно подключить к любым цифровым выходам Ардуино Уно.

stepper_схема

И «детская» схема подключения 🙂

stepper_bb

2. Программа: вариант №1

Что нужно сделать, чтобы шаговый двигатель сделал один оборот? Нужно подавать напряжение на его обмотки в строго определенной последовательности. Мы реализуем одну из нескольких схем коммутации, называемую полу-шаговой. Для этого, обратим внимание на таблицу коммутации:

Полу-шаговая последовательность ШАГ A B A\ B\
0 1 1 0 0
1 0 1 0 0
2 0 1 1 0
3 0 0 1 0
4 0 0 1 1
5 0 0 0 1
6 1 0 0 1
7 1 0 0 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 <Stepper.h> 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(5); // скорость 5 об/минуту } void loop() { myStepper.step(stepsPerRevolution); // шаг в одном направлении delay(500); Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); // шаг в обратную сторону delay(500); }

4. Видео

Наконец, когда все подключено, и программа (один из двух вариантов) загружена на Ардуино Уно, наблюдаем результат проделанной работы!



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Шаговый двигатель 28BYJ-48 модуль ULN 2003A Аппаратная платформа Arduino Пирсинг у мужчин что это

Uln2003 шаговым двигателем схема Uln2003 шаговым двигателем схема Uln2003 шаговым двигателем схема Uln2003 шаговым двигателем схема Uln2003 шаговым двигателем схема Uln2003 шаговым двигателем схема

Похожие новости