Arduino Nano - Servomotor

Dieses Tutorial zeigt dir, wie man den Arduino Nano verwendet, um einen Servomotor zu steuern. Im Detail werden wir lernen:

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×Servo-Motor
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

Oder Sie können die folgenden Kits kaufen:

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

Ein Servomotor ist eine Komponente, die in der Lage ist, seine Welle zu drehen, typischerweise zwischen 0° und 180°. Er wird üblicherweise verwendet, um die Winkelposition eines Objekts zu steuern.

Die Pinbelegung des Servomotors

Der Servomotor hat drei Anschlüsse:

  • VCC-Pin (in der Regel rot) muss mit VCC (5V) verbunden werden
  • GND-Pin (in der Regel schwarz oder braun) muss mit GND (0V) verbunden werden
  • Signal-Pin (in der Regel gelb oder orange) empfängt das PWM-Steuersignal von einem Pin eines Arduino Nano
Servo-Motor-Pinbelegung

Arduino Nano - Servomotor

Einige der Pins des Arduino Nano können so programmiert werden, dass sie ein PWM-Signal erzeugen. Wir können den Signaleingang des Servomotors an einen dieser Pins anschließen und ihn so programmieren, dass ein PWM-Ausgang erzeugt wird. Dadurch können wir den Servomotor steuern.

Dank der Arduino Nano Servo-Bibliothek ist die Steuerung eines Servomotors einfach. Wir müssen nicht verstehen, wie Servomotoren funktionieren oder wie man PWM-Signale erzeugt. Alles, was wir tun müssen, ist zu lernen, wie man die Bibliothek verwendet.

Verdrahtungsdiagramm

Arduino Nano Servomotor Verdrahtungsdiagramm

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

Aus Gründen der Einfachheit wird das oben gezeigte Verdrahtungsschema für Tests- oder Bildungszwecke verwendet und für einen Servomotor mit kleinem Drehmoment vorgesehen. Wir empfehlen dringend, in der Praxis eine externe Stromquelle für den Servomotor zu verwenden. Das untenstehende Verdrahtungsschema veranschaulicht, wie der Servomotor an eine externe Stromquelle angeschlossen wird.

Arduino Nano Servomotor externe Stromversorgung Verdrahtungsdiagramm

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

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

Bitte nicht vergessen, den GND der externen Stromversorgung mit dem GND des Arduino zu verbinden.

Wie man einen Servomotor programmiert

  • Die Bibliothek einbinden:
#include <Servo.h>
  • Erzeuge ein Servo-Objekt:
Servo servo;
  • Wenn Sie mehr als einen Servomotor haben, deklarieren Sie einfach zusätzliche Servo-Objekte:
Servo servo1; Servo servo2;
  • Weisen Sie dem Arduino Nano zu, der mit dem Signalpin des Servomotors verbunden ist. Als Beispiel verwenden Sie Pin 9:
servo.attach(9);
  • Schließlich steuern Sie den Servomotor auf den erforderlichen Winkel. Zum Beispiel 90°
servo.write(90);

Arduino Nano Quellcode

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano-Pin D9, mit dem Signalkabel des Servo-Motors verbunden Servo servo; // Erzeugt ein Servo-Objekt zur Steuerung eines Servos int pos = 0; // Variable zur Speicherung der Servo-Position void setup() { servo.attach(SERVO_PIN); // bindet das Servo am Pin 9 an das Servo-Objekt } void loop() { for (pos = 0; pos <= 180; pos += 1) { // Dreht sich von 0° bis 180° // In Schritten von 1 Grad servo.write(pos); // lässt das Servo die Position aus der Variablen 'pos' anfahren delay(10); // wartet 10 ms, bis das Servo die Position erreicht } for (pos = 180; pos >= 0; pos -= 1) { // Dreht sich von 180° auf 0° servo.write(pos); // lässt das Servo die Position aus der Variablen 'pos' anfahren delay(10); // wartet 10 ms, bis das Servo die Position erreicht } }

Schnelle Schritte

  • Schließen Sie den Arduino Nano über ein USB-Kabel an Ihren Computer an.
  • Starten Sie die Arduino IDE und wählen Sie das richtige Board und den richtigen Port aus.
  • Kopieren Sie den Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf die Schaltfläche Hochladen, um den Code zu kompilieren und auf den Arduino Nano hochzuladen.
So lädt man Code auf den Arduino Nano hoch.
  • Schau dir das Ergebnis an: Der Servomotor dreht sich sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn.

Code-Erklärung

Schau dir die zeilenweise Erklärung an, die in den Kommentaren des Quellcodes enthalten ist!

Wie man die Geschwindigkeit eines Servomotors steuert

Durch die Nutzung der Funktionen map() und millis() können wir die Geschwindigkeit eines Servomotors auf gleichmäßige Weise anpassen, ohne dabei anderen Code zu behindern.

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino-Nano-Pin D9, der mit dem Signaleingang des Servomotors verbunden ist Servo servo; unsigned long MOVING_TIME = 3000; // Bewegungszeit beträgt 3 Sekunden unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(SERVO_PIN); move_start_ms = millis(); // start moving // TODO: anderer Code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.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.

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