- Arduino step motor 28byj 48 подключение
- Подключение шагового двигателя к Ардуино
- Принцип работы шагового двигателя
- Драйвер шагового двигателя Ардуино
- Как подключить шаговый двигатель к Ардуино
- Скетч для управления шаговым двигателем
- Пояснения к коду:
- Управление шаговым двигателем на Ардуино
- Скетч для шагового двигателя на Ардуино (Stepper.h)
- Пояснения к коду:
- Скетч для шагового мотора с библиотекой AccelStepper.h
- Пояснения к коду:
- Описание команд библиотеки AccelStepper.h
- Шаговый двигатель 28BYJ-48
- Обзор шагового двигателя 28BYJ-48
- Режимы работы двигателя
- Подключение 28BYJ-48к плате Arduino
- Пример использования
- Часто задаваемые вопросы
- Библиотека Stepper
- Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
- Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003 : 34 комментария
- Arduino, шаговый двигатель 28-BYJ48 и драйвер ULN2003
- Спецификация и драйвер шагового двигателя
- Необходимые компоненты
- Скетч для Arduino
- Проблема направления вращения в библиотеке и как ее исправить
- Измененный код для Arduino
- Доступ к библиотеке для шагового двигателя из Arduino IDE
- Ардуино и шаговый двигатель: основы, схемы, подключение и управление
Arduino step motor 28byj 48 подключение
Подключение шагового двигателя к Ардуино
Шаговый двигатель Arduino ► предназначен для перемещения объекта на заданное количество шагов вала. Рассмотрим устройство и схему подключения шагового двигателя.
Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.
Принцип работы шагового двигателя
В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).
Фото. Устройство шагового мотора в разрезе
Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.
Драйвер шагового двигателя Ардуино
Шаговый двигатель — это бесколлекторный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока в которых происходит вращение вала, вал шаговых двигателей совершает дискретные перемещения, то есть вращается не постоянно, а шагами. Каждый шаг вала (ротора) представляет собой часть полного оборота.
Фото. Виды драйверов для управления шаговым двигателем
Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.
Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.
Как подключить шаговый двигатель к Ардуино
Для занятия нам понадобятся следующие детали:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- драйвер шагового двигателя ULN2003;
- шаговый двигатель 28BYJ-48;
- провода «папа-мама».
Схема подключения шагового двигателя к Arduino UNO
Управление шаговым двигателем через Ардуино производится путем подачи импульсов на обмотки мотора в определенной последовательности. Для облегчения управления шаговым мотором созданы специальные библиотеки stepper.h и accelstepper.h, но можно вращать вал мотора без стандартных библиотек. Подключите шаговый мотор к микроконтроллеру, как на схеме выше и загрузите следующий скетч.
Скетч для управления шаговым двигателем
Пояснения к коду:
- вместо портов 8,9,10,11 можно использовать любые цифровые порты;
- время задержки в миллисекундах int dl = 5; можно изменять, чем меньше задержка в программе, тем быстрее будет вращаться вал мотора;
- алгоритм работы программы, представлен на следующей картинке.
Последовательность включения обмоток шагового мотора
Управление шаговым двигателем на Ардуино
Рассмотрим управление шаговым мотором при помощи стандартной библиотеки stepper.h и с помощью более удобной и популярной библиотеки accelstepper.h, где реализовано намного больше дополнительных команд и функций. Схема подключения мотора при этом остается неизменной. Чуть дальше мы перечислили возможные команды, которые можно использовать в программе с этими библиотеками.
Скетч для шагового двигателя на Ардуино (Stepper.h)
Пояснения к коду:
- вместо портов 8,9,10,11 можно использовать любые цифровые порты;
- библиотека Stepper.h имеет маленький функционал, поэтому подходит только для тестирования шагового двигателя и проверки подключения драйвера.
Скетч для шагового мотора с библиотекой AccelStepper.h
Пояснения к коду:
- библиотеку AccelStepper.h можно использовать при подключении шагового двигателя к Motor Shield L293D совместно с библиотекой AFMotor.h;
- в программе можно задавать не только максимальную скорость, но и ускорение и замедление вала шагового двигателя.
Описание команд библиотеки AccelStepper.h
AccelStepper mystepper(DRIVER, step, direction); // Шаговый двигатель, управляемый платой
AccelStepper mystepper(FULL2WIRE, pinA, pinB); // Шаговый двигатель, управляемый Н-мостом
AccelStepper mystepper(FULL4WIRE, pinA1, pinA2, pinB1, pinB2); // Униполярный двигатель
Шаговый двигатель 28BYJ-48
Обзор шагового двигателя 28BYJ-48
Шаговые двигатели применяют в механических системах точного позиционирования – ЧПУ станках, 3d-принтерах, принтерах, роботах-манипуляторах. Шаговые двигатели преобразуют электрические импульсы в перемещение вала на определенный угол. Минимально возможный угол перемещения шагового двигателя, называется шагом.
В любительской робототехнике очень часто используют бюджетный шаговый двигатель 28BYJ-48, в комплекте с которым продается драйвер двигателя на микросхеме ULN2003, необходимый для подключения шагового двигателя к плате Arduino.
Рисунок 1. Шаговый двигатель 28BYJ-48 с драйвером на микросхеме ULN2003.
Характеристики шагового двигателя 28BYJ-48:
Напряжение питания – 5В или 12В;
Коэффициент редукции – 1/63.68395;
Количество шагов ротора – 64;
Номинальная скорость вращения – 15 оборот/мин;
Крутящий момент – 450 г*см;
Размеры (диаметр,высота) –25×18 мм;
Принципиальная схема шагового двигателя 28BYJ-48 приведена на рис. 2.
Рисунок 2. Принципиальная схема шагового двигателя 28BYJ-48.
Режимы работы двигателя
Для управления шаговым двигателем 28BYJ 48 используют один из двух режимов подключения.
- полношаговый режим – 4 ступени импульсов на 1 шаг;
- полушаговый режим – 8 ступеней импульсов на 1 шаг.
Подключение 28BYJ-48к плате Arduino
Драйвер двигателя состоит из 7 пар транзисторов Дарлингтона и является усилителем. Выводы IN1 – IN7 предназначены для подключения к микроконтроллеру, GND и VCC – для питания шагового двигателя. Схема подключения драйвера к плате Arduino показана на рисунке 3.
Рисунок 3. Подключение драйвера к плате Arduino.
Для управления шаговыми двигателями в Arduino IDE есть встроенная библиотека – Stepper. Данная библиотека осуществляет только полношаговый режим коммутации.
Рисунок 4. Библиотека Stepper
Загрузим на плату Arduino пример – скетч stepper_oneRevolution из Examples (см. листинг 1).
К сожалению, данный скетч отрабатывает неверно, двигатель движется только в одном направлении. Для правильной работы необходимо использовать альтернативные библиотеки, например Accel Stepper. Библиотека Accel Stepper поддерживает не только равномерное движение, но и замедление/ускорение двигателя и работу с несколькими двигателями. Загружаем на плату Arduino скетч из листинга 2.
Теперь скетч работает нормально, шаговый двигатель плавно.
Рисунок 5. Схема в сборе
Пример использования
В качестве примера создадим проект управления шаговым двигателем кнопками, подключенными к плате Arduino.
Будем использовать следующие компоненты:
Шаговый двигатель 28BYJ-48 с драйвером – 1;
Резистор 10 кОм – 3;
Схема соединения представлена на рисунке 6.
Рисунок 6. Схема соединений
Реакция на нажатие кнопок:
кнопка 3 – движение двигателя по часовой стрелке;
кнопка 1 – против часовой стрелки;
кнопка 2 – останов.
Скетч показан в листинге 3.
Загружаем скетч на плату Arduino и проверяем работу.
Рисунок 7. Схема в сборе.
Рисунок 8. Вывод данных в последовательный порт.
Часто задаваемые вопросы
1. Нет перемещения шагового двигателя
Проверьте правильность подключения драйвера к плате Arduino.
Проверьте наличие достаточного внешнего питания для шагового двигателя.
Библиотека Stepper
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003
- Шаговый двигатель
- Униполярный шаговый двигатель
- Подключение шагового двигателя 28BYj-48
- Программа полношагового режима
- Программа полушагового режима
- Библиотека Stepper
- Заключение
Для управления шаговыми двигателями в Arduino IDE есть стандартная библиотека, которая осуществляет только полношаговый режим коммутации.
Наконец, когда все подключено, и программа загружена на Ардуино Уно, наблюдаем результат проделанной работы!
Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003 : 34 комментария
Добрый день! Подскажите:
1. Программа сохраняется на драйвер?
2. Программа может отрабатывать без контроллера, а только с драйвером?
Программа для контроллера. Драйвер — это ULN2003 весьма простое устройство, неспособное выполнять сложные действия. Есть более умные драйверы, например A4988. Ему достаточно передавать направление и такты. По сути, можно обойтись без контроллера: поставить 555 таймер на тактовый вход. Также на A4988 можно выставить кратность шага, вплоть до 1/16.
Спасибо большое за статью. Правда данный мотор + контроллер на стандартной библиотеке работал довольно плохо и «заднего хода не было». Нашёл бесплатную библиотеку, специально написанную под данный моторчик (28BYJ-48): http://www.codeproject.com/Articles/699986/An-Arduino-Library-to-Control-the-BYJ-Stepper
>бесплатную
LGPL тащемто
увидишь платную библиотеку для пердуиноИДЕ можешь в суд подавать
Для правильной работы этого драйвера (который является простой сборкой Дарлингтона) нужно изменить порядок подключения в примере. Там они идут по порядку 8,9,10,11; а нужно 8,10,9,11.
Это для работы со стандартной библиотекой Stepper
на AccelStepper так же распространяется смена между собой центральных контактов
Спасибо за статью! Помогла разобраться и на основе приведенного кода создать свой.
Как надежно закрепить что-либо (шестерню, рычаг и т.п.) на валу 28BYJ-48?
Или просто удлинить вал?
Есть какие-то муфты, или предполагается, что каждый выкручивается чем Бог послал?
Китайцы продают муфты разных диаметров. Ближе к февралю на shop.robotclass.ru появится подобная механика.
Здравствуйте, я скопировал ваш последний код и залил в ардуинку уно, поставил кол-во оборотов 2048 и всё, больше ничего не поменял. Шаговик должен по логике вращаться в одну сторону, а потом в другую, но он у меня вращается только в одну сторону, почему?
const int IN2 = 3;
const int IN3 = 4;
надо поменять на
const int IN2 = 4;
const int IN3 = 3;
Тогда будет крутиться правильно
Вот так можно отнаследоваться от AccelStepper и получить нормальную поддержку 4096 шагов на один оборот:
class MyStepper : public AccelStepper <
public:
MyStepper(uint8_t interface = AccelStepper::FULL4WIRE, uint8_t pin1 = 2, uint8_t pin2 = 3, uint8_t pin3 = 4, uint8_t pin4 = 5, bool enable = true) : AccelStepper(interface, pin1, pin2, pin3, pin4) <
case 1: // 1100
setOutputPins(0b0011);
break;
case 2: // 0100
setOutputPins(0b0010);
break;
case 3: // 0110
setOutputPins(0b0110);
break;
case 4: // 0010
setOutputPins(0b0100);
break;
case 5: // 0011
setOutputPins(0b1100);
break;
case 6: // 0001
setOutputPins(0b1000);
break;
MyStepper stepper(AccelStepper::HALF4WIRE, 2, 3, 4, 5);
stepper.moveTo (4096); //Будет ровно один оборот
Добрый день!
А как проверить, что шаговый двигатель исправный? У меня при подключении ардуино через usb и заливки скетча шаговый двигатель вообще не крутится. Может сломалось что?
Я сделал по библиотеке cheap stepper. Крутится! На лсд вывел по i2c витки. В сериал пишешь количество а движок намотает не больше ни меньше. Серводвигателем подаю проволоку. Догадались? Намоточный станок! Но шаговик медленно крутится. Командой setrpm ставится скорость не выше 20. Выше прошивается но отказывается мотор крутится. Может надо 1 2 ампер а не юсб порт ноута?
я думаю намотчик лучше делать на обычном двигателе который будет вращать катушку вместе с инкрементным энкодером. и со степпером заморачиваться не нужно
Какой вес сможет вращать такой двигатель на горизонтальной платформе?
Зависит от конструкции поворотного стола. Точнее от передаточного отношения между шестерней (или шкивом) на валу двигателя и шестерней на столе. Можно заставить этот мотор вращать человека, но ооочень медленно.
А если просто одеть стол на вал двигателя?
На вскидку грамм 200-300
через вот этот драйвер
https://ru.aliexpress.com/item/L293D-Mini-4-Channel-CH-Motor-Drive-Shield-Expansion-Board-Module-High-Voltage-Current-Module-For/1859086104.html
запустил движок флопа, который крутит дискету.
1. На малых оборотах драйвер греется сильно. Так должно быть ? или с этим можно и нужно бороться?
2. почему то работает только при запитке цепи двигателя через VIN ардуины, при подключении внешнего питания ардуинка перезагружается в момент запуска двигателя. Это можно победить? Как?
Ребят, а подскажите, как заставить его вращаться против часовой стрелки?
Надо поменять
digitalWrite( in1, HIGH );
digitalWrite( in2, HIGH );
digitalWrite( in3, LOW );
digitalWrite( in4, LOW );
delay(dl);
на
digitalWrite( in1, LOW );
digitalWrite( in2, LOW );
digitalWrite( in3, HIGH );
digitalWrite( in4, HIGH );
delay(dl);
и так далее.
То есть, как-бы запустить void loop в обратном порядке.
Для управления двумя такими двигателями нужно две платы?
Если — да, то второй вопрос: получится ли подключить к одной плате, с реле, которое будет переключать контакты между двигателями?
Одна плата — один мотор. С реле можно, но будет громоздко.
Arduino, шаговый двигатель 28-BYJ48 и драйвер ULN2003
Шаговый двигатель — это мотор, который управляется несколькими электромагнитными катушками.
На центральном валу — роторе — расположены магниты. В зависимости от от того, есть ток на катушках, которые находятся вокруг вала, или нет, создаются магнитные поля, которые притягивают или отталкивают магниты на роторе. В результате вал шагового двигателя вращается.
Подобная конструкция позволяет реализовать очень точное управление углом поворота ротора шагового двигателя относительно катушек — статора. Можно выделить два основных типа шаговых моторов: униполярные и биполярные шаговые двигатели.
В данной статье мы рассмотрим работу униполярного шагового двигателя 28-BYJ48 с драйвером ULN2003.
Униполярные шаговые двигатели имеют пять или шесть контактов для подключения и четыре электромагнитные катушки в корпусе (если быть более точными, то две катушки, разделенные на четыре). Центральные контакты катушек соединены вместе и используются для подачи питания на двигатель. Эти шаговые моторы называются униполярными, потому-что питание всегда подается на один из этих полюсов.
Спецификация и драйвер шагового двигателя
Существуют разные модели драйверов (контроллеров) шаговых двигателей. Среди них можно выделить самые популярные в DIY разработках на базе Arduino: L293, ULN2003, A3967SLB.
Как правило, шаговый двигатель 28-BYJ48 используют в паре с драйвером ULN2003.
Спецификацию шагового двигателя 28-BYJ48 на английском языке вы можете скачать здесь. Краткие выдержки основных технических характеристик приведены ниже:
- Напряжение питания: 5 В (постоянный ток);
- Количество фаз: 4;
- Количество шагов: 64;
- Угол поврота на один шаг: 5.625 градуса
- Частота: 100 Герц;
- Частота холостого хода по часовой стрелке: > 600 Герц;
- Частота холостого хода против часовой стрелки: > 1000 Герц;
- Крутящий момент > 34.3 миллиньютон на метр;
- Сопротивление вращению: 600-1200 грамм на сантиметр;
- Класс элетробезопасности: A;
Внешний вид и схемы подключения ULN2003 приведены на изображениях ниже
Примечание. Если вы захотите использовать плату L293 вместо ULN2003, красный контакт подключать не надо.
Необходимые компоненты
- Микроконтроллер Arduino.
- Шаговый двигатель BYJ48 5В.
- Драйвер шагового двигателя ULN2003.
- Коннекторы.
- Источник питания 5v — необязательно.
Скетч для Arduino
В Arduino IDE есть встроенная библиотека для управления шаговыми двигателями. После подключения шагового двигателя, ULN2003 и Arduino, вы можете загрузить скетч из категории Examples и .
На этом этапе возникают определенные нюансы:
У этого двигателя передаточное отношение 1:64, а угол поворота 5.625, то есть у него 4096 шагов.
Шаг = Количество шагов на один поворот * передаточное отношение.
Шаги= (360/5.625)*64″Передаточное отношение» = 64 * 64 =4096. Это значение надо учесть в скетче Arduino.
А вот угол поворота для шаговых двигателей от adafruit равен 7.5 градусов, а передаточное отношение 1:16, так что количество шагов за 1 полный оборот вала равно:
Шаги за один оборот = 360 / 7.5 = 48.
Шаги = 48 * 16 = 768
То есть, это значение меняется в зависимости от двигателя, который вы используете. Поэтому проверяйте даташит для калибровки и корректной работы вашего шагового двигателя.
Модуль драйвера шагового двигателя ULN2003 подключается к Arduino контактами IN1 — IN4 к D8 — D11 соответственно.
Для подачи питания на ваш мотор, рекомендуется использовать внешний источник питания 5V с силой тока 500mA минимум. Не питайте двигатель непосредственно от контакта 5V на плате Arduino.
Проблема направления вращения в библиотеке и как ее исправить
Когда вы загрузите скетч на Arduino, шаговый двигатель будет вращаться в одном направлении с помощью функции:
То есть, вам надо указать в параметрах количество шагов для поворота ротора вала.
По идее, указав положительное или отрицательное значение, вы можете управлять направлением вращения. Если ваш шаговый двигать так и работает, то можете не читать дальше.
Но если шаговый двигатель вращается в том же направлении вне зависимости от знака, то надо внести изменения в библиотеку Arduino. В следующем разделе приведен код, используя который вы можете управлять направлением вращения.
Измененный код для Arduino
Окончательная версия скетча для шагового двигателя:
/* Скетч для шагового двигателя BYJ48
Схема подключения: IN1 >> D8 IN2 >> D9 IN3 >> D10 IN4 >> D11 VCC . 5V.
Лучше использовать внешний источник питания Gnd
Автор кода: Mohannad Rawashdeh
Детали на русском языке: /arduino-shagovii-motor-28-BYJ48-draiver-ULN2003
Англоязычный вариант: http://www.instructables.com/member/Mohannad+Rawashdeh/ 28/9/2013 */
boolean Direction = true;
unsigned long last_time;
unsigned long currentMillis ;
void stepper(int xw)<
StepperMotor::StepperMotor(int In1, int In2, int In3, int In4)<
// Записываем номера пинов в массив inputPins
// Проходим в цикле по массиву inputPins, устанавливая каждый из них в режим Output
for (int inputCount = 0; inputCount inputPins[inputCount], OUTPUT);
void StepperMotor::setStepDuration(int duration)<
void StepperMotor::step(int noOfSteps)<
* в данном 2D массиве хранится последовательность, которая
* используется для поворота. В строках хранится шаг,
* а в столбцах — текущий input пин
int factor = abs(noOfSteps) / noOfSteps; // Если noOfSteps со знаком +, factor = 1. Если noOfSteps со знаком -, factor = -1
noOfSteps = abs(noOfSteps); // Если noOfSteps был отрицательным, делаем его позитивным для дальнейших операций
* В цикле ниже обрабатываем массив sequence
* указанное количество раз
for(int sequenceNum = 0; sequenceNum inputPins[inputCount], sequence[(int)(3.5-(3.5*factor)+(factor*position))][inputCount]);
Давайте посмотрим на конструктор на строчке 4. Мы начинаем с того, что добавляем выбранные пользователем пины в массив inputinputPins в строчках 6-9. В результате мы получаем простой и интуитивно понятный доступ к номерам пинов в дальнейшем коде.
В 12 строке мы пробегаемся по массиву inputinputPins и устанавливаем для каждого режим OUTPUT.
В 15 строке мы устанавливаем длительность шага по-умолчанию равной 15 мс.
В 18 строчке у нас функция-сеттер для установки длительности шага.
Теперь давайте рассмотрим метод step. Этот метод дает возможность шаговому двигателю делать переданное методу количество шагов.
В 28 строчке мы объявляем частоту вращения с использованием 2-х мерного массива. Строки представляют шаг, столбцы — выходящие пины.
В 37 строчке рассчитывается значение переменной factor, которое равно +1 или -1 в зависимости от знака, который мы передали при указании шагов. Это значение используется для определения направления перебора массива, то есть, в результате, для изменения направления вращения.
В 38 строчке мы присваем noOfSteps переменной позитивное значение.
В 44 строке мы запускаем цикл, который будет отрабатывать для каждой последовательности оборотов, то есть в начале каждого 8-го щага.
В 45 строке мы запускаем второй цикл, который пробегается по строкам в нашем массиве.
В 46 строчке мы устанавливаем задержку в соответствии со спецификацией.
В 47 строке мы пробегаемся по номерам пинов.
В 48 строке мы передаем цифровой сигнал на текущий номер пина.
Если переменная factor отрицательная, в 48-й строчке кода строки массива обрабатываются в противоположном порядке, то есть с низу вверх.
Доступ к библиотеке для шагового двигателя из Arduino IDE
Нам осталось добавить созданные файлы в папку библиотек Arduino IDE и мы сможем импортировать ее в любой наш проект.
Перейдите в папку:
C:Program Files (x86)Arduinolibraries
И создайте папку под названием StepperMotor.
Переместите созданные файлы .h и .cpp в созданную папку.
Теперь вы можете импортировать библиотеку в IDE (sketch > import library. > StepperMotor) с помощью директивы
Ардуино и шаговый двигатель: основы, схемы, подключение и управление
Шаговые двигатели используют для управления положением чего-либо, или для вращения рабочего узла с заданной скорости и на заданный угол. Такие особенности сделали возможным его применение в робототехнике, станках с числовым программным управлением (ЧПУ), и других системах автоматизации. В этой статье мы рассмотрим ряд вопросов связанных с устройством шаговых двигателей и способами их управления с помощью микроконтроллера Arduino.
Шаговый двигатель отличия от обычного
Все используемые на практике электродвигатели работают за счет электродинамических явлений и процессов происходящих в магнитных полях роторов и статоров. Как мы уже упомянули, любой двигатель состоит как минимум из двух частей – подвижной (ротор) и неподвижной (статор). Для его вращения нужно чтобы и магнитное поле тоже вращалось. Поле ротора вращается вслед за полем статора.
В принципе, таких базовых сведений достаточно для понимания общей картины работы электрических двигателей. Однако на самом деле промышленность производит различные варианты электродвигателя, среди которых:
1. Асинхронный двигатель с короткозамкнутым или с фазным ротором.
2. Синхронный двигатель с обмотками возбуждения или с постоянными магнитами.
3. Двигатель постоянного тока.
4. Универсальный коллекторный двигатель (работает и на постоянном токе и на переменном, ведь обмотки ротора сами подключаются и отключаются от контактов источника питания за счет конструкции ламелей и якоря).
5. Бесщеточные двигатели постоянного тока (BLDC).
7. Шаговые двигатели.
Последние два вида несут особую ценность, благодаря возможности их, в определенной степени, точного позиционирования в пространстве. Давайте подробнее рассмотрим конструкцию шагового двигателя.
Определение
Шаговым двигателем называется бесщеточный электродвигатель синхронного типа. На статоре расположено определенное число обмоток, подключение которых вызывает поворот ротора на определенный угол, зависящий от числа шагов. Другими словами ток в обмотке статора вызывает поворот вала на дискретный угол.
При равномерной и последовательной смене полярностей напряжения на обмотках и переключении запитанных обмоток происходит вращение шагового двигателя, подобно обычному электродвигателю, хотя на самом деле просто происходит регулярный поворот на фиксированный угол.
Шаговый двигатель иногда называют двигателем с конечным количеством положений ротора. Звучит не совсем понятно, давайте разберемся. Представим обычный двигатель – положение его ротора никак не фиксируется, то есть он просто вращается пока подключено питание, а когда оно отключается, то останавливается через какое-то время, зависящее от его инерции. Положений ротора может быть сколько угодно много, а отличаться они могут на мельчайшие доли градуса.
В шаговом двигателе подключение обмотки или нескольких обмоток вызывает «примагничивание» ротора по отношению к этим обмоткам. Внешне это выглядит именно как поворот вала на определенный угол (шаг). Так как количество шагов является одной из важных характеристик этого типа электропривода, то и количество положений ротора равно количеству шагов. Новичкам сложно понять, как это может быть, и как он в таком случае вращается – на самом деле все достаточно просто, мы это покажем на иллюстрациях и описаниях ниже.
Конструкция
На статоре электродвигателя закреплены обмотки возбуждения. Его ротор выполняется из магнитомягких или магнитотвердых материалов. От материала ротора зависит крутящий момент и фиксация вала при обесточенных обмотках. Эти параметры могут быть критичными.
Поэтому выделяют магнитотвердые роторы (они же на постоянных магнитах) и магнитомягкие (реактивные) роторы, кроме них есть и гибридные роторы.
Гибридный ротор делают зубчатым, количество зубцов соответствует количеству шагов. Зубцы расположены вдоль оси ротора. При этом такой ротор разделен на две части поперек. Между ними установлен постоянный магнит, таким образом, каждая из половин ротора является полюсом магнита. Также следует сказать, о том, что половины ротора повернуты на половину шага зубцов друг относительно друга.
Как уже было сказано, такой двигатель является синхронным, так и процесс его вращения заключается в создании вращающего поля ротора, за которым стремится магнитный ротор, а это реализовывается за счет переключения контроллером обмоток поочередно.
Виды шаговых двигателей ШД по конструкции обмоток делят на три основных группы по схеме подключения обмоток:
3. С четырьмя обмотками.
Биполярные электродвигателя в большинстве своем имеют 4 контакта – это выводы с двух обмоток. Внутри двигателя они по большому счету никак не соединены между собой. Основной проблемой является то, что нужно обеспечить переключение полярности питания, это значит, что драйвер и сам процесс управления усложнится.
Униполярные напоминают соединение обмоток по схеме звезды. Другими словами, у вас есть 5 выводов – 4 из них это концы обмоток, а 1 – точка соединения всех обмоток.
Для управления таким двигателем нужно просто подавать поочередно питание на каждый из концов обмотки (или их пару, в зависимости от выбранного режима вращения), таким образом будет запитываться каждый раз половинка обмотки. Может работать в биполярном режиме, если запитывать полностью всю обмотку минуя отвод от её середины.
Двигатели с 4 обмотками имеют преимущество в том, что вы можете подключить обмотки любым удобным для вас образом и получить как биполярный, так и униполярный двигатель.
Режимы управления
Различают 4 основных режима управления шаговым двигателем:
1. Волновое управление.
Волновым управлением называют управление одной обмоткой. Т.е. одновременно ток течет через одну из обмоток, отсюда две отличительных черты – низкое энергопотребление (это хорошо) и низкий крутящий момент (это плохо).
В данном случае этот двигатель делает 4 шага за один оборот. Реальные же двигатели делают десятки шагов за один оборот, это достигается бОльшим количеством чередований магнитных полюсов.
Полношаговое управление является наиболее часто используемым. Здесь напряжение подается не на одну обмотку, а на две сразу. Если обмотки соединены параллельно – то ток удваивается, а если последовательно, то удваивается напряжение питания соответственно. С одной стороны в таком методе управления двигатель потребляет больше энергии, с другой – крутящий момент 100%, в отличие от предыдущего.
Полушаговое управление интересно тем, что становится возможным более точное позиционирование вала двигателя, благодаря к тому, что к целым шагам добавляются еще и половинки это достигается совмещение предыдущих двух режимов работы, а обмотки чередуются, то включаясь попарно, то по одной.
Стоит учесть, что момент на валу плавает от 50 до 100% в зависимости от того 1 или 2 две обмотки задействованы в данный момент.
Еще более точным является микрошаговый. Он похож на предыдущий, но отличается тем, что питание на обмотки подаётся не полной величины, а постепенно изменяющейся. Таким образом, изменяется степень воздействия на ротор каждой из обмоток и плавно изменяется угол поворота вала в промежуточных шагам положениях.
Где взять шаговый двигатель
Купить шаговый двигатель вы успеете всегда, но настоящие радиолюбители, самодельщики и электронщики славятся тем, что могут из мусора сделать что-то полезное. Наверняка, у вас дома найдется хотя бы один шаговый двигатель. Давайте разберемся, где нужно искать, чтобы найти такой двигатель.
1. Принтера. Шаговые двигатели могут стоять на вращении вала подачи бумаги (но может быть и двигатель постоянного тока с датчиком перемещения).
2. Сканеры и МФУ. В сканерах часто устанавливают шаговый двигатель и механическую часть, направляющую вдоль которой ходит каретка, эти детали также могут стать полезны при разработке самодельного ЧПУ станка.
3. CD и DVD приводы. В них также можно достать и штанги и винтовые валы для самоделок и различных ЧПУ.
4. Floppy-дисководы. В дискетниках также есть шаговые двигатели, особо ценятся флопики формата 5.25”.
Драйвер для шагового двигателя
Для управления шаговыми двигателями используют специализированные микросхемы-драйвера. В большинстве своем это H-мост из транзисторов. Благодаря такому включению появляется возможность включать на обмотку напряжение нужной полярности. Эти микросхемы подходят и для управления двигателями постоянного тока с поддержкой изменения направления вращения.
В принципе очень маленькие двигателя можно запустить и прямо от пинов микроконтроллера, но обычно они выдают до 20-40 мА, чего в большинстве случае недостаточно. Поэтому приведем несколько примеров драйверов для шаговых двигателей:
1. Платы на базе L293D. Их множество, одна из таких продается под отечественной маркой «Амперка» под название Troyka Stepper, пример его использования в реальном проекте приведен на видео ниже. Преимущество конкретно этой платы в том, что на ней расположены микросхемы логики которые позволяют сократить количество используемых для управления пинов.
Сама по себе микросхема работает под напряжение 4.5-36В и выдает ток до 600мА-1А в зависимости от корпуса ИМС.
2. Драйвер на базе A4988. Питается напряжением до 35В, выдерживает ток до 1А без радиатора, а с радиатором до 2А. Может управлять двигателем, как целыми шагами, так и частями – от 1/16 шага до 1 шага, всего 5 вариантов. Содержит два H-моста. С помощью подстроечного резистора (видно на правом фото) можно задавать выходной ток.
Размер шага задается сигналами на входах MS1, MS2, MS3.
Вот схема его подключения, каждый импульс на входе STEP задает поворот двигателя на 1 шаг или на микрошаг.
3. Драйвер на базе ULN2003 работает с двигателями на 5 и на 12В и выдаёт ток до 500 мА. На большинстве плат расположены 4 светодиода индицирующих работу каждого из каналов.
Также на плате вы можете видеть клеммную колодку для подключения двигателей, кстати, многие из них продаются именно с таким разъёмом. Примером такого двигателя является 5В модель – 28BYJ-48.
И это не все варианты драйверов для шаговых двигателей, на самом деле их еще больше.
Подключение к Arduino драйвера и шагового двигателя
В большинстве случаев нужно использовать микроконтроллер в паре с драйвером для шагового двигателя. Давайте рассмотрим схему подключения и примеры программного кода. Рассмотрим подключение на базе последнего приведенного драйвера – ULN2003 к плате Arduino. И так у него есть 4 входа, они подписаны, как IN1, IN2 и т.д. Их нужно соединить с цифровыми пинам платы ардуино, а к драйверу подсоединить моторчик как показано на рисунке ниже.
Далее в зависимости от способа управления вы должны подавать на входы 1 или 0 с этих пинов включая 1 или 2 обмотки в нужно последовательности. Код программы полношагового управления выглядит примерно так: