Raspberry Pi - DC Motor
Deze handleiding leert u hoe u met een Raspberry Pi een DC motor kunt aansturen. We zullen in detail behandelen:
- Hoe een DC motor werkt
- Hoe u een Raspberry Pi en een L298N driver gebruikt om een DC motor aan te sturen
- Hoe u de Raspberry Pi programmeert om de snelheid en draairichting van een DC motor te regelen
- Hoe u twee DC motoren gelijktijdig kunt aansturen met een Raspberry Pi
Benodigdheden Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de DC Motor
DC Motor Pinout
Een DC motor heeft twee draden, waarbij de positieve meestal rood is en de negatieve meestal zwart.

Hoe Het Werkt
Bij de aanschaf van een DC motor is het belangrijk om te weten bij welke spanning deze werkt. We nemen als voorbeeld een 12V DC motor.
Als u de 12V DC motor aansluit op een 12V voeding:
- Wanneer u 12V en GND respectievelijk aansluit op de positieve en negatieve draad, zal de DC motor met maximale snelheid met de klok mee draaien.
- Wanneer u 12V en GND respectievelijk aansluit op de negatieve en positieve draad, zal de DC motor met maximale snelheid tegen de klok in draaien.
Zoals eerder vermeld, keert het omwisselen van de polariteit tussen de twee draden de draairichting van de motor om. Dit is een methode om de draairichting te regelen, maar niet handmatig, echter via programmering.
Als de voedingsspanning lager is dan 12V, zal de motor nog steeds draaien, maar niet met maximale snelheid. Dit betekent dat we door de spanning te veranderen ook de snelheid van de motor kunnen regelen. Deze methode wordt echter meestal niet gebruikt omdat het lastig is om de voedingsspanning nauwkeurig te regelen. Daarom wordt de voedingsspanning constant gehouden en wordt de snelheid geregeld met een PWM-signaal. Hoe hoger de duty cycle van het PWM-signaal, hoe sneller de DC motor draait.

Hoe een DC motor aansturen met Raspberry Pi
Het aansturen van een DC motor hangt af van twee factoren: snelheid en draairichting. De Raspberry Pi kan een PWM-signaal genereren, maar dit signaal is van lage spanning en stroom, waardoor het niet direct geschikt is om de motor aan te sturen. U heeft daarom een hardware driver tussen de Raspberry Pi en de DC motor nodig. Deze driver voert twee taken uit:
- Het versterken van het PWM-signaal van de Raspberry Pi (zowel in spanning als stroom) om de snelheid te regelen
- Het ontvangen van het besturingssignaal van de Raspberry Pi om de polariteit van de voeding te schakelen en daarmee de draairichting te bepalen

※ Notiz:
- Deze handleiding is toepasbaar op elke DC motor. We gebruiken een 12V DC motor als voorbeeld.
- Bij een 5V DC motor, ook al levert de Raspberry Pi pin 5V (wat gelijk is aan de spanning van de motor), is een driver toch nodig, omdat de Raspberry Pi pin niet genoeg stroom kan leveren voor de motor.
Er zijn veel verschillende chips en modules die als driver voor DC motoren kunnen dienen. In deze handleiding gebruiken we de L298N module.
Over de L298N Driver
De L298N driver kan gebruikt worden om zowel DC motoren als stappenmotoren aan te sturen. Deze handleiding legt uit hoe u deze module kunt gebruiken voor het besturen van een DC motor.
L298N Driver Pinout

