Arduino - DC Motor
In deze handleiding leert u:
- Hoe een DC motor werkt
- Hoe u de snelheid en draairichting van een DC motor regelt
- Hoe u een DC motor bestuurt met een L298N driver
- Hoe u twee DC motoren tegelijkertijd aanstuurt met een L298N driver
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over DC Motor
DC Motor Pinout
Een DC motor heeft twee draden:
- Positieve draad: meestal rood
- Negatieve draad: meestal zwart

Hoe Het Werkt
Wanneer u een DC motor koopt, moet u weten op welke spanning de DC motor werkt. Laten we een 12V DC motor als voorbeeld nemen.
Als u de 12V DC motor voedt met een 12V voedingsbron:
- 12V en GND respectievelijk op de positieve en negatieve draadaansluiting: de DC motor draait met maximale snelheid met de klok mee
- 12V en GND respectievelijk op de negatieve en positieve draadaansluiting: de DC motor draait met maximale snelheid tegen de klok in
Zoals hierboven beschreven, wordt de draairichting omgekeerd wanneer de polen worden verwisseld tussen de twee draden van de DC motor. Deze methode wordt gebruikt om de draairichting van de DC motor te regelen. Uiteraard gebeurt dit niet handmatig maar via programmering.
Als we een spanning onder de 12V aan de DC motor leveren, draait de motor nog steeds maar niet op maximale snelheid. Dit betekent dat door het aanpassen van de voedingsspanning de motorsnelheid kan worden geregeld. Echter wordt deze methode in de praktijk zelden gebruikt door de complexiteit van het regelen van de voedingsspanning. In plaats daarvan wordt de spanning van de voeding constant gehouden en wordt de snelheid geregeld door een PWM-signaal. Hoe hoger de duty cycle van het PWM-signaal, hoe sneller de DC motor draait.

Hoe een DC Motor te Besturen met Arduino
Het besturen van een DC motor bestaat uit twee aspecten: snelheid en draairichting. Arduino kan een PWM-signaal genereren, maar dit PWM-signaal heeft een lage spanning en stroom, en kan daarom niet direct een DC motor aansturen. Hiervoor hebben we een hardware driver nodig tussen Arduino en de DC motor. De driver vervult twee taken:
- Het versterken van het PWM-signaal van Arduino (stroom en spanning) → voor snelheidsregeling
- Het ontvangen van het aansturingssignaal van Arduino om de poling van de voeding te wisselen → voor richtingsregeling

※ Notiz:
- Deze handleiding is toepasbaar op alle DC motoren. De 12V DC motor is enkel een voorbeeld.
- Wanneer u een 5V DC motor bestuurt, ook al levert de Arduino pin 5V (dezelfde spanning als de DC motor), is een driver tussen Arduino en DC motor toch noodzakelijk omdat de Arduino pin niet voldoende stroom kan leveren voor de motor.
Er zijn veel soorten chips en modules (bijv. L293D, L298N) die als DC motor driver kunnen worden gebruikt. In deze handleiding gebruiken we de L298N driver.
Over L298N Driver
De L298N driver kan gebruikt worden om DC motoren en stappenmotoren aan te sturen. In deze handleiding leren we hoe deze te gebruiken voor het aansturen van een DC motor.
L298N Driver Pinout

