Arduino - Stuurt 28BYJ-48 Stappenmotor aan met ULN2003 Driver
In deze tutorial gaan we leren:
- Hoe u een enkele 28BYJ-48 stappenmotor aanstuurt met Arduino en ULN2003 driver
- Hoe u meerdere 28BYJ-48 stappenmotoren tegelijk aanstuurt met Arduino en ULN2003 driver

Stappenmotoren zijn uitstekende motoren voor positiebesturing. De stappenmotoren verdelen een volledige omwenteling in een aantal gelijke “stappen”. Ze worden gebruikt in veel apparaten zoals printers, 3D-printers, CNC-machines en in industriële automatisering.
Een van de voordelige manieren om te leren over stappenmotoren is het gebruik van 28BYJ-48 stappenmotoren. Deze worden meestal geleverd met een ULN2003-gebaseerde driverprint, waardoor ze heel eenvoudig te gebruiken zijn.
Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de 28BYJ-48 Stappenmotor
Volgens het datasheet, wanneer de 28BYJ-48 motor in full-step modus draait, correspondeert elke stap met een rotatie van 11,25°. Dat betekent dat er 32 stappen per omwenteling zijn (360°/11,25° = 32).
Daarnaast heeft de motor een 1/64 overbrengingsverhouding via een tandwielreductie. Dat betekent dat het daadwerkelijke aantal stappen 32 x 64 = 2048 stappen is. Elke stap komt overeen met 360°/2048 = 0,1758°.
Conclusie: als de motor 2048 stappen (in full-step modus) draait, maakt de motor één volledige omwenteling.
Pinout
De 28BYJ-48 stappenmotor heeft 5 pinnen. U hoeft niet in detail op deze pinnen te letten; sluit deze gewoon aan op de connector van de ULN2003 motor driver.

Over de ULN2003 Stappenmotor Driver Module
De ULN2003 is een van de meest gebruikte motor driver modules voor stappenmotoren.
- De module heeft vier LEDs die de activiteit van vier controle-ingangen weergeven (om de stapstatus aan te geven). Ze geven een fraai visueel effect tijdens het stappen.
- De module heeft ook een ON/OFF jumper om de voeding van de stappenmotor te isoleren.
ULN2003 Pinout

De ULN2003 module heeft 6 pinnen en één female connector:
- IN1 pin: wordt gebruikt om de motor aan te sturen. Verbind deze met een output pin op de Arduino.
- IN2 pin: wordt gebruikt om de motor aan te sturen. Verbind deze met een output pin op de Arduino.
- IN3 pin: wordt gebruikt om de motor aan te sturen. Verbind deze met een output pin op de Arduino.
- IN4 pin: wordt gebruikt om de motor aan te sturen. Verbind deze met een output pin op de Arduino.
- GND pin: gemeenschappelijke massa pin. MOET verbonden zijn met zowel de GND van de Arduino als die van de externe voeding.
- VDD pin: levert stroom aan de motor. Verbind deze met de externe voeding.
- Motor Connector: hier sluit u de motor op aan.
※ Notiz:
- De spanning van de externe voeding moet gelijk zijn aan de spanning van de stappenmotor. Bijvoorbeeld, als een stappenmotor werkt op 12V DC, gebruikt u een 12V voeding. In het geval van de 28BYJ-48 stappenmotor werkt deze op 5V DC, dus gebruiken we een 5V voeding.
- Ook als een stappenmotor 5V voeding vereist, verbind de VDD pin NIET met de 5V pin van de Arduino. Verbind deze altijd met een externe 5V voeding, omdat de stappenmotor teveel stroom kan trekken.
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Let op dat de draadkleuren van de stappenmotor niet uitmaken. U hoeft alleen de male connector van de 28BYJ-48 stappenmotor aan te sluiten op de female connector van de ULN2003 driver.
Hoe programmeer ik een stappenmotor aan te sturen
Er zijn drie methoden om een stappenmotor aan te sturen:
- Full-step (volledige stappen)
- Half-step (halve stappen)
- Micro-step (microstappen)
Voor eenvoudige toepassingen kunt u de full-step methode gebruiken. De details van de drie methodes worden aan het einde van deze tutorial uitgelegd. Het programmeren van deze methoden kan complex zijn, maar gelukkig zijn er veel bibliotheken die dit voor u doen. U hoeft alleen maar de juiste bibliotheek te gebruiken.
De Arduino IDE heeft een ingebouwde Stepper bibliotheek. Echter, wij raden aan deze niet te gebruiken omdat:
- De bibliotheek blokkerend werkt, wat betekent dat Arduino geen andere taken kan uitvoeren tijdens het aansturen van de stappenmotor.
- De bibliotheek niet over voldoende functionaliteiten beschikt.
In plaats daarvan raden wij aan de AccelStepper bibliotheek te gebruiken. Deze bibliotheek ondersteunt:
- Versnelling (acceleration)
- Vertraging (deceleration)
- Full-step en half-step aansturing
- Meerdere gelijktijdige stappenmotoren met onafhankelijke en gelijktijdige stappen per motor
- Nadeel: ondersteunt GEEN micro-step aansturing
Arduino Code
Snelle Stappen
- Navigeer naar het Libraries icoon in de linker balk van de Arduino IDE.
- Zoek naar “AccelStepper” en selecteer de AccelStepper bibliotheek van Mike McCauley.
- Klik op de Installeren knop om de AccelStepper bibliotheek te installeren.

