Usb управление шагового двигателя схема
#21. Подключаем к Arduino Шаговый двигатель 28BYJ-48 на драйвере ULN2003
Сегодня в уроке подключим шаговый двигатель 28BYJ-48 к Arduino и научимся вращать вал двигателя в разные стороны и изменять скорость вращения с помощью потенциометра и энкодера KY-040.
Кратко, что такое шаговый двигатель (ШД) — это двигатель, который способен осуществлять вращение на 1 шаг. Шаг — это угол, который обусловлен устройством каждого конкретного шагового двигателя.
Характеристики шагового двигателя 28BYJ-48:
Размера шагового двигателя 28BYJ-48. Необходимы при проектировании деталей для 3D печати.
Вот так выглядит схема шагового двигателя 28BYJ-48
Подавая сигналы в определённом порядке на выводы двигателя, двигатель можно вращать по часовой стрелке.
Для шагового режима.
Для полушагового режима.
Прямое подключение шагового двигателя 28BYJ-48 к Arduino.
В связи с тем, что двигатель 28BYJ-48 работает от 5в и при небольших токах, его можно подключить на прямую к Arduino.
Схема подключения к Arduino UNO будет следующая.
Для вращения ШД достаточно подавать сигналы по схеме, которую мы рассмотрели выше.
Для этого можно сделать массив подачи сигнала на пины микроконтроллера.
И в цикле выполнять каждую строчку массива. Но есть решение с более компактным кодом. Нашел я данный пример на канале Дмитрия Осипова. За что ему отельное спасибо!
Код для вращения в одну и в другую сторону будет вот таким.
ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!
Пример подключения шагового двигателя 28BYJ-48 (5V)с использованием драйвер ULN2003.
Также у Дмитрия Осипова есть код для изменения скорости вращения с помощью потенциометра. Я его немного доработал, сделал обработку нажатия кнопки без задержки в 500 мс. Сейчас двигатель стал вращаться в обратную сторону без видимой задержки.
Для подключения буду использовать модуль SBT0811 на драйвере ULN2003.
Драйвер устроен вот таким образом.
Соответственно, наш код будет работать и с данным драйвером.
Подключим все по схеме и загрузим код в Arduino NANO.
Схема подключения для Arduino UNO будет аналогичной.
Как видим, двигатель без проблем вращается по часовой стрелке и против часовой, при нажатии на кнопку вращается в противоположном направлении. При вращении потенциометра в одну сторону — скорость уменьшается, при вращении в противоположном направлении скорость увеличивается.
ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!
Пример управления шаговым двигателем 28BYJ-48 с помощью Энкодера.
Для уменьшения количества элементов в схеме решил заменить потенциометр и тактовую кнопку на энкодер вращения KY-040. Как подключить энкодер вращения к Arduino рассказывал в предыдущем уроке.
Подключаем шаговый двигатель 28BYJ-48 и энкодер к Arduino по схеме.
Проводим небольшую доработку кода и получим вот такой результат.
Если нажать на энкодер, меняется направление вращения. А при вращении энкодера по часовой стрелке — скорость увеличивается. Если вращать против часовой стрелки — скорость снижается.
ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!
Вы также можете без проблем воспользоваться примером из стандартной библиотеки Stepper, которая позволит сделать тоже самое и при меньшем объёме кода. Но библиотека не даст вам понять, как это все устроено.
А вот сам пример вращения в одну сторону, а затем в другую с использованием библиотеки Stepper.
На основе данного примера можно реализовать управление не только одним шаговым двигателем, а несколькими. Причем, каждый двигатель будет выполнять свои действия не зависимо от других. В планах сделать пару проектов с использованием данного шагового двигателя.
Пишите в комментариях, что бы вы хотели сделать на шаговых двигателях, и какие примеры вас интересуют. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке
Понравилась статья? Поделитесь ею с друзьями:
Системы и схемы управления шаговыми двигателями без обратной связи
Одной из наиболее важных проблем при использовании ШД является разработка систем управления без обратной и с обратной связью по положению ротора. В этой главе рассмотрены системы управления без обратной связи.
5.1. Система управления
Простая система управления для ШД показана на схеме рис. 5.1.
Рис. 5.1. Схема системы управления ШД: 1 — логический блок; 2 — коммутатор; 3 — двигатель; 4 — входной контроллер.
Для удобства объяснения она разделена на две части, ШД в примере четырехфазный на рис. 5.1, а представлена часть системы управления от логического блока до двигателя.
Сигнал управления, приходящий на логический блок, обеспечивает подачу сигнала управления на коммутатор, тем самым способствуя перемещению ротора двигателя на один шаг. Направление вращения определяется логическим состоянием входа, т.е. Н-уровень для вращения по часовой стрелке и L-уровень против часовой стрелки. В некоторых случаях применяются логические блоки с не зависящим от направления выходным сигналом. Если один инкремент движения осуществляется за один шаг, то на схеме рис. 5.1, а представлена вся система управления. Но если шагов два или больше, то перед логическим блоком необходимо поставить еще одно устройство для создания соответствующей инкременту цепочки входных импульсов. Это устройство называется входным контроллером (рис. 5.1, б). В сложных случаях функцию входного контроллера выполняют такие электронные устройства, как микропроцессоры, которые генерируют цепочки импульсов для ускорения или замедления движения оптимальным образом. В гл. 5 будут рассмотрены элементы логических блоков, а затем устройств коммутаторов и входных контроллеров. В заключение приведен пример использования микропроцессора в схеме управления без обратной связи.
5.2. Логические блоки системы управления
Логический блок — это логическая схема, которая управляет последовательностью возбуждения обмоток в соответствии с поступлением входных импульсов. Обычно логический блок состоит из регистра сдвига и логических схем (функций) таких, как НЕ-И, НЕ-ИЛИ и т.д. В настоящее время в качестве регистра сдвига применяют универсальные схемы. Однако для конкретных целей можно сконструировать необходимый логический блок подбором соответствующей интегральной микросхемы, реализующей триггер с логическим входом, срабатывающий по обратному фронту сигнала управления (триггеры JK-FF), и логических схем. Базисные функции схем и триггеров приведены на рис. 5.2.
Рис. 5.2. Логические блоки и их функции
Триггер JK-FF реализует функцию, задаваемую таблицей и выполняемую тогда, когда на вход* поступает сигнал Н. Если на вход* поступает сигнал L, то на выходе О будет сигнал L, а на Q — Н. Поэтому вместо составления логического блока из набора соответствующих интегральных микросхем можно использовать универсальные логические блоки, разработанные для ШД.
Рассмотрим несколько типов логических блоков, состоящих из интегральных микросхем с транзисторно-транзисторной логической схемой (TTL), изготовленных по КМОП — технологии.
5.2.1. Двухфазное управление четырехфазным двигателем.
Для случая без указаний направления вращения ротора простой логический блок можно построить с помощью лишь двух триггеров JK-FF, как показано на рис. 5.3.
SamPawno
- Темы без ответов
- Активные темы
- Поиск
- Наша команда
Работа с шаговым мотором 28BYJ-48 и драйвером ULN2003
- Версия для печати
#1 Дим » 14 мая 2019, 19:45
Сегодня вы узнаете о четырехфазном шаговом двигателе 28BYJ-48, работающим от постоянного напряжения 5 Вольт. Также существует его модификация на 12 Вольт. Двигатель потребляет значительный ток, а это значит, что мы не можем подключить его напрямую к выводам Arduino. Воспользуемся для этого драйвером двигателя на микросхеме ULN2003.
Технические параметры двигателя 28BYJ-48
Модель: 28BYJ-48
Тип двигателя: Униполярный
Напряжение питания: 5 Вольт, DC
Количество фаз: 4
Частота: 100 Гц
Сопротивление: 50Ω ± 7% (при 25 ℃)
Общие сведения о движке
4-х фазный шаговый двигатель 28BYJ-48 — это бесколлекторный двигатель, имеющий дискретное перемещение (вращение вала осуществляется шагами). На роторе (валу), расположен магнит, а вокруг него находятся катушки. Подавая поочередно ток на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, заставляя двигатель вращаться. Такая конструкция позволяет с большой точностью управлять валом, относительно катушек. Принципиальная схема четырехфазного шагового двигателя 28BYJ-48 приведена ниже.
Двигатель называется четырех фазным, из-за того, что в нем содержится две обмотки, которые, в свою очередь, разделены на четыре. (Это отражено на схеме выше). Центральные отводы катушек подключены вместе и служат для питания двигателя. Так как каждая обмотка подключена к питанию, такие двигатели называют униполярными. На роторе 28BYJ-48 расположено 8 магнитов, с чередующимися полюсами (то есть, четыре магнита с двумя полюсами).
На рисунке видно, что внутри расположен редуктор, с примерным передаточным числом в 1:64, если быть точнее 1:63,68395. Это значит, что двигатель за один оборот осуществляет 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 можно ознакомиться на рисунке ниже
IN1 . . . IN7: Вход 1 … 7
1 — GND: «-» питание модуля
2 — Vcc: «+» питание модуля (5В или 12В)
3 — Vcc: «+» питание модуля (перемычка, только при 5В)
4 — Vcc: «+» питание модуля (перемычка, только при 5В)
A . . . G: Выход 1 … 7
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. Схема довольно простая, необходимо всего 6 проводов. Вначале подключаем интерфейсные провода, 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 и копируем скетч. Если все правильно сделать, двигатель начнет вращаться.
Пример программы для работы с двигателем 28BYJ-48
#include // Подключаем библиотеку CustomStepper
CustomStepper stepper ( 2 , 3 , 4 , 5 ); // Указываем пины, к которым подключен драйвер шагового двигателя
boolean rotate1 = false ; // Переменная для смены режимов
boolean rotatedeg = false ; // Переменная для смены режимов
boolean crotate = false ; // Переменная для смены режимов
void setup ()
<
stepper . setRPM ( 10 ); // Устанавливаем количество оборотов в минуту
stepper . setSPR ( 4075.7728395 ); // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
>
Управление шаговым двигателем с помощью PC
(Ниже описана несложная разработка, позволяющая управлять шаговым двигателем, подключенным к LPT порту IBM-совместимого компьютера.)
Параллельный порт является великолепным интерфейсом, позволяющим подключать к персональному компьютеру множество самых различных устройств. Однако он может быть легко поврежден, поэтому при его использовании для подсоединения самодельных внешних устройств нужно быть очень внимательным. Если вы не уверены в том, что вы все делаете правильно, сначала проконсультируйтесь у специалистов и только потом экспериментируйте. Ниже приводится краткое описание параллельного порта. Параллельный порт имеет несколько линий ввода/вывода, которые могут быть разделены на две группы — линии передачи данных и линии сигналов управления. Линии передачи данных — двунаправленные (разумеется, речь идет о режимах ЕСР/ЕРР), и именно их мы и будем использовать. В табл.1 описано назначение выводов разъема порта LPT.
Назад
№ выв. | Назва-ние | Направ-ление | Описание |
---|---|---|---|
1 | STROBE | ввод и вывод | устанавливается PC после завершения каждой передачи данных |
2/9 | DO-D7 | вывод | 8 линий данных |
10 | АСК | ввод | устанавливается в «0» внешним устройством после приема байта |
11 | BUSY | ввод | устройство показывает, что оно занято, путем установки этой линии в «1» |
12 | Paper out | ввод | для принтеров |
13 | Select | ввод | устройство показывает, что оно готово, путем установки на этой линии «1 » |
14 | Autofeed | Ввод и вывод | |
15 | Error | ввод | индицирует об ошибке |
16 | Initialize | Ввод и вывод | |
17 | Select In | Ввод и вывод | |
18-25 | Ground | GND | общий провод |
Вперед
Прим. переводчика: я использовал шаговый двигатель от русского дисковода. Тип двигателя: ПБМГ-200-265Ф. Для определения выводов применялся тестер. При этом я зарисовал схему обмоток, фиксируя на ней измеренные сопротивления. Оказалось, что двигатель имеет четыре обмотки. Две обмотки соединены друг с другом и имеют общий провод белого цвета, вторые выводы этих обмоток красного и зеленого цвета. Две другие обмотки также соединены друг с другом и имеют общий провод черного цвета, вторые выводы этих обмоток голубого и желтого цвета. Если соединить белый и черный провода, получается практически та же схема, что и описанная в оригинальной статье. Порядок подключения выводов я определил опытным путем.
Для управления шаговым двигателем можно использовать микросхему драйвера ULN2003, которая содержит семь мощных транзисторных ключей, собранных по схеме Дарлингтона. Каждый ключ способен управлять нагрузкой с током потребления до 500 мА. Микросхема имеет резисторы в цепи базы, что позволяет напрямую подключить ее входы к обычным цифровым микросхемам. Все эмиттеры соединены вместе и выведены на отдельный вывод. На выходах транзисторных ключей имеются защитные диоды, что позволяет управлять с помощью этой микросхемы индуктивными нагрузками при минимуме внешних компонентов. В нашей конструкции использовано только четыре транзисторных ключа. Электрическая схема подключения шагового двигателя показана на рис. 2.
Обратите внимание, что первый вывод шагового двигателя, идентифицированный с помощью описанной ранее процедуры, подсоединен к линии DO параллельного порта (разумеется, через микросхему ULN2003). Каждый следующий вывод подсоединен к соответствующему выводу параллельного порта. Если порядок подключения выводов шагового двигателя неверный, вал мотора будет не вращаться, а лишь поворачиваться на небольшой угол из одной стороны в другую и наоборот. Общий провод схемы подсоединен к источнику питания не напрямую, а через стабилитрон. Это сделано с целью защиты схемы от напряжения ЭДС самоиндукции, возникающего в катушках при резком выключении напряжения питания схемы.
Программа, разработанная для описываемого устройства, достаточно проста. Она управляет выводами порта и формирует на них специальную последовательность импульсов. Эта последовательность показана в табл. 2 и 3.
Различие между алгоритмами (полным и половинным углом поворота вала на один шаг) состоит в том, что во втором случае скорость вращения оказывается в два раза ниже, при этом в два раза уменьшается угол поворота вала двигателя на каждом шаге, т. е. увеличивается разрешающая способность системы. Также во втором случае примерно в два раза увеличивается потребляемая мощность, и кроме того, двигатель способен развивать в два раза больший крутящий момент.
Для изменения направления вращения вала двигателя необходимо формировать указанные последовательности в обратном порядке.
№ шага | DO | D1 | D2 | D3 |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
№ шага | DO | D1 | D2 | D3 |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 1 | 1 | 0 |
5 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 1 |
8 | 0 | 0 | 0 | 1 |
Ниже приведен короткий пример программы для Turbo С, работающей в операционной системе MS-DOS. Эта программа заставляет шаговый двигатель вращаться в прямом направлении, в режиме полного угла на один шаг.