Arduino Tutorial - Servo

servomotor

Ein Servo ist ein kleines Gerät, das eine Abtriebswelle hat. Sie können kleine Servomotoren direkt an einen Arduino anschließen und die Wellenposition sehr genau steuern, indem dem Servo ein codiertes Signal gesendet wird.

Solange das codierte Signal in der Eingangsleitung vorhanden ist, behält der Servo die Winkelposition der Welle bei. Wenn sich das codierte Signal ändert, ändert sich die Winkelposition der Welle.

In der Praxis werden Servomotoren verwendet, um die Position von Objekten zu steuern, Objekte zu drehen, Beine, Arme oder Hände von Robotern zu bewegen oder Sensoren mit hoher Präzision bewegen zu können. Da die Servomotoren klein sind und da integrierte Schaltkreise zur Steuerung ihrer Bewegung haben, können sie direkt an einen Arduino angeschlossen werden.

 

Wie funktioniert ein Servomotor?

Ein Servo verfügt über einige Steuerkreise und ein Potentiometer (einen variablen Widerstand, auch Poti genannt), der mit der Ausgangswelle verbunden ist. Mit diesem Potentiometer kann die Steuerschaltung den aktuellen Winkel des Servomotors überwachen.

Wenn sich die Welle im richtigen Winkel befindet, schaltet der Motor ab. Wenn die Schaltung feststellt, dass der Winkel nicht korrekt ist, wird der Motor in die richtige Richtung gedreht, bis der Winkel korrekt ist. Die Abtriebswelle des Servos kann sich um 180 Grad bewegen. Normalerweise liegt es irgendwo im 210-Grad-Bereich, variiert jedoch je nach Hersteller. Mit einem normalen Servo wird eine Winkelbewegung zwischen 0 und 180 Grad gesteuert. Ein normaler Servo kann sich mechanisch nicht weiterdrehen, da ein mechanischer Anschlag am Hauptausgangsgetriebe angebracht ist.
Die an den Motor angelegte Leistungsmenge ist proportional zur Entfernung, die er zurücklegen muss. Wenn also die Welle eine große Strecke drehen muss, läuft der Motor mit voller Drehzahl. Wenn nur ein geringer Betrag gedreht werden muss, läuft der Motor langsamer. Dies wird als Proportionalsteuerung bezeichnet.

Wie kommunizieren Sie den Winkel, in dem sich das Servo drehen soll? Der Steuerdraht wird verwendet, um den Winkel mitzuteilen. Der Winkel wird durch die Dauer eines Impulses bestimmt, der an den Steuerdraht angelegt wird. Dies wird als pulscodierte Modulation bezeichnet. Der Servo erwartet alle 20 Millisekunden (0,02 Sekunden) einen Impuls. Die Länge des Impulses bestimmt, wie weit sich der Motor dreht. Bei einem Impuls von 1,5 Millisekunden dreht sich der Motor beispielsweise in die 90-Grad-Position (oft als Neutralposition bezeichnet). Wenn der Impuls kürzer als 1,5 ms ist, dreht der Motor die Welle auf 0 Grad. Wenn der Impuls länger als 1,5 ms ist, dreht sich die Welle näher an 180 Grad.

 

arduino-servo-25c336824d5cfa

 

Wie Sie im Bild sehen können, bestimmt die Dauer des Impulses den Winkel der Abtriebswelle (als grüner Kreis mit dem Pfeil dargestellt). Beachten Sie, dass die Zeiten hier illustrativ sind und die tatsächlichen Zeiten vom Hersteller des Motors abhängen. Das Prinzip ist jedoch dasselbe.

 

Servomotorsteuerung mit einem Arduino

In diesem Experiment verbinden wir die Strom- und Masse-Pins direkt mit den Arduino 5 V- und GND-Pins. Der PWM-Eingang wird an einen der digitalen Ausgangspins des Arduino angeschlossen.

