Arduino Servomotorsteuerung mit einem Potentiometer

Arduino Servomotorsteuerung mit einem Potentiometer

In diesem Tutorial werden wir erkunden, wie man einen Servomotor mit einem Potentiometer und einem Arduino steuert. Das Ziel ist es, einen einfachen Schaltkreis zu erstellen, bei dem die Position des Servos basierend auf der Drehung des Potentiometers angepasst wird. Am Ende dieses Projekts werden Sie ein funktionierendes Modell haben, das den Servo-Winkel beim Drehen des Potentiometers sanft von 0 bis 180 Grad variiert. Dies ist eine großartige Möglichkeit, die Grundlagen der analogen Eingabe und der Servosteuerung in Arduino zu verstehen.

Um dies zu erreichen, verwenden wir ein Arduino-Board, einen Servomotor und einen Potentiometer. Der Potentiometer fungiert als variabler Widerstand und liefert ein analoges Signal an das Arduino, das dann die Position des Servomotors entsprechend bestimmt. Dieses Projekt macht nicht nur Spaß, sondern ist auch lehrreich, da es wichtige Konzepte in der Elektronik und Programmierung demonstriert. Für eine ausführlichere Erklärung sollten Sie sich das Video (im Video bei 00:00) ansehen.

Hardware erklärt

In diesem Projekt sind die Hauptkomponenten das Arduino-Board, der Servomotor und der Potentiometer. Das Arduino ist das Gehirn des Betriebs, das Eingaben verarbeitet und Ausgaben steuert. Der Servomotor ist das, was sich physisch basierend auf den Befehlen bewegt, die er vom Arduino erhält. Der Potentiometer kann 1k Ohm bis 1M Ohm betragen und ermöglicht es den Benutzern, eine variable Eingabe bereitzustellen, die in Servobewegung übersetzt wird.

Der Servomotor funktioniert, indem er ein PWM (Pulsweitenmodulation) Signal empfängt, das die gewünschte Position angibt. Der Potentiometer ändert beim Drehen seinen Widerstand, der vom Arduino als analoger Spannungswert gelesen wird. Servomotoren arbeiten mit 5V. Sie funktionieren nicht mit 3,3V. Diese Spannung wird dann auf den Bewegungsbereich des Servomotors abgebildet, was eine sanfte Bewegung von 0 Grad bis 180 Grad ermöglicht.

Datenblattdetails für SG90 Servomotor

HerstellerParallax
TeilenummerSG90
Logik/IO-Spannung5 V
Versorgungsspannung4,8-6 V
Ausgangsstrom (pro Kanal)~500 mA
Spitzenstrom (pro Kanal)1 A
PWM-Frequenzrichtlinien50 Hz
Eingangslogikschwellen0,5 V (niedrig), 2,5 V (hoch)
Spannungsabfall / RDS(on)/ Sättigung0,5 V bei 500 mA
Thermische Grenzen0°C bis 60°C
PaketStandard 9g Servo
Hinweise / VariantenHäufig in RC-Anwendungen verwendet

  • Stellen Sie sicher, dass der Servomotor seine maximale Stromstärke nicht überschreitet.
  • Verwenden Sie einen Kühlkörper, wenn der Servomotor kontinuierlich bei hohen Lasten arbeitet.
  • Schließen Sie den Potentiometer an einen analogen Pin an, um genaue Messwerte zu erhalten.
  • Seien Sie vorsichtig mit der PWM-Signalzeit für die Servosteuerung.
  • Überprüfen Sie den Bewegungsbereich des Servos, um physische Hindernisse zu vermeiden.

Verdrahtungsanweisungen

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Für dieses Setup müssen Sie die Komponenten wie folgt anschließen:

Verbinden Sie den mittleren Pin des Potentiometers (Wischer) mit dem analogen Pin des Arduino.A0Die anderen beiden Pins des Potentiometers sollten verbunden werden mit5VundGNDam Arduino. Für den Servomotor verbinden Sie den roten Draht mit5V, der schwarze Draht zuGNDund den gelben oder weißen Draht an den digitalen Pin9auf dem Arduino. Diese Anordnung ermöglicht es dem Potentiometer, ein analoges Signal an den Arduino zu liefern, der die Position des Servomotors basierend auf diesem Signal steuern wird.

Stellen Sie sicher, dass Sie alle Verbindungen überprüfen und dass der Servo in seinem Bewegungsbereich nicht behindert wird. Wenn Sie ein anderes Arduino-Modell verwenden, bestätigen Sie, dass die Pinbelegungen für den analogen Eingang und den Servoausgang kompatibel sind.

Codebeispiele und Anleitung

Unten ist ein Auszug aus dem Code, der den Servomotor initialisiert und den Wert des Potentiometers liest:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

In diesem Code binden wir die Servo-Bibliothek ein und erstellen ein Servo-Objekt namensmyservoDer Servomotor ist an den Pin angeschlossen.9, das es uns ermöglicht, es mit diesem Pin zu steuern.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

Im Loop-Funktion lesen wir den Potentiometerwert von PinA0und mappe es von seinem Bereich (0-1023) in den Bereich des Servos (0-180 Grad). Dermyservo.write(pos)Der Befehl bewegt dann den Servo in die gewünschte Position basierend auf der Drehung des Potentiometers.

Demonstration / Was zu erwarten ist

Wenn Sie dieses Programm ausführen, sollten Sie sehen, wie sich der Servomotor sanft von 0 auf 180 Grad bewegt, während Sie den Potentiometer drehen. Wenn sich der Servomotor nicht wie erwartet bewegt, überprüfen Sie die Verkabelung und stellen Sie sicher, dass der Potentiometer ordnungsgemäß funktioniert. Stellen Sie außerdem sicher, dass das Arduino richtig mit Strom versorgt wird und der Code fehlerfrei hochgeladen wurde. Sie können erwarten, dass der Servomotor die Position des Potentiometers in Echtzeit widerspiegelt (im Video bei 02:00).

Video-Zeitstempel

  • 00:00- Einführung in das Projekt
  • 01:30- Erklärung zur Hardware-Konfiguration
  • 03:45- Verdrahtungsanweisungen
  • 05:00- Code-Durchgang
  • 07:30- Demonstration des abgeschlossenen Projekts

Bilder

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Keine Dateien verfügbar.