Cara Mengawal Motor Servo dengan Arduino

Cara Mengawal Motor Servo Dengan Arduino



Motor Servo ialah sejenis peranti elektrik yang boleh menukar atau memutarkan kedudukan objek dengan ketepatan yang tinggi. Pada permulaannya, mereka digunakan untuk mengawal sayap pesawat RC beberapa saat kemudian mereka menuju ke robotik, robot humanoid dan banyak projek automasi. Tidak seperti motor stepper pergerakannya terhad antara 0o hingga 180o.

Biasanya, motor servo mempunyai lengan yang boleh dikawal menggunakan Arduino. Motor servo terdiri daripada sistem kawalan yang menyediakan maklum balas tentang kedudukan semasa aci motor maklum balas ini membolehkan untuk bergerak pada ketepatan yang tinggi.

Pinout Motor Servo

Biasanya, kebanyakan motor servo mempunyai tiga pin:







  • Pin Vcc (Biasanya Merah 5V)
  • Pin GND (Biasanya Hitam 0V)
  • Pin Isyarat Input (Terima isyarat PWM daripada Arduino)



Kerja Motor Servo

Kita boleh mengawal motor servo dengan menyambungkan pin Vcc ke 5V dan pin GND ke 0V. Pada terminal warna kuning, kami menyediakan a PWM isyarat yang mengawal sudut putaran motor servo. Lebar isyarat PWM memberi kita sudut di mana motor akan memutar lengannya.



Jika kita melihat ke dalam Lembaran Data motor servo, kita mendapat parameter berikut:





  • Tempoh masa isyarat PWM
  • Lebar minimum untuk PWM
  • Lebar maksimum untuk PWM

Semua parameter ini dipratakrifkan dalam perpustakaan Arduino Servo.

Servo Motors dengan Arduino

Motor servo sangat mudah dikawal dengan Arduino, terima kasih kepada Perpustakaan Servo yang membantu kami menyesuaikan kod kami mengikut keperluan dan membolehkan kami memutar lengan servo pada sudut yang kami kehendaki.



Ketiga-tiga Parameter yang dinyatakan di atas ditetapkan dalam perpustakaan Servo. Dengan menggunakan parameter ini, kita boleh mengawal sudut motor servo dengan cara berikut:

  • Jika lebar isyarat PWM = WIDTH_MAX, servo akan berputar kepada 180o
  • Jika lebar isyarat PWM = WIDTH_MIIN, servo akan berputar kepada 0o
  • Jika lebar isyarat PWM terletak di antara WIDTH_MAX dan WIDTH_MIN , motor servo akan berputar di antara 0o dan 180o

Kami boleh menjana isyarat PWM yang dikehendaki pada beberapa pin Arduino. Isyarat PWM akan diberikan pada pin isyarat input motor servo. Menyambungkan baki dua pin servo kepada 5v dan GND Arduino.

Cara Kawal Motor Servo menggunakan Arduino

Di sini saya akan menerangkan bagaimana kita boleh menyambung dan memprogramkan motor servo kita menggunakan Arduino. Apa yang anda perlukan ialah:

  • Arduino UNO
  • Kabel USB B
  • Motor servo
  • Wayar pelompat

Bagaimana untuk memprogramkan Servo dengan Arduino

Berikut adalah beberapa langkah mudah:

Langkah 1: Sertakan perpustakaan servo yang dipratentukan:

# termasuk < Servo.h >

Langkah 2: Buat Objek Servo:

Servo myservo;

Petua: Sekiranya anda mengawal lebih daripada satu motor servo, anda perlu mencipta lebih banyak objek servo:

Servo myservo1;
Servo myservo2;

Langkah 3: Tetapkan pin kawalan (9) pada Arduino Uno yang menghantar isyarat PWM ke port isyarat Input servo:

myservo.attach ( 9 ) ;

Langkah 4: Putar sudut motor servo kepada nilai yang dikehendaki contohnya 90o:

myservo.tulis ( pos ) ;

Kod Arduino

Buka program contoh motor servo daripada Fail>Contoh>Servo>Sapu , tetingkap baharu akan dibuka menunjukkan kepada kami lakaran servo kami:

#include

Servo myservo; // objek servo dicipta untuk mengawal motor servo
int pos = 0 ; // untuk menyimpan kedudukan servo pembolehubah baru dicipta
persediaan kosong ( ) {
myservo.attach ( 9 ) ; // kehendak ini ditetapkan Pin Arduino 9 untuk Keluaran PWM
}
gelung kosong ( ) {
untuk ( pos = 0 ; pos = 0 ; pos -= 1 ) { // pergi dari 180 kepada 0 darjah
myservo.tulis ( pos ) ; // beritahu servo untuk pergi ke kedudukan 'pos'
kelewatan ( 5 ) ; // menunggu untuk 5 ms supaya servo boleh mencapai kedudukan
}
}

