- Stepper Motor
- Rotere en trinnmotor MED ARM7-LPC2148
- Komponenter kreves
- Stepper Motor (28BYJ-48)
- ULN2003 trinnmotordriver
- Kretsdiagram
- Programmering ARM7-LPC2148 for trinnmotor
I dagens automatiseringsverden er trinnmotor og servomotor to mest brukte motorer i innebygde systemer. Begge brukes i forskjellige automatiseringsmaskiner som robotarmer, CNC-maskiner, kameraer osv. I denne opplæringen vil vi se hvordan man kobler trinnmotor sammen med ARM7-LPC2148 og hvordan man styrer hastigheten på den. Hvis du ikke er kjent med ARM7, kan du begynne med å lære om ARM7-LPC2148 og dets programmeringsverktøy.
Stepper Motor
Stepper motor er børsteløs DC-motor, som kan roteres i små vinkler, disse vinklene kalles trinn. Vi kan rotere trinnmotor trinnvis ved å gi digitale pulser til pinnene. Stepper motorer er billige og har robust design. Motorens hastighet kan styres ved å endre frekvensen til digitale pulser.
Det finnes to typer trinnmotorer tilgjengelig basert på typen statorvikling: UNIPOLAR og BIPOLAR. Her bruker vi UNIPOLAR trinnmotor, som er den mest brukte trinnmotoren . For å rotere trinnmotoren må vi aktivere trinnene til trinnmotoren i en sekvens. Basert på rotasjonsoperasjonen er de klassifisert i to moduser:
- Fulltrinnsmodus: (4-trinns sekvens)
- Enfaset på trinn (WAVE TRINN)
- To-fase på trinn
- Halvtrinnsmodus (8-trinns sekvens)
For å vite mer om trinnmotor og dens drift, følg lenken.
Rotere en trinnmotor MED ARM7-LPC2148
Her vil vi bruke FULLT TRINN: EN FASE PÅ eller WAVE STEPPING- modus for å rotere trinnmotoren med ARM7-LPC2148
I denne metoden vil vi bare aktivere en spole (en tapp LPC2148) om gangen. Det vil si at hvis den første spolen A får strøm i en liten periode, vil akselen endre sin posisjon, og deretter vil spolen B få energi for samme tid, og akselen vil igjen endre sin posisjon. Samme som dette, er spole C og deretter spole D aktivert for å bevege akselen videre. Dette får trinnmotorens aksel til å rotere trinnvis ved å aktivere en spole om gangen.
Ved denne metoden roterer vi akselen trinn for trinn ved å aktivere spolen i en sekvens. Dette kalles firetrinnssekvenser, da det tar fire trinn.
Du kan rotere trinnmotor ved hjelp av HALF STEP-metoden (8-sekvensmetoden) i henhold til verdiene gitt nedenfor.
Steg |
Spole A |
Spole B |
Spole C |
Spole 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 |
Komponenter kreves
Maskinvare:
- ARM7-LPC2148
- ULN2003 Motor Driver IC
- LED - 4
- TRINNMOTOR (28BYJ-48)
- BREADBOARD
- TILKOBLING AV KABLER
Programvare:
- Keil uVision5
- Flasic Magic Tool
Stepper Motor (28BYJ-48)
28BYJ-48 trinnmotor er allerede vist på bildet ovenfor. Det er en unipolar trinnmotor som krever 5V forsyning. Motoren har et unipolært arrangement med 4 spoler, og hver spole er klassifisert for + 5V, og det er derfor relativt enkelt å kontrollere med alle mikrokontrollere som Arduino, Raspberry Pi, STM32, ARM etc.
Men vi trenger en Motor Drive IC som ULN2003 for å kjøre den, fordi trinnmotorer bruker høy strøm og det kan skade mikrokontrollere.
Spesifikasjonene til 28BYJ-48 er gitt i databladet nedenfor:
Sjekk også grensesnittet med trinnmotor med andre mikrokontrollere:
- Grensesnitt trinnmotor med Arduino Uno
- Stepper Motor Control med Raspberry Pi
- Stepper Motor-grensesnitt med 8051 mikrokontroller
- Grensesnitt trinnmotor med PIC-mikrokontroller
- Grensesnitt trinnmotor med MSP430G2
Stepper motor kan også styres uten mikrokontroller, se denne Stepper Motor Driver Circuit.
ULN2003 trinnmotordriver
De fleste trinnmotorer vil bare fungere ved hjelp av en drivermodul. Dette skyldes at kontrollmodulen (i vårt tilfelle LPC2148) ikke vil kunne gi nok strøm fra I / O-pinnene til at motoren skal kunne fungere. Så vi vil bruke en ekstern modul som ULN2003- modul som trinnmotordriver.
I dette prosjektet vil vi bruke ULN2003 motor driver IC. Pin diagram av IC er gitt nedenfor:
Pins (IN1 til IN7) er inngangspinner for tilkobling av mikrokontrollerutgang og OUT1 til OUT7 er tilsvarende utgangspinner for tilkobling av trinnmotors inngang. COM er gitt Positiv kildespenning som kreves for utgangsenheter og for ekstern strøminngangskilde.
Kretsdiagram
Kretsskjema for grensesnitt mellom trinnmotor og ARM-7 LPC2148 er gitt nedenfor
ARM7-LPC2148 med ULN2003 Motor Driver IC
GPIO Pins av LPC2148 (P0.7 til P0.10) regnes som utgangspinner som er koblet til inngangspinner (IN1-IN4) på ULN2003 IC.
LPC2148 Pins |
PINS AV ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
S.10 |
IN4 |
5V |
COM |
GND |
GND |
Tilkoblinger av ULN2003 IC med trinnmotor (28BYJ-48)
Utgangspinnene (OUT1-OUT4) på ULN2003 IC er koblet til trinnmotortappene (blå, rosa, gul og oransje).
ULN2003 IC PINS |
PINS AV TRINNMOTOR |
UT1 |
BLÅ |
UT2 |
ROSA |
UT3 |
GUL |
UT4 |
ORANSJE |
COM |
RØD (+ 5V) |
Lysdioder med IN1 til IN4 fra ULN2003
Fire LED-er (LED1, LED2, LED4, LED 4) anodepinner er koblet til henholdsvis pinnene IN1, IN2, IN3 og IN4 på ULN2003, og katodene til lysdiodene er koblet til GND som skal indikere pulser fra LPC2148. Vi kan merke mønsteret til pulser som er gitt. Mønster vises i demonstrasjonsvideoen vedlagt på slutten.
Programmering ARM7-LPC2148 for trinnmotor
For å programmere ARM7-LPC2148 trenger vi keil uVision & Flash Magic verktøy. Vi bruker USB-kabel til å programmere ARM7 Stick via mikro-USB-port. Vi skriver kode ved hjelp av Keil og lager en hex-fil, og deretter blinkes HEX-filen til ARM7-pinne ved hjelp av Flash Magic. Hvis du vil vite mer om å installere keil uVision og Flash Magic og hvordan du bruker dem, kan du følge lenken Komme i gang med ARM7 LPC2148 Microcontroller og programmere den ved hjelp av Keil uVision.
Den komplette koden for å kontrollere trinnmotor med ARM 7 er gitt på slutten av denne opplæringen, her forklarer vi få deler av den.
1. For å bruke FULL STEP-ONE PHASE ON- metoden må vi ta med kommandoen nedenfor. Så vi bruker følgende linje i programmet
usignert røye med klokken = {0x1,0x2,0x4,0x8}; // Kommandoer for rotasjon med urviseren usignert tegn mot klokken = {0x8,0x4,0x2,0x1}; // Kommandoer for rotasjon mot klokken
2. Følgende linjer brukes til å initialisere PORT0-pinnene som utgang og sette dem til LAV
PINSEL0 = 0x00000000; // Innstilling av PORT0-pinner IO0DIR - = 0x00000780; // Innstilling av pinner P0.7, P0.8, P0.9, P0.10 som UTGANG IO0CLR = 0x00000780; // Innstilling av P0.7, P0.8, P0.9, P0.10 pinner UTGANG som LAV
3. Still PORT-pinnene (P0.7 til P0.10) HØY i henhold til kommandoene med urviseren ved å bruke denne for sløyfe med forsinkelse
for (int j = 0; j
Samme for Anti-Clock Wise
for (int z = 0; z
4. Endre forsinkelsestiden for å endre trinnmotors rotasjonshastighet
forsinkelse (0x10000); // Endre denne verdien for å endre rotasjonshastigheten (0x10000) -Full hastighet (0x50000) -Går sakte (0x90000) -Går sakte enn tidligere. Så ved å øke forsinkelsen senker vi rotasjonshastigheten.
5. Antall trinn for en komplett rotasjon kan endres med koden nedenfor
int no_of_steps = 550; // Endre denne verdien for nødvendig antall trinns rotasjon (550 gir en fullstendig rotasjon)
For trinnmotoren min fikk jeg 550 trinn for full rotasjon og 225 for halv rotasjon. Så endre det i henhold til dine krav.
6. Denne funksjonen brukes til å lage forsinkelsestid.
ugyldig forsinkelse (usignert int-verdi) // Funksjon for å generere forsinkelse { usignert int z; for (z = 0; z
Komplett kode med demonstrasjonsvideo er gitt nedenfor.