Arduino Servomotoren

Servomotoren sind großartige Geräte, die sich in eine bestimmte Position drehen lassen.

Normalerweise haben sie einen Servoarm, der sich um 180 Grad drehen lässt. Mit dem Arduino können wir einem Servo sagen, dass es zu einer bestimmten Position gehen soll, und es wird dorthin gehen. So einfach ist das!

Servomotoren wurden erstmals in der Welt der Fernbedienung (RC) eingesetzt, normalerweise zur Steuerung der Lenkung von RC-Autos oder der Klappen in einem RC-Flugzeug. Mit der Zeit fanden sie ihre Verwendung in der Robotik, Automatisierung und natürlich in der Arduino-Welt.

Hier sehen wir, wie ein Servomotor angeschlossen und dann in verschiedene Positionen gedreht wird.

Der erste Motor, den ich vor sieben Jahren an einen Arduino angeschlossen habe, war ein Servomotor. Nostalgischer Moment vorbei, zurück zur Arbeit!

Wir werden folgende Dinge brauchen:

  1. Eine Arduino-Karte, die über USB mit einem Computer verbunden ist
  2. Ein Servomotor
  3. Überbrückungsdrähte

Es gibt nur wenige große Namen in der Welt der Servomotoren. Hitec und Futaba sind die führenden RC-Servohersteller. Gute Orte, um sie zu kaufen, sind Servocity, Sparkfun und Hobbyking.

Diese Anleitung und viele weitere finden Sie in meinem Arduino Development Cookbook, das hier verfügbar ist. : D.

Schritt 1: So verbinden Sie sie

In einen Servomotor ist alles eingebaut: ein Motor, eine Rückkopplungsschaltung und vor allem ein Motortreiber. Es benötigt nur eine Stromleitung, eine Masse und einen Steuerstift.

Im Folgenden finden Sie die Schritte zum Anschließen eines Servomotors an den Arduino:

  1. Der Servomotor hat eine Buchse mit drei Stiften. Das dunkelste oder sogar schwarze ist normalerweise der Boden. Verbinden Sie dies mit dem Arduino GND.
  2. Schließen Sie das Stromkabel an, das in allen Standards auf 5 V am Arduino rot sein sollte.
  3. Verbinden Sie die verbleibende Leitung am Servostecker mit einem digitalen Pin am Arduino.

Überprüfen Sie das Bild auf eine Ansicht des mit dem Arduino verbundenen Servos.

Schritt 2: Code

Der folgende Code dreht einen Servomotor auf 0 Grad, wartet 1 Sekunde, dreht ihn dann auf 90, wartet eine weitere Sekunde, dreht ihn auf 180 und geht dann zurück.

 // Die Servobibliothek einschließen 
#include // Deklariere den Servo Pin int servoPin = 3; // Servoobjekt erstellen Servo Servo1; void setup () {// Wir müssen das Servo an die verwendete Pin-Nummer Servo1.attach (servoPin) anschließen; } void loop () {// Servo auf 0 Grad bringen Servo1.write (0); Verzögerung (1000); // Servo auf 90 Grad stellen Servo1.write (90); Verzögerung (1000); // Servo auf 180 Grad stellen Servo1.write (180); Verzögerung (1000); }}
Wenn der Servomotor an einen anderen digitalen Pin angeschlossen ist, ändern Sie einfach den Wert von servoPin in den Wert des verwendeten digitalen Pins.

Anhänge

  • Servo_motor.ino herunterladen

Schritt 3: Wie es funktioniert

Servos sind clevere Geräte. Mit nur einem Eingangspin erhalten sie die Position vom Arduino und gehen dorthin. Intern haben sie einen Motortreiber und eine Rückkopplungsschaltung, die sicherstellt, dass der Servoarm die gewünschte Position erreicht. Aber welche Art von Signal empfangen sie am Eingangspin?

Es ist eine Rechteckwelle ähnlich PWM. Jeder Zyklus im Signal dauert 20 Millisekunden und für den größten Teil ist der Wert LOW. Zu Beginn jedes Zyklus ist das Signal für eine Zeit zwischen 1 und 2 Millisekunden HIGH. Bei 1 Millisekunde entspricht dies 0 Grad und bei 2 Millisekunden 180 Grad. Dazwischen steht der Wert von 0 bis 180. Dies ist eine sehr gute und zuverlässige Methode. Die Grafik erleichtert das Verständnis.

