- Driftsmåter i trinnmotor
- Opprette MATLAB grafisk brukergrensesnitt for styring av trinnmotor
- MATLAB-kode for å kontrollere trinnmotor med Arduino
- Nødvendig materiale
- Kretsdiagram
- Kontrollerende trinnmotor med MATLAB
Stepper motorer er en børsteløs DC-motor som roterer i diskrete trinn, og er det beste valget for mange presisjonsbevegelseskontrollapplikasjoner. Stepper motorer er også gode for posisjonering, hastighetskontroll og applikasjoner som krever høyt dreiemoment ved lav hastighet.
I tidligere veiledninger av MATLAB har vi forklart hvordan man bruker MATLAB til å kontrollere DC-motor, servomotor og husholdningsapparater. I dag vil vi lære å kontrollere trinnmotor ved hjelp av MATALB og Arduino. Hvis du ikke er fersk på MATLAB, anbefales det å komme i gang med et enkelt LED-blinkprogram med MATLAB.
Driftsmåter i trinnmotor
Før du begynner å kode for trinnmotor, bør du forstå arbeids- eller rotasjonsbegrepet til en trinnmotor. Siden statoren til trinnmodus er bygget av forskjellige par spoler, kan hvert spiralpar bli begeistret på mange forskjellige måter, slik at modusene kan kjøres i mange forskjellige moduser. Følgende er de brede klassifikasjonene
Fulltrinnsmodus
I fullstendig eksitasjonsmodus kan vi oppnå en full 360 ° rotasjon med minimum antall svinger (trinn). Men dette fører til mindre treghet, og rotasjonen vil ikke være jevn. Det er ytterligere to klassifiseringer i Full Step Excitation, de er en Phase-on wave stepping og two phase-on mode.
1. Én fasetrinn eller Wave Stepping: I denne modusen vil bare en terminal (fase) på motoren være aktivert til enhver tid. Dette har færre antall trinn og kan dermed oppnå en full 360 ° rotasjon. Siden antall trinn er mindre er strømmen som forbrukes av denne metoden også veldig lav. Følgende tabell viser bølgetrinnsekvensen for en 4-fas trinnmotor
Steg | Fase 1 (blå) | Fase 2 (rosa) | Fase 3 (gul) | Fase 4 (oransje) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. To fasetrinn: Som navnet sier i denne metoden vil to faser være en. Den har samme antall trinn som Wave stepping, men siden to spoler er aktivert om gangen, kan det gi bedre dreiemoment og hastighet sammenlignet med forrige metode. Selv om den ene siden er at denne metoden også bruker mer strøm.
Steg |
Fase 1 (blå) |
Fase 2 (rosa) |
Fase 3 (gul) |
Fase 4 (oransje) |
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-modus er kombinasjonen av en fase-på og to-fase-modus. Denne kombinasjonen vil hjelpe oss å komme over den ovennevnte ulempen med begge modusene.
Som du kanskje har gjettet det siden vi kombinerer begge metodene, må vi utføre åtte trinn i denne metoden for å få en fullstendig rotasjon. Koblingssekvensen for en 4-fas trinnmotor vist nedenfor
Steg |
Fase 1 (blå) |
Fase 2 (rosa) |
Fase 3 (gul) |
Fase 4 (oransje) |
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 ditt valg å programmere trinnmotoren din i hvilken som helst modus, men jeg foretrekker tofasetrapping i full trinnsmodus. Fordi denne metoden gir raskere hastighet enn enfasemetoden, og sammenlignet med halvmodus er kodingsdelen mindre på grunn av færre antall trinn i tofasemetoden.
Lær mer om trinnmotorer og modusene her
Opprette MATLAB grafisk brukergrensesnitt for styring av trinnmotor
Da må vi bygge GUI (Graphical User Interface) for å kontrollere trinnmotor. For å starte GUI, skriv kommandoen nedenfor i kommandovinduet
guide
Et popup-vindu åpnes, og velg deretter nytt tomt GUI som vist i bildet nedenfor,
Velg nå to vippeknapper for å rotere trinnmotoren med klokken og mot klokken, som vist nedenfor,
For å endre størrelse eller endre form på knappen, klikker du bare på den og du vil kunne dra hjørnene på knappen. Ved å dobbeltklikke på vippeknappen kan du endre farge, streng og merke på den aktuelle knappen. Vi har tilpasset to knapper som vist på bildet nedenfor.
Du kan tilpasse knappene etter eget valg. Nå når du lagrer dette, genereres en kode i Editor-vinduet til MATLAB. For å kode Arduino for å utføre en hvilken som helst oppgave knyttet til prosjektet ditt, må du alltid redigere denne genererte koden. Så nedenfor har vi redigert MATLAB-koden. Du kan lære mer om kommandovindu, redigeringsvindu osv. I Komme i gang med MATLAB-opplæringen.
MATLAB-kode for å kontrollere trinnmotor med Arduino
Komplett MATLAB-kode, for styring av trinnmotor, er gitt på slutten av dette prosjektet. Videre inkluderer vi GUI-filen (.fig) og kodefilen (.m) her for nedlasting (høyreklikk på lenken og velg deretter "Lagre lenke som…")), ved hjelp av hvilken du kan tilpasse knappene etter behov. Nedenfor er noen justeringer vi gjorde for å rotere trinnmotoren med og mot klokken ved hjelp av to vippeknapper.
Kopier og lim inn koden nedenfor på linje nr. 74 for å sikre at Arduino snakker med MATLAB hver gang du kjører m-filen.
slett alt; global a; a = arduino ();
Når du blar nedover, vil du se at det er to funksjoner opprettet for begge knappene i GUI. Skriv nå koden i begge funksjonene i henhold til oppgaven du vil utføre ved å klikke.
I urviserknappens funksjon, kopier og lim inn koden nedenfor like før slutten av funksjonen for å rotere motoren med urviseren. For kontinuerlig rotering av trinnmotoren med urviseren, bruker vi mens loop for å gjenta de to trinnvise trinnvise fullmodus trinnene med urviseren.
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); slutt
Nå i , mot venstre knapp funksjon limer under kode i til funksjonen for å rotere motoren i retning mot urviseren. For kontinuerlig rotering av trinnmotoren i retning mot klokken, bruker vi mens sløyfe til å gjenta de to trinnvise trinnvise fullmodus trinnene mot urviseren.
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); slutt
Nødvendig materiale
- MATLAB installert bærbar PC (preferanse: R2016a eller høyere versjoner)
- Arduino UNO
- Stepper Motor (28BYJ-48, 5VDC)
- ULN2003 - Stepper motor driver
Kretsdiagram
Kontrollerende trinnmotor med MATLAB
Etter å ha konfigurert maskinvaren i henhold til kretsskjemaet, klikker du bare på Run-knappen for å kjøre den redigerte koden i.m-filen
MATLAB kan ta noen sekunder å svare, ikke klikk på noen GUI-knapper før MATLAB viser opptatt melding i nedre side av venstre hjørne som vist nedenfor,
Når alt er klart, klikker du på med- eller mot urknappen for å rotere motoren. Når vi bruker vippeknappen, vil trinnmotoren kontinuerlig bevege seg med urviseren til vi trykker på knappen igjen. På samme måte begynner motoren å rotere mot klokken til du trykker på knappen mot urviseren.