- Moduri de funcționare în motorul pas cu pas
- Crearea interfeței grafice de utilizator MATLAB pentru controlul motorului pas cu pas
- Cod MATLAB pentru controlul motorului pas cu pas cu Arduino
- Material necesar
- Diagrama circuitului
- Controlul motorului pas cu pas cu MATLAB
Motoarele pas cu pas sunt un motor DC fără perii care se rotește în trepte discrete și sunt cea mai bună alegere pentru multe aplicații de control al mișcării de precizie. De asemenea, motoarele pas cu pas sunt bune pentru poziționare, controlul vitezei și aplicații care necesită un cuplu ridicat la viteză mică.
În tutorialele anterioare ale MATLAB, am explicat că modul de utilizare a MATLAB pentru a controla motorul continuu, servomotor și electrocasnice. Astăzi vom învăța cum să controlăm Motorul pas cu pas folosind MATALB și Arduino. Dacă sunteți nou în MATLAB, atunci este recomandat să începeți cu programul simplu de clipire cu LED-uri cu MATLAB.
Moduri de funcționare în motorul pas cu pas
Înainte de a începe codarea motorului pas cu pas, ar trebui să înțelegeți conceptul de lucru sau de rotație al unui motor pas cu pas. Deoarece statorul modului pas cu pas este construit din diferite perechi de bobine, fiecare pereche de bobine poate fi excitată în multe metode diferite, ceea ce permite modurilor să fie conduse în mai multe moduri diferite. Următoarele sunt clasificările generale
Mod pas complet
În modul de excitație cu pas complet putem realiza o rotație completă de 360 ° cu un număr minim de ture (pași). Dar acest lucru duce la mai puțină inerție și, de asemenea, rotația nu va fi lină. Există încă două clasificări în Excitația cu pas complet, acestea sunt un mod de etapizare a undelor și două moduri de fază.
1. Un pas treptat sau Wave Stepping: În acest mod, un singur terminal (fază) al motorului va fi alimentat la un moment dat. Aceasta are un număr mai mic de pași și, prin urmare, poate realiza o rotație completă de 360 °. Deoarece numărul de pași este mai mic, curentul consumat de această metodă este, de asemenea, foarte mic. Următorul tabel prezintă secvența de pas cu undă pentru un motor pas cu pas în 4 faze
Etapa | Faza 1 (albastru) | Faza 2 (roz) | Faza 3 (galben) | Faza 4 (portocaliu) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Două trepte de etapizare: După cum se spune în această metodă, două etape vor fi una. Are același număr de pași ca pașajul Wave, dar, deoarece două bobine sunt alimentate la un moment dat, poate oferi un cuplu și o viteză mai bune în comparație cu metoda anterioară. Deși un aspect negativ este că această metodă consumă și mai multă energie.
Etapa |
Faza 1 (albastru) |
Faza 2 (roz) |
Faza 3 (galben) |
Faza 4 (portocaliu) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Modul Half Step
Modul Half Step este combinația dintre modurile de pornire fazică și de pornire bifazată. Această combinație ne va ajuta să depășim dezavantajul menționat mai sus al ambelor moduri.
După cum ați fi putut ghici, deoarece combinăm ambele metode, va trebui să efectuăm 8 pași în această metodă pentru a obține o rotație completă. Secvența de comutare pentru un motor pas cu pas cu 4 faze prezentată mai jos
Etapa |
Faza 1 (albastru) |
Faza 2 (roz) |
Faza 3 (galben) |
Faza 4 (portocaliu) |
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 |
Prin urmare, este alegerea ta să programezi motorul tău pas cu pas în orice mod, dar prefer modul Two Step-on stepping Full Step Mode. Deoarece această metodă oferă o viteză mai mare decât metoda cu o singură fază și în comparație cu modul în jumătate, partea de codificare este mai mică datorită numărului mai mic de pași în metoda în două faze.
Aflați mai multe despre motoarele pas cu pas și modurile sale aici
Crearea interfeței grafice de utilizator MATLAB pentru controlul motorului pas cu pas
Apoi, trebuie să construim GUI (Graphical User Interface) pentru a controla motorul Stepper. Pentru a lansa interfața grafică, tastați comanda de mai jos în fereastra de comandă
ghid
Se va deschide o fereastră pop-up, apoi selectați o nouă interfață grafică goală așa cum se arată în imaginea de mai jos,
Acum alegeți două butoane de comutare pentru rotirea motorului pas cu pas în sensul acelor de ceasornic și în sens invers acelor de ceasornic, așa cum se arată mai jos,
Pentru a redimensiona sau a schimba forma butonului, trebuie doar să faceți clic pe acesta și veți putea trage colțurile butonului. Dând dublu clic pe butonul de comutare puteți schimba culoarea, șirul și eticheta acelui buton. Am personalizat două butoane așa cum se arată în imaginea de mai jos.
Puteți personaliza butoanele după alegerea dvs. Acum, când salvați acest lucru, un cod este generat în fereastra Editor a MATLAB. Pentru a vă codifica Arduino pentru efectuarea oricărei sarcini legate de proiectul dvs., trebuie întotdeauna să editați acest cod generat. Deci, mai jos am editat codul MATLAB. Puteți afla mai multe despre fereastra de comandă, fereastra editorului, etc., în Tutorialul Noțiuni introductive despre MATLAB.
Cod MATLAB pentru controlul motorului pas cu pas cu Arduino
Codul complet MATLAB, pentru controlul motorului Stepper, este dat la sfârșitul acestui proiect. În plus, includem fișierul GUI (.fig) și fișierul de cod (.m) aici pentru descărcare (faceți clic dreapta pe link, apoi selectați „Salvați linkul ca…”)), folosind care puteți personaliza butoanele conform cerințelor dvs.. Mai jos sunt câteva modificări pe care le-am făcut pentru rotirea motorului pas cu pas în sensul acelor de ceasornic și în sens invers acelor de ceasornic folosind două butoane de comutare.
Copiați și lipiți codul de mai jos pe linia nr. 74 pentru a vă asigura că Arduino vorbește cu MATLAB de fiecare dată când rulați fișierul m.
curata tot; global a; a = arduino ();
Când derulați în jos, veți vedea că există două funcții create pentru ambele Butoane din GUI. Acum scrieți codul în ambele funcții în funcție de sarcina pe care doriți să o efectuați pe clic.
În funcția butonului în sensul acelor de ceasornic , copiați și lipiți codul de mai jos chiar înainte de sfârșitul funcției pentru a roti motorul în sensul acelor de ceasornic. Pentru rotirea continuă a motorului pas cu pas în sensul acelor de ceasornic, folosim bucla while pentru a repeta cei doi pași în mod complet pas cu pas în direcția acelor de ceasornic.
în timp ce get (hObject, „Valoare”) global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauză (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauză (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauză (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauză (0,0002); Sfârșit
Acum, în funcția butonului antiorar , lipiți codul de mai jos la funcția pentru a roti motorul în sens antiorar. Pentru rotirea continuă a motorului pas cu pas în sens invers acelor de ceasornic, folosim bucla while pentru a repeta cei doi pași în mod complet pas cu fază în direcția inversă acelor de ceasornic.
în timp ce get (hObject, „Valoare”) global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauză (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauză (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauză (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauză (0,0002); Sfârșit
Material necesar
- Laptop instalat de MATLAB (preferință: versiunile R2016a sau mai sus)
- Arduino UNO
- Motor pas cu pas (28BYJ-48, 5VDC)
- ULN2003 - Driver motor pas cu pas
Diagrama circuitului
Controlul motorului pas cu pas cu MATLAB
După configurarea hardware-ului conform schemei de circuit, trebuie doar să faceți clic pe butonul Run pentru a rula codul editat în fișierul.m
MATLAB poate dura câteva secunde pentru a răspunde, nu faceți clic pe niciun buton GUI până când MATLAB nu afișează mesajul ocupat în partea de jos a colțului din stânga, așa cum se arată mai jos,
Când totul este gata, faceți clic pe butonul în sensul acelor de ceasornic sau în sens invers acelor de ceasornic pentru a roti motorul. Pe măsură ce utilizăm butonul de comutare, motorul pas cu pas se va deplasa continuu în sensul acelor de ceasornic până când apăsăm din nou butonul. În mod similar, prin apăsarea butonului de comutare în sens invers acelor de ceasornic, motorul începe să se rotească în sens invers acelor de ceasornic până când apăsăm din nou butonul.