Verbinden Sie den Motor mit dem Arduino wie in der folgenden Tabelle gezeigt:

  • Rotes Kabel - 5 V Pin Arduino
  • Braunes/schwarzes Kabel - Erdungspin Arduino
  • Gelbes Kabel- PWM (10) Pin Arduino

 

arduino-servo-15c3368b2870b6

 

Arduino Servo Code

/*
Arduino Servo Test sketch
*/
#include <Servo.h>
Servo servoMain; // Define our Servo
void setup()
{
servoMain.attach(10); // servo on digital pin 10
}
void loop()
{
servoMain.write(45); // Turn Servo Left to 45 degrees
delay(1000); // Wait 1 second
servoMain.write(0); // Turn Servo Left to 0 degrees
delay(1000); // Wait 1 second
servoMain.write(90); // Turn Servo back to center position (90 degrees)
delay(1000); // Wait 1 second
servoMain.write(135); // Turn Servo Right to 135 degrees
delay(1000); // Wait 1 second
servoMain.write(180); // Turn Servo Right to 180 degrees
delay(1000); // Wait 1 second
servoMain.write(90); // Turn Servo back to center position (90 degrees)
delay(1000); // Wait 1 second
}

07.01.2019 00:00 |

Passende Artikel

  • Arduino Uno R3
    Arduino
    Arduino Uno R3

    Das Mikrocontroller-Board Arduino Uno basiert auf dem ATmega328 ( Datenblatt ). Es verfügt über 14 digitale Ein- und Ausgänge (6 davon als PWM-Ausgang einsetzbar), 6 analoge Eingänge, 1 Keramik-Resonator (16 MHz), 1 USB-Anschluss, 1 Power Jack, 1 ICSP Header sowie 1 Reset-Knopf. Das Board lässt sich über ein Netzteil oder einen Akku betreiben oder via USB-Kabel an den PC anschließen. Im Vergleich zu den vorherigen Arduino Boards wird kein...

    21,66 €*

    Nettopreis: 18,20 €
    Umsatzsteuer: 3,46 €
    * inkl. MwSt. zzgl. Versand
  • SG92R Micro Servo (9 g)

    Dieser Micro-Servo kann 180 Grad (90 Grad in jede Richtung) drehen und arbeitet genau wie die Standard-Servos, ist aber kleiner. Sie können jeden Servo-Code, Hardware oder Bibliothek verwenden, um diesen Servo zu steuern. Der Servo ist gut für Anfänger geeignet, die ein Projekt realisieren wollen, ohne einen Motorcontroller mit Feedback & Getriebe bauen zu müssen. Natürlich ist der Micro-Servo nicht so stark wie ein Standard-Servo,...

    6,37 €*

    Nettopreis: 5,35 €
    Umsatzsteuer: 1,02 €
    * inkl. MwSt. zzgl. Versand
  • F/F 200mm Jumper Wires (40 Stück)

    Specifications: F/F Jumper Wires Length: 200 mm Quantity : 40 pcs Weight : 28g

    2,38 €*

    Nettopreis: 2,00 €
    Umsatzsteuer: 0,38 €
    * inkl. MwSt. zzgl. Versand
  • USB Kabel 2.0 A-Stecker auf B-Stecker 2m

    USB 2.0-Stecker (Typ A) > USB 2.0-Stecker (Typ B) Features: passend für viele Peripheriegeräte wie Drucker oder Scanner Hi-Speed Datenübertragungen bis 480 Mbit/s UL-E258105 Style 2725 Technische Daten: Anschluss, Typ: USB 2.0-Stecker (Typ A) Anschluss 2, Typ: USB 2.0-Stecker (Typ B) Kabeltyp: Rundkabel Innenleiter, Material: CU (Kupfer) Kabellänge: 2 m Anzahl Schirmungen: 2 x max. Übertragungsrate: 0,48...

    1,79 €*

    Nettopreis: 1,50 €
    Umsatzsteuer: 0,29 €
    * inkl. MwSt. zzgl. Versand