Kako upravljati servo motor z uporabo igralne palice

Preizkusite Naš Instrument Za Odpravo Težav





V tem prispevku bomo izvedeli, kako upravljati servo motorje s pomočjo krmilne palice in Arduina. Ogledali si bomo pregled krmilne palice, njenih zatičev, njene konstrukcije in delovanja. Iz igralne palice bomo izvlekli koristne podatke, ki bodo osnova za upravljanje servo motorjev.

Uvod

Moto tega članka ni samo, da krmiljenje servo motorjev ampak, da se naučite uporabljati a krmilna palica za nadzor veliko drugih zunanjih naprav.



Zdaj pa si oglejmo krmilno palčko.

Krmilna palica je vhodna naprava, sestavljena iz vzvoda, ki se lahko premika v več smereh v osih X in Y. Premik ročice se uporablja za krmiljenje motorja ali katere koli zunanje naprave.



Joysticki se uporabljajo od RC igrač do letal Boing in opravljajo podobne funkcije. Poleg tega imajo igralne palice in manjše igralne palice gumb na osi Z, ki ga lahko programirate za izvajanje številnih koristnih dejanj.

Ilustracija igralne palice:

Ilustracija igralne palice:

Joysticks so na splošno elektronske naprave, zato moramo uporabiti moč. Premik ročice povzroči napetostno razliko na izhodnih zatičih. Napetostne ravni obdela mikrokrmilnik za nadzor izhodne naprave, kot je motor.

Ilustrirana igralna palica je podobna tisti, ki jo najdemo v krmilnikih PlayStation in Xbox. Teh krmilnikov vam ni treba razbiti, da bi jih rešili. Ti moduli so na voljo v lokalnih elektronskih trgovinah in na spletnih mestih e-trgovine.

Zdaj pa poglejmo konstrukcijo te igralne palice.

Ima dva 10 kilo ohma potenciometer postavljen v osi X in Y z vzmetmi, tako da se vrne v prvotni položaj, ko uporabnik sprosti silo iz ročice. Na osi Z ima gumb za vklop.

Ima 5 nožic, 5 volt Vcc, GND, spremenljivko X, spremenljivko Y in SW (stikalo osi Z). Ko uporabimo napetost in pustimo krmilno palčko v prvotnem položaju ročice. Zatiča X in Y tvorita polovico uporabljene napetosti.

Ko premikamo ročico, se napetost spreminja v izhodnih zatičih X in Y. Zdaj pa praktično povežite krmilno palčko z Arduinom.

Shematski diagram:

Arduino servo motor krmiljenje s pomočjo igralne palice

Podrobnosti o priključku na pin so podane poleg vezja. Povežite dokončano namestitev strojne opreme in naložite kodo.

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

Odprite serijski monitor, na katerem lahko vidite nivo napetosti na zatičih osi X in Y ter stanje osi Z, tj. Potisni gumb, kot je prikazano spodaj.

Te vrednosti osi X, Y, Z se uporabljajo za razlago položaja ročice. Kot lahko vidite, so vrednosti od 0 do 1023.

To je zato, ker ima Arduino vgrajen pretvornik ADC, ki napetost 0V - 5V pretvori v vrednosti 0 do 1023.

Na serijskem monitorju lahko vidite, da ko vzvod ostane nedotaknjen, ostane vzvod v srednjem položaju osi X in Y in prikazuje polovično vrednost 1023.

Prav tako lahko vidite, da ni natančno polovica leta 1023, ker izdelava teh igralnih palic ni bila nikoli popolna.

Do zdaj bi že dobili nekaj tehničnega znanja o igralnih palicah.

Zdaj pa poglejmo, kako upravljati dva servo motorja z eno krmilno palčko.

Shema vezja:

Dva servo motorja nadzoruje ena krmilna palica, ko krmilno palico premikate vzdolž osi X, servo priključen na zatiču št. 7 se premika v smeri urnega kazalca in v nasprotni smeri urnega kazalca, odvisno od položaja ročice.

Servo aktuator lahko držite tudi v položaju, če držite krmilno palčko v določenem položaju.

Podobno kot pri servo motorju, priključenem na zatiču št. 6, lahko ročico premikate vzdolž osi Y.

Ko pritisnete ročico vzdolž osi Z, bosta motorja izvedla 180 stopinjski pomik.

Arduino lahko priključite na 9v baterija ali v računalnik. Če Arduino povežete z računalnikom, lahko odprete serijski monitor in si ogledate kot servo pogonov in nivo napetosti.

Program za upravljanje servo motorja:

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

Če imate kakršno koli posebno vprašanje v zvezi s tem projektom, vas prosimo, da izrazite v oddelku za komentarje, lahko prejmete hiter odgovor.




Prejšnja: Vezje digitalnega merilnika kapacitivnosti z uporabo Arduina Naprej: Uporaba digitalnega potenciometra MCP41xx z Arduino