Arduino UNO R4 - DC-Motorschild

Der Arduino Uno R4 - erhältlich als Minima und WiFi - bietet mehr Rechenleistung, zusätzlicher Speicher und ein 14-Bit-ADC, während das klassische Uno-Kopfzeilenlayout beibehalten wird. Das bedeutet, dass das Motor Shield Rev3 ohne zusätzliche Verkabelung direkt auf das Uno R4 gesteckt werden kann.

In diesem Leitfaden werden Sie:

Arduino Uno R4 DC Motor Shield

Motor Shield Rev3 Übersicht

Das Herzstück des Motor Shield Rev3 ist der L298P Dual-Vollbrückentreiber. Dieser Chip gibt Ihnen unabhängige Kontrolle über zwei Gleichstrommotoren - jeder mit eigener Richtungsleitung, PWM-Geschwindigkeitsleitung, Bremsleitung und analogem Strommesseingang.

Hier ist, was jede Steuerleitung macht:

  • Richtung - ein digitaler Ausgang, der die Drehrichtung einstellt. Das Schreiben von HIGH dreht auf eine Weise; LOW dreht auf die andere.
  • PWM - ein analoger (PWM) Ausgang, der die Arbeitszyklus einstellt. Werte reichen von 0 (gestoppt) bis 255 (Vollgeschwindigkeit).
  • Bremse - ein digitaler Ausgang. Wenn Sie es auf HIGH setzen, wird die Motorwelle gesperrt; wenn Sie es auf LOW setzen, kann der Motor frei drehen.
  • Strommessung - ein analoger Eingang, der anzeigt, wie viel Strom der Motor zieht.

Da das Uno R4 die exakt gleichen Kopfzeilenpositionen wie das ursprüngliche Uno R3 hat, passen alle Stifte automatisch:

Funktion Kanal A Kanal B
Richtung D12 D13
PWM (Geschwindigkeit) D3 D11
Bremse D9 D8
Strommessung A0 A1

Stromversorgung der Motoren

Motoren benötigen mehr Strom als USB bereitstellen kann. Verbinden Sie eine externe 6-12-V-Stromversorgung (z. B. zwei 18650-Lithiumzellen in Reihe) mit den Schraubklemmen des Schilds. Der Arduino selbst kann weiterhin von USB versorgt werden.

Schaltplan

Setzen Sie das Motor Shield Rev3 auf die Uno R4-Kopfzeilenleisten und stellen Sie sicher, dass jeder Stift ordnungsgemäß sitzt.

Befestigen Sie die Gleichstrommotor-Leitungen an den Kanal-A-Schraubklemmen - die Kanalbeschriftungen sind auf der Platine aufgedruckt.

Verbinden Sie das externe Batteriepaket mit den Schraubklemmen des Stromversorgung.

Arduino Uno R4 DC Motor Shield Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.

Wie man die Bibliothek installiert

  1. Verbinden Sie das Arduino Uno R4 mit einem USB-Kabel vom Typ C mit Ihrem Computer.
  2. Überprüfen Sie in der Arduino IDE, ob das richtige Board (Arduino Uno R4 Minima oder WiFi) und der serielle Anschluss ausgewählt sind.
  3. Klicken Sie auf das Bibliotheken-Symbol in der linken Seitenleiste.
  4. Geben Sie "DIYables_DC_Motor" in das Suchfeld ein und suchen Sie die von DIYables veröffentlichte Bibliothek.
  5. Klicken Sie auf Installieren, um die Bibliothek zu Ihrer IDE hinzuzufügen.
Arduino DC Motor Shield Bibliothek

Es werden keine zusätzlichen Abhängigkeiten benötigt - die Bibliothek ist völlig eigenständig.

Minimale Sketch-Struktur

Alle Motor-Control-Sketche teilen dieses Skelett:

#include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); void setup() { motor.begin(); } void loop() { motor.run(MOTOR_FORWARD, 100); delay(2000); motor.brake(); delay(1000); }

