Arduino - DC Motor

In deze handleiding leert u:

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×L298N Motordriver Module
1×5V DC-Motor
1×5V Voeding Adapter voor 5V DC motor
1×DC-Stroomaansluiting
1×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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:

  • Positieve draad: meestal rood
  • Negatieve draad: meestal zwart
DC Motor Pinout

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 u een DC motor regelt

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
Arduino bestuurt DC motor

※ 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

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.
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.

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
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Motor A tegen de klok in laten draaien
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ 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
analogWrite(ENA_PIN, 0);
  • De IN1 en IN2 pinnen dezelfde waarde geven (LOW of HIGH)
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • Of
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

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.

Arduino DC Motor L298N Driver bedradingsschema

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
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-dc-motor */ // constants won't change const int ENA_PIN = 9; // the Arduino pin connected to the EN1 pin L298N const int IN1_PIN = 6; // the Arduino pin connected to the IN1 pin L298N const int IN2_PIN = 5; // the Arduino pin connected to the IN2 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // the loop function runs over and over again forever 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 }

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.

※ 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!