DC-motor
Een DC-motor laat een wiel van je robot draaien. Vanuit je code kies je de richting en de snelheid.
Materiaal
DC-motoren zijn de wielmotoren van je robot. Ze hebben veel stroom nodig, dus we sturen ze niet rechtstreeks vanaf de microcontroller aan, maar via een motor shield.
- Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy Shield
- Motor ModuleVoor het Leaphy Murphy Shield
- 2×DC-motorEen TT-motor
Meer over de Nano staat bij Arduino.
Controlevraag
Waarom heb je een motor shield nodig en kun je de motoren niet rechtstreeks op de Nano aansluiten?
Antwoord
DC-motoren trekken veel meer stroom dan de pinnen van de microcontroller kunnen leveren. Het shield haalt die stroom uit de batterij en stuurt hem onder controle naar de motoren.
Aansluiten
Schema

Het motor shield steek je in de bus aan de linkerkant van het shield. Motor A gaat op A+ en A-, motor B op B+ en B-: rood bij de plus, zwart bij de min.
Deze pinnen worden door het motor shield gebruikt om de motoren aan te sturen. Sluit hier geen andere sensoren of actuatoren op aan. Gebruik andere vrije pinnen voor je overige onderdelen.
Motor aansluiten op de schroefterminals
Hoe sluit ik een motor aan op het shield?
Elke motor heeft twee draden die in de schroefterminals van het motor shield gaan:
- Pak een schroevendraaier.
- Draai de kleine schroef op de terminal los (niet helemaal eruit).
- Steek de draad van de motor in het gaatje (rood bij
+, zwart bij-). - Draai de schroef weer vast zodat de draad goed klemt.
- Trek voorzichtig aan de draad om te checken of hij goed vastzit.
Vergeet de schakelaar niet
Op het motor shield zit een zwarte schakelaar. Die moet op ON staan, anders krijgen de motoren geen stroom.
Tip: zet de schakelaar op OFF terwijl je aan het programmeren bent. Dan kan de robot niet onverwacht wegrijden.
Controlevraag
Welke pinnen op de Nano kun je niet meer voor sensoren gebruiken zodra het motor shield erop zit?
Antwoord
D2, D3, D4 en D11. Die zijn permanent bezet door het motor shield.
Code
Motor A testen
from leaphymicropython.actuators.dcmotor import DCMotors
motoren = DCMotors()
motor_a = motoren.motor_a
motor_a.test()
Motor A draait kort vooruit en daarna kort achteruit. Zo weet je meteen welke motor motor_a is.
Motor B testen
from leaphymicropython.actuators.dcmotor import DCMotors
motoren = DCMotors()
motor_b = motoren.motor_b
motor_b.test()
Uitleg
DCMotors()maakt een nieuw motor-object voor het shield.motoren.motor_aenmotoren.motor_bzijn de twee uitgangen op het shield (de letters A en B staan op het shield zelf gedrukt)..test()doet kort vooruit + achteruit, handig om te kijken welke draait.
Vooruit en achteruit
from leaphymicropython.actuators.dcmotor import DCMotors
motoren = DCMotors()
motor_b = motoren.motor_b
motor_b.forward(255)
forward() en backward() krijgen een snelheid mee tussen 0 en 255.
Vanwege het gewicht van je robot beginnen de motoren pas rond 180–200 te draaien. Daaronder probeert de motor het wel (het LED'je op het shield knippert), maar de wielen blijven staan.
Voorbeeld: maximaal achteruit met motor B
from leaphymicropython.actuators.dcmotor import DCMotors
motoren = DCMotors()
motor_b = motoren.motor_b
motor_b.backward(255)
Opdracht: rij 2 seconden vooruit
Laat beide motoren 2 seconden vooruit rijden en daarna stoppen.
Oplossing
from leaphymicropython.actuators.dcmotor import DCMotors
from time import sleep
motoren = DCMotors()
motor_a = motoren.motor_a
motor_b = motoren.motor_b
motor_a.forward(255)
motor_b.forward(255)
sleep(2)
motor_a.forward(0)
motor_b.forward(0)
Er gaat iets mis
Zodra je het motor shield gebruikt, zijn deze pinnen niet meer beschikbaar voor andere onderdelen:
- D2 (GPIO25)
- D3 (GPIO15)
- D4 (GPIO16)
- D11 (GPIO7)
Het motor shield gebruikt ze om de motoren aan te sturen. Als je hier een buzzer, LED of sensor op aansluit, gaan de motoren raar doen of werkt het andere onderdeel niet.
Zie je later vreemd gedrag van je robot? Kom dan terug naar deze pagina en check welke pinnen je gebruikt.
Controlevraag
Je wilt een buzzer toevoegen. Op welke van deze pinnen mag dat: D3, D6, D11?
Antwoord
Alleen op D6. D3 en D11 zijn bezet door het motor shield.