motor.begin() konfiguriert die Richtungs-, PWM- und Bremsstifte. Das Aufrufen von motor.run() stellt die Richtung ein, gibt die Bremse frei und wendet die angeforderte Geschwindigkeit an. motor.brake() aktiviert die Bremse und setzt die PWM auf Null.

Einzelmotor auf Kanal A

Betreiben Sie einen Motor auf Kanal A, wechselnd zwischen Vorwärts und Rückwärts alle zwei Sekunden mit vollständigem Stopp dazwischen.

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - ChannelA Example * * This example demonstrates how to control a DC motor connected to * Channel A of the Arduino Motor Shield Rev3. The motor alternates * direction every 2 seconds with braking in between. * * Channel A pins: D12 (Direction), D3 (PWM), D9 (Brake), A0 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Channel A"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor with speed 30 (out of 255) motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Wie man es ausführt

  • Setzen Sie das Schild auf das Uno R4 und verbinden Sie den Motor mit Kanal A.
  • Verbinden Sie das Batteriepaket mit den Stromklemmen.
  • Verbinden Sie das USB-Kabel vom Typ C.
  • Fügen Sie den Code in die Arduino IDE ein, wählen Sie das richtige Board und den richtigen Anschluss aus und klicken Sie auf Hochladen.
  • Öffnen Sie den Seriellen Monitor, um die Richtungswechsel zu verfolgen.

Der Motor wechselt zwischen Vorwärts und Rückwärts bei Geschwindigkeit 30, mit 2 Sekunden Pause zwischen den einzelnen Richtungswechseln.

Methoden-Kurzreferenz

Methode Was es macht Verwendung
run(dir, speed) Dreht den Motor in der angegebenen Richtung mit der angegebenen Geschwindigkeit motor.run(MOTOR_FORWARD, 100)
setSpeed(speed) Ändert die Geschwindigkeit ohne die Richtung oder Bremse zu beeinflussen motor.setSpeed(200)
setDirection(dir) Ändert die Richtung ohne die Geschwindigkeit oder Bremse zu beeinflussen motor.setDirection(MOTOR_BACKWARD)
brake() Aktiviert die Bremse und setzt die Geschwindigkeit auf Null motor.brake()
release() Deaktiviert die Bremse motor.release()
readCurrent() Gibt den rohen ADC vom Strommessenstift zurück motor.readCurrent()

Einzelmotor auf Kanal B

Identisches Verhalten, aber auf Kanal B - einfach die Kanalkonstante wechseln.

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - ChannelB Example * * This example demonstrates how to control a DC motor connected to * Channel B of the Arduino Motor Shield Rev3. The motor alternates * direction every 2 seconds with braking in between. * * Channel B pins: D13 (Direction), D11 (PWM), D8 (Brake), A1 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_B); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Channel B"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor with speed 30 (out of 255) motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Wie man es ausführt

  • Verbinden Sie den Motor mit den Kanal-B-Schraubklemmen.
  • Laden Sie den Sketch hoch und öffnen Sie den Seriellen Monitor.

Alles funktioniert auf die gleiche Weise; nur die zugrunde liegenden Stifte unterscheiden sich.

Zwei Motoren - Beide Kanäle

