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, anda akan dapat membuat projek berprofil tinggi sendiri. Periksa ini untuk Bermula dengan Raspberry Pi dan Raspberry Pi Konfigurasi.
Kami telah membincangkan generasi LED Blinky, Interface dan Butang PWM dalam tutorial sebelumnya. Dalam tutorial ini kita akan Mengawal Kelajuan motor DC menggunakan teknik Raspberry Pi dan PWM. PWM (Pulse Width Modulation) adalah kaedah yang digunakan untuk mendapatkan voltan berubah dari sumber kuasa tetap. Kami telah membincangkan mengenai PWM dalam tutorial sebelumnya.
Terdapat 40 pin output GPIO di Raspberry Pi 2. Tetapi daripada 40, hanya 26 pin GPIO (GPIO2 hingga GPIO27) yang dapat diprogramkan. Sebilangan pin ini menjalankan beberapa fungsi khas. Dengan GPIO khas, kita mempunyai baki 17 GPIO. Untuk mengetahui lebih lanjut mengenai pin GPIO, baca: LED Berkedip dengan Raspberry Pi
Setiap pin GPIO 17 ini dapat menghasilkan maksimum 15mA. Dan jumlah arus dari semua Pin GPIO tidak boleh melebihi 50mA. Oleh itu, kita dapat memperoleh maksimum 3mA secara purata dari setiap pin GPIO ini. Oleh itu, seseorang tidak boleh mengganggu perkara ini melainkan anda tahu apa yang anda lakukan.
Terdapat pin output kuasa + 5V (Pin 2 & 4) dan + 3.3V (Pin 1 & 17) di papan untuk menyambungkan modul dan sensor lain. Rel kuasa ini disambungkan selari dengan kuasa pemproses. Oleh itu, menarik arus tinggi dari rel kuasa ini mempengaruhi Pemproses. Terdapat sekering pada papan PI yang akan tersekat setelah anda menggunakan beban tinggi. Anda boleh menarik 100mA dengan selamat dari rel + 3.3V. Kami bercakap mengenai perkara ini di sini kerana; kita menyambungkan motor DC ke + 3.3V. Dengan mempertimbangkan had kuasa, kita hanya dapat menyambungkan motor kuasa rendah di sini, jika anda ingin menggerakkan motor berkuasa tinggi, pertimbangkan untuk menyalakannya dari sumber kuasa yang berasingan.
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
- 220Ω atau 1KΩ Resistor (3)
- Motor DC Kecil
- Butang (2)
- Transistor 2N2222
- 1N4007 Diod
- Kapasitor- 1000uF
- Papan Roti
Penjelasan Litar:
Seperti yang dinyatakan sebelumnya, kita tidak dapat menarik lebih dari 15mA dari pin GPIO mana pun dan motor DC menarik lebih dari 15mA, jadi PWM yang dihasilkan oleh Raspberry Pi tidak dapat dimasukkan ke motor DC secara langsung. Oleh itu, jika kita menyambungkan motor secara langsung ke PI untuk kawalan kelajuan, papan mungkin rosak secara kekal.
Oleh itu, kita akan menggunakan transistor NPN (2N2222) sebagai peranti beralih. Transistor ini di sini menggerakkan motor DC berkuasa tinggi dengan mengambil isyarat PWM dari PI. Di sini seseorang harus memberi perhatian bahawa penyambungan transistor secara salah mungkin memuatkan papan dengan berat.
Motor adalah aruhan dan oleh itu semasa menghidupkan motor, kita mengalami lonjakan induktif. Spiking ini akan memanaskan transistor dengan kuat, jadi kita akan menggunakan Diode (1N4007) untuk memberikan perlindungan kepada transistor terhadap Inductive Spiking.
Untuk mengurangkan turun naik voltan, kita akan menyambungkan kapasitor 1000uF di seluruh bekalan kuasa seperti yang ditunjukkan dalam Rajah Litar.
Penjelasan Kerja:
Setelah semuanya disambungkan mengikut rajah 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 35' di papan adalah 'GPIO19'. Oleh itu, kami nyatakan di sini sama ada kami akan mewakili pin di sini dengan '35' atau '19'.
IO.setmode (IO.BCM)
Kami menetapkan GPIO19 (atau PIN35) sebagai pin output. Kami akan mendapat output PWM dari pin ini.
Persediaan IO (19, IO.IN)
Setelah menetapkan pin sebagai 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 isyarat PWM. 'p' di sini adalah pemboleh ubah yang boleh menjadi apa sahaja. Kami menggunakan GPIO19 sebagai saluran output PWM. ' frekuensi isyarat PWM ' telah dipilih 100, kerana kita tidak mahu melihat LED berkelip.
Perintah di bawah ini digunakan untuk memulakan penjanaan isyarat PWM, ' DUTYCYCLE ' adalah untuk menetapkan nisbah Turn On, 0 bermaksud LED akan AKTIF selama 0% masa, 30 bermaksud LED akan AKTIF selama 30% dari waktu dan 100 bermaksud ON sepenuhnya.
p. memulakan (DUTYCYCLE)
Sekiranya keadaan di pendakap itu benar, pernyataan di dalam gelung akan dilaksanakan sekali. Oleh itu, jika pin GPIO 26 menjadi rendah, maka penyataan di dalam gelung IF akan dilaksanakan sekali. Sekiranya pin GPIO 26 tidak rendah, maka pernyataan di dalam gelung IF tidak akan dilaksanakan.
jika (IO.input (26) == Salah):
Manakala 1: digunakan untuk infinity loop. Dengan perintah ini, pernyataan di dalam gelung ini akan dilaksanakan secara berterusan.
Kami mempunyai semua arahan yang diperlukan untuk mencapai kawalan kelajuan dengan ini.
Setelah menulis program dan melaksanakannya, yang tinggal hanyalah mengendalikan kawalan. Kami mempunyai dua butang yang disambungkan ke PI; satu untuk meningkatkan Duty Cycle isyarat PWM dan satu lagi untuk mengurangkan Duty Cycle isyarat PWM. Dengan menekan satu butang, kelajuan motor DC meningkat dan dengan menekan butang yang lain, kelajuan motor DC menurun. Dengan ini kami telah mencapai DC Speed Speed Control oleh Raspberry Pi.
Periksa juga:
- Kawalan Kelajuan Motor DC
- DC Motor Control menggunakan Arduino