- Apa itu Motor Servo?
- Memadankan Motor Servo dengan Pengawal Mikro:
- Memprogram Motor Servo dengan PICF877A PIC Microcontroller:
- Rajah Litar:
- Persediaan Simulasi dan Perkakasan:
Ini adalah tutorial ke-11 pembelajaran mikrokontroler PIC menggunakan MPLAB dan XC8. Dalam tutorial ini kita akan belajar Cara mengendalikan Servo Motor dengan PIC Microcontroller. Sekiranya anda sudah bekerja dengan motor Servo, anda boleh melangkau babak pertama tutorial ini tetapi jika anda baru menggunakan motor servo, teruskan membaca.
Hingga kini, kami telah membahas banyak tutorial asas seperti LED berkedip dengan PIC, Timer dalam PIC, interfacing LCD, interfacing 7-segmen, ADC using PIC dll. Sekiranya anda seorang pemula mutlak, sila lawati senarai lengkap tutorial PIC di sini dan mula belajar.
Dalam tutorial sebelumnya, kami belajar bagaimana menghasilkan isyarat PWM menggunakan PIC Microcontroller, isyarat dihasilkan berdasarkan nilai yang dibaca dari potensiometer. Sekiranya anda telah memahami semua program itu, Tahniah anda juga telah mengodkan motor Servo. YA, motor Servo bertindak balas terhadap isyarat PWM (yang kita buat menggunakan pemasa di sini) kita akan belajar mengapa dan bagaimana dalam tutorial ini. Kami akan mensimulasikan dan membina persediaan perkakasan untuk projek ini dan anda boleh mendapatkan Video terperinci di akhir Tutorial ini.
Apa itu Motor Servo?
Servo Motor adalah sejenis penggerak (kebanyakannya berbentuk bulat) yang membolehkan kawalan sudut. Terdapat banyak jenis motor Servo yang tersedia tetapi dalam tutorial ini mari kita menumpukan perhatian pada motor servo hobi yang ditunjukkan di bawah.
Servo hobi adalah popular kerana mereka adalah kaedah kawalan pergerakan yang murah. Mereka menyediakan penyelesaian luar ruangan untuk sebahagian besar keperluan hobi R / C dan robotik. Mereka juga menghilangkan keperluan untuk merancang sistem kawalan untuk setiap aplikasi.
Sebilangan besar motor servo hobi mempunyai malaikat putaran 0- 180 ° tetapi anda juga boleh mendapatkan motor servo 360 ° jika anda berminat. Tutorial ini menggunakan motor servo 0- 180 °. Terdapat dua jenis motor Servo berdasarkan gear, satu adalah Motor Gear Servo Plastik dan yang lain adalah Motor Servo Metal Gear. Gear logam digunakan di tempat-tempat di mana motor mengalami lebih banyak kehausan, tetapi ia hanya boleh didapati dengan harga yang tinggi.
Motor servo dinilai dalam kg / cm (kilogram per sentimeter) kebanyakan motor servo hobi dinilai pada 3kg / cm atau 6kg / cm atau 12kg / cm. Kg / cm ini memberitahu anda berapa berat motor servo anda dapat mengangkat pada jarak tertentu. Contohnya: Motor Servo 6kg / cm seharusnya dapat mengangkat 6kg jika beban digantung 1cm dari poros motor, semakin besar jarak semakin kecil daya dukung berat. Ketahui di sini Asas motor Servo.
Memadankan Motor Servo dengan Pengawal Mikro:
Hubungan antara motor servo dengan MCU sangat mudah. Servos mempunyai tiga wayar yang keluar daripadanya. Dari mana dua akan digunakan untuk Bekalan (positif dan negatif) dan satu akan digunakan untuk isyarat yang akan dihantar dari MCU. Dalam tutorial ini kita akan menggunakan MG995 Metal Gear Servo Motor yang paling biasa digunakan untuk kereta RC bot humanoid dll. Gambar MG995 ditunjukkan di bawah:
Pengekodan warna motor servo anda mungkin berbeza, jadi periksa lembaran data masing-masing.
Semua motor servo berfungsi secara langsung dengan rel bekalan + 5V anda tetapi kami harus berhati-hati dengan jumlah arus yang akan digunakan oleh motor, jika anda merancang untuk menggunakan lebih dari dua motor servo, perisai servo yang betul harus dirancang. Dalam tutorial ini kita hanya akan menggunakan satu motor servo untuk menunjukkan bagaimana memprogram MCU PIC kita untuk mengawal motor. Periksa pautan di bawah untuk menghubungkan Servo Motor dengan Mikrokontroler lain:
- Interface motor servo dengan mikrokontroler 8051
- Kawalan motor servo menggunakan Arduino
- Tutorial Motor Raspberry Pi Servo
- Servo Motor dengan AVR Microcontroller
Memprogram Motor Servo dengan PICF877A PIC Microcontroller:
Sebelum kita dapat memulakan pengaturcaraan untuk motor Servo kita harus tahu jenis isyarat apa yang akan dihantar untuk mengendalikan motor Servo. Kita harus memprogram MCU untuk menghantar isyarat PWM ke wayar isyarat motor Servo. Terdapat litar kawalan di dalam motor servo yang membaca kitaran tugas isyarat PWM dan meletakkan poros motor servo di tempat masing-masing seperti yang ditunjukkan dalam gambar di bawah
Setiap motor servo beroperasi pada frekuensi PWM yang berbeza (frekuensi paling biasa adalah 50HZ yang digunakan dalam tutorial ini) jadi dapatkan lembaran data motor anda untuk memeriksa tempoh PWM mana motor Servo anda berfungsi.
Perincian mengenai isyarat PWM untuk Tower pro MG995 kami ditunjukkan di bawah.
Dari ini kita dapat menyimpulkan bahawa motor kita berfungsi dengan Tempoh PWM 20ms (50Hz). Oleh itu, frekuensi isyarat PWM kami harus ditetapkan ke 50Hz. Kekerapan PWM yang telah kami tetapkan dalam tutorial sebelumnya adalah 5 KHz, menggunakan yang sama tidak akan membantu kami di sini.
Tetapi, kami mempunyai masalah di sini. The PIC16F877A tidak boleh menjana isyarat frekuensi rendah PWM menggunakan modul PKC. Menurut lembar data, nilai serendah mungkin yang dapat ditetapkan untuk frekuensi PWM adalah 1.2 KHz. Oleh itu, kita harus melepaskan idea menggunakan modul CCP dan mencari jalan untuk membuat isyarat PWM kita sendiri.
Oleh itu, dalam tutorial ini kita akan menggunakan modul pemasa untuk menghasilkan isyarat PWM dengan frekuensi 50Hz dan mengubah kitaran tugas mereka untuk mengawal malaikat motor servo. Sekiranya anda baru menggunakan pemasa atau ADC dengan PIC, silakan kembali ke tutorial ini, kerana saya akan melewatkan sebahagian besar perkara kerana kami telah membahasnya di sana.
Kami memulakan modul Pemasa kami dengan prescaler 32 dan menjadikannya limpahan untuk setiap 1us. Menurut lembaran data kami, PWM harus mempunyai jangka masa 20ms sahaja. Oleh itu, masa dan waktu rehat kita bersamaan sama dengan 20ms.
PILIHAN_REG = 0b00000100; // Timer0 dengan freq luaran dan 32 sebagai prescaler TMR0 = 251; // Muatkan nilai masa untuk 1us delayValue boleh antara 0-256 hanya TMR0IE = 1; // Aktifkan bit gangguan pemasa dalam daftar PIE1 GIE = 1; // Dayakan Global Interrupt PEIE = 1; // Aktifkan Gangguan Periferal
Oleh itu, di dalam fungsi rutin gangguan kami, kami menghidupkan pin RB0 untuk masa yang ditentukan dan mematikannya untuk waktu reaming (20ms - on_time). Nilai masa yang tepat dapat ditentukan dengan menggunakan modul Potentiometer dan ADC. Selingan ditunjukkan di bawah.
oid interrupt timer_isr () {if (TMR0IF == 1) // Pemasa telah melimpah {TMR0 = 252; / * Muatkan Nilai pemasa, (Catatan: Nilai Timer adalah 101 insta dari 100 kerana TImer0 memerlukan dua petunjuk Kitaran untuk mulai meningkatkan TMR0 * / TMR0IF = 0; // Kosongkan jumlah bendera pemasa gangguan ++;} jika (hitung> = on_time) { RB0 = 1; // melengkapkan nilai untuk berkelip LED} jika (kiraan> = (on_time + (200-on_time))) {RB0 = 0; hitung = 0;}}
Di dalam loop sementara kami hanya membaca nilai potensiometer dengan menggunakan modul ADC dan mengemas kini waktu PWM menggunakan nilai baca.
sementara (1) {pot_value = (ADC_Read (4)) * 0.039; on_time = (nilai 170-pot_); }
Dengan cara ini kita telah membuat isyarat PWM yang Periodnya 20ms dan mempunyai kitaran tugas berubah-ubah yang dapat ditetapkan menggunakan Potentiometer. Kod Lengkap telah diberikan di bawah di bahagian kod.
Sekarang, mari kita sahkan output menggunakan simulasi proteus dan teruskan ke perkakasan kami.
Rajah Litar:
Sekiranya anda telah menemui tutorial PWM maka skema tutorial ini akan sama kecuali yang mana kita akan menambah motor servo sebagai pengganti lampu LED.
Persediaan Simulasi dan Perkakasan:
Dengan bantuan simulasi Proteus kita dapat mengesahkan isyarat PWM menggunakan osiloskop dan juga memeriksa malaikat putaran motor Servo. Beberapa tangkapan simulasi ditunjukkan di bawah, di mana malaikat putaran motor servo dan kitaran tugas PWM dapat dilihat berubah berdasarkan potensiometer. Selanjutnya periksa Video Penuh, putaran pada PWM yang berbeza, di akhir.
Seperti yang kita lihat malaikat putaran servo berubah berdasarkan nilai potensiometer. Sekarang mari kita teruskan ke persediaan perkakasan kita.
Dalam penyediaan perkakasan, kami baru sahaja melepaskan papan LED dan menambahkan motor Servo seperti yang ditunjukkan dalam skema di atas.
Perkakasan ditunjukkan dalam gambar di bawah:
The video di bawah menunjukkan bagaimana motor servo bertindak balas kepada pelbagai jawatan meter upaya.
Iaitu ia!! Kami telah menghubungkan motor servo dengan PIC Microcontroller, sekarang anda boleh menggunakan kreativiti anda sendiri dan mengetahui aplikasi untuk ini. Terdapat banyak projek di luar sana yang menggunakan motor servo.