- Stepper Motors:
- Beräkning av steg per varv för stegmotor:
- Varför behöver vi drivarmoduler för stegmotorer?
- Arduino Stepper Motor Position Control Circuit Diagram och förklaring:
- Kod för Arduino Board:
- Arbeta med stegmotor med Arduino:
Stegmotorer tar alltmer sin position i elektronikvärlden. Från en vanlig övervakningskamera till en komplicerad CNC-maskin / robot används dessa stegmotorer överallt som ställdon eftersom de ger noggrann styrning. En stegmotor är en borstlös, synkron motor som fullbordar en full rotation i ett antal steg. I denna Arduino stegmotorhandledning lär vi oss om den vanligaste stegmotorn 28-BYJ48 och hur man gränssnitt den med Arduino med hjälp av ULN2003 stegmotormodul.
Stepper Motors:
Låt oss titta på den här 28-BYJ48 stegmotorn.
Okej, så till skillnad från en vanlig likströmsmotor har den här fem ledningar i alla fina färger som kommer ut ur den och varför är det så? För att förstå detta bör vi först veta hur en stepper fungerar och vad dess specialitet är. Först och främst stegmotorer roterar inte, de trampar och så kallas de också stegmotorer. Det betyder att de bara rör sig ett steg i taget. Dessa motorer har en sekvens av spolar närvarande och dessa spolar måste aktiveras på ett visst sätt för att få motorn att rotera. När varje spole aktiveras tar motorn ett steg och en energisekvens kommer att få motorn att ta kontinuerliga steg och därmed få den att rotera. Låt oss ta en titt på spolarna som finns i motorn för att veta exakt varifrån dessa ledningar kommer.
Som du kan se har motorn Unipolär 5-ledars spolarrangemang. Det finns fyra spolar som måste aktiveras i en viss sekvens. De röda ledningarna levereras med + 5V och de återstående fyra ledningarna dras till marken för att utlösa respektive spole. Vi använder en mikrokontroller som Arduino, aktiverar dessa spolar i en viss sekvens och får motorn att utföra det antal steg som krävs.
Så varför heter den här motorn 28-BYJ48 ? Allvarligt!!! jag vet inte. Det finns ingen teknisk anledning för att denna motor ska kallas så; kanske vi borde dyka mycket djupare in i det. Låt oss titta på några av de viktiga tekniska data som erhållits från databladet för denna motor i bilden nedan.
Det är ett huvud fullt av information, men vi behöver titta på några viktiga för att veta vilken typ av steg vi använder så att vi kan programmera det effektivt. Först vet vi att det är en 5V stegmotor eftersom vi ger den röda ledningen energi med 5V. Sedan vet vi också att det är en fyrfas stegmotor eftersom den hade fyra spolar i sig. Nu är utväxlingsförhållandet 1:64. Det betyder att axeln som du ser utanför kommer att göra en fullständig rotation endast om motorn inuti roterar 64 gånger. Detta beror på kugghjulen som är anslutna mellan motor och utgående axel, dessa kugghjul hjälper till att öka vridmomentet.
En annan viktig information att märka är Stride Angle: 5.625 ° / 64. Detta innebär att motorn när den körs i 8-stegssekvens kommer att flytta 5,625 grader för varje steg och det tar 64 steg (5,625 * 64 = 360) för att slutföra en full rotation. Du kan lära dig mer om arbete med stegmotorer med ARM LPC2148, ATMega16 Microcontroller, MSP430.
Beräkning av steg per varv för stegmotor:
Det är viktigt att veta hur man beräknar stegen per revolution för din stegmotor, för först då kan du programmera den effektivt.
I Arduino kommer vi att använda motorn i 4-stegssekvens så att stegvinkeln blir 11,25 ° eftersom den är 5,625 ° (ges i datablad) för 8-stegssekvensen blir den 11,25 ° (5,625 * 2 = 11,25).
Steg per varv = 360 / stegvinkel
Här är 360 / 11,25 = 32 steg per varv.
Varför behöver vi drivarmoduler för stegmotorer?
De flesta stegmotorer fungerar endast med hjälp av en drivmodul. Detta beror på att styrenhetsmodulen (i vårt fall Arduino) inte kommer att kunna ge tillräckligt med ström från sina I / O-stift för att motorn ska fungera. Så vi kommer att använda en extern modul som ULN2003- modul som stegmotordrivrutin. Det finns många typer av drivarmoduler och betyget på en kommer att ändras beroende på vilken typ av motor som används. Den primära principen för alla förarmoduler är att källa / sänka tillräckligt med ström för att motorn ska fungera.
Arduino Stepper Motor Position Control Circuit Diagram och förklaring:
Kretsschemat för arduino stegmotorstyrningsprojekt visas ovan. Vi har använt stegmotorn 28BYJ-48 och drivrutinsmodulen ULN2003. För att aktivera stegmotorns fyra spolar använder vi de digitala stiften 8,9,10 och 11. Drivmodulen drivs av 5V-stiftet på Arduino Board.
Men driv drivrutinen med extern strömförsörjning när du ansluter en del belastning till stäppmotorn. Eftersom jag bara använder motorn för demonstrationsändamål har jag använt Arduino Board + 5V-skenan. Kom också ihåg att ansluta Arduino Ground med Diver-modulen.
Kod för Arduino Board:
Innan vi börjar programmera med vår Arduino, låt oss förstå vad som faktiskt ska hända i programmet. Som sagt tidigare kommer vi att använda 4-stegs sekvensmetod så vi kommer att ha fyra steg att utföra för att göra en fullständig rotation.
Steg |
Pin Energized |
Spolar aktiverade |
Steg 1 |
8 och 9 |
A och B |
Steg 2 |
9 och 10 |
B och C |
Steg 3 |
10 och 11 |
C och D |
Steg 4 |
11 och 8 |
D och A |
Driver-modulen kommer att ha fyra lysdioder med vilka vi kan kontrollera vilken spole som aktiveras vid en given tidpunkt. Videon som visar energisekvensen finns i slutet av denna handledning.
I den här handledningen ska vi skriva arduino-stegmotorkoden och för det kommer vi att programmera Arduino på ett sådant sätt att vi kan ange antalet steg som stegmotorn ska ta genom den seriella bildskärmen på Arduino. Det fullständiga programmet finns i slutet av handledningen, några viktiga rader förklaras nedan.
Antalet steg per varv för vår stegmotor beräknades till 32; därför anger vi det som visas i raden nedan
#define STEG 32
Därefter måste du skapa instanser där vi anger stiften som vi har anslutit stegmotorn till.
Stegsteg (STEG, 8, 10, 9, 11);
Obs: Stiftens nummer är ordentligt störda som 8,10,9,11. Du måste följa samma mönster även om du byter stift som din motor är ansluten till.
Eftersom vi använder Arduino-stegbiblioteket kan vi ställa in motorns hastighet med nedanstående rad. Hastigheten kan ligga mellan 0 och 200 för 28-BYJ48 stegmotorer.
stepper.setSpeed (200);
För att få motorn att röra sig ett steg kan vi använda följande rad.
stepper.step (val);
Antalet steg som ska flyttas kommer att tillhandahållas av variabeln "val". Eftersom vi har 32 steg och 64 som utväxling måste vi flytta 2048 (32 * 64 = 2048), för att göra en komplett rotation.
Värdet på variabeln "val" kan anges av användaren med hjälp av den seriella monitorn.
Arbeta med stegmotor med Arduino:
När anslutningen har gjorts ska hårdvaran se ut så här på bilden nedan.
Ladda nu upp programmet nedan i din Arduino UNO och öppna den seriella bildskärmen. Som diskuterats tidigare måste vi göra 2048 steg för att göra en fullständig rotation, så när vi går in 2048 kommer motorn att göra en fullständig rotation medurs genom att göra 2048 steg. För att rotera moturs anger du bara siffran med "-" negativt tecken. Så när du går in i -1024 kommer motorn att rotera halva vägen moturs. Du kan ange önskade värden, som att ange 1 gör att motorn bara tar ett steg.
Hoppas att du förstod projektet och gillade att bygga det. Hela arbetet med projektet visas i videon nedan. Om du är osäker kan du lägga upp dem i kommentarsektionen under vårt forum.