Меню

Схема драйвера шагового двигателя uln2003

«Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003» — Урок № 8

Скоро на моём канале в YOUTUBE появится новый урок «Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003».

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

  • Номинальное напряжение: 5 В
  • Угол шага 5,625 ° / 64
  • Передаточное отношение редуктора:1/64
  • Частота 100 Гц/> Сопротивление постоянному току 50Ω ± 7% (25 ℃)
  • Крутящий момент> 34.3mN.m (120 Гц)
  • Момент трения 600-1200 gf.cm
  • Класс изоляции 600VAC/1mA/1s
  • Шум Пример из видеоурока

Новости

На выставке CES 2020 также было представлено новое поколение плат Arduino Portenta. Оно было разработано на требовательные промышленные приложения. Portenta H7 поддерживает код Arduino, Python и JavaScript, что делает его доступным для разработчиков с различными знаниями языков .

Производитель Arduino запускает новую серию плат Nano — Arduino Nano 33 BLE. Платы имеют те же размеры, что и плата Ардуино Нано, на чипе U-blox NINA-B306 с микроконтроллером Nordic nRF52840 и беспроводным модулем Bluetooth BLE

Последнее из блога

Научим сервомотор вращаться по заданной программе. Подключим к Ардуино сервомотор. Запишем значения углов поворота, на SD карту, а потом сервомотор будет следовать этим значения. Будем для примеров использовать два сервомотора sg90. Иногда их ещё называют сервоприводы. Управления сервомотором будет программно и так можно создать робота или станок с ЧПУ.

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

Обзор шагового двигателя 28BYJ-48 с драйвером ULN2003

Автор: Сергей · Опубликовано 29.08.2017 · Обновлено 11.01.2021

Сегодня расскажу о 4-х фазном шаговом двигателе 28BYJ-48, работающим от постоянного напряжения 5В (существует модификация на 12В). Так как двигатель потребляет значительный ток, мы не можем подключить его напрямую к выводам Arduino UNO, для этого воспользуемся так называемый «Драйвером двигателя» основанном на микросхеме ULN2003.

Технические параметры 28BYJ-48

► Модель: 28BYJ-48
► Тип шагового двигателя: Униполярный
► Напряжение питания: 5 В, DC
► Количество фазы: 4
► Частота: 100 Гц
► Сопротивление постоянного тока: 50Ω ± 7% (25 ℃)

Общие сведения

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

Из принципиальной схемы видно, что в двигателе содержится две обмотки, которые в свою очередь разделены на четыре, из-за этого и название 4-х фазный. Центральные отводы катушек подключены вместе и служат для питания двигателя, так-как каждая обмотка подключена к питанию, такие двигатели называют униполярный. На валу 28BYJ-48 расположено 8 магнитов, с чередующими полюсами (то есть, четыре магнита с двумя полюсами).

Из рисунка видно, что внутри расположен редуктор, с примерным передаточным числом в 1:64. Это означает, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).

Режим работы:
Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.
Полношаговый режим — за 1 такт, ротор делает 1 шаг.
Полушаговый режим — за 1 такт, ротор делает ½ шага.
Ниже переставлена таблица последовательности тактов:

Модуль шагового двигателя ULN2003:
Цифровой вывод микроконтроллера может выдать ток

40 мА, а одна обмотка 28BYJ-48 в пике потребляем

320 мА, следовательно если подключить двигатель напрямую, микроконтроллер сгорит. Для защиты был разработан «Модуль шагового двигателя ULN2003″, в котором используется микросхема ULN2003A (по сути, состоящая из 7 ключей), позволяющая управлять нагрузкой до 500 мА (один ключ). Данный модуль может работать с 5В и 12В двигателем 28BYJ-48, для переключения необходимо установить или убрать перемычку (по умолчанию перемычка установлена, питание 5В).

Принципиальную схему модуля ULN2003 можно посмотреть на рисунке ниже

Назначение X1
IN1 . . . IN7: Вход 1 … 7 Назначение X2
► 1 — GND: «-» питание модуля
► 2 — Vcc: «+» питание модуля (5В или 12В)
► 3 — Vcc: «+» питание модуля (перемычка, только при 5В)
► 4 — Vcc: «+» питание модуля (перемычка, только при 5В)

Назначение X3
► A . . . G: Выход 1 … 7

Назначение X3
► 1 — Питание
► 2 — A
► 3 — B
► 4 — C
► 5 — D

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

