Arduino - Stappenmotor Besturen met L298N Driver
In deze tutorial leert u:
- Hoe u de L298N driver gebruikt om een bipolaire stappenmotor te besturen
- Hoe u de positie van de stappenmotor regelt
- Hoe u de snelheid van de stappenmotor aanpast
- Hoe u de draairichting van de stappenmotor bestuurt
De tutorial is toepasbaar op elk type bipolaire stappenmotor (4 draden). Als voorbeeld wordt de NEMA 17 stappenmotor gebruikt.

Benodigdheden
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over Stappenmotor
Er zijn twee veelgebruikte soorten stappenmotoren:
- bipolair: dit type motor heeft 4 draden
- unipolair: dit type motor heeft 5 of 6 draden.
Voor een 6-draads unipolaire stappenmotor kunnen we vier van de zes draden gebruiken en deze als bipolaire stappenmotor aansturen.
Voor een 5-draads unipolaire stappenmotor, zie Arduino - besturing 28BYJ-48 stappenmotor met ULN2003 driver
Deze tutorial richt zich uitsluitend op de bipolaire stappenmotor.
Bipolaire Stappenmotor pinout
De bipolaire stappenmotor heeft 4 aansluitpinnen. Afhankelijk van de fabrikant verschillen de namen van de motorpinnen. In onderstaande tabel staan enkele veelgebruikte benamingen:
| PIN NO | Naam 1 | Naam 2 | Naam 3 |
|---|---|---|---|
| 1 | A+ | A | A |
| 2 | A- | A | C |
| 3 | B+ | B | B |
| 4 | B- | B | D |

De volgorde van de pinnen, draadbenaming en draadkleuren kunnen per fabrikant verschillen. Raadpleeg daarom altijd de datasheet of handleiding om de relatie tussen draadkleur en pinnummer te achterhalen. De bovenstaande afbeelding toont ook de specificaties van twee verschillende motoren met verschillende draadbenamingen en kleuren.
Stappen per Omwenteling
De specificatie van de motor geeft het aantal graden per stap (DEG_PER_STEP). Afhankelijk van de aansturingsmethode wordt het aantal stappen per omwenteling (STEP_PER_REVOLUTION) als volgt berekend:
| Aansturingsmethode | Stappen per Omwenteling | Werkelijke graden per stap |
|---|---|---|
| Volledige stap (Full-step) | STEP_PER_REVOLUTION = 360 / DEG_PER_STEP | DEG_PER_STEP |
| Halve stap (Half-step) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 | DEG_PER_STEP / 2 |
| Micro-step (1/n) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n | DEG_PER_STEP / n |
Bijvoorbeeld, als de datasheet 1,8 graden per stap vermeldt:
| Aansturingsmethode | Stappen per Omwenteling | Werkelijke graden per stap |
|---|---|---|
| Volledige stap (Full-step) | 200 stappen/omwenteling | 1,8° |
| Halve stap (Half-step) | 400 stappen/omwenteling | 0,9° |
| Micro-step (1/n) | (200 * n) stappen/omwenteling | (1,8 / n)° |
Hoe een stappenmotor besturen met Arduino
Arduino kan signalen genereren om de stappenmotor aan te sturen. De signalen vanuit Arduino bieden echter niet voldoende spanning en/of stroom om de motor te laten draaien. Daarom is een hardware driver nodig tussen Arduino en de motor die twee functies vervult:
- Het versterken van de stuursignalen van Arduino (stroom en spanning)
- Het beschermen van Arduino tegen hoge stroom en spanning die nodig zijn voor de motor.
Er zijn diverse hardware drivers beschikbaar voor het besturen van stappenmotoren. De L298N driver is een van de meest gebruikte drivers voor dit doel.
Over L298N Driver
Een enkele L298N driver kan twee DC motoren of één stappenmotor aansturen. In deze tutorial leert u hoe u deze driver gebruikt voor een stappenmotor.
L298N Driver Pinout

De L298N driver heeft 11 pinnen en drie jumpers:
- VCC pin: levert spanning voor de motor, tussen 5 en 35V
- GND pin: common ground, te verbinden met GND (0V)
- 5V pin: voeding voor de L298N module, kan van Arduino 5V komen
- IN1, IN2, IN3, IN4 pins: verbonden met Arduino om stuursignalen te ontvangen
- OUT1, OUT2, OUT3, OUT4 pins: verbonden met de stappenmotor
- ENA, ENB jumpers: schakelen de stappenmotor in, deze dienen beide geplaatst te zijn
- 5V-EN jumper: als geplaatst, krijgt de module voeding van VCC en hoeft de 5V pin niet te worden aangesloten; wanneer verwijderd, moet 5V via de 5V pin worden aangesloten
L298N heeft dus twee voedingscircuits:
- Voor de stappenmotor (VCC en GND): 5 tot 35V
- Voor interne werking van de L298N module (5V en GND): 5 tot 7V. Als 5V-EN jumper is geplaatst, hoeft deze voeding niet apart te worden aangesloten.
Aansluitschema

