- PWM (Modulasi Lebar Nadi):
- Servo Motor dan PWM:
- Komponen yang Diperlukan:
- Rajah Litar:
- Penjelasan Bekerja dan Pengaturcaraan:
Raspberry Pi adalah papan berasaskan pemproses seni bina ARM yang direka untuk jurutera elektronik dan penggemar hobi. PI adalah salah satu platform pembangunan projek yang paling dipercayai di luar sana sekarang. Dengan kelajuan pemproses yang lebih tinggi dan RAM 1 GB, PI dapat digunakan untuk banyak projek berprofil tinggi seperti pemprosesan Imej dan Internet Perkara.
Untuk melakukan projek berprofil tinggi, seseorang perlu memahami fungsi asas PI. Kami akan merangkumi semua fungsi asas Raspberry Pi dalam tutorial ini. Dalam setiap tutorial kita akan membincangkan salah satu fungsi PI. Pada akhir Siri Tutorial Raspberry Pi ini, anda akan dapat membuat projek berprofil tinggi sendiri. Baca tutorial di bawah:
- Bermula dengan Raspberry Pi
- Konfigurasi Pi Raspberry
- LED Berkelip
- Memadankan Butang Raspberry Pi
- Generasi Raspberry Pi PWM
- Mengawal Motor DC menggunakan Raspberry Pi
- Kawalan Motor Stepper dengan Raspberry Pi
- Daftar Antarmuka Shift dengan Raspberry Pi
- Tutorial ADP Raspberry Pi
Dalam tutorial ini kita akan Mengendalikan Servo Motor dengan Raspberry Pi. Sebelum pergi ke servo mari kita bincangkan mengenai PWM kerana konsep mengendalikan Servo Motor berasal daripadanya.
PWM (Modulasi Lebar Nadi):
Kami sebelum ini banyak kali bercakap mengenai PWM dalam: Modulasi lebar denyut dengan ATmega32, PWM dengan Arduino Uno, PWM dengan IC pemasa 555 dan PWM dengan Arduino Due. PWM bermaksud 'Pulse Width Modulation'. PWM adalah kaedah yang digunakan untuk mendapatkan voltan berubah dari bekalan kuasa yang stabil. Untuk lebih memahami PWM pertimbangkan litar di bawah,
Pada gambar di atas, jika suis ditutup secara berterusan dalam jangka masa tertentu, LED akan 'ON' selama waktu ini secara berterusan. Sekiranya suis ditutup selama setengah saat dan dibuka selama setengah saat berikutnya, maka LED akan menyala hanya pada separuh kedua pertama. Sekarang bahagian yang mana LEDnya AKTIF sepanjang masa disebut Duty Cycle, dan dapat dikira seperti berikut:
Duty Cycle = Hidupkan waktu / (Hidupkan waktu + Matikan masa)
Kitaran Tugas = (0.5 / (0.5 + 0.5)) = 50%
Jadi voltan keluaran purata adalah 50% daripada voltan bateri.
Semasa kita meningkatkan kelajuan ON dan OFF ke tahap kita akan melihat LED dimalapkan dan bukannya ON dan OFF. Ini kerana mata kita tidak dapat menangkap frekuensi yang lebih tinggi daripada 25Hz dengan jelas. Pertimbangkan kitaran 100ms, LED mati selama 30msec dan AKTIF selama 70msec. Kami akan mempunyai 70% voltan stabil pada output, jadi LED akan bersinar berterusan dengan intensiti 70%.
Duty Ratio bermula dari 0 hingga 100. '0' bermaksud MATI sepenuhnya dan '100' menjadi ON sepenuhnya. Duty Ratio ini sangat penting untuk Servo Motor. Kedudukan Servo Motor ditentukan oleh Duty Ratio ini. Lihat ini untuk demonstrasi PWM dengan LED dan Raspberry Pi.
Servo Motor dan PWM:
Servo Motor adalah gabungan motor DC, sistem kawalan kedudukan dan gear. Servo mempunyai banyak aplikasi di dunia moden dan dengan itu, ia tersedia dalam pelbagai bentuk dan saiz. Kami akan menggunakan SG90 Servo Motor dalam tutorial ini, ini adalah salah satu yang popular dan paling murah. SG90 adalah servo 180 darjah. Oleh itu dengan servo ini kita dapat meletakkan paksi dari 0-180 darjah.
Motor Servo mempunyai tiga wayar, satu untuk voltan positif, satu lagi untuk tanah dan yang terakhir adalah untuk penetapan kedudukan. The wayar merah disambungkan kepada kuasa, wayar Brown disambungkan ke tanah dan Yellow wayar (atau WHITE) disambungkan kepada isyarat.
Dalam servo, kami mempunyai sistem kawalan yang mengambil isyarat PWM dari Pin isyarat. Ia menyahkod isyarat dan mendapat nisbah tugas daripadanya. Selepas itu, ia membandingkan nisbah dengan nilai kedudukan yang telah ditentukan. Sekiranya terdapat perbezaan nilai, ia akan menyesuaikan kedudukan servo dengan sewajarnya. Jadi kedudukan paksi motor servo adalah berdasarkan nisbah tugas isyarat PWM pada pin Isyarat.
Frekuensi isyarat PWM (Pulse Width Modulated) boleh berbeza-beza berdasarkan jenis motor servo. Untuk SG90 frekuensi isyarat PWM adalah 50Hz. Untuk mengetahui kekerapan operasi untuk servo anda, periksa Lembar Data untuk model tertentu. Oleh itu, setelah frekuensi dipilih, perkara penting lain di sini adalah DUTY RATIO isyarat PWM.
Jadual di bawah menunjukkan Kedudukan Servo untuk Nisbah Tugas tertentu. Anda boleh mendapatkan sudut mana-mana dengan memilih nilainya sesuai. Jadi untuk servo 45º, Duty Ratio mestilah '5' atau 5%.
KEDUDUKAN |
RATIO TUGAS |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Sebelum Memasukkan Servo Motor ke Raspberry Pi, anda boleh menguji servo anda dengan bantuan Servo Motor Tester Circuit ini. Lihat juga projek Servo kami di bawah ini:
- Servo Motor Control menggunakan Arduino
- Servo Motor Control dengan Arduino Due
- Servo Motor Interfacing dengan Mikrokontroler 8051
- Servo Motor Control menggunakan MATLAB
- Kawalan Motor Servo oleh Flex Sensor
- Kawalan Kedudukan Servo dengan Berat (Force Sensor)
Komponen yang Diperlukan:
Di sini kita menggunakan Raspberry Pi 2 Model B dengan OS Raspbian Jessie. Semua keperluan asas Perkakasan dan Perisian dibincangkan sebelumnya, anda boleh mencarinya dalam Pengenalan Raspberry Pi, selain daripada yang kami perlukan:
- Pin penyambung
- Kapasitor 1000uF
- Motor Servo SG90
- Papan roti
Rajah Litar:
A1000µF mesti disambungkan melintasi rel kuasa + 5V jika tidak, PI mungkin ditutup secara rawak semasa mengendalikan servo.
Penjelasan Bekerja dan Pengaturcaraan:
Setelah semuanya dihubungkan mengikut gambarajah litar, kita dapat menghidupkan PI untuk menulis program dalam PYHTON.
Kami akan membincangkan beberapa arahan yang akan kami gunakan dalam program PYHTON, Kami akan mengimport fail GPIO dari perpustakaan, fungsi di bawah ini membolehkan kita memprogram pin GPIO PI. Kami juga mengganti nama menjadi "GPIO" menjadi "IO", jadi dalam program setiap kali kami ingin merujuk pada pin GPIO, kami akan menggunakan kata 'IO'.
import RPi.GPIO sebagai IO
Kadang-kadang, apabila pin GPIO, yang cuba kita gunakan, mungkin melakukan beberapa fungsi lain. Sekiranya demikian, kami akan menerima amaran semasa menjalankan program. Perintah di bawah ini memberitahu PI untuk mengabaikan amaran dan meneruskan program.
Peringatan IO (Salah)
Kita boleh merujuk pin GPIO PI, sama ada dengan nombor pin di papan atau dengan nombor fungsinya. Seperti 'PIN 29' di papan adalah 'GPIO5'. Oleh itu, kami katakan di sini sama ada kami akan mewakili pin di sini dengan '29' atau '5'.
IO.setmode (IO.BCM)
Kami menetapkan PIN39 atau GPIO19 sebagai pin output. Kami akan mendapat output PWM dari pin ini.
Persediaan IO (19, IO.OUT)
Setelah menetapkan pin output, kita perlu mengatur pin sebagai pin output PWM, p = IO.PWM (saluran output, kekerapan isyarat PWM)
Perintah di atas adalah untuk mengatur saluran dan juga untuk mengatur frekuensi Saluran ”. 'p' di sini adalah pemboleh ubah yang boleh menjadi apa sahaja. Kami menggunakan GPIO19 sebagai saluran output PWM. "Frekuensi isyarat PWM" kami akan memilih 50, kerana frekuensi kerja SG90 adalah 50Hz.
Perintah di bawah digunakan untuk memulakan penjanaan isyarat PWM. ' DUTYCYCLE ' adalah untuk menetapkan nisbah 'Turn On' seperti yang dijelaskan sebelumnya, p. memulakan (DUTYCYCLE)
Perintah di bawah digunakan sebagai loop selamanya, dengan perintah ini pernyataan di dalam gelung ini akan dilaksanakan secara berterusan.
Semasa 1:
Di sini program untuk Mengendalikan Servo menggunakan Raspberry Pi memberikan isyarat PWM di GPIO19. Duty Ratio isyarat PWM diubah antara tiga nilai selama tiga saat. Jadi untuk setiap saat, Servo berputar ke kedudukan yang ditentukan oleh Duty Ratio. Servo berputar terus ke 0º, 90º dan 180º dalam tiga saat.