Cara Mengontrol Motor Servo Menggunakan Joystick

Coba Instrumen Kami Untuk Menghilangkan Masalah





Pada postingan kali ini kita akan belajar cara mengontrol motor servo menggunakan joystick dan Arduino. Kita akan melihat gambaran umum tentang joystick, pinnya, konstruksi dan cara kerjanya. Kami akan mengekstraksi data yang berguna dari tongkat kendali yang akan menjadi dasar untuk mengendalikan motor servo.

pengantar

Moto artikel ini bukan hanya untuk mengontrol motor servo tetapi, untuk mempelajari cara menggunakan file joystick untuk mengontrol banyak perangkat periferal lainnya.



Sekarang mari kita lihat joystick.

Joystick adalah perangkat input yang terdiri dari sebuah tuas yang dapat bergerak ke beberapa arah dalam sumbu X dan Y. Gerakan tuas digunakan untuk mengendalikan motor atau perangkat elektronik periferal apa pun.



Joystick digunakan dari mainan RC hingga pesawat Boing dan melakukan fungsi serupa. Selain itu, game dan joystick yang lebih kecil memiliki tombol tekan di sumbu Z yang dapat diprogram untuk melakukan banyak tindakan berguna.

Ilustrasi Joystick:

Ilustrasi Joystick:

Joystick adalah perangkat elektronik pada umumnya jadi, kita perlu menggunakan daya. Pergerakan tuas menghasilkan perbedaan tegangan pada pin keluaran. Tingkat tegangan diproses oleh mikrokontroler untuk mengontrol perangkat keluaran seperti motor.

Joystick bergambar serupa, yang dapat ditemukan di pengontrol PlayStation dan Xbox. Anda tidak perlu merusak pengontrol ini untuk menyelamatkannya. Modul ini sudah tersedia di toko elektronik lokal dan situs E-commerce.

Sekarang mari kita lihat konstruksi joystick ini.

Ini memiliki dua 10 Kilo ohm potensiometer diposisikan di sumbu X dan Y dengan pegas sehingga, ia kembali ke posisi semula saat pengguna melepaskan gaya dari tuas. Ini memiliki tombol tekan ke ON pada sumbu Z.

Ini memiliki 5 pin, 5 volt Vcc, GND, variabel X, variabel Y, dan SW (sakelar sumbu Z). Saat kami menerapkan voltase dan membiarkan joystick pada posisi tuas aslinya. Pin X dan Y akan menghasilkan setengah dari tegangan yang diberikan.

Saat kita menggerakkan tuas tegangan bervariasi pada pin keluaran X dan Y. Sekarang mari kita secara praktis menghubungkan joystick ke Arduino.

Diagram skematik:

Kontrol Motor Servo Arduino Menggunakan Joystick

Detail koneksi pin diberikan di samping sirkuit. Hubungkan pengaturan perangkat keras yang sudah selesai dan unggah kode.

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 level tegangan pada pin sumbu X dan Y dan status sumbu Z yaitu tombol tekan seperti yang digambarkan di bawah ini.

Nilai sumbu X, Y, Z ini digunakan untuk menginterpretasikan posisi tuas. Seperti yang Anda lihat, nilainya dari 0 hingga 1023.

Itu karena Arduino telah membangun konverter ADC yang mengubah nilai tegangan 0V - 5V menjadi 0 hingga 1023.

Anda dapat menyaksikan dari monitor serial bahwa ketika tuas dibiarkan tidak tersentuh tuas tetap berada di posisi tengah sumbu X dan Y dan menunjukkan setengah nilai 1023.

Anda juga dapat melihat bahwa ini bukanlah separuh persis dari 1023 itu karena pembuatan joystick ini tidak pernah sempurna.

Sekarang, Anda pasti sudah mendapatkan pengetahuan teknis tentang joystick.

Sekarang mari kita lihat cara mengontrol dua motor servo menggunakan satu joystick.

Diagram Sirkuit:

Dua motor servo dikendalikan oleh satu joystick ketika Anda menggerakkan joystick di sepanjang sumbu X servo yang terhubung pada pin # 7 bergerak searah jarum jam dan berlawanan arah jam tergantung pada posisi tuas.

Anda juga dapat menahan aktuator servo pada suatu posisi, jika Anda menahan level joystick pada posisi tertentu.

Mirip dengan motor servo yang dihubungkan pada pin # 6, Anda dapat menggerakkan tuas sepanjang sumbu Y.

Saat Anda menekan tuas di sepanjang sumbu Z, kedua motor akan melakukan sapuan 180 derajat.

Anda juga dapat menghubungkan arduino ke Baterai 9v atau ke komputer. Jika Anda menghubungkan Arduino ke komputer Anda dapat membuka monitor serial dan melihat sudut aktuator servo dan level tegangan.

Program untuk kontrol 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--------------//

Jika Anda memiliki pertanyaan khusus tentang proyek ini, silakan ungkapkan di bagian komentar, Anda dapat menerima balasan cepat.




Sepasang: Rangkaian Pengukur Kapasitansi Digital Menggunakan Arduino Berikutnya: Menggunakan Potensiometer Digital MCP41xx Dengan Arduino