De L298N driver kan twee DC motoren onafhankelijk en gelijktijdig aansturen, aangeduid als Motor A en Motor B. Deze driver heeft in totaal 13 pinnen.
De algemene pinnen voor beide motoren:
- VCC pin: Levert de voeding voor de motor en kan een spanning leveren van 5V tot 35V.
- GND pin: Aarde (0V), gemeenschappelijke massa.
- 5V pin: Levert spanning aan de L298N module zelf, kan afkomstig zijn van de 5V output van de Raspberry Pi.
Motor A pinnen (Kanaal A):
- ENA pinnen: Hiermee regelt u de snelheid van Motor A. Door de jumper te verwijderen en deze pin aan te sluiten op een PWM-ingang, kunt u de snelheid regelen.
- IN1 & IN2 pinnen: Deze pinnen regelen de draairichting van Motor A. Als één van deze pinnen HIGH is en de andere LOW, draait Motor A. Zijn beide pinnen HIGH of LOW, dan stopt de motor.
- OUT1 & OUT2 pinnen: Verbonden met Motor A.
Motor B pinnen (Kanaal B):
- IN3 & IN4 pinnen: Regelen de draairichting van Motor B. Wanneer één HIGH is en de andere LOW, draait Motor B. Zijn beide HIGH of LOW, dan stopt Motor B.
- ENB pinnen: Voor snelheidsregeling van Motor B, hetzelfde principe als bij ENA.
- OUT3 & OUT4 pinnen: Verbonden met Motor B.
De L298N driver heeft twee voedingssignalen:
- Eén voor de DC motoren (VCC en GND pinnen) tussen 5 en 35V.
- Eén voor de interne werking van de L298N module (5V en GND pinnen) tussen 5 en 7V.
Verwijder alle jumpers van de L298N driver voor eenvoudige bediening. Jumpers worden voor geavanceerd gebruik of specifieke toepassingen ingezet.
U kunt dus twee DC motoren onafhankelijk aansturen met een Raspberry Pi en L298N driver. Per motor zijn hiervoor maar drie Raspberry Pi pinnen nodig.
※ Notiz:
De rest van deze handleiding richt zich op het bedienen van een DC motor via kanaal A. Voor motor B gelden vergelijkbare stappen.
Snelheid regelen van DC Motor via L298N Driver
Het regelen van de snelheid van een DC motor is eenvoudig door een PWM signaal op de ENA pin van de L298N te geven:
- Verbind een Raspberry Pi pin met de ENA pin van de L298N
- Genereer een PWM signaal op de ENA pin met de functie pwm.ChangeDutyCycle(). De L298N versterkt dit signaal en stuurt het naar de DC motor.
De snelheid heeft een bereik van 0 tot 100. Bij 0 zal de motor niet draaien, bij 100 draait de motor op maximale snelheid.
Draairichting van DC Motor regelen via L298N Driver
De draairichting kan worden geregeld door het sturen van logische HIGH/LOW signalen naar de IN1 en IN2 pinnen. Onderstaande tabel laat zien hoe de richting geregeld wordt op kanaal 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 |
Daarmee:
- Raspberry Pi code om Motor A met de klok mee te laten draaien:
- Raspberry Pi code om Motor A tegen de klok in te laten draaien:
※ Notiz:
De draairichting van de motor kan ook omgekeerd worden door de OUT1 en OUT2 draden van de motor om te wisselen. Dit kan ook bereikt worden door in de code de signalen op IN1 en IN2 om te wisselen.
DC Motor stoppen
Er zijn twee manieren om een DC motor te stoppen:
- De snelheid terugbrengen naar nul
- Beide IN1 en IN2 pinnen op dezelfde waarde zetten, zowel LOW als HIGH werkt:
- Of
DC Motor aansturen met L298N driver
Bedradingsschema
Verwijder alle drie de jumpers van het L298N module voordat u begint met aansluiten.

This image is created using Fritzing. Click to enlarge image
Code voor Raspberry Pi
We schrijven Python-code die op de Raspberry Pi draait en het volgende doet:
- De snelheid van een DC motor verhogen
- De draairichting wijzigen
- De snelheid van de DC motor verlagen
- De motor stoppen
Snelle stappen
- Verwijder alle drie de jumpers van het L298N module.
- Zorg dat u Raspbian of een ander compatibel besturingssysteem op uw Raspberry Pi heeft geïnstalleerd.
- Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
- Zorg dat uw Raspberry Pi verbonden is met internet als u bibliotheken moet installeren.
- Als dit uw eerste keer is met de Raspberry Pi, zie hoe u de Raspberry Pi configureert
- Verbind uw pc met de Raspberry Pi via SSH, gebruik hiervoor de ingebouwde SSH client op Linux/macOS of PuTTY op Windows. Zie hoe u via SSH met Raspberry Pi verbindt.
- Zorg dat u de RPi.GPIO bibliotheek hebt geïnstalleerd. Als deze ontbreekt, installeer deze dan met het volgende commando:
- Maak een Python script aan met de naam dc_motor.py en voeg onderstaande code toe:
- Sla het bestand op en start het script door in de terminal het volgende commando uit te voeren:
Het script draait continu in een oneindige lus totdat u Ctrl + C indrukt in de terminal.
U zult het volgende zien gebeuren:
- De DC motor versnelt en draait 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 staat 1 seconde stil.
- Dit proces herhaalt zich voortdurend.
※ Notiz:
Deze handleiding leert u hoe u de snelheid van een DC motor ten opzichte van de maximale snelheid aanpast. Om de absolute snelheid (rotaties per seconde) te regelen, is een PID-controller met encoder vereist. Dat onderwerp wordt besproken in een aparte handleiding.
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 u stap voor stap door de bediening van de DC motor met Raspberry Pi en L298N driver.