Betreiben Sie zwei Motoren unabhängig: gleiche Richtung, entgegengesetzte Richtung und synchronisierte Bremsen.

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - BothChannels Example * * This example demonstrates how to control two DC motors simultaneously, * one on Channel A and one on Channel B of the Arduino Motor Shield Rev3. * * Channel A pins: D12 (Direction), D3 (PWM), D9 (Brake), A0 (Current) * Channel B pins: D13 (Direction), D11 (PWM), D8 (Brake), A1 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motorA(MOTOR_CH_A); DIYables_DC_Motor motorB(MOTOR_CH_B); void setup() { Serial.begin(9600); motorA.begin(); motorB.begin(); Serial.println("Motor Shield - Both Channels"); } void loop() { // Both motors forward motorA.run(MOTOR_FORWARD, 100); motorB.run(MOTOR_FORWARD, 100); Serial.println("Both FORWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); // Both motors backward motorA.run(MOTOR_BACKWARD, 100); motorB.run(MOTOR_BACKWARD, 100); Serial.println("Both BACKWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); // Motors in opposite directions motorA.run(MOTOR_FORWARD, 150); motorB.run(MOTOR_BACKWARD, 150); Serial.println("A FORWARD, B BACKWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); }

Wie man es ausführt

  • Befestigen Sie einen Motor an Kanal A und einen anderen an Kanal B.
  • Laden Sie hoch und öffnen Sie den Seriellen Monitor.

Der Sketch durchlaufen drei Muster: beide vorwärts, beide rückwärts und Motoren drehen sich in entgegengesetzten Richtungen.

Motorstrom lesen

Überwachen Sie den Stromverbrauch eines Motors in Echtzeit.

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - CurrentSensing Example * * This example demonstrates how to read the current drawn by a DC motor * connected to Channel A of the Arduino Motor Shield Rev3. * * The Motor Shield Rev3 provides current sensing via analog pins: * Channel A: A0 * Channel B: A1 * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Current Sensing"); } void loop() { // Run motor forward motor.run(MOTOR_FORWARD, 100); // Read and print current sensing value int current = motor.readCurrent(); Serial.print("Current sensing (raw ADC): "); Serial.println(current); delay(500); }

Wie man es ausführt

  • Verbinden Sie einen Motor mit Kanal A.
  • Laden Sie den Sketch hoch und öffnen Sie den Seriellen Monitor.
  • Der rohe ADC-Wert wird alle 500 ms aktualisiert.

Über Strommessung

Die analogen Stifte A0 und A1 tragen eine Spannung, die proportional zum Motorstrom auf Kanal A bzw. Kanal B ist. readCurrent() gibt den rohen ADC-Wert zurück - auf dem Uno R4 ist dies ein 14-Bit-Wert (0-16383) dank des Renesas RA4M1 ADC. Konvertieren Sie in Milliampere mit dem dokumentierten Empfindlichkeitsfaktor des Schilds.

Benutzerdefinierte Pin-Zuordnung

Wenn Sie die Standard-Pin-Zuordnung überschreiben müssen - zum Beispiel bei Verwendung einer Motorfahrerkarte eines Drittanbieters - übergeben Sie die Stifte direkt an den Konstruktor.

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - CustomPins Example * * This example demonstrates how to create a motor object with * custom pin assignments instead of using the predefined channels. * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> // Custom pin assignment: direction=12, pwm=3, brake=9, currentSensing=A0 DIYables_DC_Motor motor(12, 3, 9, A0); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Custom Pins"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Wie man es ausführt

  • Aktualisieren Sie die Stiftnummern im Konstruktor, um Ihrer Hardware zu entsprechen.
  • Laden Sie hoch und überprüfen Sie die Motoroperation.

Fehlerbehebung

  • Motor steht still - Bestätigen Sie, dass die Motorleitungen fest in den Schraubklemmen sitzen und dass der Kanal dem Code entspricht (MOTOR_CH_A vs. MOTOR_CH_B).
  • Kein Drehmoment - Erhöhen Sie den Geschwindigkeitswert. Sehr niedrige PWM-Werte können möglicherweise nicht die Trägheit des Motors überwinden.
  • Externe Stromversorgung tot - Laden Sie die Batterien auf oder ersetzen Sie sie. Überprüfen Sie, dass die Polarität an den Stromklemmen korrekt ist.
  • Richtung scheint falsch - Tauschen Sie die beiden Motorleitungen an der Schraubklemme aus, oder schalten Sie die Richtungskonstante in der Software um.
  • Strommessung immer Null - Stellen Sie sicher, dass Sie den Kanal-Konstruktor oder den 4-Pin-Konstruktor verwendet haben, der den Strommessenstift enthält.

Arduino Uno R4 DC Motor Shield - Vollständige Demo

Das Folgende ist ein schrittweises Video-Tutorial, das alle Beispiele des DC-Motorschild demonstriert:

Plattformunterstützung

Die Bibliothek verlässt sich ausschließlich auf Arduino Standard APIs (pinMode, digitalWrite, analogWrite, analogRead) und wird auf allen Arduino-kompatiblen Plattformen ausgeführt.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!