- Stappenmotor
- Een stappenmotor draaien MET ARM7-LPC2148
- Componenten vereist
- Stappenmotor (28BYJ-48)
- ULN2003 stappenmotorbesturing
- Schakelschema
- Programmering ARM7-LPC2148 voor stappenmotor
In de huidige automatiseringswereld zijn stappenmotor en servomotor de twee meest gebruikte motoren in embedded systemen. Beide worden gebruikt in verschillende automatiseringsmachines zoals robotarmen, CNC-machines, camera's enz. In deze tutorial zullen we zien hoe we stappenmotor kunnen koppelen aan ARM7-LPC2148 en hoe de snelheid ervan kan worden geregeld. Als ARM7 nieuw voor je is, begin dan met het leren over ARM7-LPC2148 en de programmeertools.
Stappenmotor
Stappenmotor is een borstelloze DC-motor, die in kleine hoeken kan worden gedraaid, deze hoeken worden stappen genoemd. We kunnen de stappenmotor stap voor stap draaien door digitale pulsen aan de pinnen te geven. Stappenmotoren zijn niet duur en hebben een robuust ontwerp. De snelheid van de motor kan worden geregeld door de frequentie van digitale pulsen te veranderen.
Er zijn twee typen stappenmotoren beschikbaar op basis van het type statorwikkeling: UNIPOLAR en BIPOLAR. Hier gebruiken we de UNIPOLAR-stappenmotor, de meest gebruikte stappenmotor . Om de stappenmotor te laten draaien, moeten we de spoelen van de stappenmotor achter elkaar bekrachtigen. Op basis van de rotatiebewerking worden ze ingedeeld in twee modi:
- Volledige stapmodus: (4-stappenreeks)
- Eenfase bij stepping (WAVE STEPPING)
- Twee fasen bij het stappen
- Halve stap-modus (reeks in 8 stappen)
Volg de link voor meer informatie over de stappenmotor en de werking ervan.
Een stappenmotor draaien MET ARM7-LPC2148
Hier gebruiken we FULL STEP: ONE PHASE ON of WAVE STEPPING- modus om de stappenmotor te draaien met ARM7-LPC2148
Bij deze methode zullen we slechts één spoel (één pin van LPC2148) tegelijk bekrachtigen. Dat wil zeggen, als de eerste spoel A voor een korte tijd wordt bekrachtigd, zal de as van positie veranderen en vervolgens wordt spoel B voor dezelfde tijd bekrachtigd en zal de as weer van positie veranderen. Hetzelfde als dit, spoel C en vervolgens spoel D worden bekrachtigd om de as verder te bewegen. Dit zorgt ervoor dat de as van de stappenmotor stapsgewijs roteert door één spoel tegelijk te bekrachtigen.
Bij deze methode roteren we de as stap voor stap door de spoel in een reeks te bekrachtigen. Dit wordt vierstappenreeksen genoemd , aangezien er vier stappen nodig zijn.
U kunt de stappenmotor draaien met de HALF STEP-methode (8-sequentiemethode) volgens de onderstaande waarden.
Stap |
Spoel A |
Spoel B |
Spoel C |
Spoel D |
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 |
Componenten vereist
Hardware:
- ARM7-LPC2148
- ULN2003 Motorbesturing IC
- LED - 4
- STAPPENMOTOR (28BYJ-48)
- BREADBOARD
- VERBINDINGSDRAAD
Software:
- Keil uVision5
- Flasic Magic Tool
Stappenmotor (28BYJ-48)
De 28BYJ-48 stappenmotor is al te zien in de bovenstaande afbeelding. Het is een unipolaire stappenmotor die 5V-voeding vereist. De motor heeft een unipolaire opstelling met 4 spoelen en elke spoel heeft een vermogen van + 5V, dus het is relatief eenvoudig te besturen met microcontrollers zoals Arduino, Raspberry Pi, STM32, ARM enz.
Maar we hebben een Motor Drive IC zoals ULN2003 nodig om deze aan te sturen, omdat stappenmotoren veel stroom verbruiken en microcontrollers kunnen beschadigen.
De specificaties van 28BYJ-48 worden gegeven in het onderstaande gegevensblad:
Controleer ook de koppeling met de stappenmotor met andere microcontrollers:
- Stappenmotor koppelen met Arduino Uno
- Stappenmotorbesturing met Raspberry Pi
- Stappenmotor-interface met 8051 Microcontroller
- Interfacestappenmotor met PIC-microcontroller
- Interfacestappenmotor met MSP430G2
Stappenmotor kan ook worden bestuurd zonder enige Microcontroller, zie dit Stepper Motor Driver Circuit.
ULN2003 stappenmotorbesturing
De meeste stappenmotoren werken alleen met behulp van een driver-module. Dit komt doordat de controllermodule (in ons geval LPC2148) niet genoeg stroom kan leveren via de I / O-pinnen om de motor te laten werken. We zullen dus een externe module zoals de ULN2003- module gebruiken als stappenmotoraandrijving.
In dit project zullen we ULN2003 motor driver IC gebruiken. Pin-diagram van IC wordt hieronder gegeven:
Pinnen (IN1 tot IN7) zijn input pinnen voor het aansluiten van de microcontroller output en OUT1 tot OUT7 zijn corresponderende output pinnen voor het aansluiten van stappenmotoren input. COM krijgt een positieve bronspanning vereist voor uitvoerapparaten en voor externe voedingsingangsbronnen.
Schakelschema
Het schakelschema voor het koppelen van stappenmotor met ARM-7 LPC2148 wordt hieronder gegeven
ARM7-LPC2148 met ULN2003 Motor Driver IC
GPIO-pinnen van LPC2148 (P0.7 tot P0.10) worden beschouwd als outputpinnen die zijn verbonden met inputpinnen (IN1-IN4) van de ULN2003 IC.
LPC2148 Pinnen |
SPELDEN VAN ULN2003 IC |
P0.7 |
IN 1 |
P0.8 |
IN 2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Verbindingen van ULN2003 IC met stappenmotor (28BYJ-48)
De outputpinnen (OUT1-OUT4) van ULN2003 IC zijn verbonden met de stappenmotorenpinnen (blauw, roze, geel en oranje).
ULN2003 IC-SPELDEN |
SPELDEN VAN STAPPENMOTOR |
UIT1 |
BLAUW |
UIT2 |
ROZE |
UIT3 |
GEEL |
UIT4 |
ORANJE |
COM |
ROOD (+ 5V) |
LED's met IN1 tot IN4 van ULN2003
Vier LED's (LED1, LED2, LED4, LED 4) anodepennen zijn verbonden met respectievelijk de pinnen IN1, IN2, IN3 en IN4 van ULN2003 en de kathode van de LED's zijn verbonden met GND, die de pulsen van de LPC2148 moet aangeven. We kunnen het patroon van de geleverde pulsen opmerken. Het patroon wordt getoond in de demonstratievideo die aan het einde is bijgevoegd.
Programmering ARM7-LPC2148 voor stappenmotor
Om ARM7-LPC2148 te programmeren, hebben we de tool uVision & Flash Magic nodig. We gebruiken een USB-kabel om de ARM7 Stick te programmeren via een micro-USB-poort. We schrijven code met Keil en maken een hex-bestand en vervolgens wordt het HEX-bestand met Flash Magic naar de ARM7-stick geflitst. Om meer te weten over het installeren van keil uVision en Flash Magic en hoe u ze kunt gebruiken, volgt u de link Aan de slag met ARM7 LPC2148 Microcontroller en programmeert u deze met Keil uVision.
De volledige code voor het besturen van stappenmotor met ARM 7 wordt aan het einde van deze tutorial gegeven, hier leggen we enkele delen ervan uit.
1. Voor het gebruik van de FULL STAP-ONE PHASE ON- methode moeten we het onderstaande commando opnemen. Daarom gebruiken we de volgende regel in het programma
unsigned char met de klok mee = {0x1,0x2,0x4,0x8}; // Commando's voor rotatie met de klok mee, unsigned char tegen de klok in = {0x8,0x4,0x2,0x1}; // Commando's voor rotatie tegen de klok in
2. De volgende regels worden gebruikt om de PORT0-pinnen als uitvoer te initialiseren en op LOW in te stellen
PINSEL0 = 0x00000000; // PORT0-pinnen IO0DIR instellen - = 0x00000780; // Instelling pinnen P0.7, P0.8, P0.9, P0.10 als OUTPUT IO0CLR = 0x00000780; // P0.7, P0.8, P0.9, P0.10 pinnen OUTPUT instellen als LAAG
3. Stel de PORT-pinnen (P0.7 tot P0.10) HOOG in volgens de opdrachten met de klok mee door dit te gebruiken voor lus met vertraging
voor (int j = 0; j
Hetzelfde geldt voor Anti-Clock Wise
voor (int z = 0; z
4. Wijzig de vertragingstijd om de rotatiesnelheid van de stappenmotor te wijzigen
vertraging (0x10000); // Wijzig deze waarde om de rotatiesnelheid te wijzigen (0x10000) -Full speed (0x50000) -Gets traag (0x90000) -Gets traag dan voorheen. Dus door de vertraging te vergroten, verlagen we de rotatiesnelheid.
5. Het aantal stappen voor een volledige rotatie kan worden gewijzigd met de onderstaande code
int no_of_steps = 550; // Verander deze waarde voor het vereiste aantal stappen rotatie (550 geeft een volledige rotatie)
Voor mijn stappenmotor heb ik 550 stappen voor volledige rotatie en 225 voor halve rotatie. Verander het dus volgens uw wensen.
6. Deze functie wordt gebruikt om een vertragingstijd te creëren.
ongeldige vertraging (unsigned int value) // Functie om vertraging te genereren { unsigned int z; voor (z = 0; z
Volledige code met demonstratievideo wordt hieronder gegeven.