Arduino Servo Motors

Motor servo adalah alat yang hebat yang boleh beralih ke kedudukan tertentu.

Biasanya, mereka mempunyai lengan servo yang boleh bertukar menjadi 180 darjah. Menggunakan Arduino, kita boleh memberitahu servo untuk pergi ke kedudukan tertentu dan ia akan pergi ke sana. Semudah itu!

Motor servo mula-mula digunakan di dunia Kawalan Jauh (RC), biasanya untuk mengawal stereng kereta RC atau flaps pada pesawat RC. Dengan masa, mereka mendapati penggunaannya dalam robotics, automasi, dan tentu saja, dunia Arduino.

Di sini kita akan melihat bagaimana untuk menyambung motor servo dan kemudian bagaimana untuk mengubahnya ke kedudukan yang berbeza.

Motor pertama yang saya hubungkan dengan Arduino, tujuh tahun yang lalu, adalah motor Servo. Momen nostalgia, kembali bekerja!

Kami akan memerlukan perkara berikut:

  1. Papan Arduino disambungkan ke komputer melalui USB
  2. Sebuah motor servo
  3. Wayar melompat

Terdapat beberapa nama besar di dunia motor servo. Hitec dan Futaba adalah pengeluar servo RC utama. Tempat yang baik untuk membelinya ialah Servocity, Sparkfun, dan Hobbyking.

Ini boleh dibimbing dan banyak lagi boleh didapati di Buku Pembelajaran Arduino saya yang terdapat di sini. : D

Langkah 1: Cara Menghubungkan Mereka

Motor servo mempunyai semua yang dibina: motor, litar umpan balik, dan yang paling penting, pemandu motor. Ia hanya memerlukan satu talian kuasa, satu daripadanya, dan satu pin kawalan.

Berikut adalah langkah-langkah untuk menyambung motor servo ke Arduino:

  1. Motor servo mempunyai penyambung wanita dengan tiga pin. Yang paling gelap atau hitam adalah biasanya tanah. Sambungkan ini ke GND Arduino.
  2. Sambungkan kabel kuasa yang dalam semua piawai hendaklah merah ke 5V pada Arduino.
  3. Sambungkan garisan yang tinggal pada penyambung servo ke pin digital pada Arduino.

Semak imej untuk melihat servo yang disambungkan ke Arduino.

Langkah 2: Kod

Kod berikut akan menjadikan motor servo menjadi 0 darjah, tunggu 1 saat, kemudian putar ke 90, tunggu satu saat lagi, putar ke 180, kemudian kembali.

 // Sertakan perpustakaan Servo 
#include // Isikan servo pin int servoPin = 3; // Buat servo objek Servo Servo1; void setup () {// Kita perlu melampirkan servo ke nombor pin terpakai Servo1.attach (servoPin); } void loop () {// Buat servo pergi ke 0 derajat Servo1.write (0); kelewatan (1000); // Buat servo pergi ke 90 derajat Servo1.write (90); kelewatan (1000); // Buat servo pergi ke 180 derajat Servo1.write (180); kelewatan (1000); }
Jika motor servo disambungkan ke pin digital yang lain, cukup ubah nilai servoPin kepada nilai pin digital yang telah digunakan.

Lampiran

  • Servo_motor.ino Muat turun

Langkah 3: Bagaimana Ia berfungsi

Servos adalah alat pintar. Menggunakan hanya satu pin input, mereka menerima kedudukan dari Arduino dan mereka pergi ke sana. Secara dalaman, mereka mempunyai pemandu motor dan litar umpan balik yang memastikan lengan servo mencapai kedudukan yang dikehendaki. Tetapi apa jenis isyarat yang mereka terima pada pin input?

Ia adalah gelombang persegi yang serupa dengan PWM. Setiap kitaran dalam isyarat berlangsung selama 20 milisaat dan untuk kebanyakan masa, nilai LOW. Pada permulaan setiap kitaran, isyarat adalah TINGGI untuk masa antara 1 dan 2 milisaat. Pada 1 milisaat ia mewakili 0 darjah dan pada 2 milisaat ia mewakili 180 darjah. Di antara, ia mewakili nilai dari 0-180. Ini adalah kaedah yang sangat baik dan boleh dipercayai. Grafik menjadikannya lebih mudah difahami.