This image is created using Fritzing. Click to enlarge image
※ Notiz:
- Zorg dat alle drie de jumpers op de L298N module geplaatst blijven (mits voedingsspanning motor ≤ 12V)
- De volgorde van draden op de stappenmotor kan per fabrikant verschillen, raadpleeg onderstaande tabel voor correcte aansluiting
Aansluitlijst tussen Arduino en L298N Driver
| Arduino pins | L298N pins |
|---|---|
| 7 | IN1 |
| 6 | IN2 |
| 5 | IN3 |
| 4 | IN4 |
Aansluitlijst tussen L298N Driver en Stappenmotor
Belangrijk: Let niet op de draadvolgorde in de bovenstaande afbeelding; die is slechts een voorbeeld. De volgorde verschilt vaak per fabrikant. Gebruik de onderstaande tabel voor correcte aansluiting.
| L298N pins | Stappenmotor pins | Of | Of |
|---|---|---|---|
| OUT1 | A+ | A | A |
| OUT2 | A- | A | C |
| OUT3 | B+ | B | B |
| OUT4 | B- | B | D |
Controleer voor aankoop de datasheet of handleiding van uw stappenmotor voor de pin kleur- en naamtoewijzing. Bijvoorbeeld, deze stappenmotor gebruikt de volgende toewijzing:

Met deze mapping wordt de aansluitlijst:
| L298N pins | stappenmotor pins | draadkleur |
|---|---|---|
| OUT1 | A | zwarte draad |
| OUT2 | C | groene draad |
| OUT3 | B | rode draad |
| OUT4 | D | blauwe draad |
※ Notiz:
In alle bovenstaande aansluitlijsten tussen L298N en stappenmotor kunnen OUT1 met OUT2 en OUT3 met OUT4 worden verwisseld. Dit resulteert in meerdere manieren van bekabeling. Houd er wel rekening mee dat bij het wisselen de draairichting van de motor omkeert (kloksgewijs wordt tegenkloksgewijs, en andersom).
Hoe een stappenmotor aansturen met een L298N driver
Het besturen van een stappenmotor is geen eenvoudige taak, vooral niet als u hem niet-blokkerend wilt aansturen. Gelukkig maakt de AccelStepper bibliotheek dit erg eenvoudig.
De Arduino IDE bevat ook een ingebouwde Stepper bibliotheek, maar deze raden wij niet aan omdat:
- De bibliotheek werkt met blocking functies: Arduino kan niets anders doen zolang de motor wordt aangestuurd
- De bibliotheek heeft onvoldoende functies
Daarom adviseren wij de AccelStepper bibliotheek te gebruiken. Deze ondersteunt:
- Acceleratie
- Deceleratie
- Volledige en halve stappen aansturing
- Meerdere gelijktijdige stappenmotoren, elk onafhankelijk aansturend
- Nadeel: ondersteunt geen microstepping
Positiecontrole van de stappenmotor via L298N Driver
We kunnen de stappenmotor naar een gewenste positie bewegen met:
※ Notiz:
De functie stepper.moveTo() is niet-blokkerend. Dit is een groot voordeel van deze bibliotheek. Toch moet u dit in acht nemen:
- Roep stepper.run() zo vaak mogelijk aan, het hoort in de void loop() functie te staan
- Gebruik geen delay() tijdens het bewegen van de motor
- Gebruik geen Serial.print() en Serial.println() functies tijdens beweging, dit vertraagt de stappenmotor
Snelheidsregeling van de stappenmotor via L298N Driver
U kunt niet alleen snelheid regelen maar ook acceleratie en deceleratie via eenvoudige functies:
Richtingscontrole van de stappenmotor via L298N Driver
Met bovenstaande bekabeling zal de motor draaien:
- Kloksgewijs: als de positie wordt verhoogd (positie omhoog)
- Tegenkloksgewijs: als de positie wordt verlaagd (positie omlaag)
Bijvoorbeeld:
- Huidige positie is 100 en we sturen naar 200, de motor draait kloksgewijs
- Huidige positie is -200 en we sturen naar -100, de motor draait kloksgewijs
- Huidige positie is 200 en we sturen naar 100, de motor draait tegenkloksgewijs
- Huidige positie is -100 en we sturen naar -200, de motor draait tegenkloksgewijs
※ Notiz:
Zoals eerder genoemd: als u OUT1 met OUT2 of OUT3 met OUT4 verwisselt, kunnen incrementen en decrementen van positie een omgekeerde draairichting krijgen.
Stoppen van de stappenmotor
- De stappenmotor stopt automatisch na het bereiken van de gewenste positie
- U kunt de motor ook direct stoppen met stepper.stop() functie
Arduino Code - Stappenmotor voorbeeldcode
De volgende code:
- Laat de motor één omwenteling kloksgewijs draaien
- Stopt 5 seconden
- Draait één omwenteling tegenkloksgewijs terug
- Stopt 5 seconden
- Herhaalt dit proces continu
Snel starten
- Navigeer in de Arduino IDE naar het Libraries icoon in de linkerzijbalk
- Zoek op “AccelStepper” en selecteer de bibliotheek van Mike McCauley
- Klik op de Installeren knop om de AccelStepper bibliotheek te installeren

- Kopieer bovenstaande code en open in Arduino IDE
- Klik op de Upload knop in de Arduino IDE om de code naar Arduino te uploaden
- U ziet dan:
- De stappenmotor draait één omwenteling kloksgewijs
- De motor stopt 5 seconden
- De stappenmotor draait één omwenteling tegenkloksgewijs
- De motor stopt 5 seconden
- Dit proces wordt continu herhaald
- Bekijk het resultaat in de Serial Monitor
Code Uitleg
Lees de regel-voor-regel uitleg in de commentaarregels van de broncode!
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.