- Nødvendig materiale
- Stepper Motor (28BYJ-48)
- ULN2003 Motor Driver IC
- Kretsdiagram og tilkoblinger
- Roterende trinnmotor med STM32F103C8
- PROGRAMMERING STM32 for trinnmotor
Stepper motor er børsteløs DC-motor, som kan roteres i små vinkler, disse vinklene kalles trinn. Generelt trinnmotor bruker 200 trinn for å fullføre 360 graders rotasjon, betyr at den roterer 1,8 grader per trinn. Stepper motor brukes i mange enheter som trenger presis rotasjonsbevegelse som roboter, antenner, harddisker osv. Vi kan rotere stepper motor til en bestemt vinkel ved å gi den riktige instruksjoner. Hovedsakelig er to typer trinnmotorer tilgjengelig, Unipolar og Bipolar. Unipolar er lettere å betjene, kontrollere og også lettere å få. Her i denne opplæringen kobler vi trinnmotor med STM32F103C8 (Blue pill) -kort.
Nødvendig materiale
- STM32F103C8 (blå pille)
- Stepper Motor (28BYJ-48)
- ULN2003 IC
- Potensiometer 10k
- Brettbrett
- Jumper ledninger
Stepper Motor (28BYJ-48)
28BYJ-48 er en unipolar trinnmotor som krever 5V forsyning. Motoren har et unipolært arrangement med 4 spoler, og hver spole er klassifisert for + 5V, derfor er det relativt enkelt å kontrollere med alle mikrokontrollere som Arduino, Raspberry Pi, også STM32, 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.
En annen viktig data å legge merke til er Stride Angle: 5.625 ° / 64. Dette betyr at motoren når den kjører i 8-trinns sekvens vil bevege seg 5,625 grader for hvert trinn, og det vil ta 64 trinn (5,625 * 64 = 360) for å fullføre en full rotasjon. Andre spesifikasjoner 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
Stepper motor kan også styres uten mikrokontroller, se denne Stepper Motor Driver Circuit.
ULN2003 Motor Driver IC
Den brukes til å kjøre motoren i henhold til pulser mottatt fra mikrokontroller. Nedenfor er bildediagrammet til ULN2003:
Pins (IN1 til IN7) er inngangspinner og (OUT 1 til OUT 7) er tilsvarende utgangspinner. COM er gitt Positiv kildespenning som kreves for utgangsenheter. Flere tilkoblinger for trinnmotor er gitt nedenfor i kretsskjemaet.
Kretsdiagram og tilkoblinger
Nedenfor er tilkoblingsforklaringen for kretsdiagrammet ovenfor.
STM32F103C8 (blå pille)
Som vi kan se i diagrammet nedenfor, er PWM-pinnene indikert i bølgeformat (~), det er 15 slike pinner som kan brukes til pulsutgang til trinnmotor. Vi trenger bare fire pin, vi bruker (PA0 toPA3).
STM32F103C8 med ULN2003 Motor Driver IC
Pins (PA0 til PA3) regnes som utgangspinner som er koblet til inngangspinner (IN1-IN4) på ULN2003 IC.
PINNER AV STM32F103C8 |
PINS AV ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC med trinnmotor (28BYJ-48)
Utgangspinnene (OUT1-OUT4) til ULN2003 IC er koblet til trinnmotortappene (oransje, gul, rosa og blå).
PINS AV ULN2003 IC |
PINS AV TRINNMOTOR |
UT1 |
ORANSJE |
UT2 |
GUL |
UT3 |
ROSA |
UT4 |
BLÅ |
COM |
RØD |
STM32F103C8 med potensiometer
Et potensiometer brukes til å stille hastigheten til trinnmotoren.
POTENTIOMETER |
STM32F103C8 |
VENSTRE (INNGANG) |
3.3 |
SENTRUM (UTGANG) |
PA4 |
HØYRE (GND) |
GND |
Roterende trinnmotor med STM32F103C8
Nedenfor er noen trinn for å betjene trinnmotoren:
- Still hastigheten på trinnmotoren ved å variere potensiometeret.
- Angi deretter trinn for rotasjon enten med urviseren (+ verdier) eller mot urviseren (-verdier) via SERIAL MONITER til stede i ARDUINO IDE (Verktøy-> Seriell skjerm) eller CTRL + SKIFT + M.
- I henhold til inngangsverdien gitt i seriell skjerm, finner visse rotasjonstrinn sted i trinnmotor.
For eksempel
VERDI gitt i seriell overvåkning |
ROTASJON |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMMERING STM32 for trinnmotor
Som den forrige veiledningen programmerte vi STM32F103C8 med Arduino IDE gjennom USB-port uten å bruke FTDI-programmerer. For å lære om programmering av STM32 med Arduino IDE, følg lenken. Vi kan fortsette å programmere det som en Arduino. Komplett kode er gitt på slutten av prosjektet.
Først må vi inkludere trinnbiblioteksfilene #include
#inkludere
Da definerer vi nei. av trinn for å fullføre ved rotasjon, her bruker vi 32 fordi vi bruker Full-Step (4 trinnsekvens ) så (360/32 = 11,25 grader). Så for ett trinn beveger akselen 11,25 grader som er skrittvinkel. I 4 trinns rekkefølge kreves det 4 trinn for en fullstendig rotasjon.
#define TRINN 32
Vi kan også bruke halvtrinnsmodus der det er 8 trinns sekvens (360/64 = 5,625) trinnvinkel.
Trinn per omdreining = 360 / TRINNVINKEL
Når vi setter hastighet, må vi ta analog verdi fra PA4 som er koblet til potensiometer. Så vi må erklære pin for det
const int speedm = PA4
Så har vi konvertert den analoge verdien til digital ved å lagre disse verdiene i variabel av heltallstype, etter det må vi kartlegge ADC-verdiene for å stille hastighet, så vi bruker setningen nedenfor. Lær mer om bruk av ADC med STM32 her.
int adc = analogRead (speedm); int resultat = kart (adc , 0, 4096, 1, 1023);
For å stille hastighet bruker vi stepper.setSpeed (resultat); Vi har hastighetsområde på (1-1023).
Vi må lage forekomst som nedenfor for å stille inn pinnene som er koblet til motoren. Vær forsiktig i disse trinnene, da de fleste av dem gjør en feil her i dette mønsteret. De gir feil mønster, og derfor kan ikke spolene få energi.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Uttalelsen nedenfor brukes til å få verdien av trinn fra seriell skjerm. For eksempel trenger vi 2048 verdier for en full rotasjon (32 * 64 = 2048) som er 64 vil være girutvekslingen og 32 vil være en halv trinnssekvens for en rotasjon.
rotere = Serial.parseInt ();
Nedenfor brukes koden for å ringe til forekomsten og kjøre motoren. Hvis rotasjonsverdien er 1, kalles den funksjonstegeren en gang og ett trekk er gjort.
stepper.trinn (roter);
Fullstendig kode med demonstrasjonsvideo er gitt nedenfor. Sjekk også alle trinnmotorrelaterte prosjekter her, med grensesnitt med forskjellige andre mikrokontrollere