- Необходимые материалы
- Шаговый двигатель (28BYJ-48)
- ULN2003 Драйвер двигателя IC
- Принципиальная схема и подключения
- Вращающийся шаговый двигатель с STM32F103C8
- ПРОГРАММИРОВАНИЕ STM32 для шагового двигателя
Шаговый двигатель - это бесщеточный двигатель постоянного тока, который можно вращать на небольшие углы, эти углы называются ступенями. Обычно шаговый двигатель использует 200 шагов для полного вращения на 360 градусов, что означает его вращение на 1,8 градуса за шаг. Шаговый двигатель используется во многих устройствах, где требуется точное вращательное движение, таких как роботы, антенны, жесткие диски и т. Д. Мы можем повернуть шаговый двигатель на любой конкретный угол, дав ему соответствующие инструкции. В основном доступны два типа шаговых двигателей: униполярный и биполярный. Unipolar проще в эксплуатации, управлении и доступе. Здесь, в этом руководстве, мы связываем шаговый двигатель с платой STM32F103C8 (синяя таблетка).
Необходимые материалы
- STM32F103C8 (синяя таблетка)
- Шаговый двигатель (28BYJ-48)
- ULN2003 IC
- Потенциометр 10к
- Макетная плата
- Перемычки
Шаговый двигатель (28BYJ-48)
28BYJ-48 - униполярный шаговый двигатель, для которого требуется питание 5 В. Двигатель имеет униполярное устройство с 4 катушками, и каждая катушка рассчитана на + 5 В, поэтому им относительно легко управлять с помощью любых микроконтроллеров, таких как Arduino, Raspberry Pi, а также STM32. Но нам нужна микросхема привода двигателя, такая как ULN2003, чтобы управлять им, потому что шаговые двигатели потребляют большой ток и могут повредить микроконтроллеры.
Еще одна важная информация, на которую следует обратить внимание, - это угол шага: 5,625 ° / 64. Это означает, что двигатель, когда он работает в 8-ступенчатой последовательности, будет перемещаться на 5,625 градуса для каждого шага, и ему потребуется 64 шага (5,625 * 64 = 360), чтобы совершить один полный оборот. Другие характеристики приведены в таблице ниже:
Также проверьте взаимодействие шагового двигателя с другими микроконтроллерами:
- Взаимодействие шагового двигателя с Arduino Uno
- Управление шаговым двигателем с Raspberry Pi
- Интерфейс шагового двигателя с микроконтроллером 8051
- Взаимодействие шагового двигателя с микроконтроллером PIC
Шаговым двигателем также можно управлять без микроконтроллера, см. Эту схему драйвера шагового двигателя.
ULN2003 Драйвер двигателя IC
Он используется для управления двигателем в соответствии с импульсами, полученными от микроконтроллера. Ниже представлена диаграмма ULN2003:
Контакты (с IN1 по IN7) являются входными контактами, а (OUT 1 до OUT 7) - соответствующими выходными контактами. На COM подается положительное напряжение источника, необходимое для выходных устройств. Дополнительные подключения для шагового двигателя приведены ниже в разделе принципиальной схемы.
Принципиальная схема и подключения
Ниже приведено объяснение соединений для вышеуказанной принципиальной схемы.
STM32F103C8 (Голубая таблетка)
Как мы видим на диаграмме ниже, контакты ШИМ обозначены в формате волны (~), есть 15 таких контактов, которые можно использовать для импульсного вывода на шаговый двигатель. Нам нужно всего четыре контакта, мы используем (PA0 to PA3).
STM32F103C8 с микросхемой драйвера двигателя ULN2003
Контакты (PA0 - PA3) считаются выходными контактами, которые связаны с входными контактами (IN1-IN4) микросхемы ULN2003.
ШТИФТЫ STM32F103C8 |
ШТИФТЫ ULN2003 IC |
PA0 |
В 1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5В |
COM |
GND |
GND |
ULN2003 IC с шаговым двигателем (28BYJ-48)
Выходные контакты (OUT1-OUT4) микросхемы ULN2003 подключены к контактам шаговых двигателей (оранжевый, желтый, розовый и синий).
ШТИФТЫ ULN2003 IC |
ШТИФТЫ ШАГОВОГО ДВИГАТЕЛЯ |
OUT1 |
АПЕЛЬСИН |
OUT2 |
ЖЕЛТЫЙ |
OUT3 |
РОЗОВЫЙ |
OUT4 |
СИНИЙ |
COM |
КРАСНЫЙ |
STM32F103C8 с потенциометром
Потенциометр используется для установки скорости шагового двигателя.
ПОТЕНЦИОМЕТР |
STM32F103C8 |
СЛЕВА (ВХОД) |
3.3 |
ЦЕНТР (ВЫХОД) |
PA4 |
ВПРАВО (GND) |
GND |
Вращающийся шаговый двигатель с STM32F103C8
Ниже приведены несколько шагов по эксплуатации шагового двигателя:
- Установите скорость шагового двигателя с помощью потенциометра.
- Затем вручную введите шаги для вращения по часовой стрелке (+ значения) или против часовой стрелки (-значения) через ПОСЛЕДОВАТЕЛЬНЫЙ МОНИТОР, присутствующий в ARDUINO IDE (Инструменты-> Последовательный монитор) или CTRL + SHIFT + M.
- В соответствии с входным значением, указанным в последовательном мониторе, в шаговом двигателе происходят определенные шаги вращения.
Например
ЗНАЧЕНИЕ В ПОСЛЕДОВАТЕЛЬНОМ МОНИТОРЕ |
ВРАЩЕНИЕ |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) АНТИ-CLK WISE |
-1024 |
(-180) АНТИЦЛК МУДРА |
-512 |
(-90) АНТИЦЛК МУДРА |
ПРОГРАММИРОВАНИЕ STM32 для шагового двигателя
Как и в предыдущем руководстве, мы запрограммировали STM32F103C8 с помощью Arduino IDE через порт USB без использования программатора FTDI. Чтобы узнать о программировании STM32 с помощью Arduino IDE, перейдите по ссылке. Мы можем продолжить программировать его как Arduino. Полный код приведен в конце проекта.
Сначала мы должны включить файлы библиотеки шаговых двигателей #include
#включают
Затем мы определяем нет. шагов, выполняемых при повороте, здесь мы используем 32, потому что мы используем полный шаг (4 шага), поэтому (360/32 = 11,25 градуса). Таким образом, за один шаг ось перемещается на 11,25 градуса, что составляет угол шага. В четырехступенчатой последовательности для одного полного вращения требуется 4 шага.
#define ШАГИ 32
Мы также можем использовать режим Half step, где есть 8 шагов последовательности (360/64 = 5,625) угла шага.
Шагов на оборот = 360 / УГОЛ ШАГА
Поскольку мы устанавливаем скорость, мы должны взять аналоговое значение от PA4, который подключен к потенциометру. Поэтому мы должны объявить контакт для этого
const int speedm = PA4
Затем мы преобразовали аналоговое значение в цифровое, сохранив эти значения в переменной целочисленного типа, после чего мы должны сопоставить значения АЦП для установки скорости, поэтому мы используем приведенный ниже оператор. Узнайте больше об использовании ADC с STM32 здесь.
int adc = analogRead (скорость); int результат = карта (adc , 0, 4096, 1, 1023);
Чтобы установить скорость, мы используем stepper.setSpeed (result); У нас есть диапазон скоростей (1-1023).
Мы должны создать экземпляр, как показано ниже, чтобы установить контакты, которые подключены к двигателю. Будьте осторожны на этих шагах, так как большинство из них делают ошибку здесь, в этом шаблоне. Они дают неправильный рисунок, и из-за этого на катушки невозможно подать напряжение.
Шаговый шаговый (STEPS, PA0, PA2, PA1, PA3);
Нижеприведенная инструкция используется для получения значения шагов от последовательного монитора. Например, нам нужно 2048 значений для одного полного вращения (32 * 64 = 2048), то есть 64 будет передаточным числом, а 32 - полушаговой последовательностью для одного вращения.
поворот = Serial.parseInt ();
Код ниже используется для вызова экземпляра и запуска двигателя. Если значение поворота равно 1, он вызывает функцию шагового двигателя один раз и выполняется одно движение.
stepper.step (повернуть);
Полный код с демонстрационным видео приведен ниже. Также проверьте здесь все проекты, связанные с шаговыми двигателями, с взаимодействием с различными другими микроконтроллерами.