De L298N driver kan twee DC motoren onafhankelijk van elkaar aansturen, motor A en motor B genoemd. De L298N driver heeft 13 pinnen:
De gemeenschappelijke pinnen voor beide motoren:
- VCC pin: levert stroom aan de motor. Dit kan ergens tussen 5 en 35V zijn.
- GND pin: gemeenschappelijke massa, moet verbonden zijn met GND (0V).
- 5V pin: levert voeding voor de L298N-module. Deze kan gevoed worden vanuit 5V van de Arduino.
Motor A pinnen (Kanaal A):
- ENA pinnen: worden gebruikt om de snelheid van motor A te regelen. Door de jumper te verwijderen en deze pin te verbinden met een PWM-ingang kan de motorsnelheid geregeld worden.
- IN1 & IN2 pinnen: worden gebruikt om de draairichting van motor A te regelen. Wanneer één pin HIGH is en de andere LOW, draait motor A. Wanneer beide inputs HIGH of LOW zijn, stopt motor A.
- OUT1 & OUT2 pinnen: verbonden met motor A.
Motor B pinnen (Kanaal B):
- ENB pinnen: worden gebruikt om de snelheid van motor B te regelen. Door de jumper te verwijderen en deze pin te verbinden met een PWM-ingang kan de snelheid geregeld worden.
- IN3 & IN4 pinnen: worden gebruikt om de draairichting van motor B te regelen. Wanneer één pin HIGH is en de andere LOW, draait motor B. Wanneer beide inputs beide HIGH of LOW zijn, stopt motor B.
- OUT3 & OUT4 pinnen: verbonden met motor B.
Zoals hierboven beschreven, heeft de L298N driver twee voedingsaansluitingen:
- Eén voor de DC motor (VCC en GND pinnen): van 5 tot 35V.
- Eén voor de interne werking van de L298N module (5V en GND pinnen): van 5 tot 7V.
De L298N driver heeft ook drie jumpers voor geavanceerd gebruik of andere doeleinden. Om het eenvoudig te houden, verwijdert u alle jumpers van de L298N driver.
Met Arduino en een L298N driver kunt u twee DC motoren onafhankelijk van elkaar besturen. Voor het besturen van elke motor zijn slechts drie Arduino pinnen nodig.
※ Notiz:
De rest van deze handleiding gebruikt kanaal A om een DC motor te besturen. Het besturen van de andere DC motor is vergelijkbaar.
Hoe de Snelheid van een DC Motor te Regelen via L298N Driver
Het regelen van de motorsnelheid gaat eenvoudig door een PWM-signaal te genereren op de ENA-pin van de L298N. Dit doet u als volgt:
- Verbind een Arduino-pin met ENA van de L298N
- Genereer een PWM-signaal op de ENA-pin met behulp van de analogWrite() functie. De L298N driver versterkt het PWM-signaal naar de DC motor.
De snelheid is een waarde tussen 0 en 255. Bij 0 stopt de motor. Bij 255 draait de motor op maximale snelheid.
Hoe de Draairichting van een DC Motor te Regelen via L298N Driver
De draairichting wordt geregeld door een logica HIGH/LOW toe te passen op de IN1 en IN2 pinnen. De onderstaande tabel toont hoe dit werkt voor motor A:
| IN1 pin | IN2 pin | Richting |
|---|---|---|
| LOW | LOW | Motor A stopt |
| HIGH | HIGH | Motor A stopt |
| HIGH | LOW | Motor A draait met de klok mee |
| LOW | HIGH | Motor A draait tegen de klok in |
- Motor A met de klok mee laten draaien
- Motor A tegen de klok in laten draaien
※ Notiz:
De draairichting wordt omgekeerd als de OUT1 & OUT2 pinnen omgekeerd zijn aangesloten op de twee draden van de DC motor. In dat geval hoeft u alleen OUT1 & OUT2 te verwisselen of de aansturing van IN1 en IN2 in de code aan te passen.
Hoe de DC Motor te Stoppen
Er zijn twee manieren om de DC motor te stoppen:
- De snelheid instellen op 0
- De IN1 en IN2 pinnen dezelfde waarde geven (LOW of HIGH)
- Of
Hoe een DC motor aan te sturen met L298N driver
Bedradingsschema
Verwijder eerst alle drie de jumpers op de L298N module voordat u gaat bedraden.

This image is created using Fritzing. Click to enlarge image
Arduino Code
De onderstaande code doet het volgende:
- Verhoogt de snelheid van de DC motor
- Wijzigt de draairichting
- Vermindert de snelheid van de DC motor
- Stopt de motor
Snelle stappen
- Verwijder alle drie de jumpers op de L298N module.
- Kopieer bovenstaande code en open deze met de Arduino IDE
- Klik op de Upload knop in de Arduino IDE om de code naar Arduino te uploaden
- U zult het volgende zien:
- De DC motor versnelt en draait dan 1 seconde op maximale snelheid
- De draairichting van de DC motor verandert
- De DC motor draait 1 seconde op maximale snelheid in de tegenovergestelde richting
- De DC motor vertraagt
- De DC motor stopt gedurende 1 seconde
- Het bovenstaande proces herhaalt zich continu.
※ Notiz:
In deze handleiding leren we hoe de snelheid van de DC motor relatief tot de maximale snelheid wordt geregeld. Om de absolute snelheid (omwentelingen per seconde) te regelen, is een PID-controller en een encoder nodig. Het regelen van de absolute motorsnelheid wordt in een andere handleiding behandeld.
Hoe twee DC motoren aan te sturen met L298N Driver
(komt binnenkort)
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 visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u sneller te begrijpen hoe u de DC motor met Arduino en L298N driver kunt aansturen.