Setelah program disusun dan dimuat naik, motor servo akan mula berputar perlahan dari kedudukan permulaan 0 darjah hingga 180 darjah, satu darjah pada satu masa sama seperti langkah. Apabila motor telah melengkapkan putaran 180 darjah, ia akan memulakan putarannya dalam arah bertentangan ke arah titik permulaannya iaitu, 0 darjah.

Skema

Cara Mengawal Motor Servo menggunakan Potentiometer

Kami juga boleh mengawal kedudukan motor servo dengan tangan. Untuk melakukan ini kita memerlukan a Potensiometer . Potensiometer mempunyai tiga pin. Sambungkan dua pin luar ke 5V Vcc dan GND Arduino dan satu tengah ke pin A0 pada papan Arduino.

Cara Memprogram Servo dengan Potensiometer

Kebanyakan lakaran untuk potensiometer adalah sama seperti contoh sebelumnya. Satu-satunya perbezaan ialah Pembolehubah baharu val dan subpin ditakrifkan sebelum bahagian persediaan dan gelung kod.

int potpin = A0;
int val;

Dalam bahagian gelung pin analog A0 digunakan untuk membaca nilai untuk Potentiometer dengan fungsi analogRead() . Papan Arduino mengandungi 10-bit ADC (Analog to Digital Converter) memberikan kita nilai antara 0 dan 1023 bergantung pada potensiometer kedudukan:

val = analogBaca ( subpin ) ;

Akhir sekali, kami telah menggunakan peta() berfungsi untuk memetakan semula nombor dari 0 hingga 1023 mengikut sudut Servo seperti yang kita tahu motor Servo hanya boleh berputar antara 00 dan 1800.

val = peta ( val, 0 , 1023 , 0 , 180 ) ;

Kod Arduino

Lakaran tombol terbuka tersedia dalam Arduino IDE, pergi ke Fail>Contoh>Servo>Tombol . Tetingkap baharu akan dibuka yang menunjukkan kepada kami lakaran tombol kami untuk servo:

#include
Servo myservo; // Mencipta nama objek servo myservo
int potpin = A0; // mentakrifkan pin analog untuk potensiometer
int val; // pembolehubah yang kehendak membaca nilai pin analog untuk potensiometer

persediaan kosong ( ) {
myservo.attach ( 9 ) ; // pin yang ditentukan 9 untuk Isyarat input PWM servo pada Arduino
}
gelung kosong ( ) {
val = analogBaca ( subpin ) ; // membaca nilai dari potensiometer ( nilai diantara 0 dan 1023 )
val = peta ( val, 0 , 1023 , 0 , 180 ) ; // skala nilai untuk digunakan dengan servo ( nilai diantara 0 dan 180 )
myservo.tulis ( val ) ; // menetapkan kedudukan servo dengan nilai berskala
kelewatan ( lima belas ) ; // menunggu untuk servo untuk sampai ke kedudukan
}

Kod di atas akan membantu kita mengawal aci motor servo menggunakan potensiometer, aci akan berputar antara 0 dan 180 darjah. Kita juga boleh mengekalkan kelajuan bersama-sama dengan arah servo menggunakannya.

Rajah Litar

Berapakah bilangan Servo Motor yang boleh saya Sambungkan dengan Arduino?

Bilangan maksimum motor servo yang boleh dikendalikan oleh Arduino UNO adalah sehingga 12 dengan perpustakaan Arduino untuk servo, dan maksimum 48 servos boleh disambungkan dengan papan seperti Mega.

Petua: Kita boleh terus menjalankan servo menggunakan arus Arduino tetapi ingat jika motor servos menarik lebih daripada 500mA maka papan Arduino anda boleh menetapkan semula secara automatik dan kehilangan kuasa. Adalah disyorkan untuk sentiasa menggunakan bekalan kuasa khusus untuk motor servo.

Kesimpulan

Dalam tutorial ini, kami telah membincangkan mekanisme kawalan motor servo dengan Arduino. Kami merangkumi asas mengawal kedudukan dan kelajuan servo menggunakan potensiometer. Kini anda telah mendapat idea tentang servo dan kemungkinan robotik anda, projek RC dan automasi menggunakan servo tidak berkesudahan.