- Provozní režimy krokového motoru
- Vytvoření grafického uživatelského rozhraní MATLAB pro ovládání krokového motoru
- Kód MATLAB pro ovládání krokového motoru pomocí Arduina
- Potřebný materiál
- Kruhový diagram
- Ovládání krokového motoru pomocí MATLABu
Krokové motory jsou střídavý stejnosměrný motor, který se otáčí v samostatných krocích, a jsou nejlepší volbou pro mnoho aplikací přesného řízení pohybu. Krokové motory jsou také dobré pro polohování, řízení otáček a aplikace, které vyžadují vysoký točivý moment při nízkých otáčkách.
V předchozích cvičeních MATLABu jsme vysvětlili, jak používat MATLAB k ovládání stejnosměrného motoru, servomotoru a domácích spotřebičů. Dnes se naučíme ovládat krokový motor pomocí MATALB a Arduino. Pokud jste v MATLABu noví, doporučujeme začít s jednoduchým programem LED blikání pomocí MATLABu.
Provozní režimy krokového motoru
Než začnete kódovat krokový motor, měli byste pochopit pracovní nebo rotační koncept krokového motoru. Vzhledem k tomu, že stator krokového režimu je sestaven z různých párů cívek, může být každý pár cívek vzrušen mnoha různými způsoby, což umožňuje řízení režimů v mnoha různých režimech. Následuje široká klasifikace
Full Step Mode
V režimu buzení celého kroku můžeme dosáhnout plné rotace 360 ° s minimálním počtem otáček (kroků). To však vede k menší setrvačnosti a také rotace nebude plynulá. Ve Full Step Excitation existují další dvě klasifikace, jedná se o krokování fázových vln a režim dvou fází.
1. Jednofázové krokování nebo krokování vlny: V tomto režimu bude v daném okamžiku napájena pouze jedna svorka (fáze) motoru. To má menší počet kroků, a proto lze dosáhnout plné rotace o 360 °. Protože počet kroků je menší, je proud spotřebovaný touto metodou také velmi nízký. Následující tabulka ukazuje sekvenci krokování vln pro 4fázový krokový motor
Krok | Fáze 1 (modrá) | Fáze 2 (růžová) | Fáze 3 (žlutá) | Fáze 4 (oranžová) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Krokování dvou fází : Jak název uvádí v této metodě, dvě fáze budou jedna. Má stejný počet kroků jako krokování Wave, ale protože jsou napájeny dvě cívky najednou, může poskytnout lepší točivý moment a rychlost ve srovnání s předchozí metodou. Ačkoli jedna nevýhoda je, že tato metoda také spotřebovává více energie.
Krok |
Fáze 1 (modrá) |
Fáze 2 (růžová) |
Fáze 3 (žlutá) |
Fáze 4 (oranžová) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Půlkrokový režim
Režim Půlkrok je kombinace jednofázového a dvoufázového režimu. Tato kombinace nám pomůže překonat výše zmíněnou nevýhodu obou režimů.
Jak jste možná uhodli, protože kombinujeme obě metody, budeme muset provést 8 kroků v této metodě, abychom získali úplnou rotaci. Níže je uvedena spínací sekvence pro 4fázový krokový motor
Krok |
Fáze 1 (modrá) |
Fáze 2 (růžová) |
Fáze 3 (žlutá) |
Fáze 4 (oranžová) |
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 |
Je proto vaší volbou programovat krokový motor v jakémkoli režimu, ale dávám přednost dvoufázovému krokovému režimu Full Step. Protože tato metoda poskytuje vyšší rychlost než jednofázová metoda a ve srovnání s polovičním režimem je kódovací část menší kvůli menšímu počtu kroků ve dvoufázové metodě.
Zde se dozvíte více o krokových motorech a jejich režimech
Vytvoření grafického uživatelského rozhraní MATLAB pro ovládání krokového motoru
Pak musíme vybudovat GUI (grafické uživatelské rozhraní) pro ovládání krokového motoru. Chcete-li spustit grafické uživatelské rozhraní, zadejte do příkazového okna následující příkaz
průvodce
Otevře se vyskakovací okno a poté vyberte nové prázdné grafické uživatelské rozhraní, jak je znázorněno na následujícím obrázku,
Nyní zvolte dvě přepínací tlačítka pro otáčení krokového motoru ve směru hodinových ručiček a proti směru hodinových ručiček, jak je znázorněno níže,
Chcete-li změnit velikost nebo změnit tvar tlačítka, jednoduše na něj klikněte a budete moci přetáhnout rohy tlačítka. Dvojitým kliknutím na přepínací tlačítko můžete změnit barvu, řetězec a značku konkrétního tlačítka. Upravili jsme dvě tlačítka, jak je znázorněno na následujícím obrázku.
Tlačítka můžete upravit podle svého výběru. Když to nyní uložíte, vygeneruje se kód v okně editoru MATLABu. Chcete-li kódovat své Arduino pro provádění jakýchkoli úkolů souvisejících s vaším projektem, musíte vždy upravit tento vygenerovaný kód. Níže jsme tedy upravili kód MATLABu. Další informace o příkazovém okně, okně editoru atd. Najdete v tutoriálu Začínáme s MATLABem.
Kód MATLAB pro ovládání krokového motoru pomocí Arduina
Kompletní kód MATLAB pro ovládání krokového motoru je uveden na konci tohoto projektu. Dále zde uvádíme soubor GUI (.fig) a soubor kódu (.m) ke stažení (klikněte pravým tlačítkem na odkaz a poté vyberte možnost „Uložit odkaz jako…“)), pomocí kterého můžete přizpůsobit tlačítka podle svého požadavku. Níže uvádíme několik vylepšení, která jsme provedli pro otáčení krokového motoru ve směru hodinových ručiček a proti směru hodinových ručiček pomocí dvou přepínacích tlačítek.
Zkopírujte a vložte níže uvedený kód na řádek č. 74 a ujistěte se, že Arduino mluví s MATLABem při každém spuštění m-souboru.
vymazat vše; globální a; a = arduino ();
Když se posunete dolů, uvidíte, že pro obě tlačítka v grafickém uživatelském rozhraní jsou vytvořeny dvě funkce. Nyní napište kód do obou funkcí podle úkolu, který chcete provést kliknutím.
Ve funkci tlačítka ve směru hodinových ručiček zkopírujte a vložte níže uvedený kód těsně před koncem funkce, aby se motor otočil ve směru hodinových ručiček. Pro kontinuální otáčení krokového motoru ve směru hodinových ručiček používáme while smyčku k opakování dvou fázových kroků při plném režimu ve směru hodinových ručiček.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauza (0,0002); konec
Nyní ve funkci tlačítka proti směru hodinových ručiček vložte níže uvedený kód do funkce, aby se motor otočil proti směru hodinových ručiček. Pro kontinuální otáčení krokového motoru proti směru hodinových ručiček používáme smyčku while k opakování dvou fázových kroků plného režimu pro směr proti směru hodinových ručiček.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauza (0,0002); konec
Potřebný materiál
- Notebook nainstalovaný v MATLABu (preference: verze R2016a nebo vyšší)
- Arduino UNO
- Krokový motor (28BYJ-48, 5VDC)
- ULN2003 - ovladač krokového motoru
Kruhový diagram
Ovládání krokového motoru pomocí MATLABu
Po nastavení hardwaru podle schématu zapojení stačí kliknout na tlačítko spuštění a spustit upravený kód v souboru.m
MATLABu může trvat několik sekund, než odpoví, neklikejte na žádná tlačítka GUI, dokud MATLAB neukáže obsazenou zprávu v dolní části levého rohu, jak je znázorněno níže,
Když je vše připraveno, kliknutím na tlačítko ve směru nebo proti směru hodinových ručiček motor otočíte. Protože používáme přepínací tlačítko, krokový motor se bude neustále pohybovat ve směru hodinových ručiček, dokud tlačítko znovu nestiskneme. Podobně stisknutím tlačítka proti směru hodinových ručiček se motor začne otáčet proti směru hodinových ručiček, dokud tlačítko znovu nestiskneme.