A szervomotor vezérlése a joystick használatával

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben megtudhatjuk, hogyan lehet vezérelni a szervomotorokat joystick és Arduino segítségével. Megtekintjük a joystickot, annak csapjait, felépítését és működését. Hasznos adatokat fogunk kinyerni az örömbotból, amely alapul szolgál a szervomotorok vezérléséhez.

Bevezetés

A cikk mottója nem csak az vezérelje a szervomotorokat hanem, hogy megtanulják használni a joystick a vezérléshez sok más perifériás eszköz.



Most vessünk egy pillantást a joystickra.

A joystick egy beviteli eszköz, amely egy karból áll, amely több irányban is mozoghat az X és Y tengelyekben. A kar mozgását egy motor vagy bármilyen perifériás elektronikai eszköz vezérléséhez használják.



A joystickokat az RC játékoktól a Boing repülőgépekig használják, és hasonló funkciókat látnak el. Ezenkívül a játéknak és a kisebb örömrudaknak van egy nyomógombja a Z tengelyben, amely sok hasznos művelet végrehajtására programozható.

A botkormány illusztrációja:

A botkormány illusztrációja:

A joystickek általában elektronikus eszközök, ezért energiát kell használnunk. A kar mozgatása feszültségkülönbséget eredményez a kimeneti csapoknál. A feszültségszinteket egy mikrovezérlő dolgozza fel a kimeneti eszköz, például motor vezérlésére.

A bemutatott joystick hasonló, amely megtalálható a PlayStation és az Xbox vezérlőkben. Nem kell feltörni ezeket a vezérlőket, hogy megmentsen egyet. Ezek a modulok könnyen elérhetők a helyi elektronikus üzletekben és az e-kereskedelmi webhelyeken.

Most nézzük meg ennek a joysticknak ​​a felépítését.

Két 10 Kilo ohm van benne potenciométer az X és Y tengelyekben rugókkal úgy helyezkednek el, hogy visszatérjen az eredeti helyzetébe, amikor a felhasználó elengedi a kart. Van egy nyomógomb az ON tengelyen.

5 csapos, 5 voltos Vcc, GND, X változó, Y változó és SW (Z tengelykapcsoló) van. Amikor feszültséget adunk, és a joystickot az eredeti kar helyzetében hagyjuk. Az X és Y csapok az alkalmazott feszültség felét produkálják.

Amikor mozgatjuk a kart, a feszültség változik az X és Y kimeneti csapokban. Most gyakorlatilag kapcsoljuk össze a joystickot az Arduino-val.

Sematikus ábrája:

Arduino szervomotor vezérlés joystick segítségével

A tűcsatlakozás részletei az áramkör mellett találhatók. Csatlakoztassa a befejezett hardverbeállítást, és töltse fel a kódot.

Program:

//---------------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--------------//

Nyissa meg a soros monitort, így láthatja az X és Y tengely csapjainak feszültségszintjét és a Z tengely állapotát, azaz nyomógombot az alábbiak szerint.

Ezeket az X, Y, Z tengelyértékeket használjuk a kar helyzetének értelmezésére. Amint láthatja, az értékek 0 és 1023 között vannak.

Ez azért van, mert az Arduino beépített ADC átalakítót, amely a 0V - 5V feszültséget 0-1023 értékre konvertálja.

A soros monitorról tanúskodhat arról, hogy amikor a kart érintetlenül hagyja, a kar mind az X, mind az Y tengely középső helyzetében marad, és az 1023 felét mutatja.

Láthatja azt is, hogy az 1023-nak nem a fele az oka, mert ezeknek a joystickoknak a gyártása soha nem volt tökéletes.

Mostanra szerzett volna néhány technikai tudást a joystickokról.

Most nézzük meg, hogyan lehet két szervomotort vezérelni egy joystick segítségével.

Kördiagramm:

A két szervomotort egy joystick vezérli, amikor a joystickot az X tengely mentén mozgatja, a # 7-es csapon összekapcsolt szervo a kar helyzetétől függően az óramutató járásával megegyezően és az óramutató járásával ellentétesen mozog.

A szervo működtetőjét egy helyzetben is tarthatja, ha a joystickot egy adott helyzetben tartja.

Hasonló a 6. számú csaphoz csatlakoztatott szervomotorhoz, a kart az Y tengely mentén mozgathatja.

Amikor megnyomja a kart a Z tengely mentén, a két motor 180 fokos söprést hajt végre.

Bármelyikhez csatlakoztathatja az arduinót 9v-os akkumulátor vagy számítógépre. Ha az Arduino-t számítógéphez csatlakoztatja, megnyithatja a soros monitort, és megtekintheti a szervo működtetőinek szögét és feszültségszintjét.

A szervomotor vezérlésének programja:

//---------------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--------------//

Ha bármilyen konkrét kérdése van a projekttel kapcsolatban, nyugodtan fejtse ki a megjegyzés rovatban, így gyors választ kaphat.




Előző: Digitális kapacitásmérő áramkör Arduino használatával Következő: Az MCP41xx digitális potenciométer használata Arduino-val