Uln2003apg схема подключения шагового двигателя 12в

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

Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора.

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

Шаговый двигатель – принцип работы

Uln2003apg схема подключения шагового двигателя 12вСхема шагового двигателя

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

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

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

Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

Uln2003apg схема подключения шагового двигателя 12вUln2003apg схема подключения шагового двигателя 12в

Uln2003apg схема подключения шагового двигателя 12вУпрощенные анимированные схемы работы шагового двигателя

Основные виды шаговых моторов:

  • Двигатели с переменными магнитами (применяются довольно редко);
  • Двигатели с постоянными магнитами;
  • Гибридные двигатели (более сложные в изготовлении, стоят дороже, но являются самым распространенным видом шаговых двигателей).

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

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

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

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

Драйвер униполярного привода требует всего 4 транзисторных ключа, для обеспечения работы драйвера биполярного привода требуется более сложная схема.

С каждой обмоткой отдельно нужно проводить различные действия – подключение к источнику питания, отключение. Для такой коммутации используется схема-мост с четырьмя ключами.

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Uln2003apg схема подключения шагового двигателя 12вДрайвер двигателя L298N

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

Uln2003apg схема подключения шагового двигателя 12вОписание драйвера шаговых двигателей UNL2003

Шаговые двигателями с модулями драйверов на базе ULN2003 – частые гости в мастерских Ардуино благодаря своей дешевизне и доступности. Как правило, за это приходится платить не очень высокой надежностью и точностью.

Другие драйвера

Существует другой вид драйверов –  STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Uln2003apg схема подключения шагового двигателя 12вПодключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Uln2003apg схема подключения шагового двигателя 12вПодключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Uln2003apg схема подключения шагового двигателя 12вПодключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Uln2003apg схема подключения шагового двигателя 12вПринципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17  через драйвер L298 выглядит следующим образом.

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные  характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

Характеристики двигателя:

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов  может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.

#include

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.

Читайте также:  Двигатель g4gc технические характеристики

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

Arduino, шаговый двигатель 28-BYJ48 и драйвер ULN2003

Шаговый двигатель — это мотор, который управляется несколькими электромагнитными катушками.

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

Подобная конструкция позволяет реализовать очень точное управление углом поворота ротора шагового двигателя относительно катушек — статора. Можно выделить два основных типа шаговых моторов: униполярные и биполярные шаговые двигатели.

В данной статье мы рассмотрим работу униполярного шагового двигателя 28-BYJ48 с драйвером ULN2003.

Uln2003apg схема подключения шагового двигателя 12в Uln2003apg схема подключения шагового двигателя 12в

Униполярные шаговые двигатели имеют пять или шесть контактов для подключения и четыре электромагнитные катушки в корпусе (если быть более точными, то две катушки, разделенные на четыре). Центральные контакты катушек соединены вместе и используются для подачи питания на двигатель. Эти шаговые моторы называются униполярными, потому-что питание всегда подается на один из этих полюсов.

Спецификация и драйвер шагового двигателя

Существуют разные модели драйверов (контроллеров) шаговых двигателей. Среди них можно выделить самые популярные в DIY разработках на базе Arduino: L293, ULN2003, A3967SLB.

Как правило, шаговый двигатель 28-BYJ48 используют в паре с драйвером ULN2003.

Спецификацию шагового двигателя 28-BYJ48 на английском языке вы можете скачать здесь. Краткие выдержки основных технических характеристик приведены ниже:

  • Напряжение питания: 5 В (постоянный ток);
  • Количество фаз: 4;
  • Количество шагов: 64;
  • Угол поврота на один шаг: 5.625 градуса
  • Частота: 100 Герц;
  • Частота холостого хода по часовой стрелке: > 600 Герц;
  • Частота холостого хода против часовой стрелки: > 1000 Герц;
  • Крутящий момент > 34.3 миллиньютон на метр;
  • Сопротивление вращению: 600-1200 грамм на сантиметр;
  • Класс элетробезопасности: A;

Внешний вид и схемы подключения ULN2003 приведены на изображениях ниже

Uln2003apg схема подключения шагового двигателя 12в Uln2003apg схема подключения шагового двигателя 12в Uln2003apg схема подключения шагового двигателя 12в Uln2003apg схема подключения шагового двигателя 12в

Примечание. Если вы захотите использовать плату L293 вместо ULN2003, красный контакт подключать не надо.

Uln2003apg схема подключения шагового двигателя 12в

Необходимые компоненты

