Skip to main content

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 ShieldHet Leaphy Murphy Shield, de groene printplaat waar de Nano in past
  • Motor ModuleVoor het Leaphy Murphy ShieldMotor module voor het Leaphy Murphy shield
  • 2×DC-motorEen TT-motorGele TT-motor met twee draden

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​

Schema: motor A met de rode draad op A+ en de zwarte op A-, motor B met de rode draad op B+ en de zwarte op B-, en het motor shield in de bus links op het shield

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.

Pinnen D2, D3, D4 en D11 zijn bezet door het motor shield

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:

  1. Pak een schroevendraaier.
  2. Draai de kleine schroef op de terminal los (niet helemaal eruit).
  3. Steek de draad van de motor in het gaatje (rood bij +, zwart bij -).
  4. Draai de schroef weer vast zodat de draad goed klemt.
  5. 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_a en motoren.motor_b zijn 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.

Onder de 200 beweegt vaak niets

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​

Pinnen D2, D3, D4 en D11 zijn bezet

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.