- Режими на работа в стъпков двигател
- Създаване на графичен потребителски интерфейс MATLAB за управление на стъпков двигател
- MATLAB код за управление на стъпков двигател с Arduino
- Необходим материал
- Електрическа схема
- Управление на стъпков двигател с MATLAB
Стъпковите двигатели са безчеткови постояннотокови двигатели, които се въртят на дискретни стъпки и са най-добрият избор за много приложения за прецизно управление на движението. Също така стъпковите двигатели са добри за позициониране, контрол на скоростта и приложения, които изискват висок въртящ момент при ниска скорост.
В предишни уроци на MATLAB обяснихме, че как да използваме MATLAB за управление на DC мотор, серво мотор и домакински уреди. Днес ще научим как да управляваме стъпков двигател с помощта на MATALB и Arduino. Ако сте нов в MATLAB, препоръчваме ви да започнете с проста програма за мигане на LED с 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 |
Режим на половин стъпка
Режимът Half Step е комбинация от еднофазен и двуфазен режим. Тази комбинация ще ни помогне да преодолеем гореспоменатия недостатък на двата режима.
Както може би се досещате, тъй като комбинираме двата метода, ще трябва да извършим 8 стъпки в този метод, за да получим пълно завъртане. Последователността на превключване за 4-фазен стъпков двигател е показана по-долу
Стъпка |
Фаза 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 за управление на стъпков двигател
След това трябва да изградим GUI (графичен потребителски интерфейс) за управление на стъпков двигател. За да стартирате GUI, въведете командата по-долу в командния прозорец
ръководство
Ще се отвори изскачащ прозорец, след което изберете нов празен GUI, както е показано на изображението по-долу,
Сега изберете два бутона за превключване за завъртане на стъпковия мотор по посока на часовниковата стрелка и обратно на часовниковата стрелка, както е показано по-долу,
За да промените размера или да промените формата на бутона, просто кликнете върху него и ще можете да плъзнете ъглите на бутона. Чрез двукратно щракване върху бутона за превключване можете да промените цвета, низа и етикета на този конкретен бутон. Ние персонализираме два бутона, както е показано на снимката по-долу.
Можете да персонализирате бутоните според вашия избор. Сега, когато запазите това, в прозореца на редактора на MATLAB се генерира код. За да кодирате вашия Arduino за изпълнение на някаква задача, свързана с вашия проект, винаги трябва да редактирате този генериран код. Така че по-долу сме редактирали кода MATLAB. Можете да научите повече за командния прозорец, прозореца на редактора и т.н. в Първи стъпки с урок MATLAB.
MATLAB код за управление на стъпков двигател с Arduino
Пълният код на MATLAB за управление на стъпков двигател е даден в края на този проект. Освен това тук включваме GUI файла (.fig) и кодовия файл (.m) за изтегляне (щракнете с десния бутон върху връзката, след което изберете „Запазване на връзката като…“), като използвате, за да можете да персонализирате бутоните според вашите изисквания. По-долу има някои ощипвания, които направихме за завъртане на стъпковия двигател по посока на часовниковата стрелка и обратно на часовниковата стрелка с помощта на два бутона за превключване.
Копирайте и поставете долния код на ред №. 74, за да се уверите, че Arduino говори с MATLAB всеки път, когато стартирате m-файла.
изчисти всичко; глобален a; a = arduino ();
Когато превъртите надолу, ще видите, че има две функции, създадени и за двата бутона в GUI. Сега напишете кода и в двете функции според задачата, която искате да изпълните при щракване.
Във функцията на бутона по часовниковата стрелка копирайте и поставете долния код точно преди края на функцията, за да завъртите мотора по посока на часовниковата стрелка. За непрекъснато въртене на стъпковия двигател в посока на часовниковата стрелка, ние използваме 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, 5VDC)
- ULN2003 - Шофьор на стъпков двигател
Електрическа схема
Управление на стъпков двигател с MATLAB
След като настроите хардуера според схемата, просто кликнете върху бутона за изпълнение, за да стартирате редактирания код във.m файл
MATLAB може да отнеме няколко секунди, за да отговори, не кликвайте върху който и да е бутон на GUI, докато MATLAB не показва съобщение заето в долната част на левия ъгъл, както е показано по-долу,
Когато всичко е готово, щракнете върху бутона по посока на часовниковата стрелка или обратно на часовниковата стрелка, за да завъртите двигателя. Тъй като използваме превключващия бутон, стъпковият двигател непрекъснато ще се движи по посока на часовниковата стрелка, докато не натиснем бутона отново. По същия начин, чрез натискане на бутона за превключване обратно на часовниковата стрелка, двигателят започва да се върти в посока, обратна на часовниковата стрелка, докато отново не натиснем бутона.