Cara Mengawal Motor Servo Menggunakan Joystick

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan belajar bagaimana mengawal motor servo menggunakan joystick dan Arduino. Kami akan melihat gambaran keseluruhan mengenai kayu bedik, pinnya, pembinaan dan pengerjaannya. Kami akan mengambil data berguna dari tongkat kegembiraan yang akan menjadi asas untuk mengawal motor servo.

Pengenalan

Moto artikel ini bukan hanya untuk mengawal motor servo tetapi, untuk belajar menggunakan a kayu bedik untuk mengawal banyak peranti periferal lain.



Sekarang mari kita lihat kayu bedik.

Joystick adalah alat input yang terdiri dari tuas, yang dapat bergerak dalam beberapa arah pada paksi X dan Y. Pergerakan tuas digunakan untuk mengendalikan motor atau alat elektronik periferal.



Joysticks digunakan dari mainan RC hingga kapal terbang Boing dan melakukan fungsi yang serupa. Selain itu permainan dan tongkat kegembiraan yang lebih kecil mempunyai butang tekan pada paksi Z yang boleh diprogramkan untuk melakukan banyak tindakan berguna.

Ilustrasi Joystick:

Ilustrasi Joystick:

Joysticks adalah alat elektronik secara umum jadi, kita perlu menggunakan kuasa. Pergerakan tuas menghasilkan perbezaan voltan pada pin output. Tahap voltan diproses oleh mikrokontroler untuk mengawal peranti output seperti motor.

Joystick yang digambarkan serupa dengan yang boleh didapati di pengawal PlayStation dan Xbox. Anda tidak perlu mematahkan pengawal ini untuk menyelamatkannya. Modul ini boleh didapati di kedai elektronik tempatan dan laman web E-commerce.

Sekarang mari kita lihat pembinaan kayu bedik ini.

Ia mempunyai dua 10 Kilo ohm potensiometer diposisikan pada paksi X dan Y dengan mata air sehingga, ia kembali ke kedudukan asalnya apabila pengguna melepaskan daya dari tuas. Ia mempunyai butang tekan ke ON pada paksi Z.

Ia mempunyai 5 pin, V volt 5 volt, GND, pemboleh ubah X, pemboleh ubah Y, dan SW (suis paksi Z). Apabila kita menggunakan voltan dan membiarkan joystick pada kedudukan tuas asalnya. Pin X dan Y akan menghasilkan separuh daripada voltan terpakai.

Semasa kita menggerakkan tuas voltan berbeza dalam pin output X dan Y. Sekarang mari kita praktikkan kayu bedik untuk Arduino.

Gambarajah skematik:

Arduino Servo Motor Control Menggunakan Joystick

Perincian sambungan pin diberikan di sebelah litar. Sambungkan persediaan perkakasan yang telah selesai dan muat naik kodnya.

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

Buka monitor Serial anda dapat melihat tahap voltan pada pin paksi X dan Y dan status paksi Z iaitu butang tekan seperti yang digambarkan di bawah.

Nilai paksi X, Y, Z ini digunakan untuk menafsirkan kedudukan tuas. Seperti yang anda lihat, nilainya adalah dari 0 hingga 1023.

Ini kerana Arduino mempunyai penukar ADC yang menukar nilai voltan 0V - 5V hingga 0 hingga 1023.

Anda dapat menyaksikan dari monitor bersiri bahawa apabila tuas dibiarkan tidak tersentuh tuas berada di kedudukan tengah kedua paksi X dan Y dan menunjukkan separuh nilai 1023.

Anda juga dapat melihat bahawa ini bukan separuh daripada 1023 kerana pembuatan tongkat ini tidak pernah sempurna.

Pada masa ini, anda akan mendapat sedikit pengetahuan teknikal mengenai kayu bedik.

Sekarang mari kita lihat bagaimana mengawal dua motor servo menggunakan satu kayu bedik.

Rajah Litar:

Kedua-dua motor servo dikendalikan oleh satu kayu bedik semasa anda menggerakkan kayu bedik di sepanjang paksi X servo yang disambungkan pada pin # 7 bergerak mengikut arah jam dan arah jam bergantung pada kedudukan tuas.

Anda juga dapat menahan penggerak servo pada kedudukan, jika anda memegang tahap joystick pada kedudukan tertentu.

Sama dengan motor servo yang disambungkan pada pin # 6, anda boleh menggerakkan tuas di sepanjang paksi Y.

Apabila anda menekan tuas di sepanjang paksi Z, kedua motor akan melakukan sapuan 180 darjah.

Anda boleh menyambungkan arduino ke Bateri 9v atau ke komputer. Sekiranya anda menyambungkan Arduino ke komputer, anda boleh membuka monitor bersiri dan melihat sudut penggerak servo dan tahap voltan.

Program untuk kawalan motor servo:

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

Sekiranya anda mempunyai pertanyaan khusus mengenai projek ini, jangan ragu untuk menyatakan di bahagian komen, anda mungkin akan mendapat balasan cepat.




Sebelumnya: Litar Meter Kapasitansi Digital Menggunakan Arduino Seterusnya: Menggunakan Potensiometer Digital MCP41xx Bersama Arduino