- Funktionssätt i stegmotor
- Skapa MATLAB grafiskt användargränssnitt för styrning av stegmotor
- MATLAB-kod för styrning av stegmotor med Arduino
- Material krävs
- Kretsschema
- Styrande stegmotor med MATLAB
Stegmotorer är en borstlös likströmsmotor som roterar i diskreta steg och är det bästa valet för många precisionskontrollapplikationer. Stegmotorer är också bra för positionering, hastighetskontroll och applikationer som kräver högt vridmoment vid låg hastighet.
I tidigare handledning av MATLAB har vi förklarat hur man använder MATLAB för att styra likströmsmotor, servomotor och hushållsapparater. Idag lär vi oss att styra stegmotor med MATALB och Arduino. Om du är ny på MATLAB rekommenderas det att komma igång med ett enkelt LED-blinkningsprogram med MATLAB.
Funktionssätt i stegmotor
Innan du börjar koda för stegmotor bör du förstå hur en stegmotor fungerar eller roterar. Eftersom statorns stegmodus är uppbyggd av olika spolpar kan varje spolpar exciteras på många olika sätt, vilket gör att lägena kan köras i många olika lägen. Följande är de breda klassificeringarna
Fullstegsläge
I fullstegsexciteringsläge kan vi uppnå en fullständig 360 ° -rotation med minimalt antal varv (steg). Men detta leder till mindre tröghet och rotationen blir inte jämn. Det finns ytterligare två klassificeringar i Full Step Excitation, de är en fas-på-vågstegning och två fas-på-läge.
1. En fasstegning eller Wave Stepping: I detta läge aktiveras endast en terminal (fas) på motorn vid varje tillfälle. Detta har mindre antal steg och kan därmed uppnå en full 360 ° rotation. Eftersom antalet steg är mindre är strömmen som konsumeras med denna metod också mycket låg. Följande tabell visar vågstegssekvensen för en 4-fas stegmotor
Steg | Fas 1 (blå) | Fas 2 (rosa) | Fas 3 (gul) | Fas 4 (orange) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Tvåfasstegning: Som namnet säger i denna metod kommer två faser att vara en. Den har samma antal steg som Wave-stegning, men eftersom två spolar aktiveras åt gången kan det ge bättre vridmoment och hastighet jämfört med den tidigare metoden. Även om en nackdel är att denna metod också förbrukar mer kraft.
Steg |
Fas 1 (blå) |
Fas 2 (rosa) |
Fas 3 (gul) |
Fas 4 (orange) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Halvstegsläge
Halvstegsläget är kombinationen av ett fas-på och två-fas-läge. Denna kombination hjälper oss att komma över ovannämnda nackdel med båda lägena.
Som du kanske har gissat det eftersom vi kombinerar båda metoderna måste vi utföra åtta steg i den här metoden för att få en fullständig rotation. Kopplingssekvensen för en 4-fas stegmotor som visas nedan
Steg |
Fas 1 (blå) |
Fas 2 (rosa) |
Fas 3 (gul) |
Fas 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 |
Därför är det ditt val att programmera din stegmotor i vilket läge som helst, men jag föredrar tvåfasstegning i fullstegsläge. Eftersom denna metod ger snabbare hastighet än enfasmetoden och i jämförelse med halvläge är kodningsdelen mindre på grund av färre antal steg i tvåfasmetoden.
Lär dig mer om stegmotorer och dess lägen här
Skapa MATLAB grafiskt användargränssnitt för styrning av stegmotor
Då måste vi bygga GUI (grafiskt användargränssnitt) för att styra stegmotor. För att starta GUI, skriv kommandot nedan i kommandofönstret
guide
Ett popup-fönster öppnas och välj sedan nytt tomt GUI som visas i bilden nedan.
Nu väljer två Växla knappar för att rotera stegmotorn Medurs och moturs enligt nedan,
För att ändra storlek eller ändra form på knappen, klicka bara på den så kommer du att kunna dra hörnen på knappen. Genom att dubbelklicka på växlingsknappen kan du ändra färg, sträng och tagg för just den knappen. Vi har anpassat två knappar som visas i bilden nedan.
Du kan anpassa knapparna enligt ditt val. Nu när du sparar detta genereras en kod i MATLABs redigeringsfönster. För att koda din Arduino för att utföra alla uppgifter relaterade till ditt projekt måste du alltid redigera den genererade koden. Så nedan har vi redigerat MATLAB-koden. Du kan lära dig mer om kommandofönster, redigeringsfönster etc i Komma igång med MATLAB-handledning.
MATLAB-kod för styrning av stegmotor med Arduino
Komplett MATLAB-kod för styrning av stegmotor ges i slutet av detta projekt. Vidare inkluderar vi GUI-filen (.fig) och kodfilen (.m) här för nedladdning (högerklicka på länken och välj 'Spara länk som…')), med vilken du kan anpassa knapparna enligt dina krav. Nedan följer några justeringar vi gjorde för att rotera stegmotorn medurs och moturs med två växlingsknappar.
Kopiera och klistra in koden nedan på rad nr. 74 för att se till att Arduino pratar med MATLAB varje gång du kör m-filen.
Rensa alla; global a; a = arduino ();
När du rullar ner ser du att det finns två funktioner skapade för båda knapparna i GUI. Skriv nu koden i båda funktionerna enligt den uppgift du vill utföra med klick.
I funktion medurs knapp, kopiera och klistra in koden nedan strax före slutet av funktionen för att rotera motorn medurs. För att kontinuerligt rotera stegmotorn medurs använder vi while-loop för att upprepa de två stegvisa stegvisa fullstegsstegen för medurs riktning.
medan get (hObject, 'Value') global a; skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 1); paus (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 1); paus (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 0); paus (0,0002); skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 0); paus (0,0002); slutet
Nu i funktion moturs knapp klistrar du in koden nedan på funktionen för att rotera motorn moturs. För att kontinuerligt rotera stegmotorn moturs använder vi while-loop för att upprepa de två stegvisa stegvisa fulllägesstegen moturs.
medan get (hObject, 'Value') global a; skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 0); paus (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 1); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 0); paus (0,0002); skrivDigitalPin (a, 'D8', 0); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 1); skrivDigitalPin (a, 'D11', 1); paus (0,0002); skrivDigitalPin (a, 'D8', 1); skrivDigitalPin (a, 'D9', 0); skrivDigitalPin (a, 'D10', 0); skrivDigitalPin (a, 'D11', 1); paus (0,0002); slutet
Material krävs
- MATLAB installerad bärbar dator (preferens: R2016a eller högre versioner)
- Arduino UNO
- Stegmotor (28BYJ-48, 5VDC)
- ULN2003 - Stegmotorförare
Kretsschema
Styrande stegmotor med MATLAB
Efter installation av hårdvaran enligt kretsschemat, klicka bara på kör-knappen för att köra den redigerade koden i.m-filen
MATLAB kan ta några sekunder att svara, klicka inte på några GUI-knappar förrän MATLAB visar upptaget meddelande i nedre sidan av vänster hörn som visas nedan,
När allt är klart klickar du på medurs eller moturs för att rotera motorn. När vi använder vippknappen kommer stegmotorn att röra sig kontinuerligt medurs tills vi trycker på knappen igen. På samma sätt, genom att trycka på vridknappen moturs, börjar motorn att rotera moturs tills vi trycker på knappen igen.