Вам понадобятся:

  1. Микроконтроллер Arduino.
  2. Шаговый двигатель BYJ48 5В.
  3. Драйвер шагового двигателя ULN2003.
  4. Коннекторы.
  5. Источник питания 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 */

  1. #define IN1 8
  2. #define IN2 9
  3. #define IN3 10
  4. #define IN4 11
  5. int Steps = 0;
  6. boolean Direction = true;
  7. unsigned long last_time;
  8. unsigned long currentMillis ;
  9. int steps_left=4095;
  10. long time;
  11. void setup()
  12. {
  13. Serial.begin(115200);
  14. pinMode(IN1, OUTPUT);
  15. pinMode(IN2, OUTPUT);
  16. pinMode(IN3, OUTPUT);
  17. pinMode(IN4, OUTPUT);
  18. // delay(1000);
  19. }
  20. void loop()
  21. {
  22. while(steps_left>0){
  23. currentMillis = micros();
  24. if(currentMillis-last_time>=1000){
  25. stepper(1);
  26. time=time+micros()-last_time;
  27. last_time=micros();
  28. steps_left—;
  29. }
  30. }
  31. Serial.println(time);

Serial.println(«Wait…!»);

  • delay(2000);
  • Direction=!Direction;
  • steps_left=4095;
  • }
  • void stepper(int xw){
  • for (int x=0;x7){Steps=0;}
  • if(Steps
  • }

Видео работающего мотора приведено ниже:

Но есть и более интересный вариант — написать собственную библиотеку для шагового двигателя

Собственная библиотека для корректной работы 28BYJ-48 с ULN2003

Как уже было указано выше, стандартная библиотека Arduino для работы с шаговыми двигателями отрабатывает некорректно в связке с мотором 28BYJ-48 и драйвером ULN2003. При этом, эта модель двигателя и драйвер ULN2003 — качественная бюджетная связка для ваших проектов на Arduino.

Пример кода, рассмотренный выше, неплохой, но было бы хорошо организовать собственную отдельную библиотеку для работы с шаговым двигателем 28BYJ-48 и Arduino. Решение, представленное ниже, предполагает базовое понимание C++ и понимания принципов работы шаговых двигателей.

Шаг 1. Создаем файл StepperMotor.h

Начнем с написания класса StepperMotor.

Создайте файл с названием StepperMotor.h и скопируйте следующий код:

  1. #ifndef Stepper_h
  2. #define Stepper_h
  3. class StepperMotor {
  4. public:
  5. StepperMotor(int In1, int In2, int In3, int In4); // конструктор, который устанавливает inputs
  6. void setStepDuration(int duration); // Функция для установки длительности шага
  7. void step(int noOfSteps); // Делаем указанное количество шагов. + для одного направления и — для другого
  8. int duration; // длительность шага в мс
  9. int inputPins[4]; // номера input пинов
  10. };
  11. #endif

Даже если вы не сильны в C++, объявление класса говорит само за себя.

Шаг2. Создаем файл StepperMotor.cpp

Теперь давайте напишем интерфейс класса.

Создайте файл с названием StepperMotor.cpp вставьте в него код, представленный ниже.

  • #include
  • #include
  • StepperMotor::StepperMotor(int In1, int In2, int In3, int In4){
  • // Записываем номера пинов в массив inputPins
  • this->inputPins[0] = In1;
  • this->inputPins[1] = In2;
  • this->inputPins[2] = In3;
  • this->inputPins[3] = In4;
  • // Проходим в цикле по массиву inputPins, устанавливая каждый из них в режим Output
  • for (int inputCount = 0; inputCount < 4; inputCount++){
  • pinMode(this->inputPins[inputCount], OUTPUT);
  • }
  • duration = 50;
  • }
  • void StepperMotor::setStepDuration(int duration){
  • this->duration = duration;
  • }
  • void StepperMotor::step(int noOfSteps){
  • /*
  • * в данном 2D массиве хранится последовательность, которая
  • * используется для поворота. В строках хранится шаг,
  • * а в столбцах — текущий input пин
  • */
  • bool sequence[][4] = {{LOW, LOW, LOW, HIGH},
  • {LOW, LOW, HIGH, HIGH},
  • {LOW, LOW, HIGH, LOW},
  • {LOW, HIGH, HIGH, LOW},
  • {LOW, HIGH, LOW, LOW},
  • {HIGH, HIGH, LOW, LOW},
  • {HIGH, LOW, LOW, LOW},
  • {HIGH, LOW, LOW, HIGH}};
  • int factor = abs(noOfSteps) / noOfSteps; // Если noOfSteps со знаком +, factor = 1. Если noOfSteps со знаком -, factor = -1
  • noOfSteps = abs(noOfSteps); // Если noOfSteps был отрицательным, делаем его позитивным для дальнейших операций
  • /*
  • * В цикле ниже обрабатываем массив sequence
  • * указанное количество раз
  • */
  • for(int sequenceNum = 0; sequenceNum
  • for(int position = 0; (position < 8) && (position < (noOfSteps - sequenceNum*8)); position++){
  • delay(duration);
  • for(int inputCount = 0; inputCount < 4; inputCount++){
Читайте также:  Датчика давления воздуха 406 двигатель

digitalWrite(this->inputPins[inputCount], sequence[(int)(3.5-(3.5*factor)+(factor*position))][inputCount]);

  1. }
  2. }
  3. }
  4. }

Давайте посмотрим на конструктор на строчке 4. Мы начинаем с того, что добавляем выбранные пользователем пины в массив inputinputPins в строчках 6-9. В результате мы получаем простой и интуитивно понятный доступ к номерам пинов в дальнейшем коде.

  • В 12 строке мы пробегаемся по массиву inputinputPins и устанавливаем для каждого режим OUTPUT.
  • В 15 строке мы устанавливаем длительность шага по-умолчанию равной 15 мс.
  • В 18 строчке у нас функция-сеттер для установки длительности шага.

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

В 28 строчке мы объявляем частоту вращения с использованием 2-х мерного массива. Строки представляют шаг, столбцы — выходящие пины.

В 37 строчке рассчитывается значение переменной factor, которое равно +1 или -1 в зависимости от знака, который мы передали при указании шагов. Это значение используется для определения направления перебора массива, то есть, в результате, для изменения направления вращения.

  1. В 38 строчке мы присваем noOfSteps переменной позитивное значение.
  2. В 44 строке мы запускаем цикл, который будет отрабатывать для каждой последовательности оборотов, то есть в начале каждого 8-го щага.
  3. В 45 строке мы запускаем второй цикл, который пробегается по строкам в нашем массиве.
  4. В 46 строчке мы устанавливаем задержку в соответствии со спецификацией.
  5. В 47 строке мы пробегаемся по номерам пинов.
  6. В 48 строке мы передаем цифровой сигнал на текущий номер пина.
  7. Если переменная factor отрицательная, в 48-й строчке кода строки массива обрабатываются в противоположном порядке, то есть с низу вверх.

Доступ к библиотеке для шагового двигателя из Arduino IDE

  • Нам осталось добавить созданные файлы в папку библиотек Arduino IDE и мы сможем импортировать ее в любой наш проект.
  • Перейдите в папку:
  • C:Program Files (x86)Arduinolibraries
  • И создайте папку под названием StepperMotor.

Переместите созданные файлы .h и .cpp в созданную папку.

Теперь вы можете импортировать библиотеку в IDE (sketch > import library… > StepperMotor) с помощью директивы

#include

ULN2003 драйвер нагрузок на 7 каналов, ULN2803 — на 8 каналов

В 16-выводном корпусе ULN2003 размещены 7 транзисторов Дарлингтона, которые способны управлять нагрузками с током до 500 мА и напряжением до 50 В на канал.

Uln2003apg схема подключения шагового двигателя 12в

Спектр применений ULN2003 весьма широк:

  • логические буферы,
  • управление реле и электромагнитными клапанами,
  • управление шаговыми двигателями и щеточными двигателями постоянного тока,
  • управление светодиодными и газоразрядными индикаторами.

Основные параметры ULN2003А, ULN2004А

  • напряжение коллектор-эмиттер выходного ключа — 50 В,
  • пиковый ток коллектора — 500 мА,
  • суммарный ток всех каналов протекающий через общий вывод — 2,5 А,
  • диапазон рабочих температур -60°C..150°C.

На самом деле существует несколько типов похожих транзисторных сборок начнем с самой распространенной 2003 серии.

Схема одного из каналов в микросхемах ULN2003A, ULQ2003A и ULN2003AI

Uln2003apg схема подключения шагового двигателя 12в

Каждый из семи каналов содержит по два биполярных транзистора, резистор 2,7 кОм ограничивающий базовый ток, и два резистора на 7,2 кОм и 3 кОм защищающие транзисторы от открывания обратным током коллектора. Кроме того к схеме добавлены три защитных диода: первый защищает вход от отрицательного напряжения, два других защищают выход от отрицательного напряжения и от превышения напряжения на транзисторах выше питающего.

Наличие защитных выходных диодов актуально при работе на индуктивную нагрузку: диод для шунтирования обмотки реле или обмотки шагового двигателя уже встроен в микросхему и не нужно устанавливать внешний диод. А при использовании 7 каналов – 7 внешних диодов.

Управление ULN2003

Входная часть сборок ULN2003A, ULN2003AI, ULQ2003A спроектирована так чтобы работать совместно с ТТЛ и 3,3 В и 5 В К-МОП логикой.

ULN2002A создана для p-МОП логики.
Во входных цепях ULN2002A добавлен стабилитрон на 7 В и увеличено сопротивление базового резистора до 10,5 кОм, благодаря этому сборка может работать с входными напряжениями от 14 до 25 В.

Сборка ULN2004A, ULQ2004A предназначена для К-МОП логики с уровнем напряжений от 6 до 15В.
По сравнению с ULN2003, у ULN2004 просто увеличено сопротивление базового резистора до 10,5 кОм.

Uln2003apg схема подключения шагового двигателя 12в

Как можно видеть на структурной схеме, входы и выходы расположены напротив друг друга, что весьма удобно при разводке печатной платы.

Uln2003apg схема подключения шагового двигателя 12в

ULN2003 выпускается как для объемного монтажа: PDIP, так и для поверхностного: SOIC, SOP и TSSOP.

Схема включения ULN2003

Одной ULN2003 можно управлять сразу 7 нагрузками, но когда нету такого количества нагрузок, то для увеличения надежности можно объединять каналы. Например 1,2 каналы использовать для первой обмотки; 3,4 для второй обмотки, а 5,6,7 для третьей.

Uln2003apg схема подключения шагового двигателя 12в

Аналоги ULN2003

Разные зарубежные производители выпускают свои аналоги ULN2003: L203, MC1413, SG2003, TD62003. Так же есть и отечественный аналог: К1109КТ22.

8-ми канальный драйвер нагрузки ULN2803A, ULN2804A

Для работы с микроконтроллерами может быть более удобнымы 8-ми канальные драйверы. И у семиканальных ULN2003, ULN2004 есть их восьмиканальные братья ULN2803, ULN2804.

Uln2003apg схема подключения шагового двигателя 12в

Точно также как и ULN2003 — ULN2803 рассчитан на управление от ТТЛ-логики и низковольной К-МОП, а ULN2804 от К-МОП питающейся в диапазоне 6 .. 15 В. Отличия ULN280X от ULN200X только в дополнительном канале и 18-выводном корпусе.
У ULN2803А есть отечественный аналог: К1109КТ63.

Драйверы нагрузки ULN2023A, ULN2024A

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

Микросхема ULN2003. Описание, схема подключения, datasheet

Микросхема ULN2003 (ULN2003a) по сути своей является набором мощных составных ключей для применения в цепях индуктивных нагрузок. Может быть применена для управления нагрузкой значительной мощности, включая электромагнитные реле, двигатели постоянного тока, электромагнитные клапаны, в схемах управления различными шаговыми двигателями и другие.

Микросхема ULN2003 — описание

Uln2003apg схема подключения шагового двигателя 12в

Краткое описание ULN2003a. Микросхема ULN2003a — это транзисторная сборка Дарлингтона с выходными ключами повышенной мощности, имеющая на выходах защитные диоды, которые предназначены для защиты управляющих электрических цепей от обратного выброса напряжения от индуктивной нагрузки.

Каждый канал (пара Дарлингтона) в ULN2003 рассчитан на нагрузку 500 мА и выдерживает максимальный ток до 600 мА. Входы и выходы расположены в корпусе микросхемы друг напротив друга, что значительно облегчает разводку печатной платы.

[info]
Микросхема ULN2003
Готовый драйвер шагового двигателя на ULN2003
[/info]

ULN2003 относится к семейству микросхем ULN200X. Различные версии этой микросхемы предназначены для определенной логики.

В частности, микросхема ULN2003 предназначена для работы с TTL логикой (5В) и логических устройств CMOS.

Широкое применение ULN2003 нашло в схемах управления широким спектром нагрузок, в качестве релейных драйверов, драйверов дисплея, линейных драйверов и т. д. ULN2003 также используется в драйверах шаговых двигателей.

Структурная схема ULN2003

Uln2003apg схема подключения шагового двигателя 12в

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

Uln2003apg схема подключения шагового двигателя 12в

Характеристики

  • Номинальный ток коллектора  одного ключа — 0,5А;
  • Максимальное напряжение на выходе до 50 В;
  • Защитные диоды на выходах;
  • Вход адаптирован к всевозможным видам логики;
  • Возможность применения для управления реле.

Uln2003apg схема подключения шагового двигателя 12в

Аналог ULN2003

Ниже приводим список чем можно заменить ULN2003 (ULN2003a):

  • Зарубежный  аналог ULN2003 — L203, MC1413, SG2003, TD62003.
  • Отечественным аналогом ULN2003a — является микросхема  К1109КТ22.
Читайте также:  Двигатель 111 плита характеристики

Микросхема ULN2003 — схема подключения

Зачастую микросхему ULN2003 используют при управлении шаговым двигателем. Ниже приведена схема включения ULN2003a и шагового двигателя:

Uln2003apg схема подключения шагового двигателя 12вULN2003a — схема подключения

Дополнительное описание на русском языке ULN2003а приведено в datasheet.

Скачать datasheet ULN2003 на русском (167,0 KiB, скачано: 26 767)

Шаговый двигатель 28BYJ-48 с драйвером ULN2003 и Arduino UNO | РОБОТОША

Uln2003apg схема подключения шагового двигателя 12в

Шаговый двигатель может точно перемещаться на минимально возможный угол, называемый шагом. Для практических задач можно считать, что шаговый мотор немного похож на сервопривод. Можно задать ему повернуться в некоторое положение и можно рассчитывать получить достаточно стабильные результаты в нескольких повторных экспериментах. Обычно, сервоприводы ограничены углом поворота в диапазоне от 0 до 180°, шаговый же двигатель может вращаться непрерывно, подобно двигателю постоянного тока. Преимуществом шаговых двигателей является то, что можно достичь гораздо большей степени контроля над движением. К недостатком шаговых двигателей можно отнести несколько более сложное управление, чем в случаях с сервами или моторами постоянного тока.

28BYJ-48 — это маленький, дешевый, 5 вольтовый шаговый моторчик с редуктором. Передаточное число редуктора у него примерно 64:1, что позволяет получить вполне достойный крутящий момент для моторчика такого размера и скорость порядка 15 об/мин.

С некоторыми программными хитростями для постепенного ускорения можно достичь более 25 об/мин. Эти маленькие шаговики вместе с небольшой платкой-драйвером на базе м/сх ULN2003 для использования совместно c Arduino UNO можно приобрести здесь за сущие копейки.

Достаточно выгодное приобретение, если сравнивать с редукторным двигателем постоянного тока, контроллером двигателя и колесным энкодером!

Uln2003apg схема подключения шагового двигателя 12в

Размеры шагового двигателя 28BYJ-48

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

Тип мотора Униполярный шаговый двигатель
Число фаз 4
Подключение 5-выводов (к контроллеру двигателя)
Рабочее напряжение 5-12 вольт
Частота 100 Гц
Сопротивление по постоянному току 50 Ом ± 7%(25°C)
Частота под нагрузкой > 600 Гц
Частота на холостом ходу > 1000 Гц
Крутящий момент > 34.3 мН*м (120 Гц)
Момент самопозиционирования > 34.3 мН*м
Стопорящий момент 600-1200 г*см
Тяга 300 г*см
Сопротивление изоляции > 10 МОм (500 В)
Класс изоляции A
Шум < 35 дБ (120 Гц, без нагрузки, 10 см)
Режим шага Рекомендован полушаговый режим (8-шаговая управляющая сигнальная последовательность)
Угол шага Полушаговый режим: 8-шаговая управляющая сигнальная последовательность (рекомендовано). 5.625 градусов на шаг, 64 шага на оборот внутреннего вала мотора. Режим полного шага: 4-шаговая управляющая сигнальная последовательность. 11.25º/шаг, 32 шага на оборот внутреннего вала двигателя.
Передаточное отношение редуктора Производителем заявлено 64:1. Однако, некоторые пытливые товарищи с форума Arduino разобрали редуктор и определили, что, в действительности передаточное число равно 63.68395:1. Это означает, что в рекомендованном полушаговом режиме мы имеем: 64 шага на оборот мотора помноженное на передаточное число 63.684 ≈ 4076 шагов на полный оборот.
Подключение к контроллеру ULN2003 A (синий), B (розовый), C (желтый), D (Оранжевый), E (красный, средний вывод обмоток)
Вес 30г

Двигатель имеет четыре обмотки, которые запитываются последовательно, чтобы повернуть вал с магнитом.

Uln2003apg схема подключения шагового двигателя 12в

Подключение выводов шагового двигателя 28BYJ-48

Когда используется полношаговый метод управления, две из четырех обмоток запитываются на каждом шаге. Идущая вместе с Arduino IDE библиотека Stepper использует такой способ.

В техническом руководстве к 28BYJ-48 сказано, что предпочтительным является использование метода полушага, при котором сначала запитывается только 1 обмотка, затем вместе первая и вторая обмотки, затем только вторая обмотка и так далее.

С 4 обмотками это дает 8 различных сигналов, как показано в таблице ниже.

Провод→ Направление вращения по часовой стрелке (1-2 фазы)
1 2 3 4 5 6 7 8
4 Оранжевый
3 Желтый
2 Розовый
1 Синий

Подключение драйвера шагового двигателя ULN2003 к Arduino Uno

Плата драйвера шагового двигателя на базе микросхемы ULN2003, представляющей собой массив транзисторов, включенных по схеме Дарлингтона, позволяет достаточно просто управлять мотором 28BYJ-48, используя микроконтроллер.

В нашем случае, в качестве управляющего микроконтроллера мы выберем плату Arduino Uno с микроконтроллером ATmega328.

Помимо самой микросхемы ULN2003AN, на плате имеется пятиконтактный разъем для подключения к шаговику и четыре светодиода, показывающих, какая из обмоток запитана в текущий момент времени.

Uln2003apg схема подключения шагового двигателя 12в

Плата управления на базе ULN2003

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

Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А.

Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.

Подключите выводы IN1, IN2, IN3 и IN4 к пинам 3, 4, 5 и 6 Arduino Uno. Положительный контакт источника питания необходимо подключить к выводу, помеченному как «+», а землю источника питания к выводу «-» на плате контроллера. Если для питания Arduino и мотора используются различные источники питания, то необходимо объединить выводы «земля» источников вместе.

Библиотека AccelStepper

Стандартная библиотека Stepper, идущая с Arduino IDE, поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Использовать ее можно только в очень простых приложениях, в которых используется только один мотор. Применение библиотеки Stepper для управления 28BYJ-48 является не самым эффективным решением.

Есть решение получше — это использовать библиотеку Accel Stepper. Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.

  • Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей
  • Поддержка ускорения и замедления
  • Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора
  • Функции API не используют функцию delay и не прерывают работу
  • Поддержка выбора функции для реализации шага позволяет работать совместно с библиотекой AFMotor
  • Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967)
  • Поддержка низких скоростей
  • Расширяемый API
  • Поддержка подклассов

