Kaip valdyti servovariklį naudojant vairasvirtę

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sužinosime, kaip valdyti servovariklius naudojant vairasvirtę ir „Arduino“. Pamatysime vairasvirtės, jos kaiščių, konstrukcijos ir veikimo apžvalgą. Iš džiaugsmo lazdelės, kuri bus pagrindas valdyti servo variklius, išgausime naudingų duomenų.

Įvadas

Šio straipsnio šūkis yra ne tik valdyti servo variklius bet, norėdami sužinoti, kaip naudoti a vairasvirtė valdymui daug kitų periferinių įrenginių.



Dabar pažvelkime į vairasvirtę.

Vairasvirtė yra įvesties įtaisas, kurį sudaro svirtis, kuri gali judėti keliomis kryptimis X ir Y ašimis. Svirties judėjimas naudojamas varikliui ar bet kokiems periferiniams įrenginiams valdyti.



Vairasvirtės naudojamos nuo RC žaislų iki „Boing“ lėktuvų ir atlieka panašias funkcijas. Be to, žaidimų ir mažesnių džiaugsmo lazdelių Z ašyje yra mygtukas, kurį galima užprogramuoti atlikti daug naudingų veiksmų.

Vairasvirtės iliustracija:

Vairasvirtės iliustracija:

Vairasvirtės apskritai yra elektroniniai prietaisai, todėl turime naudoti galią. Svirties judėjimas sukuria įtampos skirtumą išėjimo kaiščiuose. Įtampos lygius apdoroja mikrovaldiklis, skirtas valdyti išvesties įtaisą, pvz., Variklį.

Panašus vairasvirtė yra panaši, kurią galite rasti „PlayStation“ ir „Xbox“ valdikliuose. Norėdami išgelbėti, jums nereikia pertraukti šių valdiklių. Šiuos modulius galima lengvai įsigyti vietinėse elektroninėse parduotuvėse ir elektroninės prekybos svetainėse.

Dabar pažiūrėkime apie šios vairasvirtės konstrukciją.

Jis turi du 10 Kilo omų potenciometras X ir Y ašyse su spyruoklėmis taip, kad vartotojui paleidus jėgą iš svirties, ji grįžtų į pradinę padėtį. Z ašyje yra mygtukas „ON“.

Jame yra 5 kaiščiai, 5 voltų Vcc, GND, kintamasis X, kintamasis Y ir SW (Z ašies jungiklis). Kai įtrauksime įtampą ir paliksime vairasvirtę ant pradinės svirties padėties. X ir Y kaiščiai pagamins pusę naudojamos įtampos.

Kai judiname svirtį, įtampa kinta X ir Y išvesties kaiščiuose. Dabar praktiškai susiekime vairasvirtę su „Arduino“.

Schema:

„Arduino“ servovariklio valdymas naudojant vairasvirtę

Kaiščių sujungimo detalės pateikiamos šalia grandinės. Prijunkite baigtą aparatūros sąranką ir įkelkite kodą.

Programa:

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

Atidarykite nuoseklųjį monitorių, kuriame galite pamatyti įtampos lygį X ir Y ašių kaiščiuose ir Z ašies būseną, t. Y. Paspausti mygtuką, kaip parodyta žemiau.

Šios X, Y, Z ašių vertės yra naudojamos svirties padėčiai interpretuoti. Kaip matote, vertės yra nuo 0 iki 1023.

Taip yra todėl, kad „Arduino“ sukūrė ADC keitiklį, kuris 0–5 V įtampą paverčia 0–1023 reikšmėmis.

Iš nuoseklaus monitoriaus galite įsitikinti, kad kai svirtis nepaliesta, svirtis lieka vidurinėje X ir Y ašių padėtyje ir rodo pusę vertės 1023.

Taip pat matote, kad ne tiksli pusė iš 1023 yra todėl, kad šių vairasvirtių gamyba niekada nebuvo tobula.

Dabar jau turėtumėte šiek tiek techninių žinių apie vairasvirtes.

Dabar pažiūrėkime, kaip valdyti du servovariklius naudojant vieną vairasvirtę.

Grandinės schema:

Du servo variklius valdo viena vairasvirtė, kai vairasvirtę judinate išilgai X ašies, kaištis Nr. 7 prijungtas servo valdiklis juda pagal laikrodžio rodyklę ir prieš laikrodžio rodyklę, priklausomai nuo svirties padėties.

Taip pat galite laikyti servo pavarą tam tikroje padėtyje, jei vairasvirtę laikote tam tikroje padėtyje.

Panašiai kaip ir servo varikliui, prijungtam prie kaiščio Nr. 6, svirtį galite perkelti išilgai Y ašies.

Kai paspausite svirtį išilgai Z ašies, du varikliai atliks 180 laipsnių braukimą.

Arduino galite prijungti prie 9v baterija arba į kompiuterį. Prijungę „Arduino“ prie kompiuterio, galite atidaryti nuoseklųjį monitorių ir pamatyti servo pavarų kampą bei įtampos lygius.

Servovariklio valdymo programa:

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

Jei turite kokių nors konkrečių klausimų apie šį projektą, nedvejodami išsakykite komentarų skyriuje, galite gauti greitą atsakymą.




Pora: Skaitmeninė talpos matuoklio grandinė naudojant „Arduino“ Kitas: Skaitmeninio potenciometro MCP41xx naudojimas su „Arduino“