Arduino - DC Motor Shield
Dieses Tutorial zeigt dir, wie du einen Gleichstrommotor mit Arduino und dem Motor Shield Rev3 steuerst. Im Einzelnen werden wir lernen:
- So montierst du das Motor Shield Rev3 auf den Arduino.
- So verbindest du einen Gleichstrommotor und eine externe Stromquelle.
- So programmierst du den Arduino, um die Motorrichtung zu steuern (vorwärts/rückwärts).
- So programmierst du den Arduino, um die Motorgeschwindigkeit mit PWM zu steuern.
- So programmierst du den Arduino, um die Bremse zu aktivieren und freizugeben.
- So programmierst du den Arduino, um den Motorstrom zu lesen.
- So steuerst du zwei Gleichstrommotoren gleichzeitig mit beiden Kanälen.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Motor Shield Rev3
Das Arduino Motor Shield Rev3 basiert auf dem L298P Dual-Vollbrücken-Treiber IC, mit dem du zwei Gleichstrommotoren (oder einen Schrittmotor) mit vollständiger Kontrolle über Richtung, Geschwindigkeit und Bremsung fahren kannst.
Das Shield bietet die folgenden Funktionen:
- Zwei Motorkanäle (A und B): Jeder Kanal kann unabhängig einen Gleichstrommotor antreiben.
- Richtungssteuerung: Stelle den Motor so ein, dass er mit einem digitalen Pin vorwärts oder rückwärts dreht.
- PWM-Geschwindigkeitssteuerung: Passe die Motorgeschwindigkeit von 0 bis 255 mit einem PWM-Pin an.
- Bremssteuerung: Engagiere oder gebe die Bremse auf jedem Kanal mit einem digitalen Pin frei.
- Strommessung: Lese den von jedem Motor gezogenen Strom über analoge Pins.
Das Motor Shield Rev3 ist für den Arduino Uno Formfaktor ausgelegt und sitzt direkt auf dem Arduino-Board auf - kein Steckbrett oder komplexe Verdrahtung erforderlich.
Pin-Zuordnung
| Funktion | Kanal A | Kanal B |
|---|---|---|
| Richtung | D12 | D13 |
| PWM (Geschwindigkeit) | D3 | D11 |
| Bremse | D9 | D8 |
| Strommessung | A0 | A1 |
Externe Stromversorgung
Das Motor Shield Rev3 benötigt eine externe Stromquelle für die Motoren. Verbinde deine Stromquelle (6-12V) mit den Stromschraubenklemmen am Shield. Der Strom aus der externen Quelle treibt die Motoren an, während der Arduino separat über USB oder seine eigene Stromversorgung versorgt werden kann.
Verdrahtungsdiagramm
Montiere zunächst das Arduino Motor Shield Rev3 oben auf dem Arduino Uno und richte die Pins sorgfältig aus.
Verbinde dann den Gleichstrommotor mit Kanal A über die Schraubenklemmen am Shield. Die Kanäle sind neben den Schraubenklemmen gekennzeichnet.
Verbinde abschließend die externe Stromquelle (z.B. 2x 3,7V Li-Ionen-Batterien) mit den Stromschraubenklemmen am Shield.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Bibliotheksinstallation
- Verbinde das Arduino-Board mit einem USB-Kabel mit deinem Computer.
- Öffne Arduino IDE und wähle das richtige Board und den richtigen Port aus.
- Navigiere zum Symbol Libraries in der linken Leiste der Arduino IDE.
- Suche "DIYables_DC_Motor" und finde die DIYables_DC_Motor-Bibliothek von DIYables.
- Klicke auf die Schaltfläche Install, um die neueste Version der Bibliothek zu installieren.