Как установить библиотеку в Arduino IDE.

Представленный ниже код медленно ускоряет мотор 28BYJ-28 в одном направлении, затем замедляется до остановки и вновь ускоряется, но уже вращаясь в противоположном направлении.

#include

#define HALFSTEP 8

// Определение пинов для управления двигателем
#define motorPin1 3 // IN1 на 1-м драйвере ULN2003
#define motorPin2 4 // IN2 на 1-м драйвере ULN2003
#define motorPin3 5 // IN3 на 1-м драйвере ULN2003
#define motorPin4 6 // IN4 на 1-м драйвере ULN2003

// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

void setup(){
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(100.0);
stepper1.setSpeed(200);
stepper1.moveTo(20000);
}

void loop(){
// Изменяем направление, если шаговик достигает заданного положения
if(stepper1.distanceToGo()==0)
stepper1.moveTo(-stepper1.currentPosition());
stepper1.run();
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  1. #include
  2. #define HALFSTEP 8  
  3. // Определение пинов для управления двигателем
  4. #define motorPin1  3 // IN1 на 1-м драйвере ULN2003
  5. #define motorPin2  4 // IN2 на 1-м драйвере ULN2003
  6. #define motorPin3  5 // IN3 на 1-м драйвере ULN2003
  7. #define motorPin4  6 // IN4 на 1-м драйвере ULN2003
  8. // Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
  9. // для использования AccelStepper с 28BYJ-48
  10. AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
  11. void setup(){

  stepper1.setMaxSpeed(1000.0);  stepper1.setAcceleration(100.0);

  •   stepper1.setSpeed(200);
  •   stepper1.moveTo(20000);
  • }
  • void loop(){
  •   // Изменяем направление, если шаговик достигает заданного положения
  •   if(stepper1.distanceToGo()==0)

    stepper1.moveTo(-stepper1.currentPosition());  stepper1.run();}

Ссылка на основную публикацию
Adblock
detector