Arduino Nano - DC Motor

Deze handleiding begeleidt u bij het gebruik van Arduino Nano om een DC motor te besturen. We behandelen in detail:

Hardware Benodigdheden

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×L298N Motordriver Module
1×5V DC-Motor
1×(Optioneel) 12V DC Motor
1×5V Voeding Adapter voor 5V DC motor
1×DC-Stroomaansluiting
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over DC Motor

DC Motor Pinout

Een DC motor heeft twee draden: de positieve draad is meestal rood en de negatieve draad meestal zwart.

DC Motor pinout

Hoe Het Werkt

Bij de aanschaf van een DC motor is het belangrijk te letten op de bedrijfsspanning. Bijvoorbeeld een 12V DC motor.

Wanneer u de 12V DC motor voedt met een 12V voeding:

  • Wordt de positieve draad verbonden met 12V en de negatieve draad met GND: dan draait de DC motor met maximale snelheid met de klok mee
  • Wordt de positieve draad verbonden met GND en de negatieve draad met 12V: dan draait de DC motor met maximale snelheid tegen de klok in

Door de voedingspolen tussen deze twee draden om te wisselen, keert u de draairichting van de motor om. Deze techniek wordt gebruikt om de draairichting te regelen – niet handmatig, maar via programmering.

Als de voedingsspanning lager is dan 12V, zal de motor nog steeds draaien, maar niet op maximale snelheid. Door de spanning aan te passen kan dus de motorsnelheid worden geregeld. Dit is echter niet praktisch, omdat de spanning moeilijk te regelen is. Als alternatief houden we de spanning constant en regelen we de snelheid met een PWM-signaal (Pulsbreedtemodulatie). Hoe hoger de duty cycle van de PWM, hoe sneller de motor draait.

How to control DC motor

Hoe een DC motor aan te sturen met Arduino Nano

Het aansturen van een DC motor bestaat uit twee aspecten: snelheid en draairichting. Arduino Nano kan een PWM-signaal genereren, maar dit signaal heeft een te lage spanning en stroom om direct de motor aan te sturen. Daarom is een hardware driver nodig tussen Arduino Nano en de motor. Deze driver vervult twee taken:

  • Het versterken van het PWM-signaal van Arduino Nano (qua stroom en/of spanning) voor snelheidsregeling
  • Het ontvangen van het aansturingssignaal van Arduino Nano om de polariteit van de voeding om te schakelen en zo de draairichting te regelen.
Arduino Nano control DC motor

※ Notiz:

  • Deze handleiding is toepasbaar voor alle DC motoren. We gebruiken een 12V DC motor als voorbeeld.
  • Bij een 5V DC motor is het ondanks dat Arduino Nano 5V uit zijn pinnen geeft (dezelfde spanning als de motor), toch nodig om een driver te gebruiken omdat Arduino Nano pinnen niet voldoende stroom kunnen leveren voor de motor.
  • Voor een 5V DC motor is een 5V voeding adapter vereist. Voor een 12V DC motor is een 12V voeding adapter nodig.

Er bestaan veel IC’s en modules die als motor driver kunnen dienen, bijvoorbeeld L293D en L298N. In deze handleiding gebruiken we de L298N driver.

Over L298N Driver

De L298N driver kan DC motoren en stappenmotoren aansturen. Deze handleiding legt uit hoe u deze gebruikt om een DC motor te besturen.

L298N Driver Pinout

L298N Driver pinout

De L298N driver kan twee DC motoren onafhankelijk van elkaar aansturen, aangeduid als motor A en motor B. De driver heeft dertien pinnen.

Gemeenschappelijke pinnen voor beide motoren:

  • VCC-pin: deze pin levert spanning aan de motor, variërend van 5 tot 35V.
  • GND-pin: deze pin is de gemeenschappelijke massa en moet worden aangesloten op 0V (GND).
  • 5V-pin: deze pin levert voeding aan de L298N module en kan gevoed worden via een 5V uitgang van Arduino Nano.

Motor A pinnen (Kanaal A):

  • ENA-pin(s): Reguleren de snelheid van motor A. Door de jumper te verwijderen en deze pin aan te sluiten op een PWM-uitgang, kan de snelheid via PWM geregeld worden.
  • IN1 & IN2 pinnen: regelen de draairichting van motor A. Als een van de twee HIGH is en de andere LOW, draait motor A. Zijn beide inputs gelijk (beide HIGH of beide LOW), stopt motor A.
  • OUT1 & OUT2 pinnen: dit zijn de aansluitingen voor motor A.