Hinweis: Diese Bibliothek ist in sich geschlossen und hat keine externen Abhängigkeiten.
Grundstruktur
Jede Skizze, die die DC Motor-Bibliothek verwendet, folgt dieser grundlegenden Struktur:
motor.begin() initialisiert die Richtungs-, PWM- und Bremspins. Verwende danach motor.run() zum Einstellen von Richtung und Geschwindigkeit und motor.brake() zum Stoppen des Motors. Kein loop()-Aufruf auf dem Motorenobjekt erforderlich - der Motor läuft kontinuierlich, bis du seinen Zustand änderst.
Arduino Code - Steuerung des Kanals A Motor
Der folgende Code zeigt, wie man einen Gleichstrommotor auf Kanal A steuert: Richtungswechsel alle 2 Sekunden mit Bremsen dazwischen.
Schnelle Schritte
- Montiere das Motor Shield Rev3 auf dem Arduino-Board.
- Verbinde den Gleichstrommotor mit den Schraubenklemmen des Kanals A.
- Verbinde die externe Stromquelle.
- Verbinde das Arduino-Board mit einem USB-Kabel mit deinem Computer.
- Öffne Arduino IDE und wähle das richtige Board und den richtigen Port aus.
- Kopiere den obigen Code und füge ihn in den Editor der Arduino IDE ein.
- Klicke auf die Schaltfläche Upload in der Arduino IDE, um Code auf Arduino hochzuladen.
- Öffne den Serial Monitor, um die Motorstatusmeldungen zu sehen.
Der Motor dreht sich 2 Sekunden lang vorwärts bei Geschwindigkeit 30, bremst 2 Sekunden lang, dreht sich dann 2 Sekunden lang rückwärts und wiederholt sich.
Zusammenfassung der Motor-API
| Methode | Beschreibung | Beispiel |
|---|---|---|
| run(direction, speed) | Stelle Richtung und Geschwindigkeit ein, gebe Bremse frei | motor.run(MOTOR_FORWARD, 100) |
| setSpeed(speed) | Stelle PWM-Geschwindigkeit ein (0-255) | motor.setSpeed(150) |
| setDirection(direction) | Stelle nur Richtung ein | motor.setDirection(MOTOR_BACKWARD) |
| brake() | Aktiviere Bremse und stelle Geschwindigkeit auf 0 | motor.brake() |
| release() | Gebe Bremse frei | motor.release() |
| readCurrent() | Lese Raw ADC vom Strommessung-Pin | motor.readCurrent() |
Arduino Code - Steuerung des Kanals B Motor
Der folgende Code zeigt, wie man einen Gleichstrommotor auf Kanal B steuert.
Schnelle Schritte
- Verbinde den Gleichstrommotor mit den Schraubenklemmen des Kanals B (statt Kanal A).
- Kopiere den obigen Code und füge ihn in den Editor der Arduino IDE ein.
- Klicke auf die Schaltfläche Upload in der Arduino IDE, um Code auf Arduino hochzuladen.
- Öffne den Serial Monitor.
Das Verhalten ist identisch mit Kanal A - der einzige Unterschied ist der verwendete Kanal.
Arduino Code - Beide Kanäle
Der folgende Code zeigt, wie man zwei Gleichstrommotoren gleichzeitig steuert, einen auf jedem Kanal.
Schnelle Schritte
- Verbinde einen Gleichstrommotor mit Kanal A und einen anderen mit Kanal B.
- Kopiere den obigen Code und füge ihn in den Editor der Arduino IDE ein.
- Klicke auf die Schaltfläche Upload in der Arduino IDE, um Code auf Arduino hochzuladen.
- Öffne den Serial Monitor.
Beide Motoren laufen zusammen vorwärts, dann zusammen rückwärts, dann in entgegengesetzten Richtungen - mit Bremsenpausen dazwischen.
Arduino Code - Strommessung
Der folgende Code zeigt, wie man den von einem Gleichstrommotor gezogenen Strom mit dem eingebauten Strommessungs-Pin ausliest.
Schnelle Schritte
- Verbinde einen Gleichstrommotor mit Kanal A.
- Kopiere den obigen Code und füge ihn in den Editor der Arduino IDE ein.
- Klicke auf die Schaltfläche Upload in der Arduino IDE, um Code auf Arduino hochzuladen.
- Öffne den Serial Monitor.
- Beobachte den Raw-ADC-Strommesswert, der sich alle 500 ms aktualisiert.
Hinweise zur Strommessung
Das Motor Shield Rev3 bietet Strommessung über die analogen Pins A0 (Kanal A) und A1 (Kanal B). Die readCurrent()-Methode gibt einen Raw-ADC-Wert zurück. Um in tatsächlichen Strom (in Ampere) umzuwandeln, musst du den entsprechenden Umrechnungsfaktor basierend auf der Strommessung-Schaltung des Shields anwenden.
Arduino Code - Benutzerdefinierte Pins
Der folgende Code zeigt, wie man ein Motorenobjekt mit benutzerdefinierten Pin-Zuweisungen erstellt, statt die vordefinierten Kanalkonstanten zu verwenden.
Schnelle Schritte
- Passe die Pin-Nummern im Konstruktor an deine Verdrahtung an.
- Kopiere den obigen Code und füge ihn in den Editor der Arduino IDE ein.
- Klicke auf die Schaltfläche Upload in der Arduino IDE, um Code auf Arduino hochzuladen.
Dieser Ansatz ist nützlich, wenn man einen nicht standardisierten Motortreiber oder eine modifizierte Pin-Konfiguration verwendet.
Fehlerbehebung
Wenn der Code nicht funktioniert, gibt es einige häufige Probleme, die du beheben kannst:
- Motor dreht sich nicht: Überprüfe, ob der Motor ordnungsgemäß mit den Schraubenklemmen des richtigen Kanals verbunden ist.
- Falscher Kanal: Stelle sicher, dass die Pin-Definitionen in deinem Code dem Kanal entsprechen, mit dem du den Motor verbunden hast (Kanal A oder Kanal B).
- Keine Stromversorgung: Überprüfe, dass die externe Stromquelle angeschlossen und funktioniert. Der Motor benötigt externe Stromversorgung - USB allein reicht nicht für den Motorbetrieb.
- Schwache oder keine Drehung: Erhöhe den Geschwindigkeitswert in setSpeed() oder run(). Eine sehr niedrige Geschwindigkeit (z.B. unter 20) reicht möglicherweise nicht aus, um das Anfahrtsmoment des Motors zu überwinden.
- Richtung umgekehrt: Tausche einfach die beiden Motordrähte an der Schraubenklemme aus, oder ändere MOTOR_FORWARD in MOTOR_BACKWARD in deinem Code.
Arduino DC Motor Shield - Vollständige Demo
Im Folgenden findest du ein Schritt-für-Schritt-Video-Tutorial, das alle Beispiele des DC Motor Shield zeigt:
Plattformunterstützung
Die Bibliothek verwendet nur Arduino-Standard-APIs (pinMode, digitalWrite, analogWrite, analogRead) und unterstützt alle Arduino-Plattformen (architectures=*).