- Kopieer de bovenstaande code en open deze met Arduino IDE.
- Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden.
- Bekijk de motor draaien. De motor zou:
- één omwenteling met de klok mee moeten draaien, daarna
- Twee omwentelingen tegen de klok in, gevolgd door
- Twee omwentelingen met de klok mee.
- Bekijk het resultaat in de Serial Monitor
Dit proces wordt oneindig herhaald.
Hoe meerdere 28BYJ-48 stappenmotoren aan te sturen
Laten we leren hoe u twee stappenmotoren onafhankelijk en tegelijk kunt aansturen.
Bedradingsschema voor twee 28BYJ-48 stappenmotoren

This image is created using Fritzing. Click to enlarge image
Arduino Code voor twee 28BYJ-48 stappenmotoren
Aanvullende Kennis
1. Stappenmotor trilt tijdens beweging
Maak u geen zorgen als de stappenmotor trilt tijdens het bewegen. Dit is een eigenschap van de stappenmotor. De trilling kan verminderd worden door gebruik te maken van micro-stepping aansturing.
Ook door deze eigenschap kan de stappenmotor, wanneer correct aangestuurd, muzikale geluiden produceren alsof het een muziekinstrument is. Zie dit project op Arduino Project Hub.
2. Methoden om stappenmotoren aan te sturen
- Full-step: De bewegingsstap is één volledige stap, overeenkomend met de waarde in graden opgegeven in het datasheet of de handleiding van de stappenmotor.
- Half-step: verdeelt iedere volledige stap in twee kleinere stappen. De bewegingsstap is de helft van een full-step, waardoor de motor met dubbele resolutie kan bewegen.
- Micro-step: verdeelt iedere volledige stap in vele kleinere stappen. De bewegingsstap is een fractie van de volledige stap, bijvoorbeeld 1/4, 1/8, 1/16, 1/32 of nog kleiner. Hierdoor beweegt de motor met hogere resolutie en soepeler bij lage snelheden. Hoe groter het aantal microstappen, hoe hoger de resolutie en hoe vloeiender de beweging.
Bijvoorbeeld, als het datasheet een motorstap van 1,8 graden vermeldt:
- Full-step: de motor beweegt met 1,8 graden per stap <⇒ 200 stappen per omwenteling
- Half-step: de motor beweegt met 0,9 graden per stap <⇒ 400 stappen per omwenteling
- Micro-step: de motor kan bewegen met 0,45, 0,225, 0,1125, 0,05625 graden per stap <⇒ 800, 1600, 3200, 6400 ... stappen per omwenteling
De bovenstaande code gebruikt de full-step aansturingsmethode.
3. Resonantie probleem
Dit is een geavanceerde eigenschap. Beginners hoeven hier in eerste instantie geen rekening mee te houden. Resonantie treedt op bij een snelheid waarbij de stapfrequentie gelijk is aan de natuurlijke resonantiefrequentie van de motor. Dit kan leiden tot hoorbare veranderingen in geluid en toegenomen trillingen. In echte toepassingen moet de ontwikkelaar hier rekening mee houden.
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.
Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt het proces beter te begrijpen.
Opmerkingen
WARNING
Let op: deze tutorial is nog niet compleet. We zullen een bericht plaatsen op onze Facebook-pagina wanneer de tutorial compleet is. Like de pagina om op de hoogte te blijven.