Необходимые детали:
Arduino UNO R3 x 1 шт.
Модуль драйвера шагового двигателя ULN2003 x 1 шт.
Шаговый двигатель 28BYJ-48-5V (5В) x 1 шт.
Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
Кабель USB 2.0 A-B x 1 шт.

Подключение:
В данном примере буду использовать модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V. Схема не сложная, необходимо всего шесть провода, сначала подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к VIN (не для постоянного использовании), подключаем разъем двигателя в модуль ULN2003. Схема собрана, теперь надо подготовить программную часть.

Для вращения двигателя по часовой и против часовой стрелки, используем библиотеку «CustomStepper«. Данная библиотека не входит в стандартную среду разработки Arduino IDE, так что скачиваем и добавляем ее. Далее, запускаем среду разработки IDE и копируем скетч (для удобства, добавлю файл для скачивания), если все правильно сделали, двигатель начнет вращаться.

Выходной драйвер ULN2003 для микроконтроллеров. Описание, подключение, datasheet на русском

в Управление 0 6,573 Просмотров

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

Каждый драйвер состоит из двух транзисторов подключенных в конфигурации Дарлингтона. Пара Дарлингтона, разработанная Сидни Дарлингтоном в 1953 году, состоит в каскадом соединении двух биполярных транзисторов, в результате чего получается очень высокий коэффициент усиления, равный произведению коэффициента усиления каждого из двух транзисторов. Благодаря этому мы можем управлять нагрузками определенной мощности с очень малыми входными токами.

Пара Дарлингтона не свободна от некоторых недостатков, которые мы рассмотрим далее. Транзистор NPN универсального назначения открывается, когда мы подаем на его базу напряжение около 0,6 В. Если мы используем небольшой ток, мы можем довести его до насыщения с очень низким напряжением коллектор-эмиттер (VCE), например, в случае BC337, это между 0,2 В и 0,5 В.

В паре Дарлингтона входное напряжение будет в два раза больше, чем 0,6 В, потому что базовые напряжения обоих транзисторов складываются, как мы это можем видеть на рисунке. Также падение напряжения на выходном транзисторе будет больше, потому что это будет сумма напряжения насыщения первого транзистора + напряжение база-эмиттер выходного транзистора.

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

На предыдущем рисунке мы видим внутреннюю схему одного из каналов драйвера ULN2003. Здесь мы видим входной резистор на 2,7кОм, и еще два дополнительных резистора которые улучшают характеристики драйвера. Входное сопротивление каждого канала освобождает нас от установки внешних резисторов при подключении ULN2003 к микроконтроллеру.

Во внутренней схеме мы также можем видеть защитный диод, подключенный к коллектору выходного транзистора. Данный диод предназначен для защиты транзистора от ЭДС самоиндукции, возникающей в момент отключения индуктивной нагрузки (реле или двигателей). Чтобы этот диод работал, необходимо подключить вывод 9 (COM) к положительному выводу нагрузки (см. Рисунок с примером подключения).

Коэффициент усиления каждого драйвера больше 500, поэтому для получения максимального выходного тока достаточно на вход подать ток менее 1 мА.

На рисунке мы видим ULN2003, подключенный к микроконтроллеру (это могут быть PIC, Atmel, Arduino, Raspberry PI) и с различными нагрузками (двигатели постоянного тока, светодиодная лента, реле и т. д.).

В верхней части примера (подключение двигателя) мы видим, что для получения большего выходного тока можно параллельно соединять более одного канала. Вывод (+ V) – это напряжение, необходимое для питания силовой части и не связано с питанием микроконтроллера. Необходимо только, чтобы масса их была общей.

Микросхема ULN2003 является частью семейства подобных драйверов: ULN2001, ULN2002, ULN2003, ULN2004, которые очень похожи. Различие в первую очередь в значении входного сопротивления для согласования с различной логикой.

В настоящее время микросхема ULN2003 является наиболее популярной, поскольку она хорошо работает с управляющими напряжениями 5 В (TTL) и 3,3 В (LTTL). Существует вариант с 8 каналами вместо 7 – это ULN2803. Из-за восьмого канала корпус имеет 18 выводов. В остальном он подобен ULN2003.

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

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, красный контакт подключать не надо.

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

  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 */

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)\Arduino\libraries

И создайте папку под названием StepperMotor.

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

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

Читайте также:  Масло tc w3 для лодочного мотора luxe
Adblock
detector