Arduino UNO R4 - DC Motor

In deze handleiding leren we hoe u de Arduino UNO R4 kunt gebruiken om een DC motor te besturen. In detail leren we:

Arduino UNO R4 DC motor

Over de DC Motor

DC Motor Pinout

Een DC motor heeft twee draden.

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

Hoe het Werkt

Wanneer u een DC motor aanschaft, is het belangrijk om te begrijpen op welke spanning deze werkt. Denk bijvoorbeeld aan een DC motor die werkt op 12 volt. Wanneer u de 12V DC motor aansluit op een 12 Volt voeding:

  • Verbind 12V met de positieve draad en GND met de negatieve draad: de DC motor draait op volle snelheid rechtsom.
  • Verbind 12V met de negatieve draad en GND met de positieve draad: de DC motor draait op volle snelheid linksom.

Wanneer u de verbindingen op de twee draden van de DC motor omwisselt zoals eerder beschreven, verandert de draairichting. Deze techniek helpt bij het besturen van de richting van de DC motor. Dit wordt niet handmatig gedaan, maar door middel van programmering.

Als we minder dan 12V aan de DC motor geven, draait de motor wel, maar niet op volle snelheid. Dit toont aan dat het veranderen van de spanning de motorsnelheid verandert. Maar het direct aanpassen van de spanning is moeilijk in praktische situaties. Daarom is er een eenvoudigere methode om de snelheid van de DC motor te besturen. We houden de voedingsspanning constant en gebruiken een PWM (Pulse Width Modulation) signaal om de motorsnelheid te besturen. Met een hogere PWM duty cycle draait de motor sneller, en vice versa.

How to control DC motor

Hoe u een DC motor bestuurt met de Arduino UNO R4

Om een DC motor te besturen, moet u de snelheid en richting ervan besturen. De Arduino UNO R4 kan een PWM signaal genereren, maar dit signaal is te zwak in spanning en stroom om de motor direct aan te sturen. Daarom is een hardware driver nodig om de Arduino UNO R4 met de DC motor te verbinden. Deze driver voert twee hoofdtaken uit:

  • Versterken van het PWM signaal van de Arduino UNO R4 (zowel stroom als spanning) voor snelheidsbesturing.
  • Ontvangen van het stuursignaal van de Arduino UNO R4 om de polariteit van de voeding te veranderen voor richtingsbesturing.
Arduino UNO R4 control DC motor

※ Notiz:

  • U kunt deze handleiding gebruiken voor elke DC motor. We gebruiken een 12V DC motor als voorbeeld.
  • Wanneer u een 5V DC motor gebruikt, hoewel de Arduino UNO R4 pin 5V uitvoert (dezelfde spanning als de DC motor), heeft u nog steeds een driver nodig tussen de Arduino UNO R4 en de DC motor. Dit is omdat de Arduino UNO R4 pin niet genoeg stroom kan leveren voor de DC motor.

Deze tutorial gebruikt de L298N driver om DC motoren te besturen.

Over de L298N Driver

In deze handleiding leren we hoe u de L298N Driver gebruikt om een DC motor te besturen.

L298N Driver Pinout

L298N Driver Pinout

De L298N Driver kan twee DC motoren tegelijkertijd onafhankelijk besturen, genaamd motor A en motor B. Het heeft 13 pinnen.

De gemeenschappelijke pinnen voor beide motoren:

  • VCC pin: voorziet de motor van stroom. De spanning kan variëren van 5 tot 35V.
  • GND pin: dit is een gemeenschappelijke aardingspin en moet worden verbonden met GND (0V).
  • 5V pin: voedt de L298N module. Het kan 5V gebruiken geleverd door een Arduino UNO R4.

Motor A pinnen (Kanaal A):

  • ENA pinnen: Deze besturen de snelheid van Motor A. Om de snelheid aan te passen, verwijder de jumper en verbind de pin met een PWM ingang.
  • IN1 & IN2 pinnen: Deze bepalen de richting waarin Motor A draait. Als één pin HIGH is en de andere LOW, zal Motor A draaien. Als beide pinnen HIGH of LOW zijn, stopt Motor A.
  • OUT1 & OUT2 pinnen: Deze worden verbonden met Motor A.

Motor B pinnen (Kanaal B):

  • ENB pinnen: Deze besturen de snelheid van Motor B. Als u de jumper verwijdert en deze pinnen verbindt met een PWM ingang, kunt u aanpassen hoe snel Motor B draait.
  • IN3 & IN4 pinnen: Deze besturen de richting waarin Motor B draait. Als IN3 HIGH is en IN4 LOW, of omgekeerd, zal Motor B draaien. Als beide HIGH of beide LOW zijn, stopt Motor B.
  • OUT3 & OUT4 pinnen: Deze worden verbonden met Motor B.

