- Driftsformer i trinmotor
- Oprettelse af MATLAB grafisk brugergrænseflade til styring af trinmotor
- MATLAB-kode til styring af trinmotor med Arduino
- Nødvendigt materiale
- Kredsløbsdiagram
- Kontrollerende trinmotor med MATLAB
Stepper motorer er en børsteløs jævnstrømsmotor, der roterer i diskrete trin og er det bedste valg til mange præcisionsbevægelsesstyringsapplikationer. Trinmotorer er også gode til positionering, hastighedskontrol og applikationer, der kræver højt moment ved lav hastighed.
I tidligere tutorials af MATLAB har vi forklaret, hvordan man bruger MATLAB til at styre jævnstrømsmotor, servomotor og husholdningsapparater. I dag lærer vi, hvordan man styrer trinmotor ved hjælp af MATALB og Arduino. Hvis du er ny hos MATLAB, anbefales det at komme i gang med et simpelt LED-blinkprogram med MATLAB.
Driftsformer i trinmotor
Før du begynder at kode for trinmotor, skal du forstå, hvordan en trinmotor fungerer eller roterer. Da statoren til step-mode er bygget af forskellige par spoler, kan hvert coil-par ophidses på mange forskellige måder, hvilket gør det muligt at drive modes i mange forskellige modes. Følgende er de brede klassifikationer
Fuld trin-tilstand
I excitationstilstand i fuld trin kan vi opnå en fuld 360 ° rotation med et minimum antal drejninger (trin). Men dette fører til mindre inerti, og også rotationen vil ikke være jævn. Der er yderligere to klassifikationer i Full Step Excitation, de er en indfasningsbølgetrapping og to indfasningstilstand.
1. Én fase-opstigning eller Wave Stepping: I denne tilstand aktiveres kun én terminal (fase) på motoren til enhver tid. Dette har færre antal trin og kan således opnå en fuld 360 ° rotation. Da antallet af trin er mindre, er strømmen, der forbruges ved denne metode, også meget lav. Den følgende tabel viser bølgetrinsekvensen for en 4-faset stepmotor
Trin | Fase 1 (blå) | Fase 2 (lyserød) | Fase 3 (gul) | Fase 4 (orange) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Trinvis opstigning: Som navnet siger i denne metode, vil to faser være en. Det har samme antal trin som Wave steping, men da to spoler er strømforsynede ad gangen, kan det give bedre drejningsmoment og hastighed sammenlignet med den foregående metode. Selvom den ene ulempe er, at denne metode også bruger mere strøm.
Trin |
Fase 1 (blå) |
Fase 2 (lyserød) |
Fase 3 (gul) |
Fase 4 (orange) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Half Step Mode
Half Step-tilstand er kombinationen af en fase-til-og to-fase-til-tilstand. Denne kombination hjælper os med at komme over den ovennævnte ulempe ved begge tilstande.
Som du måske har gættet det, da vi kombinerer begge metoder, bliver vi nødt til at udføre 8-trin i denne metode for at få en komplet rotation. Koblingssekvensen for en 4-faset trinmotor vist nedenfor
Trin |
Fase 1 (blå) |
Fase 2 (lyserød) |
Fase 3 (gul) |
Fase 4 (orange) |
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 |
Derfor er det dit valg at programmere din stepmotor i en hvilken som helst tilstand, men jeg foretrækker to-faset trin-trin i fuld trin-tilstand. Fordi denne metode leverer hurtigere hastighed end enfasemetoden, og sammenlignet med halvtilstand er den kodende del mindre på grund af færre antal trin i tofasemetoden.
Lær mere om stepmotorer og dens tilstande her
Oprettelse af MATLAB grafisk brugergrænseflade til styring af trinmotor
Så er vi nødt til at opbygge GUI (grafisk brugergrænseflade) til at styre trinmotor. For at starte GUI skal du skrive nedenstående kommando i kommandovinduet
guide
Et popup-vindue åbnes, og vælg derefter en ny tom GUI som vist i billedet nedenfor,
Vælg nu to vippeknapper til at dreje trinmotoren med uret og mod uret, som vist nedenfor,
For at ændre størrelse eller ændre formen på knappen, skal du bare klikke på den og du vil kunne trække hjørnerne på knappen. Ved at dobbeltklikke på skifteknappen kan du ændre farve, streng og tag på den pågældende knap. Vi har tilpasset to knapper som vist på billedet nedenfor.
Du kan tilpasse knapperne efter eget valg. Når du nu gemmer dette, genereres en kode i Editor-vinduet i MATLAB. For at kode din Arduino til at udføre en opgave, der er relateret til dit projekt, skal du altid redigere denne genererede kode. Så nedenfor har vi redigeret MATLAB-koden. Du kan lære mere om kommandovindue, editorvindue osv. I Kom godt i gang med MATLAB-vejledning.
MATLAB-kode til styring af trinmotor med Arduino
Komplet MATLAB-kode til styring af trinmotor gives i slutningen af dette projekt. Yderligere inkluderer vi GUI-filen (.fig) og kodefilen (.m) her til download (højreklik på linket, vælg derefter 'Gem link som…')), ved hjælp af hvilken du kan tilpasse knapperne efter dit behov. Nedenfor er nogle justeringer, vi gjorde for at dreje trinmotoren med og mod uret ved hjælp af to vippeknapper.
Kopier og indsæt nedenstående kode på linjenr. 74 for at sikre, at Arduino taler med MATLAB, hver gang du kører m-filen.
Slet alt; global a; a = arduino ();
Når du ruller nedad, vil du se, at der er to funktioner oprettet for begge knapper i GUI. Skriv nu koden i begge funktioner i henhold til den opgave, du vil udføre ved klik.
I urets knapfunktion skal du kopiere og indsætte nedenstående kode lige inden funktionens afslutning for at dreje motoren i urets retning. Til kontinuerlig rotation af trinmotoren i retning med uret bruger vi mens loop til at gentage de to trinvise trinvise trin i fuld tilstand i retning med uret.
mens get (hObject, 'Value') global a; skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 1); pause (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 1); pause (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 0); pause (0,0002); skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 0); pause (0,0002); ende
Nu i funktion mod urets knap skal du indsætte nedenstående kode ved funktionen for at rotere motoren mod urets retning. Til kontinuerlig rotation af trinmotoren i retning mod uret bruger vi mens loop til at gentage de to trinvise trinvise trin i fuld tilstand til retning mod uret.
mens get (hObject, 'Value') global a; skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 0); pause (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 0); pause (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 1); pause (0,0002); skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 1); pause (0,0002); ende
Nødvendigt materiale
- MATLAB installeret bærbar computer (præference: R2016a eller nyere versioner)
- Arduino UNO
- Trinmotor (28BYJ-48, 5VDC)
- ULN2003 - Trinmotordriver
Kredsløbsdiagram
Kontrollerende trinmotor med MATLAB
Efter installation af hardwaren i henhold til kredsløbsdiagram, skal du blot klikke på knappen Kør for at køre den redigerede kode i.m-filen
MATLAB kan tage nogle få sekunder at svare, klik ikke på nogen GUI-knapper, før MATLAB viser beskæftiget besked i nederste side af venstre hjørne som vist nedenfor,
Når alt er klar, skal du klikke på knappen med eller mod uret for at dreje motoren. Når vi bruger vippeknappen, vil trinmotoren bevæge sig kontinuerligt med uret, indtil vi trykker på knappen igen. På samme måde ved at trykke på vippeknappen mod uret, begynder motoren at dreje mod uret, indtil vi trykker på knappen igen.