Motor B pinnen (Kanaal B):

  • ENB-pin: Voor snelheidsregeling van motor B, door jumper te verwijderen en aansluiten op PWM-signaal.
  • IN3 & IN4 pinnen: regelen de draairichting van motor B, werken als bij motor A.
  • OUT3 & OUT4 pinnen: aansluitingen voor motor B.

De L298N driver heeft twee voeding-ingangen:

  • één voor de DC motor (VCC en GND) variërend van 5 tot 35V
  • één voor de interne werking van de L298N (5V en GND), variërend van 5 tot 7V

Verwijder alle jumpers op de L298N driver voor eenvoud.

Met Arduino Nano en L298N driver kunnen we ook twee DC motoren gelijktijdig en onafhankelijk aansturen. Voor iedere motor zijn slechts drie Arduino Nano pinnen nodig.

※ Notiz:

De rest van deze handleiding richt zich op motor A. Voor motor B gelden vergelijkbare stappen.

Snelheid regelen van DC Motor via L298N Driver

De snelheid van een DC motor is eenvoudig te regelen door een PWM-signaal naar de ENA pin van de L298N te sturen. Doe dit als volgt:

  • Verbind een Arduino Nano pin met de ENA pin van de L298N
  • Genereer een PWM-signaal naar ENA met analogWrite() functie. De L298N versterkt dit PWM-signaal voor de motor.
analogWrite(ENA_PIN, speed); // speed is een waarde van 0 tot 255

De snelheid is een waarde tussen 0 en 255. Bij 0 stopt de motor, bij 255 draait de motor op maximale snelheid.

Draairichting regelen van DC Motor via L298N Driver

De draairichting wordt geregeld door de logische waarden die u geeft aan de IN1 en IN2 pinnen. Onderstaande tabel toont het aansturen van 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

De Arduino code om motor A met de klok mee te laten draaien:

digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);

En om motor A tegen de klok in te laten draaien:

digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Notiz:

De draairichting kan ook omgekeerd worden door de OUT1 & OUT2 pinnen van de driver andersom aan te sluiten op de motor.

DC Motor laten stoppen

Er zijn twee manieren om de motor te stoppen:

  • Zet de snelheid op 0
analogWrite(ENA_PIN, 0);
  • Zet IN1 en IN2 pins beiden op LOW of beiden op HIGH
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • Of
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Hoe een DC motor te besturen met de L298N driver

Aansluitschema

Verwijder alle drie de jumpers van de L298N module voordat u verbindingen maakt.

Arduino Nano DC Motor L298N Driver wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code

De volgende code voert achtereenvolgens uit:

  • Verhoogt de snelheid van de DC motor
  • Verandert de draairichting
  • Verlaagt de snelheid van de DC motor
  • Stopt de DC motor
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-dc-motor */ const int ENA_PIN = 6; // The Arduino Nano pin connected to the EN1 pin L298N const int IN1_PIN = 5; // The Arduino Nano pin connected to the IN1 pin L298N const int IN2_PIN = 4; // The Arduino Nano pin connected to the IN2 pin L298N // The setup function runs once on reset or power-up void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // The loop function repeats indefinitely void loop() { digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // rotate at maximum speed 1 seconds in in clockwise direction // change direction digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise delay(1000); // rotate at maximum speed 1 seconds in in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // stop motor 1 second }

Stapsgewijze instructies

  • Verwijder alle drie de jumpers van de L298N module.
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload knop om de code naar de Arduino Nano te uploaden.
  • U zult het volgende zien:
    • De DC motor versnelt en draait 1 seconde op maximale snelheid.
    • De draairichting van de DC motor verandert.
    • De DC motor draait nog 1 seconde op maximale snelheid, maar in de andere richting.
    • De DC motor vertraagt.
    • De DC motor stopt 1 seconde.
    • Dit proces herhaalt zich continu.

    ※ Notiz:

    Deze handleiding toont hoe u de snelheid van een DC motor aanpast ten opzichte van de maximale snelheid. Om de absolute snelheid (omwentelingen per seconde) te regelen, is een PID-controller en een encoder nodig. Dit wordt behandeld in een aparte handleiding.

Hoe twee DC motoren aan te sturen met L298N Driver

Binnenkort beschikbaar!

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 bij het begrijpen van de stappen en code.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!