Panduan Pemasangan Pi Servo Hat
Pengantar
The SparkFun Pi Servo Hat memungkinkan Raspberry Pi Anda mengontrol hingga 16 motor servo melalui koneksi I2C. Ini menghemat GPIO dan memungkinkan Anda menggunakan GPIO onboard untuk tujuan lain. Selain itu, Pi Servo Shield menambahkan koneksi terminal serial yang memungkinkan Anda membuka Raspberry Pi tanpa harus menghubungkannya ke monitor dan keyboard.
Bahan yang Diperlukan
Inilah yang perlu Anda ikuti bersama dengan tutorial ini. Kami menyarankan untuk membeli kartu microSD kosong daripada kartu siap NOOBS, karena kartu siap NOOBS mungkin tidak memiliki OS yang cukup baru untuk mendukung Pi Zero W.
-
- Header Break Away – Lurus
-
- Catu Daya Adaptor Dinding – 5.1V DC 2.5A (USB Micro-B)
-
- Kartu microSD dengan Adaptor – 16GB (Kelas 10)
-
- Raspberry Pi GPIO Tajuk Tinggi – 2×20
-
- Raspberry Pi Zero W
-
- Topi Servo SparkFun Pi
Selain itu, Anda perlu semacam motor servo untuk menguji penyiapan. Coba uji contoh yang diberikan nanti dalam tutorial dengan servo submikro generik terlebih dahulu.
-
- Servo – Generik (Ukuran Sub-Mikro)
Alat yang Diperlukan
Tidak ada alat khusus yang diperlukan untuk mengikuti perakitan produk ini. Anda memerlukan besi solder, solder, dan aksesori solder umum.
-
- Bebas Timah Solder – Tabung 15 gram
-
- Besi Solder – 30W (AS, 110V)
Ikhtisar Perangkat Keras
Hanya ada beberapa item menarik di papan, karena ini adalah topi yang dirancang agar tidak sulit digunakan.
Konektor USB Mikro B – Konektor ini dapat digunakan untuk menyalakan motor servo saja, atau untuk memberi daya pada motor servo serta Pi yang terhubung ke topi. Ini juga dapat digunakan untuk terhubung ke Pi melalui koneksi port serial untuk menghindari keharusan menggunakan monitor dan keyboard untuk menyiapkan Pi.
Jumper isolasi catu daya – Jumper ini dapat dihapus (ditutup secara default) untuk mengisolasi rel daya servo dari rel daya Pi 5V. Mengapa Anda ingin melakukan itu? Jika ada beberapa servo, atau servo besar dengan beban berat, kebisingan yang dibuat pada rel catu daya oleh motor servo dapat menyebabkan operasi yang tidak diinginkan di Pi, hingga reset atau shutdown total. Perhatikan bahwa, selama Pi diberi daya, antarmuka serial akan tetap berfungsi terlepas dari status jumper ini.
Header pin motor servo – Header ini diberi jarak untuk memudahkan pemasangan motor servo ke sana. Mereka disematkan dalam urutan yang benar untuk sebagian besar konektor motor servo tipe hobi.
Perakitan Perangkat Keras
Kami menyarankan untuk menyolder header pria ke Pi Zero W.
Trik favorit saya untuk jenis situasi ini adalah menyolder satu pin, lalu melelehkan solder pada pin itu dengan besi dipegang di tangan kanan saya dan gunakan tangan kiri saya untuk mengatur header sampai duduk rata seperti yang ditunjukkan di bawah ini. Pastikan Anda menyolder dengan sisi header yang lebih pendek dan pin yang lebih panjang berada di sisi komponen. Setelah memasang satu pin, selesaikan penyolderan semua pin ke Pi Zero W.
Ulangi langkah-langkah dengan header perempuan dan Pi Servo Hat.
Pastikan untuk memasukkan pin pendek dari bagian bawah papan dan menambahkan solder ke sisi komponen sehingga Pi Servo Hat menumpuk di atas pin header pria Pi Zero W. Anda juga perlu memastikan bahwa header berada pada posisi yang sama sebelum menyolder semua pin.
Setelah header disolder, susun Pi Servo Hat pada Pi Zero W. Kemudian sambungkan servo hobby ke saluran “0” berdasarkan servo yang Anda gunakan. Coba lihat lembar data servo hobby atau lihat beberapa pinout konektor servo standar yang tercantum dalam tutorial ini. Dengan menggunakan adaptor dinding 5V yang memadai, kita dapat memberi daya pada Pi Zero W. Colokkan adaptor dinding ke stopkontak di dinding untuk daya dan sambungkan konektor mikro-B yang diberi label sebagai port “PWR IN” pada Pi Zero W.
Perangkat Lunak – Python
Kami akan membahas beberapa detail di sini cara mengakses dan menggunakan topi servo pi dengan Python.
Kode contoh lengkap tersedia di repositori GitHub produk.
Menyiapkan Akses ke Sumber Daya SMBus
Poin pertama:di sebagian besar interaksi tingkat OS, I
2
C bus disebut sebagai SMBus. Jadi kita mendapatkan baris kode pertama kita. Ini mengimpor modul smbus, membuat objek bertipe SMBus, dan melampirkannya ke bus “1” dari berbagai SMBuses Pi.
import smbus
bus =smbus.SMBus(1)
Kami harus memberi tahu program alamat bagian tersebut. Secara default, ini adalah 0x40, jadi tetapkan variabel untuk digunakan nanti.
addr =0x40
Selanjutnya, kita ingin mengaktifkan chip PWM dan memerintahkannya untuk secara otomatis menambah alamat setelah penulisan (yang memungkinkan kita melakukan operasi tunggal penulisan multi-byte).
bus.write_byte_data(addr, 0, 0x20)bus.write_byte_data(addr, 0xfe, 0x1e)
Tulis Nilai ke Register PWM
Itu semua pengaturan yang perlu dilakukan. Mulai saat ini, kita dapat menulis data ke chip PWM dan mengharapkannya merespons. Ini contohnya.
bus.write_word_data(addr, 0x06, 0)bus.write_word_data(addr, 0x08, 1250)
Penulisan pertama adalah ke register "waktu mulai" untuk saluran 0. Secara default, frekuensi PWM chip adalah 200Hz, atau satu pulsa setiap 5ms. Register waktu mulai menentukan kapan pulsa menjadi tinggi dalam siklus 5ms. Semua saluran disinkronkan ke siklus itu. Umumnya, ini harus ditulis ke 0. Penulisan kedua adalah ke register "waktu berhenti", dan ini mengontrol kapan pulsa harus turun. Rentang untuk nilai ini adalah dari 0 hingga 4095, dan setiap hitungan mewakili satu irisan dari periode 5 md (5 md/4095), atau sekitar 1,2 us. Jadi, nilai 1250 yang tertulis di atas mewakili sekitar 1,5 mdtk waktu tinggi per periode 5 md.
Motor servo mendapatkan sinyal kontrolnya dari lebar pulsa tersebut. Secara umum, lebar pulsa 1,5 ms menghasilkan posisi "netral", di tengah-tengah antara ekstrem jangkauan motor. 1.0ms menghasilkan sekitar 90 derajat dari pusat, dan 2.0ms menghasilkan -90 derajat dari pusat. Dalam praktiknya, nilai tersebut mungkin sedikit lebih atau kurang dari 90 derajat, dan motor mungkin mampu bergerak sedikit lebih atau kurang dari 90 derajat di kedua arah.
Untuk mengatasi saluran lain, cukup tambahkan alamat dari dua register di atas dengan 4. Jadi, waktu mulai untuk saluran 1 adalah 0x0A, untuk saluran 2 adalah 0x0E, saluran 3 adalah 0x12, dll. dan alamat waktu berhenti untuk saluran 1 adalah 0x0C, untuk saluran 2 adalah 0x10, saluran 3 adalah 0x14, dll. Lihat tabel di bawah ini.
Saluran # | Alamat Awal | Alamat Berhenti |
Ch 0 | 0x06 | 0x08 |
Bab 1 | 0x0A | 0x0C |
Bab 2 | 0x0E | 0x10 |
Bab 3 | 0x12 | 0x14 |
Bab 4 | 0x16 | 0x18 |
Bab 5 | 0x1A | 0x1C |
Bab 6 | 0x1E | 0x20 |
Bab 7 | 0x22 | 0x24 |
Bab 8 | 0x26 | 0x28 |
Bab 9 | 0x2A | 0x2C |
Bab 10 | 0x2E | 0x30 |
Bab 11 | 0x32 | 0x34 |
Bab 12 | 0x36 | 0x38 |
Bab 13 | 0x3A | 0x3C |
Bab 14 | 0x3E | 0x40 |
Bab 15 | 0x42 | 0x44 |
Jika Anda menulis 0 ke alamat awal, setiap derajat offset dari 90 derajat memerlukan 4,6 hitungan yang ditulis ke alamat berhenti. Dengan kata lain, kalikan jumlah derajat offset dari netral yang ingin Anda capai dengan 4,6, lalu tambahkan atau kurangi hasilnya dari 1250, tergantung pada arah gerakan yang Anda inginkan. Misalnya, offset 45 derajat dari pusat akan menjadi 207 (45×4.6) dihitung lebih atau kurang dari 1250, tergantung pada arah gerakan yang Anda inginkan.
Baca Info Selengkapnya…
Panduan Penyambungan Pi Servo Hat