- Stepper Motors:
- Beregning av trinnene per revolusjon for trinnmotor:
- Hvorfor trenger vi drivermoduler for trinnmotorer?
- Kretsdiagram for roterende trinnmotor ved bruk av potensiometer:
- Kode for Arduino Board:
- Jobber:
Steppermotorer tar i økende grad sin posisjon i elektronikkens verden. Fra et vanlig overvåkningskamera til en komplisert CNC-maskin / robot brukes disse trinnmotorene overalt som aktuatorer siden de gir nøyaktig kontroll. I denne veiledningen vil vi lære om den mest / billig tilgjengelige trinnmotoren 28-BYJ48 og hvordan du kan grensesnitt den med Arduino ved hjelp av ULN2003 trinnmodul.
I det siste prosjektet har vi ganske enkelt grensesnitt trinnmotor med Arduino, hvor du kan rotere trinnmotoren ved å angi rotasjonsvinkelen i Serial Monitor of Arduino. Her i dette prosjektet vil vi rotere trinnmotoren ved hjelp av potensiometer og Arduino, som om du dreier potensiometeret med klokken, vil trinnet rotere med klokken, og hvis du dreier potensiometeret mot klokken, vil det rotere mot klokken.
Stepper Motors:
La oss ta en titt på denne 28-BYJ48 trinnmotoren.
Ok, så i motsetning til en vanlig DC-motor har denne fem ledninger i alle fancy farger som kommer ut av den, og hvorfor er det slik? For å forstå dette, bør vi først vite hvordan en stepper fungerer og hva spesialiteten er. Først av alt trinnmotorer roterer ikke, de tråkker, så de kalles også trinnmotorer. Betydning, de vil bare bevege seg ett trinn av gangen. Disse motorene har en sekvens av spoler tilstede i seg, og disse spolene må aktiveres på en bestemt måte for å få motoren til å rotere. Når hver spole aktiveres, tar motoren et skritt, og en sekvens av aktivering vil få motoren til å ta kontinuerlige trinn, og dermed få den til å rotere. La oss ta en titt på spolene som er tilstede i motoren for å vite nøyaktig hvor disse ledningene kommer fra.
Som du kan se, har motoren Unipolar 5-leder spolearrangement. Det er fire spoler som må aktiveres i en bestemt sekvens. De røde ledningene leveres med + 5V, og de resterende fire ledningene trekkes til bakken for å utløse den respektive spolen. Vi bruker en mikrokontroller som Arduino, som gir disse spolene energi i en bestemt sekvens og får motoren til å utføre det nødvendige antall trinn.
Så nå, hvorfor heter denne motoren 28-BYJ48 ? Alvor!!! Jeg vet ikke. Det er ingen teknisk grunn til at denne motoren blir kalt det; kanskje vi skal dykke mye dypere inn i det. La oss se på noen av de viktige tekniske dataene som er innhentet fra databladet til denne motoren i bildet nedenfor.
Det er et hode full av informasjon, men vi må se på noen få viktige for å vite hvilken type stepper vi bruker, slik at vi kan programmere den effektivt. Først vet vi at det er en 5V trinnmotor siden vi gir strøm til den røde ledningen med 5V. Så vet vi også at det er en firetrinns trinnmotor siden den hadde fire spoler. Nå er girutvekslingen 1:64. Dette betyr at akselen du ser utenfor, vil gjøre en fullstendig rotasjon bare hvis motoren inni roterer 64 ganger. Dette er på grunn av girene som er koblet mellom motoren og utgangsakselen, disse girene hjelper til med å øke dreiemomentet.
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.
Beregning av trinnene per revolusjon for trinnmotor:
Det er viktig å vite hvordan du beregner trinnene per revolusjon for trinnmotoren din, fordi bare da kan du programmere den effektivt.
I Arduino vil vi kjøre motoren i 4-trinns sekvens, slik at trinnvinkelen vil være 11,25 ° siden den er 5,625 ° (gitt i databladet) for 8-trinns sekvens vil den være 11,25 ° (5,625 * 2 = 11,25).
Trinn per omdreining = 360 / trinnvinkel
Her er 360 / 11,25 = 32 trinn per omdreining.
Hvorfor trenger vi drivermoduler for trinnmotorer?
De fleste trinnmotorer vil bare fungere ved hjelp av en drivermodul. Dette skyldes at kontrollmodulen (i vårt tilfelle Arduino) 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. Det finnes mange typer drivermoduler, og rangering av en vil endres basert på hvilken type motor som brukes. Det primære prinsippet for alle drivermoduler vil være å kilde / synke nok strøm til at motoren skal fungere.
Kretsdiagram for roterende trinnmotor ved bruk av potensiometer:
Kretsdiagrammet for den kontrollerende trinnmotoren ved bruk av potensiometer og Arduino er vist ovenfor. Vi har brukt 28BYJ-48 trinnmotor og ULN2003 drivermodul. For å aktivere de fire spolene i trinnmotoren bruker vi de digitale pinnene 8,9,10 og 11. Drivermodulen drives av 5V-pinnen på Arduino Board. Et potensiometer er koblet til A0 basert på hvis verdier vi vil rotere trinnmotoren.
Men driv driveren med ekstern strømforsyning når du kobler litt belastning til steppemotoren. Siden jeg nettopp bruker motoren for demonstrasjonsformål, har jeg brukt + 5V-skinnen til Arduino Board. Husk også å koble bakken til Arduino med bakken på drivermodulen.
Kode for Arduino Board:
Før vi begynner å programmere med Arduino, la oss forstå hva som egentlig skal skje inne i programmet. Som sagt tidligere, vil vi bruke 4-trinns sekvensmetode, så vi vil ha fire trinn å utføre for å gjøre en fullstendig rotasjon.
Steg |
Pin Energized |
Spoler energisert |
Trinn 1 |
8 og 9 |
A og B |
Steg 2 |
9 og 10 |
B og C |
Trinn 3 |
10 og 11 |
C og D |
Trinn 4 |
11 og 8 |
D og A |
Driver-modulen vil ha fire lysdioder som vi kan sjekke hvilken spole som tilføres til enhver tid. Den komplette demonstrasjonsvideoen finner du på slutten av denne veiledningen.
I denne opplæringen skal vi programmere Arduino på en slik måte at vi kan vri potensiometeret som er koblet til pin A0 og kontrollere retningen på trinnmotoren. Hele programmet finner du på slutten av opplæringen, noen viktige linjer er forklart nedenfor.
Antall trinn per omdreining for trinnmotoren vår ble beregnet til å være 32; derfor skriver vi inn det som vist i linjen nedenfor
#define TRINN 32
Deretter må du lage tilfeller der vi spesifiserer pinnene som vi har koblet trinnmotoren til.
Stepper stepper (TRINN, 8, 10, 9, 11);
Merk: Pinnetallet er uordnet som 8,10,9,11 med vilje. Du må følge det samme mønsteret selv om du bytter pinnene som motoren din er koblet til.
Siden vi bruker Arduino stepper-biblioteket, kan vi stille hastigheten på motoren ved hjelp av linjen nedenfor. Hastigheten kan variere mellom 0 og 200 for 28-BYJ48 trinnmotorer.
stepper.setSpeed (200);
Nå, for å få motoren til å bevege seg ett trinn med klokken, kan vi bruke følgende linje.
stepper.trinn (1);
For å få motoren til å bevege seg ett trinn mot klokken kan vi bruke følgende linje.
stepper.trinn (-1);
I vårt program vil vi lese verdien av den analoge pin A0 og sammenligne den med tidligere verdi (Pval). Hvis den har økt, beveger vi oss 5 trinn med klokken, og hvis den reduseres, beveger vi oss 5 trinn mot klokken.
potVal = kart (analogRead (A0), 0,1024,0,500); if (potVal> Pval) stepper.step (5); hvis (potVal
Jobber:
Når tilkoblingen er opprettet, bør maskinvaren se ut som dette på bildet nedenfor.
Last nå opp programmet nedenfor i Arduino UNO og åpne seriell skjerm. Som diskutert tidligere, må du rotere potensiometeret for å kontrollere rotasjonen på trinnmotoren. Hvis du roterer den med urviseren, vil trinnmotoren dreie med urviseren og omvendt.
Håper du forsto prosjektet og likte å bygge det. Fullstendig bearbeiding av prosjektet er vist i videoen nedenfor. Hvis du er i tvil, legg dem inn i kommentarseksjonen nedenfor eller på forumene våre.