- Необхідні матеріали
- Кроковий двигун (28BYJ-48)
- Схема драйвера двигуна ULN2003
- Схема та з'єднання
- Обертовий кроковий двигун із STM32F103C8
- ПРОГРАМУВАННЯ STM32 для крокового двигуна
Кроковий двигун - це безщітковий двигун постійного струму, який можна обертати на невеликі кути, ці кути називаються ступенями. Як правило, кроковий двигун використовує 200 кроків для повороту на 360 градусів, що означає його обертання на 1,8 градуса за крок. Кроковий двигун використовується у багатьох пристроях, які потребують точних обертальних рухів, таких як роботи, антени, жорсткі диски тощо. Ми можемо повертати кроковий двигун на будь-який конкретний кут, даючи йому відповідні інструкції. Доступні в основному два типи крокових двигунів, однополюсний та біполярний. Unipolar простіше в експлуатації, керуванні, а також легше дістатись. У цьому підручнику ми взаємодіємо кроковий двигун із платою STM32F103C8 (сині таблетки).
Необхідні матеріали
- STM32F103C8 (блакитна таблетка)
- Кроковий двигун (28BYJ-48)
- ULN2003 IC
- Потенціометр 10k
- Макет
- Провід перемички
Кроковий двигун (28BYJ-48)
28BYJ-48 - це однополюсний кроковий двигун, який вимагає живлення 5 В. Двигун має однополярне розташування з 4 котушками, і кожна котушка розрахована на + 5 В, отже, відносно легко керувати будь-якими мікроконтролерами, такими як Arduino, Raspberry Pi, а також STM32. Але нам потрібен мікропривід IC, як ULN2003, тому що крокові двигуни споживають сильний струм, і це може пошкодити мікроконтролери.
Іншими важливими даними, які слід помітити, є Кут кроку: 5,625 ° / 64. Це означає, що двигун, працюючи в 8-ступінчастій послідовності, рухатиметься на 5,625 градусів за кожен крок, і йому буде потрібно 64 кроки (5,625 * 64 = 360), щоб виконати один повний оберт. Інші технічні характеристики наведені в таблиці даних нижче:
Також перевірте взаємодію крокового двигуна з іншими мікроконтролерами:
- Зв'язок крокового двигуна з Arduino Uno
- Управління кроковим двигуном з Raspberry Pi
- Інтерфейс крокового двигуна з мікроконтролером 8051
- Зв'язок крокового двигуна з мікроконтролером PIC
Кроковим двигуном також можна керувати без будь-якого мікроконтролера, див. Цей ланцюг драйвера крокового двигуна.
Схема драйвера двигуна ULN2003
Застосовується для приводу двигуна відповідно до імпульсів, отриманих від мікроконтролера. Нижче наведена діаграма зображення ULN2003:
Висновки (IN1 - IN7) - це вхідні виводи, а (OUT 1 - OUT 7) - відповідні вихідні висновки. COM отримує позитивну напругу джерела, необхідну для вихідних пристроїв. Подальші з'єднання крокового двигуна наведені нижче в розділі електричної схеми.
Схема та з'єднання
Нижче наведено пояснення підключень для наведеної вище схеми.
STM32F103C8 (блакитна таблетка)
Як ми бачимо на діаграмі нижче, ШІМ-штирі вказані у форматі хвилі (~), є 15 таких штифтів, які можна використовувати для імпульсного виходу на кроковий двигун. Нам потрібні лише чотири штирі, ми використовуємо (PA0 до PA3).
STM32F103C8 з мікросхемою драйвера двигуна ULN2003
Висновки (PA0 - PA3) розглядаються як вихідні висновки, які з'єднані з вхідними виводами (IN1-IN4) мікросхеми ULN2003.
PIN-коди STM32F103C8 |
ШИПИ ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5 В |
COM |
GND |
GND |
ULN2003 IC з кроковим двигуном (28BYJ-48)
Вихідні штирі (OUT1-OUT4) ULN2003 IC підключені до штифтів крокових двигунів (помаранчевий, жовтий, рожевий та синій).
ШИПИ ULN2003 IC |
ШИПКИ КРОКОВОГО МОТОРА |
ВИХІД1 |
ПОМАРАНКОВИЙ |
ВИХІД2 |
ЖОВТИЙ |
ВИХІД3 |
РОЗОВИЙ |
ВИХІД4 |
СИНІЙ |
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) ANTI CLK WISE |
-1024 |
(-180) АНТИ КЛІК МУДРИЙ |
-512 |
(-90) ANTI CLK WISE |
ПРОГРАМУВАННЯ STM32 для крокового двигуна
Як і в попередньому навчальному посібнику, ми запрограмували STM32F103C8 за допомогою Arduino IDE через порт USB без використання програміста FTDI. Щоб дізнатися про програмування STM32 за допомогою Arduino IDE, перейдіть за посиланням. Ми можемо продовжувати програмувати це як Arduino. Повний код наведено в кінці проекту.
Спочатку ми повинні включити файли степерної бібліотеки #include
#включати
Тоді ми визначаємо ні. кроків, які потрібно виконати при обертанні, тут ми використовуємо 32, оскільки ми використовуємо повний крок (послідовність 4 кроки) так (360/32 = 11,25 градуса). Отже, за один крок вал рухається на 11,25 градуса, тобто під кутом кроку. У послідовності 4 кроки для одного повного обертання потрібно 4 кроки.
#define STEPS 32
Ми також можемо використовувати напівкроковий режим, коли існує 8-ступінчаста послідовність (360/64 = 5,625) кута кроку.
Крок за оборот = 360 / КРОК КУТ
Оскільки ми встановлюємо швидкість, ми повинні взяти аналогове значення з PA4, яке підключено до потенціометра. Тож ми повинні оголосити pin для цього
const int speedm = PA4
Потім ми перетворили аналогове значення в цифрове, зберігаючи ці значення у змінній цілочисельного типу, після чого ми повинні зіставити значення АЦП для встановлення швидкості, тому ми використовуємо наведене нижче твердження. Дізнайтеся більше про використання АЦП із STM32 тут.
INT АЦП = analogRead (speedm); int result = map (adc , 0, 4096, 1, 1023);
Для встановлення швидкості ми використовуємо stepper.setSpeed (результат); Ми маємо діапазон швидкості (1-1023).
Ми повинні створити екземпляр, як показано нижче, щоб встановити штифти, які підключені до двигуна. Будьте обережні на цих етапах, оскільки більшість з них роблять помилку тут, за цією схемою. Вони дають неправильний малюнок, і тому котушки не можуть отримувати напругу.
Кроковий кроковий (КРОКИ, PA0, PA2, PA1, PA3);
Інструкція нижче використовується для отримання значення кроків від послідовного монітора. Наприклад, нам потрібно 2048 значень для одного повного обертання (32 * 64 = 2048), тобто 64 буде передавальним числом, а 32 буде напівкроковою послідовністю для одного обертання.
повернути = Serial.parseInt ();
Нижче код використовується для виклику екземпляра та запуску двигуна. Якщо значення обертання дорівнює 1, він одноразово викликає функціональний степер і робиться один хід.
stepper.step (обертати);
Повний код із демонстраційним відео наведено нижче. Тут також перевірте всі проекти, пов’язані з кроковим двигуном, із взаємодією з різними іншими мікроконтролерами