- Режими роботи в кроковому двигуні
- Створення графічного інтерфейсу користувача MATLAB для управління кроковим двигуном
- Код MATLAB для управління кроковим двигуном за допомогою Arduino
- Необхідний матеріал
- Кругова діаграма
- Керування кроковим двигуном за допомогою MATLAB
Крокові двигуни - це безщітковий двигун постійного струму, який обертається дискретно, і є найкращим вибором для багатьох точних програм управління рухом. Крім того, крокові двигуни добре підходять для позиціонування, регулювання швидкості та додатків, які вимагають великого крутного моменту при низькій швидкості.
У попередніх підручниках MATLAB ми пояснювали, як використовувати MATLAB для управління двигуном постійного струму, сервомотором та побутовою технікою. Сьогодні ми навчимося керувати кроковим двигуном за допомогою MATALB та Arduino. Якщо ви новачок у програмі MATLAB, рекомендуємо розпочати роботу з простою програмою мигання світлодіодів із програмою MATLAB.
Режими роботи в кроковому двигуні
Перш ніж розпочати кодування крокового двигуна, слід зрозуміти концепцію роботи або обертання крокового двигуна. Оскільки статор крокового режиму побудований з різних пар котушок, кожна пара котушок може бути збуджена різними методами, що дозволяє рухати режими в багатьох різних режимах. Нижче наведено широкі класифікації
Повнокроковий режим
У режимі повного кроку збудження ми можемо досягти повного обертання на 360 ° з мінімальною кількістю обертів (кроків). Але це призводить до меншої інерції, а також обертання не буде плавним. Існує ще дві класифікації повного крокового збудження, це одна ступінчаста хвиля та дві фази.
1. Одне поетапне крокове або хвильове ступінчасте: У цьому режимі в будь-який момент часу буде під напругою лише одна клема (фаза) двигуна. Це має меншу кількість кроків і, отже, може досягти повного обертання на 360 °. Оскільки кількість кроків менше, споживаний цим методом струм також дуже низький. У наступній таблиці наведена послідовність хвильових кроків для 4-фазного крокового двигуна
Крок | Фаза 1 (синій) | Фаза 2 (рожевий) | Фаза 3 (жовта) | Фаза 4 (помаранчевий) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Двоступінчасте крокування: Як зазначено в назві в цьому методі, дві фази будуть однією. Він має таку ж кількість ступенів, як ступінь хвилі, але оскільки дві котушки під напругою одночасно, це може забезпечити кращий крутний момент і швидкість порівняно з попереднім методом. Хоча одна сторона полягає в тому, що цей метод також споживає більше енергії.
Крок |
Фаза 1 (синій) |
Фаза 2 (рожевий) |
Фаза 3 (жовта) |
Фаза 4 (помаранчевий) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Напівкроковий режим
Режим напівкроку - це поєднання режимів однофазного та двофазного включення. Ця комбінація допоможе нам подолати згаданий вище недолік обох режимів.
Як ви могли здогадатися, оскільки ми поєднуємо обидва методи, нам доведеться виконати 8 кроків у цьому методі, щоб отримати повне обертання. Послідовність перемикання чотирифазного крокового двигуна показана нижче
Крок |
Фаза 1 (синій) |
Фаза 2 (рожевий) |
Фаза 3 (жовта) |
Фаза 4 (помаранчевий) |
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 |
Отже, ваш вибір запрограмувати кроковий двигун у будь-якому режимі, але я віддаю перевагу двофазному кроковому повнокроковому режиму. Оскільки цей метод забезпечує швидшу швидкість, ніж однофазний, і в порівнянні з напіврежимом частина кодування менша через меншу кількість етапів у двофазному методі.
Дізнайтеся більше про крокові двигуни та їх режими тут
Створення графічного інтерфейсу користувача MATLAB для управління кроковим двигуном
Потім ми повинні побудувати графічний інтерфейс (графічний інтерфейс користувача) для управління кроковим двигуном. Щоб запустити графічний інтерфейс, введіть команду нижче у вікні команд
путівник
Відкриється спливаюче вікно, після чого виберіть новий порожній графічний інтерфейс, як показано на малюнку нижче,
Тепер виберіть дві кнопки перемикання для обертання крокового двигуна за годинниковою стрілкою та проти годинникової стрілки, як показано нижче,
Щоб змінити розмір або змінити форму кнопки, просто натисніть на неї, і ви зможете перетягнути кути кнопки. Двічі клацнувши кнопку перемикання, ви можете змінити колір, рядок і тег цієї кнопки. Ми налаштували дві кнопки, як показано на малюнку нижче.
Ви можете налаштувати кнопки відповідно до вашого вибору. Тепер, коли ви це зберігаєте, у вікні редактора MATLAB генерується код. Щоб кодувати ваш Arduino для виконання будь-якого завдання, пов’язаного з вашим проектом, вам завжди потрібно редагувати цей згенерований код. Отже, нижче ми відредагували код MATLAB. Ви можете дізнатись більше про вікно команд, вікно редактора тощо у розділі Початок роботи з підручником MATLAB.
Код MATLAB для управління кроковим двигуном за допомогою Arduino
Повний код MATLAB для управління кроковим двигуном наведено в кінці цього проекту. Далі ми додаємо сюди для завантаження файл графічного інтерфейсу (.fig) та файл коду (.m) (клацніть правою кнопкою миші на посиланні та виберіть "Зберегти посилання як…"), використовуючи який ви можете налаштувати кнопки відповідно до ваших вимог. Нижче наведено кілька налаштувань, які ми зробили для обертання крокового двигуна за годинниковою стрілкою та проти годинникової стрілки за допомогою двох кнопок перемикання.
Скопіюйте та вставте наведений нижче код у рядок No. 74, щоб переконатися, що Arduino розмовляє з MATLAB кожного разу, коли ви запускаєте m-файл.
очистити все; глобальний a; a = arduino ();
Прокрутивши вниз, ви побачите, що для обох кнопок у графічному інтерфейсі створено дві функції. Тепер напишіть код в обох функціях відповідно до завдання, яке ви хочете виконати за кліком.
У функції кнопки за годинниковою стрілкою скопіюйте та вставте наведений нижче код безпосередньо перед закінченням функції, щоб повернути двигун за годинниковою стрілкою. Для безперервного обертання крокового двигуна за годинниковою стрілкою ми використовуємо петлю while, щоб повторити два покрокові крокові повнорежимні кроки за годинниковою стрілкою.
в той час як get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); пауза (0,0002); кінець
Тепер у функції кнопки проти годинникової стрілки вставте наведений нижче код у функцію, щоб повернути двигун проти годинникової стрілки. Для безперервного обертання крокового двигуна в напрямку проти годинникової стрілки ми використовуємо петлю while, щоб повторити два покрокові крокові покрокові кроки для руху проти годинникової стрілки.
в той час як get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); пауза (0,0002); кінець
Необхідний матеріал
- MATLAB встановив ноутбук (Налаштування: R2016a або новіші версії)
- Arduino UNO
- Кроковий двигун (28BYJ-48, 5 В постійного струму)
- ULN2003 - Драйвер крокового двигуна
Кругова діаграма
Керування кроковим двигуном за допомогою MATLAB
Після налаштування обладнання відповідно до принципової схеми, просто натисніть кнопку запуску, щоб запустити відредагований код у файлі.m
MATLAB може зайняти кілька секунд, щоб відповісти, не натискайте жодної кнопки графічного інтерфейсу, поки MATLAB не покаже повідомлення про зайнятість у нижній частині лівого кута, як показано нижче,
Коли все готово, натисніть кнопку за годинниковою стрілкою або проти годинникової стрілки, щоб повернути двигун. Оскільки ми використовуємо тумблер, кроковий двигун буде постійно рухатись за годинниковою стрілкою, доки ми не натиснемо кнопку ще раз. Подібним чином, натискаючи кнопку перемикача проти годинникової стрілки, двигун починає обертатися проти годинникової стрілки, доки ми не натиснемо кнопку ще раз.