Просмотров: 74561

Количество шагов в шаговом двигателе

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

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

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

Робот-манипулятор и 3D-печать

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

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

Шаговый двигатель 28BYJ48

1. Униполярный шаговый двигатель 28BYj-48

Волновой режим

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

Волновой режим униполярного шагового двигателяНа схеме изображен так называемый волновой режим работы. На каждом шаге работы двигателя мы подаем напряжение только на одну катушку, в которой возникает магнитное поле. Часть сердечника, ближайшая к ротору начинает действовать как южный полюс магнита, вследствие чего ротор поворачивается к ней своим северным полюсом!

Полношаговый режим

Очевидно, что если мы будем подключать одновременно сразу две соседние катушки, то магнитное поле, действующее на ротор будет сильнее, тем самым повысится и крутящий момент двигателя. Такой режим работы униполярного двигателя называется полношаговым.

Полношаговый режим униполярного шагового двигателя

Полушаговый режим

Наконец, мы можем комбинировать волновой и полношаговый режим, получив полушаговый режим работы. В таком режиме за один оборот ротора двигатель делает в два раза больше шагов, тем самым увеличивая точность позиционирования. Однако, в таком режиме двигатель каждый второй шаг имеет сниженный крутящий момент, о чём не стоит забывать!

Полушаговый режим униполярного шагового двигателя

Надо заметить, что в реальном шаговом двигателе ротор как правило имеет больше 2-х полюсов, а катушки могут иметь различную конфигурацию. Например, в нашем моторе 28byj-48 электромагниты расположены не перпендикулярно оси ротора, а вдоль него.

Обмотки шагового двигателя 28byj-48

В зависимости от конструктивных особенностей, разные шаговые двигатели могут иметь разное количество шагов. Так, наш мотор 28byj-48 делает 32 шага за один оборот ротора. Кроме того у этого мотора есть встроенный шестеренный редуктор с весьма странным передаточным отношением 63.68395:1. С таким редуктором мотор в полношаговом режиме выдаёт около 2048 шагов!

2. Драйвер униполярного шагового двигателя ULN2003

Мы не можем подключить этот двигатель напрямую к контроллеру, так как ток на его обмотках может достигать 160 мА, что очень много для выводов Ардуино. Для управления 28byj-48 мы используем специализированную микросхему ULN2003.

Плата драйвера с ULN2003 может выглядеть так:

Драйвер шагового двигателя ULN2003

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

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

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

Принципиальная схема

Схема подключения шагового двигателя 28byj-48 к Arduino Uno

Внешний вид макета

Схема подключения шагового двигателя 28byj-48 к Arduino Uno

4. Программа полношагового режима для 28byj-48

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

Полношаговый режим (full-step mode) ШАГ синий (A) розовый (B) жёлтый (A’) оранжевый (B’) 1 1 1 0 0 2 0 1 1 0 3 0 0 1 1 4 1 0 0 1

Получается такая вот незамысловатая программа. Переменная 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, HIGH ); digitalWrite( in2, HIGH ); digitalWrite( in3, LOW ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, HIGH ); digitalWrite( in3, HIGH ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, LOW ); digitalWrite( in3, HIGH ); digitalWrite( in4, HIGH ); delay(dl); digitalWrite( in1, HIGH ); digitalWrite( in2, LOW ); digitalWrite( in3, LOW ); digitalWrite( in4, HIGH ); delay(dl); }

Чтобы заставить двигатель двигаться быстрее или медленнее, необходимо будет изменить переменную dl. Увеличиваем паузу между коммутациями — двигатель вращается медленнее. Уменьшаем паузу — крутится быстрее.

5. Программа полушагового режима для 28byj-48

Теперь реализуем полушаговый режим. Последовательность включений катушек для такого режима представлена ниже.

Полушаговый режим (half-step mode) ШАГ синий (A) розовый (B) жёлтый (A’) оранжевый (B’) 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 1 1 0 5 0 0 1 0 6 0 0 1 1 7 0 0 0 1 8 1 0 0 1

Программа для полушагового режима не сильно отличается от предыдущей.

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, HIGH ); digitalWrite( in2, LOW ); digitalWrite( in3, LOW ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, HIGH ); digitalWrite( in2, HIGH ); digitalWrite( in3, LOW ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, HIGH ); digitalWrite( in3, LOW ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, HIGH ); digitalWrite( in3, HIGH ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, LOW ); digitalWrite( in3, HIGH ); digitalWrite( in4, LOW ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, LOW ); digitalWrite( in3, HIGH ); digitalWrite( in4, HIGH ); delay(dl); digitalWrite( in1, LOW ); digitalWrite( in2, LOW ); digitalWrite( in3, LOW ); digitalWrite( in4, HIGH ); delay(dl); digitalWrite( in1, HIGH ); digitalWrite( in2, LOW ); digitalWrite( in3, LOW ); digitalWrite( in4, HIGH ); delay(dl); }

Загружаем программу на Ардуино и наблюдаем за более плавным вращением мотора. Также можно легко заметить, что крутящий момент в таком режиме заметно ниже.

6. Стандартная библиотека Stepper

Для управления шаговыми двигателями в 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); }

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

Заключение

Итак, мы познакомились с принципом работы униполярного шагового двигателя на примере популярной модели 28byj-48. Такие моторы часто применяются в любительской робототехнике, прежде всего из-за своей низкой цены.

В паре с драйвером ULN2003 мотор даёт небольшой крутящий момент, которого достаточно разве что для создания системы наведения небольшой видеокамеры или для создания стрелочного указателя. Однако, есть методы, которые позволяют увеличить характеристики этого мотора, что позволит его применять в качестве привода на колесных роботах и для создания разного рода схватов. О том как это сделать мы поговорим на следующих уроках!


Источник: http://robotclass.ru/tutorials/arduino-stepper-28byj-48-uln2003/


Поделись с друзьями



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



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


Как сделать домашний фокус
Самодельные снегоходы из мотоблоком
Навесные ворота своими руками чертежи
Как сделать лимит на мтс меньше
Как сделать номер для скайпа
Фигурки из теста своими руками фото
Как сделать прикормку на сазана в домашних условиях
Как сделать в микроволновке кукурузу в


Количество шагов в шаговом двигателе
Количество шагов в шаговом двигателе


Управление шаговым двигателем. Схема и описание Уголок
Cached



ШОКИРУЮЩИЕ НОВОСТИ