Arduino - Servomotor

In diesem Tutorial werden wir lernen, wie man den Servomotor mit Arduino verwendet. Im Detail werden wir lernen:

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×Servo-Motor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Servomotor

Der Servomotor ist ein Bauteil, das seine Welle drehen kann (in der Regel zwischen 0° und 180°). Er dient dazu, die Winkelposition des Objekts zu steuern.

Pinbelegung

Der Servomotor, der in diesem Beispiel verwendet wird, verfügt über drei Pins:

  • VCC-Pin: (typischerweise rot) muss mit VCC (5 V) verbunden werden
  • GND-Pin: (typischerweise schwarz oder braun) muss mit GND (0 V) verbunden werden
  • Signal-Pin: (typischerweise gelb oder orange) empfängt das PWM-Steuersignal vom Pin eines Arduino
Servomotor-Pinbelegung

Wie es funktioniert

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

Nachdem der VCC-Pin und der GND-Pin jeweils mit 5 V bzw. 0 V verbunden wurden, können wir den Servomotor steuern, indem wir ein geeignetes PWM-Signal am Signaleingang erzeugen.

Der Winkel wird durch die Breite des PWM-Signals bestimmt.

Das Datenblatt des Servomotors liefert uns die folgenden Parameter:

  • PWM-Periode (PERIOD)
  • PWM-Mindestbreite (WIDTH_MAX)
  • PWM-Maximalbreite (WIDTH_MIN)

Diese Parameter sind in der Arduino-Servo-Bibliothek festgelegt. Wir müssen die Werte der Parameter nicht kennen.

Der Winkel wird wie folgt bestimmt:

  • Wenn die PWM-Breite = WIDTH_MIN, dreht sich der Servomotor auf 0°.
  • Wenn die PWM-Breite = WIDTH_MAX, dreht sich der Servomotor auf 180°.
  • Wenn die PWM-Breite zwischen WIDTH_MIN und WIDTH_MAX liegt, dreht sich der Servomotor proportional zu einem Winkel zwischen 0° und 180°.
Wie ein Servomotor funktioniert.

Arduino - Servomotor

Einige Pins des Arduino können so programmiert werden, dass sie PWM-Signale erzeugen. Wir können den Servo-Motor steuern, indem wir den Signalpin des Servo-Motors mit einem Arduino-Pin verbinden und PWM auf dem Arduino-Pin erzeugen.

Dank der Arduino Servo-Bibliothek ist die Steuerung eines Servomotors ein Kinderspiel. Wir müssen nicht einmal wissen, wie ein Servomotor funktioniert. Wir müssen auch nicht wissen, wie man ein PWM-Signal erzeugt. Wir müssen lediglich lernen, wie man die Bibliothek verwendet.

Verdrahtungsdiagramm

Sie könnten online Verdrahtungsdiagramme finden, die eine Verbindung vom VCC-Pin des Servomotors direkt zum 5V-Pin des Arduino-Boards zeigen, wie unten dargestellt. Obwohl dieser Ansatz funktionieren kann, ist er dringend davon abzuraten, da ein potenzielles Risiko besteht, das Arduino-Board zu beschädigen.

Arduino-Servomotor-Schaltplan

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

Stattdessen empfehlen wir dringend, zum Schutz Ihres Arduino-Boards eine externe Stromversorgung für den Servomotor zu verwenden. Der untenstehende Schaltplan veranschaulicht, wie der Servomotor an eine externe Stromquelle angeschlossen wird.

Schaltplan der externen Stromversorgung für den Arduino-Servomotor

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

Bitte stellen Sie sicher, dass Sie die Masse des externen Netzteils mit der Masse des Arduino-Boards verbinden. Vernachlässigen Sie diesen wichtigen Schritt nicht, damit der Betrieb ordnungsgemäß funktioniert.

Wie man einen Servomotor programmiert

  • Die Bibliothek einbinden:
