- Werkingsmodi in stappenmotor
- MATLAB grafische gebruikersinterface maken voor het besturen van stappenmotor
- MATLAB-code voor het besturen van stappenmotor met Arduino
- Materiaal vereist
- Schakelschema
- Stappenmotor aansturen met MATLAB
Stappenmotoren is een borstelloze gelijkstroommotor die in discrete stappen ronddraait en de beste keuze is voor veel nauwkeurige motion control-toepassingen. Stappenmotoren zijn ook goed voor positionering, snelheidsregeling en toepassingen die een hoog koppel bij lage snelheid vereisen.
In eerdere tutorials van MATLAB hebben we uitgelegd hoe MATLAB te gebruiken om DC-motor, servomotor en huishoudelijke apparaten te besturen. Vandaag zullen we leren hoe we de stappenmotor kunnen besturen met MATALB en Arduino. Als je nieuw bent bij MATLAB, is het aan te raden om met MATLAB aan de slag te gaan met een eenvoudig LED-knipperprogramma.
Werkingsmodi in stappenmotor
Voordat u begint met coderen voor een stappenmotor, moet u het werk- of roterende concept van een stappenmotor begrijpen. Omdat de stator van de stepper-modus is opgebouwd uit verschillende paren spoelen, kan elk spoelenpaar op veel verschillende manieren worden geëxciteerd, waardoor de modi in veel verschillende modi kunnen worden aangestuurd. De volgende zijn de brede classificaties
Volledige stapmodus
In volledige stap-excitatiemodus kunnen we een volledige 360 ° rotatie bereiken met een minimum aantal beurten (stappen). Maar dit leidt tot minder traagheid en ook de rotatie zal niet soepel verlopen. Er zijn verder twee classificaties in Full Step Excitation, namelijk een Phase-on wave stepping en twee phase-on mode.
1. One phase-on stepping of wave stepping: In deze modus wordt slechts één klem (fase) van de motor tegelijkertijd bekrachtigd. Deze heeft minder stappen en kan dus een volledige 360 ° rotatie bereiken. Omdat het aantal stappen kleiner is, is de stroom die door deze methode wordt verbruikt ook erg laag. De volgende tabel toont de golfstappensequentie voor een 4-fase stappenmotor
Stap | Fase 1 (blauw) | Fase 2 (roze) | Fase 3 (geel) | Fase 4 (oranje) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Stepping in twee fasen : Zoals de naam aangeeft, zullen bij deze methode twee fasen één zijn. Het heeft hetzelfde aantal stappen als Wave-stepping, maar aangezien twee spoelen tegelijkertijd worden bekrachtigd, kan het een beter koppel en hogere snelheid bieden in vergelijking met de vorige methode. Hoewel een keerzijde is dat deze methode ook meer stroom verbruikt.
Stap |
Fase 1 (blauw) |
Fase 2 (roze) |
Fase 3 (geel) |
Fase 4 (oranje) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Halve stap-modus
De Half Step-modus is de combinatie van een fase-aan en twee-fase aan-modi. Deze combinatie helpt ons om het bovengenoemde nadeel van beide modi te boven te komen.
Zoals je misschien al geraden hebt, aangezien we beide methoden combineren, zullen we 8 stappen in deze methode moeten uitvoeren om een volledige rotatie te krijgen. De schakelvolgorde voor een 4-fasen stappenmotor hieronder weergegeven
Stap |
Fase 1 (blauw) |
Fase 2 (roze) |
Fase 3 (geel) |
Fase 4 (oranje) |
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 |
Daarom is het jouw keuze om je stappenmotor in elke modus te programmeren, maar ik geef de voorkeur aan Two Phase-on stepping Full Step Mode. Omdat deze methode een hogere snelheid oplevert dan de eenfasemethode en in vergelijking met de halve modus, is het coderingsgedeelte minder vanwege het minder aantal stappen in de tweefasige methode.
Lees hier meer over stappenmotoren en de modi
MATLAB grafische gebruikersinterface maken voor het besturen van stappenmotor
Dan moeten we GUI (Graphical User Interface) bouwen om de stappenmotor te besturen. Om de GUI te starten, typt u de onderstaande opdracht in het opdrachtvenster
gids
Er wordt een pop-upvenster geopend en selecteer vervolgens een nieuwe lege GUI zoals weergegeven in de onderstaande afbeelding,
Kies nu twee schakelknoppen om de stappenmotor met de klok mee en tegen de klok in te draaien, zoals hieronder weergegeven,
Om het formaat van de knop te wijzigen of om de vorm van de knop te wijzigen, klikt u erop en kunt u de hoeken van de knop slepen. Door op de schakelknop te dubbelklikken, kunt u de kleur, tekenreeks en tag van die specifieke knop wijzigen. We hebben twee knoppen aangepast, zoals weergegeven in onderstaande afbeelding.
U kunt de knoppen naar eigen keuze aanpassen. Als je dit nu opslaat, wordt er een code gegenereerd in het Editor-venster van MATLAB. Om uw Arduino te coderen voor het uitvoeren van een taak gerelateerd aan uw project, moet u deze gegenereerde code altijd bewerken. Dus hieronder hebben we de MATLAB-code bewerkt. U kunt meer leren over het opdrachtvenster, het editorvenster, enz. In Aan de slag met MATLAB-zelfstudie.
MATLAB-code voor het besturen van stappenmotor met Arduino
De volledige MATLAB-code, voor het besturen van de stappenmotor, wordt aan het einde van dit project gegeven. Verder voegen we hier het GUI-bestand (.fig) en het codebestand (.m) toe om te downloaden (klik met de rechtermuisknop op de link en selecteer 'Link opslaan als…')), waarmee u de knoppen naar wens kunt aanpassen. Hieronder staan enkele aanpassingen die we hebben gedaan om de stappenmotor met de klok mee en tegen de klok in te draaien met behulp van twee schakelknoppen.
Kopieer en plak de onderstaande code op regel nr. 74 om ervoor te zorgen dat de Arduino met MATLAB praat elke keer dat u het m-bestand uitvoert.
wis alles; globaal een; een = arduino ();
Als u naar beneden scrolt, ziet u dat er twee functies zijn gemaakt voor beide knoppen in de GUI. Schrijf nu de code in beide functies volgens de taak die u met een klik wilt uitvoeren.
In Clockwise functieknop's, kopieer en plak de onderstaande code net voor het einde van de functie om de motor in de richting van de klok te draaien. Voor het continu roteren van de stappenmotor met de klok mee, gebruiken we de while-lus om de twee stappen voor fase-aan-stappen voor de volledige modus met de klok mee te herhalen.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauze (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauze (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauze (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauze (0.0002); einde
Plak nu in de functie van de knop tegen de klok in de onderstaande code bij de functie om de motor tegen de klok in te draaien. Om de stappenmotor continu tegen de klok in te draaien, gebruiken we de while-lus om de twee stappen voor fase-aan-stappen in volledige modus tegen de klok in te herhalen.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauze (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauze (0.0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauze (0.0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauze (0.0002); einde
Materiaal vereist
- MATLAB geïnstalleerde laptop (voorkeur: R2016a of hogere versies)
- Arduino UNO
- Stappenmotor (28BYJ-48, 5VDC)
- ULN2003 - Stappenmotor driver
Schakelschema
Stappenmotor aansturen met MATLAB
Nadat u de hardware volgens het schakelschema hebt ingesteld, klikt u op de knop Uitvoeren om de bewerkte code in.m-bestand uit te voeren
Het kan enkele seconden duren voordat MATLAB reageert, klik niet op een GUI-knop totdat MATLAB een bezet bericht laat zien in de linker benedenhoek, zoals hieronder getoond,
Als alles klaar is, klik je op de knop met de klok mee of tegen de klok in om de motor te laten draaien. Omdat we de schakelknop gebruiken, zal de stappenmotor continu met de klok mee bewegen totdat we opnieuw op de knop drukken. Evenzo, door op de schakelknop tegen de klok in te drukken, begint de motor tegen de klok in te draaien totdat we opnieuw op de knop drukken.