De eerder genoemde L298N driver heeft twee typen invoervoeding:

  • Eén voor de DC motor (VCC en GND pinnen): van 5 tot 35V.
  • Eén voor het uitvoeren van de L298N module zelf (5V en GND pinnen): van 5 tot 7V.

De L298N driver heeft drie jumpers voor meer complexe toepassingen. Voor eenvoud, verwijder alle jumpers van de L298N driver.

We kunnen twee DC motoren tegelijkertijd besturen met een Arduino UNO R4 en een L298N Driver. Om elke motor te besturen, gebruiken we drie pinnen van de Arduino UNO R4.

※ Notiz:

Deze tutorial toont u hoe u een DC motor bestuurt met kanaal A. Het besturen van een andere DC motor gebeurt op een vergelijkbare manier.

Bedradingsschema

Verwijder alle drie de jumpers van de L298N module voordat u begint met de bedrading.

Arduino UNO R4 DC Motor L298N Driver Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Hoe u de Snelheid van een DC Motor bestuurt via de L298N Driver

U kunt eenvoudig de snelheid van de DC motor aanpassen door een PWM signaal naar de ENA pin op de L298N te sturen. Zo doet u dat:

  • Verbind een Arduino UNO R4 pin met de ENA pin op de L298N module.
  • Gebruik de analogWrite() functie om een PWM signaal naar de ENA pin te sturen. De L298N driver zal de sterkte van dit PWM signaal versterken om de DC motor aan te drijven.
analogWrite(ENA_PIN, speed); // Stel motorsnelheid in op ENA_PIN, bereik 0-255

De snelheid kan elk getal zijn van 0 tot 255. Bij een snelheid van 0 stopt de motor. Bij een snelheid van 255 roteert de motor op zijn hoogste snelheid.

Hoe u de Richting van een DC Motor bestuurt via de L298N Driver

De richting waarin een motor roteert kan worden veranderd door de IN1 en IN2 pinnen op HIGH of LOW in te stellen. De onderstaande tabel toont hoe u de richting voor beide kanalen bestuurt.

IN1 pin IN2 pin Richting
LOW LOW Motor A stopt
HIGH HIGH Motor A stopt
HIGH LOW Motor A draait Rechtsom
LOW HIGH Motor A draait Linksom
  • Motor A roteert in rechtse richting.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Motor A draait linksom
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Notiz:

Als u de OUT1 en OUT2 pinnen op de verkeerde manier met de DC motor pinnen verbindt, zal de motor in de tegenovergestelde richting draaien. Om dit op te lossen, wissel simpelweg de posities van de OUT1 en OUT2 pinnen om, of verander de stuursignalen op de IN1 en IN2 pinnen in de programmacode.

Hoe u een DC Motor stopt met Draaien

Er zijn twee methoden om een DC motor uit te schakelen.

  • Stel de snelheid in op nul.
analogWrite(ENA_PIN, 0);
  • Stel IN1 en IN2 pinnen in op dezelfde waarde (LOW of HIGH).
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • Of
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Hoe u een DC motor bestuurt met de L298N driver.

Arduino UNO R4 Code

De onderstaande code doet het volgende:

  • Laat de DC motor sneller gaan
  • Keer de richting om
  • Laat de DC motor langzamer gaan
  • Stop de motor
/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor */ #define ENA_PIN 9 // The Arduino UNO R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino UNO R4 pin connected to the IN1 pin L298N #define IN2_PIN 3 // The Arduino UNO R4 pin connected to the IN2 pin L298N void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } 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

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Sluit de componenten aan volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijvoorbeeld Arduino Uno R4 WiFi) en COM poort.
  • Verwijder alle drie jumpers van de L298N module.
  • Plak de code in de Arduino IDE.
  • Druk op de Upload knop in de Arduino IDE om de code naar de Arduino UNO R4 te uploaden.
  • Observaties:
    • De DC motor versnelt, draait dan 1 seconde op maximale snelheid.
    • De richting 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.
    • Deze sequentie herhaalt zich continu.

    ※ Notiz:

    In deze tutorial leren we hoe u de relatieve snelheid van een DC motor kunt aanpassen ten opzichte van zijn hoogste snelheid. Om de absolute snelheid in omwentelingen per seconde te besturen, moeten we een PID controller en een encoder gebruiken. We behandelen hoe u de precieze snelheid van de DC motor bestuurt in een andere tutorial.

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.

Reacties

Gerelateerde Tutorials

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