- Stappenmotor:
- ULN2003 stappenmotorbesturing:
- Vereiste componenten
- Schakelschema en uitleg
- Code Uitleg
Stappenmotor is een speciaal ontworpen motor die in stappen ronddraait. De snelheid van de stappenmotor hangt af van de snelheid van het elektrische signaal dat erop wordt toegepast. Verschillende patronen kunnen de richting en het rotatietype van de stappenmotor regelen. Er zijn hoofdzakelijk twee soorten stappenmotoren beschikbaar, unipolair en bipolair. Unipolair is gemakkelijker te bedienen, te besturen en ook gemakkelijker te krijgen. Hier in deze tutorial koppelen we de stappenmotor aan de PIC Microcontroller PIC16F877A.
We gebruiken 28BYJ-48 stappenmotor voor dit project, die goedkoop en gemakkelijk verkrijgbaar is. Het is een unipolaire stappenmotor van 5V DC. We gebruiken ook een module die bij deze motor beschikbaar is en die bestaat uit ULN2003 Stepper Motor Driver IC. ULN2003 is een Darlington-paararray, wat handig is om deze motor aan te drijven, aangezien de PIC-microcontroller niet genoeg stroom kon leveren om aan te sturen. ULN2003A is in staat om 500mA belasting aan te sturen met 600mA piekstroom.
Stappenmotor:
Laten we de specificatie van de 28BYJ-48 stappenmotor uit het gegevensblad bekijken.
Hoe de stappenmotor te draaien:
Als we de datasheet zien, zien we de pin-out.
Binnenin de motor zijn er twee spoelen met middenaftakking beschikbaar. Rode draad is de standaard voor beide die worden aangesloten op VCC of 5V.
Andere 4 draden roze, rood, geel en blauw regelen de rotatie afhankelijk van het elektrische signaal. Tevens is deze motor, afhankelijk van de beweging, in 3 stappen te besturen. Volledige aandrijfmodus, halve aandrijfmodus en golfaandrijfmodus.
Drie rijmodi van stappenmotor:
Volledige aandrijving: als twee stator-elektromagneten tegelijk worden bekrachtigd, draait de motor met het volledige koppel, de zogenaamde full-drive sequentie-modus.
Stap |
Blauw |
Roze |
Geel |
Oranje |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Halve aandrijving: wanneer afwisselend een en twee fasen worden bekrachtigd, zal de motor in de halve aandrijfmodus draaien. Het wordt gebruikt om de hoekresolutie te verhogen. Nadeel is dat er bij deze beweging minder koppel wordt geproduceerd.
Stap |
Blauw |
Roze |
Geel |
Oranje |
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 |
Wave Drive: In deze modus is één stator-elektromagneet ingeschakeld. Het volgt 4 stappen, hetzelfde als de modus voor volledig rijden. Het verbruikt een laag vermogen met een laag koppel.
Stap |
Blauw |
Roze |
Geel |
Oranje |
1 |
1 |
0 |
0 |
0 |
2 |
0 |
1 |
0 |
0 |
3 |
0 |
0 |
1 |
0 |
4 |
0 |
0 |
0 |
1 |
We hebben de stappenmotor eerder gekoppeld aan andere microcontrollers:
Stappenmotor kan ook worden bestuurd zonder enige Microcontroller, zie dit Stepper Motor Driver Circuit.
ULN2003 stappenmotorbesturing:
Laten we het break- outbord begrijpen dat bestaat uit ULN2003 IC. Het is belangrijk om de pin te begrijpen.
Het gele gedeelte wordt gebruikt om de motor aan te sluiten. Het rode gedeelte toont een jumper. Het is belangrijk om de jumper te plaatsen, omdat dit de vrijloopdiodebescherming voor de motor mogelijk maakt . De roze ingang is voor de microcontroller-aansluiting.
We zullen de motor in volledige aandrijfmodus met de klok mee draaien en opnieuw met de golfaandrijfmodus tegen de klok in. Bekijk de demonstratievideo aan het einde.
Vereiste componenten
- Pic16F877A
- Programmeerkit
- Breadboard
- 20Mhz kristal
- 33pF schijfcondensator - 2st
- 4.7k weerstand
- Berg draden en pinnen
- ULN2003A breakout board samen met de 28BYJ-48 stappenmotor.
- Extra draden om aan te sluiten
- 5V voedingseenheid of muuradapter met 500mA rating
Schakelschema en uitleg
In het schakelschema wordt aan de linkerkant de PIC16F877A weergegeven en aan de rechterkant de ULN2003A-verbinding. De ULN2003 en het stappenmotorgedeelte bevinden zich in het breakout-bord.
De verbinding van de Breakout-kaart naar de microcontrollereenheid wordt
EEN . IN1 => Pin33
B. IN2 => Pin34
C. IN3 => Pin35
D. IN4 => Pin36
Ik heb alle componenten aangesloten en je hardware om de stappenmotor te laten draaien met de PIC-microcontroller is klaar.
Als u nieuw bent bij PIC Microcontroller, volg dan onze PIC Microcontroller Tutorials met de vermelding Aan de slag met PIC Microcontroller.
Code Uitleg
De volledige code voor deze PIC-gebaseerde stappenmotorstuurprogramma wordt aan het einde van deze tutorial gegeven met een demonstratievideo. Zoals altijd moeten we eerst de configuratiebits instellen in de pic-microcontroller en dan beginnen met de hoofdfunctie ongeldig .
Dit zijn de macro's voor configuratiebits van de microcontrollereenheid en de headerbestanden van de bibliotheek.
#define _XTAL_FREQ 200000000 // Kristalfrequentie, gebruikt in vertraging #define snelheid 1 // Snelheidsbereik 10 tot 1 10 = laagste, 1 = hoogste #define stappen 250 // hoeveel stap zal het nemen #define met de klok mee 0 // met de klok mee macro #define tegen de klok in 1 // tegen de klok in macro
In de eerste regel hebben we de kristalfrequentie gedefinieerd die nodig is voor de vertragingsroutine. Andere macro's worden gebruikt om gebruikersgerelateerde opties te definiëren.
Als u de code ziet, zijn er drie functies gedefinieerd voor het aandrijven van de motor in drie modi met de klok mee en tegen de klok in. Hier zijn de drie functies:
1. ongeldig full_drive (char direction)
2. leegte half_drive (char direction)
3. void wave_drive (char direction)
Controleer de definities van deze functies in de volledige onderstaande code:
Nu in de ongeldige hoofdfunctie, rijden we de motor met de klok mee met behulp van de volledige aandrijfmodus, afhankelijk van de stappen en na een paar seconden vertraging draaien we de motor opnieuw tegen de klok in met behulp van de golfaandrijfmodus.
void main (void) { system_init (); while (1) { / * Rij de motor in volledige aandrijfmodus met de klok mee * / for (int i = 0; i
Dit is hoe we de stappenmotor kunnen draaien met PIC Microcontroller. Stappenmotoren zijn erg handig in CNC-machines, robotica en andere embedded toepassingen.