При работе с Arduino многие радиолюбители пользуются шаговыми двигателями. Но что же это такое? Как его подключать? А как работать с ним? И вообще, где они используются? Ответы на все эти вопросы будут представлены в этой статье.
О шаговых двигателях
Можно сказать, что шаговые двигатели являются основой точной робототехники. Они применяются везде благодаря их точности. Дело в том, что шаговые двигатели при повороте вала используют маленькие шаги, это позволяет им быть сверхточными при работе. Именно благодаря "шагам" их и стали называть шаговыми двигателями. Взять, например, принтер. Там тоже используется шаговый двигатель. Или какой-нибудь манипулятор, где точность очень важна, ведь если даже робот сделает ошибку на половину градуса - уже все пойдет не так. Аналогом шаговых двигателей можно считать сервоприводы, так как при их программировании также указывается градус поворота, однако серво уступают шаговым двигателям в точности. Но есть множество ситуаций, где использование сервоприводов целесообразнее, нежели использование "шаговиков".
Шаговый двигатель 28BYJ-48
Среди множества выбора шаговых двигателей следует обратить внимание именно на шаговый двигатель модели 28BYJ-48. Стоит она достаточно дешево, всего лишь 100-150 рублей за штуку. Как выглядит шаговый двигатель для "Ардуино", можно увидеть на фото ниже.
Многие радиолюбители отдают предпочтение именно этой модели из-за низкой цены и хорошей точности. Тип мотора - униполярный, число фаз - 4. Потребляет шаговый двигатель для "Ардуино" от 5 до 12V. Однако рекомендуется использовать 6-7V. Двигатели могут работать в двух режимах: полношаговый и полушаговый. Рекомендуется для использования в полушаговом режиме. Это 5.625 градуса на шаг. При полношаговом на шаг дается 11.25 градуса. Вес двигателя - 30 грамм.
Драйвер ULN2003
Для подключения шагового двигателя к "Ардуино" используется специальный драйвер. Одним из таких является ULN2003. Связано это с тем, что при работе шагового двигателя достаточно мощная сила тока, которую контакты Arduino просто не могут выдержать. Для этого и используется драйвер. Сам двигатель подключается к драйверу, перепутать все почти невозможно, так как есть ключ, который показывает, как именно надо подключить. Ну, и далее уже сам драйвер подключается к Arduino для дальнейшей работы. Зачастую в магазинах драйвер уже идет в комплекте с шаговым двигателем. Однако есть случаи, когда двигатели продаются без драйвера, на это надо обращать внимание. Если покупать на Aliexpress, то лучше работать только с проверенными продавцами, у которых много отзывов.
Подключение
Как уже говорилось выше, для работы шагового двигателя с "Ардуино" используется драйвер. Для питания двигателя следует использовать иной источник, чтобы не перегружать плату Arduino. А остальные выводы, начиная с IN1 до IN4, подключаем к любым цифровым контактам на "Ардуино". Как можно заметить, подключение шагового двигателя к "Ардуино" достаточно простое. На фотографии можно увидеть пример подключения.
Управление
Для управления шаговым двигателям с "Ардуино" в составе среды разработки уже есть готовая библиотека, которая позволяет управлять двигателем, используя маленький программный код. Если бы его не было, пришлось бы при помощи специальной таблицы составлять и рассчитывать движение двигателя, что заняло бы очень много времени. Однако есть и минус этой библиотеки. Дело в том, что она дает возможность использования двигателя лишь в полношаговом режиме. Хотя изначально рекомендуется использование "шаговика" в полушаговом. Но для простых проектов с использованием одного шагового двигателя эта библиотека подойдет. Называется она Stepper. Можно написать код для управления шаговым двигателем с "Ардуино". Скетч выглядит так, как на примере ниже.
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8,9,10,11); //подключение к пинам 8…11 на Ардуино
void setup() {
myStepper.setSpeed(60); //установка скорости вращения ротора
Serial.begin(9600);
}
void loop() {
//Функция ожидает, пока поступит команда, преобразовывает текст и подает сигнал на двигатель для его вращения на указанное число шагов.
Serial.println("Move right"); //по часовой стрелке
myStepper.step(stepsPerRevolution);
delay(1000);
Serial.println("Move left"); //против часовой стрелки
myStepper.step(-stepsPerRevolution);
delay(1000);
}
Это пример из самой библиотеки для управления шаговыми двигателями. Вы можете сами указать, какое количество шагов нужно выполнить, а также с какой скоростью. Рассмотрим код более детально. В самом начале подключается библиотека Stepper, о которой уже было сказано выше. После чего создается константа с количеством шагов, которые должен выполнить шаговый двигатель. Далее создается переменная типа Stepper с данными, используя какие контакты подключен шаговый двигатель к "Ардуино". Устанавливается скорость и уже сам процесс движения шагового двигателя. Но если же вы желаете использовать более одного двигателя в своем проекте и работать в полушаговом режиме, то можно применять сторонние библиотеки. Одним из таких является Accel Stepper. Эта библиотека очень хорошо показала себя в работе, имеет много возможностей. При работе с ней шаги точные, двигатели не греются. В общем, рекомендовано к использованию. Для установки библиотеки ее необходимо скачать и перенести содержимое архива в папку Libraries в корневой папке Arduino.
В этой статье был рассмотрен пример подключения шагового двигателя к "Ардуино", а также его управление с помощью программного кода. Каждый радиолюбитель должен хоть раз в своих проектах попробовать работать с ним!