- Потрібні компоненти
- Опис штифтового двигуна
- Принципова схема для керування кроковим двигуном за допомогою модуля ULN2003
- Принципова схема для керування кроковим двигуном за допомогою модуля L293D:
- Керування кроковим двигуном за допомогою AVR ATmega16
Крокові двигуни - це безщіточні двигуни постійного струму, які можуть обертатися від 0 0 до 360 0 з кроком. Кроковий двигун використовує електронні сигнали для повороту двигуна з кроком, і кожен сигнал обертає вал з фіксованим кроком (один крок). Управління ангелом обертання здійснюється шляхом застосування певної послідовності сигналів. На відміну від сервомотора, крокові двигуни можуть керуватися за допомогою штифтів GPIO мікроконтролера, а не ШІМ-контактів, і можуть обертатися (+360 0) та (-360 0). Порядок сигналів визначає напрямок крокового двигуна за годинниковою стрілкою та проти годинникової стрілки. Щоб контролювати швидкість двигуна, нам просто потрібно змінити швидкість поданих керуючих сигналів. Крокові двигуни обертаються кроками. Існує кілька режимів кроків для роботи крокового двигуна, такі як повний крок, напівкрок та мікрокрок. Щоб дізнатися більше про основи, теорію та принцип роботи крокового двигуна, перейдіть за посиланням.
Раніше ми взаємодіяли кроковий двигун з багатьма мікроконтролерами:
- Зв'язок крокового двигуна з ARM7-LPC2148
- Зв'язок крокового двигуна з Arduino Uno
- Зв'язок крокового двигуна з MSP430G2
- Зв'язок крокового двигуна зі STM32F103C8
- Зв'язок крокового двигуна з мікроконтролером PIC
- Зв'язок крокового двигуна з мікроконтролером 8051
- Зв'язок крокового двигуна з Raspberry Pi
У цьому підручнику ми взаємодіємо кроковий двигун 28BYJ-48 з мікроконтролером Atmega16 AVR за допомогою Atmel Studio 7.0. Кроковий двигун розрахований на роботу в 5В. Ми будемо взаємодіяти кроковий двигун з обома драйверами двигуна, тобто ULN2003 та L293. Обидва будуть живитись від джерела живлення 5В. Для спрощення взаємодії ми використовуємо модуль попередньої збірки обох драйверів двигуна. Ви також можете використовувати автономні мікросхеми ULN2003 та L293D. Кількість проводів і перемичок може бути більше, тому будьте обережні, підключаючи всі з'єднання.
Потрібні компоненти
- Кроковий двигун (28BYJ-48)
- Модуль ULN2003 / Драйвер двигуна L293D
- Мікроконтролер мікросхеми Atmega16
- Кристалічний генератор 16 МГц
- Два конденсатори 100 нФ
- Два конденсатори 22pF
- Нажимна Кнопка
- Провід перемички
- Макет
- USBASP v2.0
- Led (будь-який колір)
Опис штифтового двигуна
Принципова схема для керування кроковим двигуном за допомогою модуля ULN2003
Під час використання ULN2003 підключіть усі компоненти, як показано на схемі нижче. Подібним чином ми будемо взаємодіяти з ним за допомогою L293D на наступному кроці. Ми використовуємо PORTA Atmega16 для взаємодії крокового двигуна для обох драйверів двигуна. Немає необхідності підключати 5В штифт крокового двигуна. Для переміщення крокового двигуна потрібні лише штифти котушки. Порядок контактів дуже важливий для керування кроковим двигуном, оскільки напруга котушок повинна бути для досягнення ступенів. У цьому проекті використовуються чотири входи ULN2003 та чотири виходи ULN2003. Входи будуть підключені до штифтів PORTA, а виходи - до штифтів сигналу крокового двигуна. Крім того, підключіть одну кнопку в кнопці Reset pin для скидання Atmega16, коли це потрібно. Підключіть Atmega16 до належної схеми генератора кристалів. Вся система буде живитися від джерела живлення 5 В.
Нижче наведено фактичне зображення модуля драйвера двигуна ULN2003:
Нижче ми подали контактні з'єднання Atmega16 з ULN2003 та L293D для обертання крокового двигуна. Зв'язок крокового двигуна з модулем L293D пояснюється в наступному розділі, пам'ятайте, що для управління кроковим двигуном потрібен лише один модуль ULN2003 або L293D.
Контактні з'єднання для INPUT такі:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (PIN1) |
IN1 (PIN2) |
А1 |
IN2 (PIN2) |
IN2 (PIN7) |
А2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (PIN15) |
Штирькові з'єднання для ВИХОДУ такі:
Кроковий двигун |
ULN2003 |
L293D |
Помаранчевий |
OUT1 (PIN16) |
OUT1 (PIN3) |
Жовтий |
OUT2 (PIN15) |
OUT2 (PIN6) |
Рожевий |
OUT3 (PIN14) |
OUT3 (PIN11) |
Синій |
OUT4 (PIN13) |
OUT4 (PIN14) |
Принципова схема для керування кроковим двигуном за допомогою модуля L293D:
Керування кроковим двигуном за допомогою AVR ATmega16
Як вже було сказано, на відміну від сервомотора, кроковим двигунам потрібні зовнішні драйвери, наприклад драйвер двигуна ULN2003 або L293D. Тож просто підключіть схему, як зазначено вище, і завантажте програму main.c, подану в кінці.
На ескізі показано кроковий двигун, що обертається в обидві сторони, тобто за годинниковою стрілкою та проти годинникової стрілки. Якщо ви хочете повернути степпер в одному напрямку, просто прокоментуйте рядки коду іншого напрямку на ескізі.
Повний код AVR для управління кроковим двигуном наведено нижче. Код простий і легко зрозумілий. Нижче наведено два коди, один для обертового крокового двигуна з ULN2003 і другий з модулем L293D.
Підключіть свій USBASP v2.0 і дотримуйтесь інструкцій у цьому посиланні, щоб програмувати мікроконтролер Atmega16 AVR за допомогою USBASP та Atmel Studio 7.0. Просто побудуйте ескіз та завантажте його, використовуючи зовнішній ланцюжок інструментів.
Повний код із демонстраційним відео наведено нижче.