Ingat bahawa menggunakan perpustakaan Servo secara automatik melumpuhkan fungsi PWM pada PWM pin 9 dan 10 pada Arduino UNO dan papan serupa.

Pecahan kod

Kod ini hanya mengisytiharkan objek servo dan kemudian memulakan servo dengan menggunakan fungsi servo.attach () . Kita tidak boleh lupa memasukkan perpustakaan servo. Dalam gelung (), kami tetapkan servo kepada 0 darjah, tunggu, kemudian tetapkannya kepada 90, dan kemudian hingga 180 darjah.

Langkah 4: Lebih Banyak Mengenai Servos

Mengawal servos mudah, dan ini adalah beberapa lagi cara yang boleh kita gunakan:

Mengawal masa nadi tepat

Arduino mempunyai fungsi terbina dalam servo.write (darjah) yang memudahkan kawalan servos. Walau bagaimanapun, tidak semua servos menghormati masa yang sama untuk semua jawatan. Biasanya, 1 milidetik bermakna 0 darjah, 1.5 milisaat bermakna 90 darjah, dan, tentu saja, 2 milisaat bermaksud 180 darjah. Sesetengah servos mempunyai julat yang lebih kecil atau lebih besar.

Untuk kawalan yang lebih baik, kita boleh menggunakan fungsi servo.writeMicroseconds (us), yang mengambil bilangan mikrosecond yang tepat sebagai parameter. Ingat, 1 milisaat sama dengan 1, 000 microseconds.

Lebih servos

Untuk menggunakan lebih daripada satu servo, kita perlu mengisytiharkan pelbagai objek servo, melampirkan pin yang berbeza kepada masing-masing, dan alamat setiap servo secara individu. Pertama, kita perlu mengisytiharkan objek servo-sebanyak yang kita perlukan:

 // Buat objek servo Servo Servo1, Servo2, Servo3; 

Kemudian kita perlu melampirkan setiap objek ke satu motor servo. Ingat, setiap servo motor menggunakan pin individu:

 Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3); 

Pada akhirnya, kita hanya perlu menangani setiap objek servo secara individu:

 Servo1.write (0); // Set Servo 1 hingga 0 derajat Servo2.write (90); // Set Servo 2 hingga 90 derajat 

Sambungan-bijak, alasan dari servos pergi ke GND pada Arduino, kuasa servo hingga 5V atau VIN (bergantung kepada input kuasa), dan pada akhirnya, setiap talian isyarat harus disambungkan ke pin digital yang berbeza. Bertentangan dengan kepercayaan popular, servos tidak perlu dikawal oleh pin PWM-sebarang pin digital akan berfungsi.

Servos putaran berterusan

Terdapat jenis servos khas yang dilabelkan sebagai servos giliran yang berterusan . Semasa servo normal pergi ke kedudukan tertentu bergantung pada isyarat masukan, servo putaran berterusan sama ada berputar mengikut arah jam atau lawan arah jam pada kelajuan berkadar dengan isyarat. Sebagai contoh, fungsi Servo1.write (0) akan menjadikan servomotor berputar mengikut arah jam pada kelajuan penuh. Fungsi Servo1.write (90) akan menghentikan motor dan Servo1.write (180) akan menghidupkan motor mengikut arah jam pada kelajuan penuh.

Terdapat banyak kegunaan servos seperti; Walau bagaimanapun, mereka sangat perlahan. Jika anda sedang membina gelombang mikro dan memerlukan motor untuk menghidupkan makanan, inilah pilihan anda. Tetapi berhati-hatilah, ketuhar gelombang mikro berbahaya!

Langkah 5: Semak Lagi

Lebih banyak topik mengenai motor seperti brushless, pemandu transistor atau kawalan kelajuan motor boleh didapati di Buku Masakan Pembangunan Arduino saya yang terdapat di sini. : D

Artikel Berkaitan