So steuern Sie den Servomotor mit einem Joystick

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag erfahren Sie, wie Sie Servomotoren mit einem Joystick und Arduino steuern. Wir werden einen Überblick über den Joystick, seine Stifte, seine Konstruktion und Funktionsweise sehen. Wir werden nützliche Daten aus dem Joystick extrahieren, die als Grundlage für die Steuerung der Servomotoren dienen.

Einführung

Das Motto dieses Artikels lautet nicht nur zu Servomotoren steuern aber um zu lernen, wie man a benutzt Joystick zur Steuerung viele andere Peripheriegeräte.



Schauen wir uns jetzt den Joystick an.

Ein Joystick ist ein Eingabegerät, das aus einem Hebel besteht, der sich in X- und Y-Achse in verschiedene Richtungen bewegen kann. Die Bewegung des Hebels wird zur Steuerung eines Motors oder elektronischer Peripheriegeräte verwendet.



Joysticks werden von RC-Spielzeug bis zu Boing-Flugzeugen verwendet und erfüllen ähnliche Funktionen. Zusätzlich haben Spiele und kleinere Joysticks einen Druckknopf in der Z-Achse, der für viele nützliche Aktionen programmiert werden kann.

Abbildung des Joysticks:

Abbildung des Joysticks:

Joysticks sind im Allgemeinen elektronische Geräte, daher müssen wir Strom anlegen. Die Bewegung des Hebels erzeugt eine Spannungsdifferenz an den Ausgangspins. Die Spannungspegel werden von einem Mikrocontroller verarbeitet, um das Ausgabegerät wie einen Motor zu steuern.

Der abgebildete Joystick ist ähnlich und befindet sich in PlayStation- und Xbox-Controllern. Sie müssen diese Controller nicht beschädigen, um einen zu retten. Diese Module sind in lokalen Elektrofachgeschäften und E-Commerce-Sites erhältlich.

Lassen Sie uns nun den Aufbau dieses Joysticks sehen.

Es hat zwei 10 Kilo Ohm Potentiometer Positioniert in X- und Y-Achse mit Federn, so dass es in seine ursprüngliche Position zurückkehrt, wenn der Benutzer die Kraft vom Hebel löst. Es hat eine Taste zum Einschalten auf der Z-Achse.

Es hat 5 Pins, 5 Volt Vcc, GND, Variable X, Variable Y und SW (Z-Achsenschalter). Wenn wir Spannung anlegen und den Joystick in seiner ursprünglichen Hebelposition belassen. Die X- und Y-Pins erzeugen die Hälfte der angelegten Spannung.

Wenn wir den Hebel bewegen, variiert die Spannung in den X- und Y-Ausgangspins. Lassen Sie uns nun den Joystick praktisch mit Arduino verbinden.

Schematische Darstellung:

Arduino Servomotorsteuerung mit Joystick

Die Pin-Verbindungsdetails sind neben der Schaltung angegeben. Schließen Sie das abgeschlossene Hardware-Setup an und laden Sie den Code hoch.

Programm:

//---------------Program Developed by R.Girish--------------//
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
void setup()
{
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
Serial.print('X axis = ')
Serial.println(x)
Serial.print('Y axis = ')
Serial.println(y)
Serial.print('Z axis = ')
if(z == HIGH)
{
Serial.println('Button not Pressed')
}
else
{
Serial.println('Button Pressed')
}
Serial.println('----------------------------')
delay(500)
}
//---------------Program Developed by R.Girish--------------//

Öffnen Sie den seriellen Monitor. Sie sehen den Spannungspegel an den Pins der X- und Y-Achse und den Status der Z-Achse, d. H. Den Druckknopf, wie unten dargestellt.

Diese X-, Y- und Z-Achsenwerte werden verwendet, um die Position des Hebels zu interpretieren. Wie Sie sehen können, liegen die Werte zwischen 0 und 1023.

Dies liegt daran, dass Arduino einen ADC-Wandler eingebaut hat, der die Spannungswerte von 0 V - 5 V in 0 bis 1023 umwandelt.

Auf dem seriellen Monitor können Sie sehen, dass der Hebel in der mittleren Position der X- und Y-Achse bleibt und den halben Wert von 1023 anzeigt, wenn der Hebel unberührt bleibt.

Sie können auch sehen, dass es nicht genau die Hälfte des 1023 ist, weil die Herstellung dieser Joysticks nie perfekt war.

Inzwischen hätten Sie einige technische Kenntnisse über Joysticks.

Nun wollen wir sehen, wie zwei Servomotoren mit einem Joystick gesteuert werden.

Schaltplan:

Die beiden Servomotoren werden von einem Joystick gesteuert, wenn Sie den Joystick entlang der X-Achse bewegen. Das an Pin 7 angeschlossene Servo bewegt sich je nach Hebelposition im Uhrzeigersinn und gegen den Uhrzeigersinn.

Sie können den Servoaktuator auch an einer Position halten, wenn Sie den Joystick an einer bestimmten Position halten.

Ähnlich wie bei einem an Pin 6 angeschlossenen Servomotor können Sie den Hebel entlang der Y-Achse bewegen.

Wenn Sie den Hebel entlang der Z-Achse drücken, führen die beiden Motoren einen 180-Grad-Sweep durch.

Sie können entweder das Arduino mit verbinden 9V Batterie oder zum Computer. Wenn Sie den Arduino an einen Computer anschließen, können Sie den seriellen Monitor öffnen und den Winkel der Servoaktuatoren und die Spannungspegel anzeigen.

Programm zur Servomotorsteuerung:

//---------------Program Developed by R.Girish--------------//
#include
Servo servo_X
Servo servo_Y
int X_angleValue = 0
int Y_angleValue = 0
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
int pos = 0
int check1 = 0
int check2 = 0
int threshold = 10
void setup()
{
Serial.begin(9600)
servo_X.attach(7)
servo_Y.attach(6)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(z == LOW)
{
Serial.print('Z axis status = ')
Serial.println('Button Pressed')
Serial.println('Sweeping servo actuators')
for (pos = 0 pos <= 180 pos += 1)
{
servo_X.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_X.write(pos)
delay(15)
}
for (pos = 0 pos <= 180 pos += 1)
{
servo_Y.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_Y.write(pos)
delay(15)
}
Serial.println('Done!!!')
}
if(x > check1 + threshold || x {
X_angleValue = map(x, 0, 1023, 0, 180)
servo_X.write(X_angleValue)
check1 = x
Serial.print('X axis voltage level = ')
Serial.println(x)
Serial.print('X axis servo motor angle = ')
Serial.print(X_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
if(y > check2 + threshold || y {
Y_angleValue = map(y, 0, 1023, 0, 180)
servo_Y.write(Y_angleValue)
check2 = y
Serial.print('Y axis voltage level = ')
Serial.println(y)
Serial.print('Y axis servo motor angle = ')
Serial.print(Y_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
}
//---------------Program Developed by R.Girish--------------//

Wenn Sie spezielle Fragen zu diesem Projekt haben, können Sie diese gerne im Kommentarbereich ausdrücken. Möglicherweise erhalten Sie eine schnelle Antwort.




Zurück: Schaltung des digitalen Kapazitätsmessers mit Arduino Weiter: Verwenden des digitalen Potentiometers MCP41xx mit Arduino