- Načini delovanja v koračnem motorju
- Ustvarjanje grafičnega uporabniškega vmesnika MATLAB za nadzor koračnega motorja
- MATLAB koda za upravljanje koračnega motorja z Arduino
- Potreben material
- Shema vezja
- Upravljanje koračnega motorja z MATLAB-om
Koračni motorji so brezkrtačni enosmerni motor, ki se vrti v ločenih korakih in so najboljša izbira za številne aplikacije natančnega nadzora gibanja. Koračni motorji so primerni tudi za pozicioniranje, nadzor hitrosti in aplikacije, ki zahtevajo velik navor pri nizki hitrosti.
V prejšnjih vajah MATLAB-a smo razložili, kako uporabljati MATLAB za nadzor enosmernega motorja, servo motorja in gospodinjskih aparatov. Danes se bomo naučili, kako upravljati koračni motor s pomočjo MATALB in Arduino. Če ste nov v MATLAB-u, je priporočljivo, da začnete s preprostim programom za utripanje LED z MATLAB-om.
Načini delovanja v koračnem motorju
Preden začnete s kodiranjem koračnega motorja, morate razumeti koncept delovanja ali vrtenja koračnega motorja. Ker je stator koračnega načina zgrajen iz različnih parov tuljav, se lahko vsak par tuljav vzbudi na več različnih načinov, kar omogoča, da se načini poganjajo v različnih načinih. Sledijo široke klasifikacije
Način polnega koraka
V načinu polnega koračnega vzbujanja lahko dosežemo polno rotacijo za 360 ° z minimalnim številom obratov (korakov). Toda to vodi do manjše vztrajnosti in tudi vrtenje ne bo gladko. V polnem koračnem vzbujanju obstajata še dve klasifikaciji, in sicer eno fazno stopenjsko valovanje in dve fazni način.
1. Enostopenjsko korakanje ali stopnjevanje valov: V tem načinu bo v danem trenutku pod napetostjo vključen samo en terminal (faza) motorja. Ta ima manj korakov in tako lahko doseže polno rotacijo za 360 °. Ker je število korakov manj, je tudi tok, ki ga porabi ta metoda, zelo majhen. Naslednja tabela prikazuje zaporedje korakov valov za 4-fazni koračni motor
Korak | 1. faza (modra) | 2. faza (roza) | 3. faza (rumena) | 4. faza (oranžna) |
1. | 1. | 0 | 0 | 0 |
2. | 0 | 1. | 0 | 0 |
3. | 0 | 0 | 1. | 0 |
4. | 0 | 0 | 0 | 1. |
2. Dvostopenjska stopnja: Kot že ime pove pri tej metodi, bosta dve fazi ena. Ima enako število korakov kot koraki z valovi, toda ker sta dve tuljavi hkrati napolnjeni, lahko v primerjavi s prejšnjo metodo zagotovi boljši navor in hitrost. Čeprav je ena stran ta, da tudi ta metoda porabi več energije.
Korak |
1. faza (modra) |
2. faza (roza) |
3. faza (rumena) |
4. faza (oranžna) |
1. |
1. |
1. |
0 |
0 |
2. |
0 |
1. |
1. |
0 |
3. |
0 |
0 |
1. |
1. |
4. |
1. |
0 |
0 |
1. |
Način pol koraka
Način Half Step je kombinacija enofaznega in dvofaznega načina. Ta kombinacija nam bo pomagala prebroditi zgoraj omenjeno pomanjkljivost obeh načinov.
Kot ste morda že slutili, ker združujemo obe metodi, bomo morali v tej metodi izvesti 8 korakov, da dobimo popolno rotacijo. Spodnje prikazano preklopno zaporedje za 4-fazni koračni motor
Korak |
1. faza (modra) |
2. faza (roza) |
3. faza (rumena) |
4. faza (oranžna) |
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 |
Zato je vaša izbira, da svoj koračni motor programirate v katerem koli načinu, vendar imam raje dvofazni korak koračnega načina. Ker ta metoda zagotavlja hitrejšo hitrost kot enofazna metoda in je v primerjavi s polovičnim načinom kodiranje manj zaradi manjšega števila korakov pri dvofazni metodi.
Več o koračnih motorjih in njegovih načinih preberite tukaj
Ustvarjanje grafičnega uporabniškega vmesnika MATLAB za nadzor koračnega motorja
Nato moramo zgraditi GUI (grafični uporabniški vmesnik) za nadzor koračnega motorja. Če želite zagnati GUI, v ukazno okno vnesite spodnji ukaz
vodnik
Odpre se pojavno okno, nato izberite nov prazen GUI, kot je prikazano na spodnji sliki,
Zdaj izberite dva preklopna gumba za vrtenje koračnega motorja v smeri urinega kazalca in v levo, kot je prikazano spodaj,
Če želite spremeniti velikost ali spremeniti obliko gumba, ga preprosto kliknite in lahko povlečete vogale gumba. Z dvojnim klikom na preklopni gumb lahko spremenite barvo, niz in oznako tega gumba. Prilagodili smo dva gumba, kot je prikazano na spodnji sliki.
Gumbe lahko prilagodite po svoji izbiri. Ko to shranite, se v oknu urejevalnika MATLAB ustvari koda. Če želite Arduino kodirati za izvajanje katere koli naloge, povezane z vašim projektom, morate to urejeno kodo vedno urediti. Torej spodaj smo uredili kodo MATLAB. Več o ukaznem oknu, oknu urejevalnika itd. Lahko preberete v Uvodu za MATLAB.
MATLAB koda za upravljanje koračnega motorja z Arduino
Na koncu tega projekta je podana celotna koda MATLAB za nadzor koračnega motorja. Poleg tega sem za prenos vključili datoteko GUI (.fig) in kodno datoteko (.m) (z desno miškino tipko kliknite povezavo in izberite »Shrani povezavo kot…«), s pomočjo katere lahko gumbe prilagodite svojim zahtevam. Spodaj je nekaj sprememb, ki smo jih naredili za vrtenje koračnega motorja v smeri urnega kazalca in v nasprotni smeri urnega kazalca z uporabo dveh preklopnih gumbov.
Kopirajte in prilepite spodnjo kodo v vrstico št. 74, da se prepričate, da Arduino vsakič, ko zaženete m-datoteko, govori z MATLAB-om.
Počisti vse; globalno a; a = arduino ();
Ko se pomaknete navzdol, boste videli, da sta v GUI ustvarjeni dve funkciji za oba gumba. Zdaj napišite kodo v obe funkciji glede na nalogo, ki jo želite izvesti s klikom.
V funkciji gumba v smeri urnega kazalca kopirajte in prilepite spodnjo kodo tik pred koncem funkcije, da zavrtite motor v smeri urnega kazalca. Za neprekinjeno vrtenje koračnega motorja v smeri urinega kazalca uporabljamo zanko while, da ponovimo dva postopna koraka v polnem načinu koraka v smeri urinega kazalca.
medtem ko get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); premor (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); premor (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); premor (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); premor (0,0002); konec
Zdaj v funkciji gumba v nasprotni smeri urnega kazalca prilepite spodnjo kodo na funkcijo, da zavrtite motor v nasprotni smeri urnega kazalca. Za neprekinjeno vrtenje koračnega motorja v nasprotni smeri urnega kazalca uporabljamo zanko while, da ponovimo dva postopna koraka v polnem načinu koraka za smer v nasprotni smeri urnega kazalca.
medtem ko get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); premor (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); premor (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); premor (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); premor (0,0002); konec
Potreben material
- Prenosni računalnik MATLAB (Preference: R2016a ali novejše različice)
- Arduino UNO
- Koračni motor (28BYJ-48, 5VDC)
- ULN2003 - Gonilnik koračnega motorja
Shema vezja
Upravljanje koračnega motorja z MATLAB-om
Po nastavitvi strojne opreme v skladu z vezjem kliknite na gumb za zagon in zaženite urejeno kodo v datoteki.m
MATLAB lahko traja nekaj sekund, da se odzove, ne kliknite nobenega gumba GUI, dokler MATLAB v spodnjem delu levega kota ne prikaže sporočila zasedeno, kot je prikazano spodaj,
Ko je vse pripravljeno, kliknite gumb v smeri urnega kazalca ali v nasprotni smeri urnega kazalca, da zavrtite motor. Ko uporabljamo preklopni gumb, se bo koračni motor neprekinjeno premikal v smeri urinega kazalca, dokler znova ne pritisnemo gumba. Podobno se s pritiskom na preklopni gumb v nasprotni smeri urnega kazalca motor začne vrteti v nasprotni smeri urnega kazalca, dokler ponovno ne pritisnemo gumba.