Einen Servo mit einem Potentiometer und einem Arduino steuern

Einen Servo mit einem Potentiometer und einem Arduino steuern

In diesem Tutorial lernen wir, wie man einen Servomotor mit einem Potentiometer und einem Arduino steuert. Das Potentiometer ermöglicht es uns, den Winkel des Servos stufenlos einzustellen, wodurch wir seine Position in Echtzeit kontrollieren können. Am Ende dieses Projekts hast du einen funktionierenden Aufbau, der den Wert des Potentiometers und den entsprechenden Servowinkel anzeigt.

Wenn das Potentiometer gedreht wird, ändert sich der Winkel des Servomotors von 0 bis 180 Grad. Wir verwenden den analogen Eingang des Arduino, um den Wert des Potentiometers zu lesen und diesen Wert dann mit einer einfachen Formel auf den Bereich des Servomotors abzubilden. Dieses Projekt ist eine hervorragende Möglichkeit, zu verstehen, wie analoge Eingänge funktionieren und wie man Motoren damit steuert (im Video bei 01:45).

Hardware erklärt

Für dieses Projekt benötigen wir ein Arduino-Board, einen Servomotor und ein Potentiometer. Das Potentiometer fungiert als veränderlicher Widerstand und liefert eine Spannung, die seiner Stellung entspricht. Diese Spannung wird über den analogen Eingang des Arduino eingelesen, sodass wir bestimmen können, wie weit der Servomotor gedreht werden soll.

Der Servomotor ist eine Art Motor, der auf einen bestimmten Winkel eingestellt werden kann. Er empfängt ein Steuersignal, das ihm die gewünschte Position angibt. Der Servo dreht sich aufgrund des Eingangssignals vom Arduino auf diesen Winkel und ist damit nützlich für verschiedene Anwendungen wie Robotik und ferngesteuerte Geräte.

Datenblattdetails

HerstellerVerschiedene
TeilenummerStandard-Servo
Logik/IO-Spannung5 V
Versorgungsspannung4.8 - 6 V
Ausgangsstrom (pro Kanal)Bis zu 1 A
Spitzenstrom (pro Kanal)Bis zu 2 A
Leitfaden zur PWM-Frequenz50 Hz
Schwellenwerte der Eingangslogik0.8 V (niedrig) / 2.0 V (hoch)
Spannungsabfall / RDS(on)/ Sättigung0.5 V
Thermische Grenzwerte85 °C
PaketStandardgröße
Notizen / VariantenErhältlich in verschiedenen Größen und Drehmomentstufen.

  • Stellen Sie sicher, dass die Versorgungsspannung innerhalb der Grenzwerte (4.8 - 6 V) liegt.
  • Verwenden Sie einen geeigneten Widerstandswert für das Potentiometer (10 kΩ empfohlen).
  • Überprüfen Sie die Polung der Anschlüsse, um einen falschen Betrieb zu vermeiden.
  • Achten Sie auf Hitze; stellen Sie sicher, dass der Servo nicht überlastet wird.
  • Halten Sie die Verkabelung kurz, um Störungen zu reduzieren.
  • Verwenden Sie Entkopplungskondensatoren an den Versorgungseingängen, falls erforderlich.
  • Überprüfen Sie, ob das Potentiometer korrekt mit dem analogen Pin A0 verbunden ist.

Verdrahtungsanleitung

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

Um die Komponenten zu verdrahten, verbinden Sie zuerst das Potentiometer. Der mittlere Anschluss des Potentiometers sollte mit dem analogen Pin verbunden werden.A0am Arduino. Der linke Pin sollte an den 5V-Pin am Arduino angeschlossen werden, und der rechte Pin sollte mit der Masse (GND) verbunden werden.

Als Nächstes verbinden Sie den Servomotor. Das Massekabel (typischerweise schwarz oder braun) des Servos sollte mit dem GND des Arduino verbunden werden. Das Versorgungskabel (normalerweise rot) sollte mit dem 5V-Pin des Arduino verbunden werden. Schließlich sollte das Steuerkabel (oft gelb oder weiß) mit dem digitalen Pin verbunden werden9Auf dem Arduino. Diese Einrichtung ermöglicht dem Arduino, das Servo anhand der Position des Potentiometers zu steuern.

Arduino Schemtic of wiring servo motor with pot

Codebeispiele und Schritt-für-Schritt-Anleitung

Werfen wir einen Blick auf die wichtigsten Teile des Codes. Zuerst binden wir die Servo-Bibliothek ein und erstellen ein Servo-Objekt:

#include 
Servo myservo;  // create servo object to control a servo

Dieser Code initialisiert das Servo und bereitet es zur Steuerung vor. Der nächste Schritt besteht darin, den Wert des Potentiometers zu lesen:

int val = analogRead(potpin); // reads the value of the potentiometer

Hier wird der vom Potentiometer gelesene Wert in der Variablen gespeichertval. Der Wert liegt zwischen 0 und 1023 und entspricht der Stellung des Potentiometers. Anschließend ordnen wir diesen Wert dem Stellbereich des Servos zu:

val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo

Diese Zeile wandelt den Wert des Potentiometers in einen für den Servomotor geeigneten Bereich um. Schließlich stellen wir den Servo auf die berechnete Position ein:

myservo.write(val); // sets the servo position according to the scaled value

Dieser Befehl veranlasst das Servo, sich entsprechend der Position des Potentiometers auf den angegebenen Winkel zu bewegen. Den vollständigen Code finden Sie weiter unten im Artikel.

Vorführung / Was Sie erwartet

Wenn Sie das Programm ausführen, stellt das Drehen des Potentiometers den Winkel des Servomotors sanft ein. Sie sollten sehen, wie die Winkelwerte im seriellen Monitor angezeigt werden, während Sie den Drehknopf drehen. Wenn sich der Servo unerwartet verhält, überprüfen Sie Ihre Verkabelung, insbesondere die Anschlüsse des Potentiometers und des Servos (im Video bei 04:30).

Der Servo sollte sofort auf Änderungen der Position des Potentiometers reagieren. Wenn Sie Verzögerungen oder Ruckeln bemerken, ziehen Sie in Erwägung, die Verzögerung im Code zu verringern, um die Reaktionsfähigkeit zu verbessern.

Bilder

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
Arduino Schemtic of wiring servo motor with pot
Arduino Schemtic of wiring servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
96-Controlling a servo position using a potentiometer
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Keine Dateien verfügbar.