- Шаговый двигатель
- Вращение шагового двигателя с помощью ARM7-LPC2148
- Необходимые компоненты
- Шаговый двигатель (28BYJ-48)
- ULN2003 Драйвер шагового двигателя
- Принципиальная электрическая схема
- Программирование ARM7-LPC2148 для шагового двигателя
В современном мире автоматизации шаговый двигатель и серводвигатель - два наиболее часто используемых двигателя во встроенных системах. Оба используются в различных машинах автоматизации, таких как роботизированные манипуляторы, станки с ЧПУ, камеры и т. Д. В этом руководстве мы увидим, как взаимодействовать с шаговым двигателем с ARM7-LPC2148 и как управлять его скоростью. Если вы новичок в ARM7, начните с изучения ARM7-LPC2148 и его инструментов программирования.
Шаговый двигатель
Шаговый двигатель - это бесщеточный двигатель постоянного тока, который можно вращать на небольшие углы, эти углы называются ступенями. Мы можем вращать шаговый двигатель шаг за шагом, подавая на его контакты цифровые импульсы. Шаговые двигатели недорогие и имеют прочную конструкцию. Скорость двигателя можно контролировать, изменяя частоту цифровых импульсов.
В зависимости от типа обмотки статора доступны два типа шаговых двигателей: УНИПОЛЯРНЫЙ и БИПОЛЯРНЫЙ. Здесь мы используем шаговый двигатель UNIPOLAR, который является наиболее часто используемым шаговым двигателем . Чтобы вращать шаговый двигатель, нам нужно последовательно запитать катушки шагового двигателя. В зависимости от режима вращения они подразделяются на два режима:
- Полношаговый режим: (4-шаговая последовательность)
- Однофазный шаговый режим (WAVE STEPPING)
- Двухфазный шаг
- Полушаговый режим (8-шаговая последовательность)
Чтобы узнать больше о шаговом двигателе и его работе, перейдите по ссылке.
Вращение шагового двигателя с помощью ARM7-LPC2148
Здесь мы будем использовать режим FULL STEP: ONE PHASE ON или WAVE STEPPING для вращения шагового двигателя с ARM7-LPC2148.
В этом методе мы будем возбуждать только одну катушку (один вывод LPC2148) за раз. То есть, если на первую катушку A подается напряжение на короткое время, вал изменит свое положение, а затем на катушку B будет подано напряжение на то же время, и вал снова изменит свое положение. То же самое, на катушку C, а затем на катушку D подается напряжение для дальнейшего перемещения вала. Это заставляет вал шагового двигателя пошагово вращаться, запитывая одну катушку за раз.
С помощью этого метода мы пошагово вращаем вал, последовательно запитывая катушку. Это называется четырехэтапной последовательностью, поскольку она состоит из четырех шагов.
Вы можете вращать шаговый двигатель, используя метод ПОЛУШАГА (метод 8 последовательностей) в соответствии со значениями, приведенными ниже.
Шаг |
Катушка А |
Катушка B |
Катушка C |
Катушка D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Необходимые компоненты
Оборудование:
- ARM7-LPC2148
- ULN2003 Драйвер двигателя IC
- LED - 4
- ШАГОВЫЙ ДВИГАТЕЛЬ (28BYJ-48)
- ДОСКА
- СОЕДИНИТЕЛЬНЫЕ ПРОВОДА
Программного обеспечения:
- Keil uVision5
- Инструмент Flasic Magic
Шаговый двигатель (28BYJ-48)
Шаговый двигатель 28BYJ-48 уже показан на картинке выше. Это униполярный шаговый двигатель, для которого требуется питание 5 В. Двигатель имеет униполярное устройство с 4 катушками, и каждая катушка рассчитана на + 5 В, поэтому им относительно легко управлять с помощью любых микроконтроллеров, таких как Arduino, Raspberry Pi, STM32, ARM и т. Д.
Но нам нужна микросхема привода двигателя, такая как ULN2003, чтобы управлять ею, потому что шаговые двигатели потребляют большой ток и могут повредить микроконтроллеры.
Технические характеристики 28BYJ-48 приведены в таблице ниже:
Также проверьте взаимодействие шагового двигателя с другими микроконтроллерами:
- Взаимодействие шагового двигателя с Arduino Uno
- Управление шаговым двигателем с Raspberry Pi
- Интерфейс шагового двигателя с микроконтроллером 8051
- Взаимодействие шагового двигателя с микроконтроллером PIC
- Подключение шагового двигателя к MSP430G2
Шаговым двигателем также можно управлять без микроконтроллера, см. Эту схему драйвера шагового двигателя.
ULN2003 Драйвер шагового двигателя
Большинство шаговых двигателей работают только с помощью модуля драйвера. Это связано с тем, что модуль контроллера (в нашем случае LPC2148) не сможет обеспечить достаточный ток от своих контактов ввода / вывода для работы двигателя. Поэтому мы будем использовать внешний модуль, такой как модуль ULN2003, в качестве драйвера шагового двигателя.
В этом проекте мы будем использовать микросхему драйвера двигателя ULN2003. Схема выводов ИС приведена ниже:
Контакты (IN1 - IN7) - это входные контакты для подключения выхода микроконтроллера, а OUT1 - OUT7 - соответствующие выходные контакты для подключения входа шаговых двигателей. На COM подается положительное напряжение источника, необходимое для устройств вывода и для внешнего источника питания.
Принципиальная электрическая схема
Принципиальная схема сопряжения шагового двигателя с ARM-7 LPC2148 приведена ниже.
ARM7-LPC2148 с микросхемой драйвера двигателя ULN2003
Контакты GPIO LPC2148 (P0.7 - P0.10) рассматриваются как выходные контакты, которые связаны с входными контактами (IN1-IN4) микросхемы ULN2003.
LPC2148 контакты |
ШТИФТЫ ULN2003 IC |
P0.7 |
В 1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
Стр.10 |
IN4 |
5В |
COM |
GND |
GND |
Соединения ИМС ULN2003 с шаговым двигателем (28BYJ-48)
Выходные контакты (OUT1-OUT4) микросхемы ULN2003 подключены к контактам шагового двигателя (синий, розовый, желтый и оранжевый).
ULN2003 IC PINS |
ШТИФТЫ ШАГОВОГО ДВИГАТЕЛЯ |
OUT1 |
СИНИЙ |
OUT2 |
РОЗОВЫЙ |
OUT3 |
ЖЕЛТЫЙ |
OUT4 |
АПЕЛЬСИН |
COM |
КРАСНЫЙ (+ 5В) |
Светодиоды с IN1 по IN4 ULN2003
Четыре контакта анода светодиодов (LED1, LED2, LED4, LED 4) подключены к контактам IN1, IN2, IN3 и IN4 ULN2003 соответственно, а катоды светодиодов подключены к GND, который должен указывать импульсы от LPC2148. Мы можем отметить характер подаваемых импульсов. Шаблон показан в демонстрационном видео, прилагаемом в конце.
Программирование ARM7-LPC2148 для шагового двигателя
Для программирования ARM7-LPC2148 нам понадобится инструмент keil uVision и Flash Magic. Мы используем USB-кабель для программирования ARM7 Stick через порт micro USB. Мы пишем код с помощью Keil и создаем шестнадцатеричный файл, а затем шестнадцатеричный файл записывается на карту ARM7 с помощью Flash Magic. Чтобы узнать больше об установке keil uVision и Flash Magic и их использовании, перейдите по ссылке «Начало работы с микроконтроллером ARM7 LPC2148 и запрограммируйте его с помощью Keil uVision».
Полный код для управления шаговым двигателем с помощью ARM 7 приведен в конце этого руководства, здесь мы объясняем некоторые его части.
1. Для использования метода FULL STEP-ONE PHASE ON нам необходимо включить следующую команду. Итак, мы используем следующую строку в программе
символ без знака по часовой стрелке = {0x1,0x2,0x4,0x8}; // Команды для вращения по часовой стрелке unsigned char против часовой стрелки = {0x8,0x4,0x2,0x1}; // Команды для вращения против часовой стрелки
2. Следующие строки используются для инициализации контактов PORT0 в качестве выходных и установки их на LOW.
PINSEL0 = 0x00000000; // Установка контактов PORT0 IO0DIR - = 0x00000780; // Установка выводов P0.7, P0.8, P0.9, P0.10 как OUTPUT IO0CLR = 0x00000780; // Установка выводов P0.7, P0.8, P0.9, P0.10 ВЫХОД как НИЗКИЙ
3. Установите контакты PORT (P0.7 - P0.10) в ВЫСОКОЕ в соответствии с командами по часовой стрелке, используя этот цикл for с задержкой.
для (int j = 0; j
То же самое для Anti-Clock Wise
для (int z = 0; z
4. Измените время задержки, чтобы изменить скорость вращения шагового двигателя.
задержка (0x10000); // Измените это значение, чтобы изменить скорость вращения (0x10000) -Полная скорость (0x50000) -Замедлительно (0x90000) -Будет медленнее, чем предыдущая. Таким образом, увеличивая задержку, мы уменьшаем скорость вращения.
5. Количество шагов для одного полного вращения можно изменить с помощью приведенного ниже кода.
интервал no_of_steps = 550; // Измените это значение на необходимое количество шагов вращения (550 дает одно полное вращение)
Для моего шагового двигателя я получил 550 шагов для полного вращения и 225 для половинного вращения. Так что измените его в соответствии с вашими требованиями.
6. Эта функция используется для создания времени задержки.
void delay (unsigned int value) // Функция для генерации задержки { unsigned int z; для (z = 0; z
Полный код с демонстрационным видео приведен ниже.