Servomoottorin hallinta ohjaussauvalla

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä opimme ohjaamaan servomoottoreita ohjaussauvalla ja Arduinolla. Näemme yleiskuvan ohjaussauvasta, sen nastoista, rakenteesta ja toiminnasta. Otamme hyödyllistä tietoa ilotikusta, joka on perusta servomoottoreiden ohjaamiseen.

Johdanto

Tämän artikkelin motto ei ole vain ohjata servomoottoreita mutta oppia käyttämään a ohjaussauva ohjausta varten monia muita oheislaitteita.



Katsotaanpa nyt ohjainta.

Ohjaussauva on syöttölaite, joka koostuu vivusta, joka voi liikkua useaan suuntaan X- ja Y-akseleilla. Vivun liikettä käytetään moottorin tai minkä tahansa oheislaitteiden elektronisten laitteiden ohjaamiseen.



Ohjaussauvoja käytetään RC-leluista Boing-lentokoneisiin ja ne suorittavat samanlaisia ​​toimintoja. Lisäksi peleissä ja pienemmissä ilotikkuissa on painike Z-akselilla, joka voidaan ohjelmoida tekemään monia hyödyllisiä toimintoja.

Kuva ohjaussauvasta:

Kuva ohjaussauvasta:

Ohjaussauvat ovat yleensä elektronisia laitteita, joten meidän on käytettävä virtaa. Vivun liike tuottaa jännite-eron lähtöliittimissä. Jännitetasoja käsittelee mikro-ohjain ohjaamaan lähtölaitetta, kuten moottoria.

Kuvassa oleva joystick on samanlainen, joka löytyy PlayStation- ja Xbox-ohjaimista. Sinun ei tarvitse rikkoa näitä ohjaimia pelastaaksesi yhden. Nämä moduulit ovat helposti saatavilla paikallisissa sähköisissä kaupoissa ja verkkokaupoissa.

Katsotaan nyt tämän ohjaussauvan rakennetta.

Siinä on kaksi 10 Kilo ohmia potentiometri sijoitettu X- ja Y-akseleille jousilla siten, että se palaa alkuperäiseen asentoonsa, kun käyttäjä vapauttaa voiman vivusta. Siinä on push-ON-painike Z-akselilla.

Siinä on 5 nastaa, 5 voltin Vcc, GND, muuttuja X, muuttuja Y ja SW (Z-akselikytkin). Kun käytämme jännitettä ja jätimme ohjaussauvan alkuperäiseen vipuasentoonsa. X- ja Y-nastat tuottavat puolet käytetystä jännitteestä.

Kun liikutamme vipua, jännite vaihtelee X- ja Y-ulostulotapeissa. Liitetään nyt käytännössä ohjaussauva Arduinoon.

Kaaviokuva:

Arduino-servomoottorin ohjaus ohjaussauvalla

Nastaliitännän yksityiskohdat on annettu piirin vieressä. Liitä valmis laitteiston asennus ja lataa koodi.

Ohjelmoida:

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

Avaa sarjamonitori, josta näet jännitetasot X- ja Y-akselien nastoissa ja Z-akselin tilan, ts. Painike alla olevan kuvan mukaisesti.

Näitä X-, Y- ja Z-akseliarvoja käytetään tulkitsemaan vivun asento. Kuten näette, arvot ovat välillä 0-1023.

Tämä johtuu siitä, että Arduino on rakentanut ADC-muuntimen, joka muuntaa jännitteen 0V - 5V arvoksi 0-1023.

Sarjamonitorista voit todistaa, että kun vipu jätetään koskematta, vipu pysyy sekä X- että Y-akselin keskiasennossa ja näyttää puolet arvosta 1023.

Voit myös nähdä, että se ei ole puolet 1023: sta, koska näiden ohjaussauvojen valmistus ei ole koskaan ollut täydellistä.

Tähän mennessä olisit saanut jonkin verran teknistä tietoa ohjaussauvoista.

Katsotaan nyt, kuinka ohjata kahta servomoottoria yhdellä ohjaussauvalla.

Piirikaavio:

Kahta servomoottoria ohjataan yhdellä ohjaussauvalla, kun liikutat ohjaussauvaa X-akselia pitkin, tappi # 7 kytketty servo liikkuu myötäpäivään ja vastapäivään vivun asennosta riippuen.

Voit myös pitää servotoimilaitetta asennossa, jos pidät ohjaussauvan tasoa tietyssä asennossa.

Samanlainen servomoottorille, joka on kytketty tapiin # 6, voit siirtää vipua Y-akselia pitkin.

Kun painat vipua Z-akselia pitkin, molemmat moottorit suorittavat 180 asteen pyyhkäisyn.

Voit joko liittää arduinon 9v paristo tai tietokoneeseen. Jos liität Arduinon tietokoneeseen, voit avata sarjamoduulin ja nähdä servotoimilaitteiden kulman ja jännitetasot.

Servomoottorin ohjauksen ohjelma:

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

Jos sinulla on erityisiä kysymyksiä tästä projektista, ilmaise mielipiteesi kommenttiosassa, saatat saada nopean vastauksen.




Pari: Digitaalinen kapasitanssimittaripiiri käyttämällä Arduinoa Seuraava: Digitaalisen potentiometrin MCP41xx käyttäminen Arduinon kanssa