Denken Sie daran, dass die Verwendung der Servobibliothek die PWM-Funktionalität an den PWM-Pins 9 und 10 auf dem Arduino UNO und ähnlichen Karten automatisch deaktiviert.

Code-Aufschlüsselung

Der Code deklariert einfach das Servoobjekt und initialisiert das Servo dann mit der Funktion servo.attach () . Wir sollten nicht vergessen, die Servobibliothek einzuschließen. In der Schleife () stellen wir das Servo auf 0 Grad ein, warten, stellen es dann auf 90 und später auf 180 Grad ein.

Schritt 4: Weitere Informationen zu Servos

Die Steuerung von Servos ist einfach und hier sind einige weitere Tricks, die wir anwenden können:

Steuerung der genauen Pulszeit

Arduino verfügt über eine integrierte Funktion servo.write (Grad), die die Steuerung von Servos vereinfacht. Allerdings respektieren nicht alle Servos für alle Positionen die gleichen Timings. Normalerweise bedeutet 1 Millisekunde 0 Grad, 1, 5 Millisekunden 90 Grad und natürlich 2 Millisekunden 180 Grad. Einige Servos haben kleinere oder größere Reichweiten.

Zur besseren Kontrolle können wir die Funktion servo.writeMicroseconds (us) verwenden, die die genaue Anzahl von Mikrosekunden als Parameter verwendet. Denken Sie daran, 1 Millisekunde entspricht 1.000 Mikrosekunden.

Noch mehr Servos

Um mehr als ein Servo zu verwenden, müssen wir mehrere Servoobjekte deklarieren, unterschiedliche Pins an jedes anbringen und jedes Servo einzeln adressieren. Zuerst müssen wir die Servoobjekte deklarieren - so viele wie wir brauchen:

 // Servoobjekte erstellen Servo Servo1, Servo2, Servo3; 

Dann müssen wir jedes Objekt an einen Servomotor anschließen. Denken Sie daran, dass jeder Servomotor einen einzelnen Stift verwendet:

 Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3); 

Am Ende müssen wir nur jedes Servoobjekt einzeln ansprechen:

 Servo1.write (0); // Servo 1 auf 0 Grad setzen Servo2.write (90); // Servo 2 auf 90 Grad einstellen 

In Bezug auf die Verbindung gehen die Erdungen der Servos auf dem Arduino zu GND, die Servospannung auf 5 V oder VIN (abhängig von der Leistungsaufnahme), und am Ende muss jede Signalleitung an einen anderen digitalen Pin angeschlossen werden. Entgegen der landläufigen Meinung müssen Servos nicht über PWM-Pins gesteuert werden - jeder digitale Pin funktioniert.

Servos mit kontinuierlicher Rotation

Es gibt eine spezielle Art von Servos, die als Servos mit kontinuierlicher Rotation bezeichnet werden . Während ein normales Servo abhängig vom Eingangssignal in eine bestimmte Position fährt, dreht sich ein Servo mit kontinuierlicher Drehung entweder im oder gegen den Uhrzeigersinn mit einer Geschwindigkeit, die proportional zum Signal ist. Zum Beispiel lässt die Funktion Servo1.write (0) den Servomotor bei voller Geschwindigkeit gegen den Uhrzeigersinn drehen. Die Funktion Servo1.write (90) stoppt den Motor und Servo1.write (180) dreht den Motor mit voller Geschwindigkeit im Uhrzeigersinn.

Es gibt mehrere Verwendungszwecke für solche Servos. Sie sind jedoch sehr langsam. Wenn Sie eine Mikrowelle bauen und einen Motor zum Drehen der Lebensmittel benötigen, ist dies Ihre Wahl. Aber Vorsicht, Mikrowellen sind gefährlich!

Schritt 5: Weitere Informationen

Weitere Themen zu Motoren wie bürstenlos, Transistortreibern oder Motordrehzahlregelung finden Sie in meinem Arduino Development Cookbook, das hier verfügbar ist. : D.

Ähnlicher Artikel