#include <Servo.h>
  • Deklariere ein Servo-Objekt:
Servo myServo;

Wenn Sie mehr als einen Servomotor steuern, müssen Sie einfach weitere Servo-Objekte deklarieren:

Servo myServo1; Servo myServo2;
  • Setzen Sie den Steuerpin des Arduino-Boards, der mit dem Signalpin des Servomotors verbunden ist. Zum Beispiel Pin 9:
myServo.attach(9);
  • Zuletzt drehen Sie den Winkel des Servomotors auf den gewünschten Winkel. Zum Beispiel 90°:
myServo.write(90);

Arduino-Code

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino-servo-motor */ #include <Servo.h> Servo servo; // Erzeuge Servo-Objekt zur Steuerung eines Servos void setup() { servo.attach(9); // verbindet den Servo mit Pin 9 an das Servo-Objekt servo.write(0); // Dreht den Servo sofort langsam auf 0 Grad } void loop() { for (int pos = 0; pos <= 180; pos += 1) { // Drehe langsam von 0 Grad bis 180 Grad, Schrittweise um je 1 Grad // in Schritten von 1 Grad servo.write(pos); // Steuert den Servo, um die Position in der Variablen 'pos' anzusteuern delay(10); // wartet 10 ms, bis der Servo die Position erreicht } for (int pos = 180; pos >= 0; pos -= 1) { // Dreht von 180 Grad nach 0 Grad, schrittweise um jeweils 1 Grad servo.write(pos); // Steuert den Servo, um die Position in der Variablen 'pos' anzusteuern delay(10); // wartet 10 ms, bis der Servo die Position erreicht } }

Schnelle Schritte

  • Schließen Sie Arduino über ein USB-Kabel an den PC an
  • Öffnen Sie die Arduino IDE, wählen Sie das richtige Board und den richtigen Port aus
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code auf den Arduino hochzuladen
Arduino IDE – Wie man Code hochlädt
  • Siehe das Ergebnis: Der Servomotor dreht sich langsam von 0 bis 180° und dann wieder langsam von 180° zurück nach 0°

Code-Erklärung

Sie finden die Erklärung in der Kommentarzeile des obigen Arduino-Codes.

So steuern Sie die Geschwindigkeit eines Servomotors

Durch die Verwendung der Funktionen map() und millis() können wir die Geschwindigkeit des Servomotors sanft steuern, ohne den übrigen Code zu blockieren.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino-servo-motor */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // Bewegungszeit beträgt 3 Sekunden unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // Bewegung starten // TODO: anderer Code } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); myServo.write(angle); } // TODO: anderer Code }

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Fordere dich heraus

Verwenden Sie den Servomotor, um eines der folgenden Projekte durchzuführen:

Zusätzliches Wissen

  • Die Servo-Bibliothek unterstützt bis zu 12 Motoren auf dem Arduino Uno und 48 auf dem Arduino Mega.
  • Der Strom vom 5-V-Pin des Arduino reicht möglicherweise in einem der folgenden Fälle nicht aus:
    • Verwendung eines Servomotors mit hohem Drehmoment, der eine schwere Last tragen kann.
    • Verwendung mehrerer Servomotoren.

    In diesen Fällen müssen wir möglicherweise eine zusätzliche Stromversorgung für Servomotoren bereitstellen.

    Arduino-Servomotor mit zusätzlicher Leistung

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

    Wie wir im obigen Diagramm sehen können, verbindet der VCC-Pin des Servo-Motors NICHT mit dem 5V-Pin des Arduino. Er verbindet sich mit dem Pluspol einer zusätzlichen Stromquelle.

    Bitte beachten Sie, dass:

    • Verbinden Sie nicht den positiven Pin einer zusätzlichen Stromquelle mit dem 5V-Pin des Arduino.
    • Der negative Pin der zusätzlichen Stromquelle muss mit dem GND-Pin des Arduino verbunden werden.

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