Daftar Isi:

Stabilizer Kamera Genggam: 13 Langkah (dengan Gambar)
Stabilizer Kamera Genggam: 13 Langkah (dengan Gambar)

Video: Stabilizer Kamera Genggam: 13 Langkah (dengan Gambar)

Video: Stabilizer Kamera Genggam: 13 Langkah (dengan Gambar)
Video: Video Hape Ini Super Stabil, Ga Ada Obatnya, Ga Ada Lawannya 2024, November
Anonim
Stabilizer Kamera Genggam
Stabilizer Kamera Genggam

pengantar

Ini adalah panduan untuk membuat rig stabilisasi kamera genggam 3-sumbu untuk GoPro menggunakan Digilent Zybo Zynq-7000 Development Board. Proyek ini dikembangkan untuk kelas Sistem Operasi Real-Time CPE (CPE 439). Stabilizer menggunakan tiga servos dan IMU untuk mengoreksi gerakan pengguna untuk menjaga level kamera.

Bagian yang Diperlukan untuk Proyek

  • Papan Pengembangan Zybo Zynq-7000 yang Digilent
  • Sparkfun IMU Breakout - MPU 9250
  • 2 Servo HiTec HS-5485HB (beli gerakan atau program 180 derajat dari 90 hingga 180 derajat)
  • 1 HiTec HS-5685MH Servo (beli gerakan atau program 180 derajat dari 90 hingga 180 derajat)
  • 2 Kurung Servo Standar
  • 1 papan tempat memotong roti
  • 15 kabel jumper pria-ke-pria
  • 4 kabel jumper pria-ke-wanita
  • Lem panas
  • Pegangan atau Pegangan
  • batang kayu diameter 5 mm
  • GoPro atau kamera lain dan perangkat keras pemasangan
  • Catu daya mampu menghasilkan 5V.
  • Akses ke Pencetak 3D

Langkah 1: Pengaturan Perangkat Keras Vivado

Pengaturan Perangkat Keras Vivado
Pengaturan Perangkat Keras Vivado

Mari kita mulai dengan membuat desain blok yang mendasari untuk proyek tersebut.

  1. Buka Vivado 2016.2, klik ikon "Buat Proyek Baru", dan klik "Berikutnya>".
  2. Beri nama proyek Anda dan klik "Berikutnya >".
  3. Pilih proyek RTL dan tekan "Berikutnya>".
  4. Ketik ke dalam bilah pencarian xc7z010clg400-1 dan kemudian pilih bagian dan tekan "Berikutnya>" dan "Selesai".

Langkah 2: Menyiapkan Desain Blok

Sekarang kita akan mulai membuat desain blok dengan menambahkan dan mengatur Blok Zynq IP.

  1. Di panel sebelah kiri, di bawah IP Integrator, Klik "Buat Desain Blok" dan kemudian klik "OK".
  2. Klik kanan pada tab "Diagram" dan pilih "Tambahkan IP…".
  3. Ketik "ZYNQ7 Processing System" dan klik pilihan.
  4. Klik dua kali pada blok Zynq yang muncul.
  5. Klik "Impor Pengaturan XPS" dan impor file "ZYBO_zynq_def.xml" yang disediakan.
  6. Buka "MIO Configuration" dan pilih "Application Processor Unit" dan aktifkan Timer 0 dan Watchdog timer.
  7. Di tab yang sama, di bawah "I/O Peripherals", pilih ENET 0 (dan ubah menu dropdown ke "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Di bawah "GPIO", centang GPIO MIO, Reset ENET, Reset USB, dan Reset I2C.
  9. Sekarang arahkan ke "Konfigurasi Jam". Pilih FCLK_CLK0 di bawah PL Fabric Clocks. Kemudian, Klik "Oke".

Langkah 3: Buat Blok IP PWM Kustom

Blok IP ini memungkinkan papan untuk mengirim sinyal PWM keluar untuk mengontrol pergerakan servos. Pekerjaan itu sangat didasarkan pada tutorial oleh Digitronix Nepal, ditemukan di sini. Logika ditambahkan untuk memperlambat jam sehingga pulsa keluar pada tingkat yang benar. Blok mengambil angka dari 0 hingga 180 dan mengubahnya menjadi pulsa dari 750-2150 usec.

  1. Sekarang, di bawah tab Alat di dekat sudut kiri atas, klik "Buat dan Paket IP …" dan tekan Berikutnya.
  2. Kemudian pilih "Buat periferal AXI4 baru" dan tekan Berikutnya.
  3. Beri nama blok IP PWM Anda (kami menamakannya pwm_core) dan klik Next dan kemudian klik Next di halaman berikutnya juga.
  4. Sekarang klik "Edit IP" dan tekan Selesai. Ini akan membuka jendela baru untuk mengedit blok pwm.
  5. Di tab "Sumber" dan di bawah "Sumber Desain", perluas 'pwm_core_v1_0' (ganti pwm_core dengan nama Anda) dan buka file yang terlihat.
  6. Salin dan tempel kode yang disediakan di bawah 'pwm_core_v1_0_S00_AXI.v' di file zip di bagian bawah proyek. Ctrl + Shift + R dan ganti 'pwm_core' dengan nama Anda untuk blok ip.
  7. Selanjutnya buka ' name _v1_0' dan salin kode yang disediakan di file 'pwm_core_v1_0.v'. Ctrl + Shift + R dan ganti 'pwm_core' dengan name.
  8. Sekarang arahkan ke tab 'Paket IP - nama' dan pilih "Parameter Kustomisasi".
  9. Di tab ini akan ada bilah kuning di bagian atas yang memiliki teks tertaut. Pilih ini, dan "Parameter Tersembunyi" akan muncul di kotak.
  10. Sekarang pergi ke "Customization GUI" dan klik kanan pada Pwm Counter Max pilih "Edit Parameter…".
  11. Centang kotak "Visible in Customization GUI" dan "Specify Range".
  12. Ubah menu tarik-turun "Jenis:" ke Rentang bilangan bulat dan atur minimum ke 0 dan maksimum ke 65535 dan centang kotak "Tampilkan Rentang". Sekarang klik OK.
  13. Tarik Pwm Counter Max di bawah Pohon 'Halaman 0'. Sekarang pergi ke "Review and Package" dan klik tombol "Re-Package IP".

Langkah 4: Tambahkan Blok IP PWM ke Desain

Tambahkan Blok IP PWM ke Desain
Tambahkan Blok IP PWM ke Desain

Kami akan menambahkan blok IP ke dalam desain blok untuk memungkinkan pengguna mengakses blok IP PWM melalui prosesor.

  1. Klik kanan pada tab diagram dan klik "Pengaturan IP…". Arahkan ke tab "Pengelola Repositori".
  2. Klik tombol plus hijau dan pilih. Sekarang temukan ip_repo di File Manager dan tambahkan itu ke proyek. Kemudian Tekan Terapkan dan kemudian OK.
  3. Klik kanan pada tab diagram dan klik "Tambahkan IP…". Ketik nama blok IP PWM Anda dan pilih.
  4. Seharusnya ada bilah hijau di bagian atas layar, pertama-tama pilih "Jalankan Otomatisasi Koneksi" dan klik OK. Kemudian klik "Jalankan Otomatisasi Blokir" dan klik OK.
  5. Klik dua kali pada blok PWM dan ubah Pwm Counter Max menjadi 1024 dari 128.
  6. Arahkan penunjuk mouse Anda ke PWM0 pada blok PWM. Seharusnya ada pensil kecil yang muncul saat Anda melakukannya. Klik kanan dan pilih "Buat Port…" dan klik OK saat jendela terbuka. Ini menciptakan port eksternal untuk sinyal yang akan diteruskan.
  7. Ulangi langkah 6 untuk PWM1 dan PWM2 juga.
  8. Temukan ikon panah ganda melingkar kecil di bilah sisi dan klik itu. Ini akan meregenerasi tata letak dan desain blok Anda akan terlihat seperti gambar di atas.

Langkah 5: Konfigurasikan Pembungkus HDL dan Atur File Kendala

Konfigurasikan Pembungkus HDL dan Atur File Kendala
Konfigurasikan Pembungkus HDL dan Atur File Kendala

Kita sekarang akan membuat Desain Tingkat Tinggi untuk Desain Blok kita dan kemudian memetakan pin PWM0, PWM1, dan PWM2 ke Pmod pada papan Zybo.

  1. Buka tab "Sumber". Klik kanan file desain blok Anda di bawah "Sumber Desain" dan klik "Buat Pembungkus HDL…". Pilih "Salin pembungkus yang dihasilkan untuk mengizinkan pengeditan pengguna" dan klik OK. Ini menghasilkan Desain Tingkat Tinggi untuk Desain Blok yang kami buat.
  2. Pmod yang akan kita hasilkan adalah JE.
  3. Di bawah File, pilih "Tambahkan Sumber…" dan pilih "Tambah atau buat batasan" dan klik Berikutnya.
  4. Klik tambahkan file dan pilih file "ZYBO_Master.xdc" yang disertakan. Jika Anda melihat file ini, Anda akan melihat semuanya tidak diberi komentar kecuali enam baris "set_property" di bawah "##Pmod Header JE". Anda akan melihat bahwa PWM0, PWM1, dan PWM2 adalah argumen untuk baris ini. Mereka memetakan ke Pin 1, Pin 2, dan Pin 3 dari JE Pmod.

Langkah 6: Menghasilkan Bitstream

Kita perlu menghasilkan bitstream untuk desain perangkat keras untuk diekspor ke SDK sebelum kita melanjutkan.

  1. Di bawah "Program dan Debug" di bilah sisi, pilih "Hasilkan Bitstream". Ini akan menjalankan sintesis, lalu implementasi, dan kemudian menghasilkan bitstream untuk desain.
  2. Perbaiki kesalahan yang muncul, tetapi peringatan umumnya dapat diabaikan.
  3. Buka File-> Luncurkan SDK dan klik OK. Ini akan membuka Xilinx SDK.

Langkah 7: Menyiapkan Proyek di SDK

Bagian ini bisa sedikit membuat frustrasi. Jika ragu, buat BSP baru dan ganti yang lama. Ini menghemat banyak waktu debugging.

  1. Mulailah dengan mengunduh FreeRTOS versi terbaru di sini.
  2. Ekstrak semuanya dari unduhan dan impor FreeRTOS ke SDK dengan Mengklik File-> Impor, dan di bawah "Umum" klik "Proyek yang Ada Ke Ruang Kerja" lalu klik Berikutnya.
  3. Buka "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" di dalam folder FreeRTOS. Hanya impor "RTOSDemo" dari lokasi ini.
  4. Sekarang buat Board Support Package (BSP) dengan mengklik File->New Board Support Package.
  5. Pilih "ps7_cortexa9_0" dan centang "lwip141" dan klik OK.
  6. Klik kanan pada folder biru RTOSDemo dan pilih "Referensi Proyek".
  7. Hapus centang "RTOSDemo_bsp" dan centang BSP baru yang baru saja kita buat.

Langkah 8: Modifikasi Kode FreeRTOS

Kode yang kami berikan dapat dipisahkan menjadi 7 file yang berbeda. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h dan iic_imu.h. Kode di iic_main_thread.c telah diadaptasi dari perpustakaan Kris Winer, yang dapat ditemukan di sini. Kami terutama mengubah kodenya untuk memasukkan tugas dan membuatnya bekerja dengan papan Zybo. Kami juga menambahkan fungsi untuk menghitung koreksi orientasi kamera. Kami telah meninggalkan beberapa pernyataan cetak yang berguna untuk debugging. Sebagian besar dari mereka dikomentari tetapi jika Anda merasa perlu, Anda dapat membatalkan komentar mereka.

  1. Cara termudah untuk memodifikasi file main.c adalah dengan mengganti kode dengan kode yang disalin dari file main.c kami yang disertakan.
  2. Untuk membuat file baru, klik kanan pada folder src di bawah RTOSDemo dan pilih C Source File. Beri nama file ini "iic_main_thread.c".
  3. Salin kode dari "iic_main_thread.c" yang disertakan dan tempel di file yang baru Anda buat.
  4. Ulangi langkah 2 dan 3 dengan file yang tersisa.
  5. membutuhkan instruksi penautan di gcc. Untuk menambahkan ini ke jalur build Anda klik kanan pada RTOSDemo dan pilih "C/C++ Build Settings".
  6. Sebuah jendela baru akan terbuka. Navigasikan ke ARM v7 gcc linker->Libraries. Pilih file add kecil di sudut kanan atas dan ketik "m". Ini akan mencakup perpustakaan matematika dalam proyek.
  7. Bangun proyek dengan Ctrl + B untuk mengonfirmasi semuanya berfungsi. Periksa peringatan yang dihasilkan tetapi Anda mungkin dapat mengabaikannya.
  8. Ada beberapa tempat yang perlu dimodifikasi, terutama deklinasi magnetik dari lokasi Anda saat ini. Kami akan menjelaskan cara mengubahnya di bagian kalibrasi dari tutorial.

Langkah 9: Pencetakan 3D untuk Stabilizer

Pencetakan 3D untuk Stabilizer
Pencetakan 3D untuk Stabilizer

Anda perlu mencetak 3D beberapa bagian untuk proyek ini. Seseorang mungkin dapat membeli suku cadang yang memiliki dimensi/ukuran yang sama dengan suku cadang cetak kami.

  1. Gunakan file yang disediakan untuk mencetak braket lengan dan penahan untuk GoPro.
  2. Anda perlu menambahkan perancah ke file.stl.
  3. Pangkas/bersihkan bagian perancah berlebih setelah dicetak.
  4. Anda dapat mengganti paku kayu dengan bagian yang dicetak 3D jika diinginkan.

Langkah 10: Merakit Bagian

Merakit Bagian
Merakit Bagian

Ada beberapa bagian untuk merakit stabilizer. Braket yang dibeli dilengkapi dengan 4 sekrup self-tapping dan 4 baut dengan mur. Karena ada 3 servo, salah satu tanduk servo perlu disadap terlebih dahulu agar 2 baut dapat masuk.

  1. Solder 8 pin ke breakout IMU, 4 di setiap sisi.
  2. IMU terpasang ke braket penahan cetak 3D untuk GoPro di tengah braket.
  3. Arahkan braket sehingga lubang pemasangan servo berada di sisi kiri Anda. Tempatkan IMU di tepi terdekat dengan Anda, dengan pin menggantung di tepi. Kemudian, letakkan dudukan GoPro di atas IMU, rekatkan IMU dan dudukan pada braket.
  4. Pasang HS-5485HB ke braket servo yang terintegrasi ke lengan cetak 3D.
  5. Pasang braket GoPro ke servo yang terpasang di lengan, pastikan servo diatur sehingga berada di tengah rentang geraknya.
  6. Selanjutnya, pasang servo HS-5685MH ke braket servo. Kemudian ketuk klakson servo dengan salah satu sekrup. Sekarang pasang servo ke bagian bawah braket servo terakhir.
  7. Sekarang pasang servo terakhir ke braket tempat servo HS-5685MH disekrup. Kemudian kencangkan lengan ke servo ini, pastikan lengan terpasang sehingga dapat bergerak 90 derajat setiap arah.
  8. Untuk menyelesaikan konstruksi gimbal, tambahkan sepotong kecil paku kayu untuk menghubungkan antara braket GoPro dan lengan cetak 3D. Anda sekarang telah merakit stabilizer.
  9. Terakhir, Anda dapat menambahkan pegangan yang terhubung ke braket servo bawah.

Langkah 11: Menghubungkan Zybo ke Stabilizer

Menghubungkan Zybo ke Stabilizer
Menghubungkan Zybo ke Stabilizer

Ada beberapa hal yang harus diperhatikan saat melakukan ini. Anda ingin memastikan bahwa 5V dari catu daya tidak pernah masuk ke papan Zybo, karena ini akan menyebabkan masalah dengan papan. Pastikan untuk memeriksa ulang jumper Anda untuk memastikan tidak ada kabel yang dialihkan.

  1. Untuk memasang Zybo ke stabilizer, Anda membutuhkan 15 jumper pria ke pria dan 4 jumper pria ke wanita.
  2. Pertama, sambungkan dua jumper ke catu daya 5V Anda di sepanjang rel + dan - papan tempat memotong roti. Ini akan memasok daya ke servos.
  3. Kemudian, sambungkan 3 pasang jumper ke rel + dan - papan tempat memotong roti. Ini akan menjadi kekuatan untuk masing-masing servos.
  4. Pasang ujung lain dari + dan - jumper ke masing-masing servos.
  5. Hubungkan jumper antara - rel breadboard dan salah satu pin GND pada Zybo JE Pmod (Lihat gambar Langkah 5). Ini akan menciptakan kesamaan antara papan Zybo dan catu daya.
  6. Selanjutnya sambungkan kabel sinyal ke pin 1, pin 2, dan pin 3 dari JE Pmod. Pin 1 memetakan ke servo bawah, pin 2 memetakan ke servo di ujung lengan, dan pin 3 memetakan ke servo tengah.
  7. Colokkan 4 kabel female ke pin GND, VDD, SDA dan SCL dari breakout IMU. GND dan VDD dicolokkan ke GND dan 3V3 pada pin JF. Colokkan pin SDA ke pin 8 dan SCL ke pin 7 pada JF (Lihat gambar Langkah 5).
  8. Terakhir, sambungkan komputer ke board menggunakan kabel micro usb. Ini akan memungkinkan komunikasi uart dan memungkinkan Anda memprogram papan Zybo.

Langkah 12: Koreksi Utara Sejati

Koreksi Utara Sejati
Koreksi Utara Sejati

Kalibrasi magnetometer di IMU penting untuk pengoperasian perangkat yang benar. Deklinasi magnetik, yang mengoreksi utara magnet ke utara sebenarnya.

  1. Untuk mengoreksi perbedaan dari utara magnet dan utara sejati, Anda perlu menggunakan kombinasi dua layanan, Google Maps dan kalkulator medan magnet NOAA.
  2. Gunakan Google Maps untuk menemukan garis lintang dan bujur dari lokasi Anda saat ini.
  3. Ambil bujur dan lintang Anda saat ini dan hubungkan ke kalkulator medan magnet.
  4. Apa yang dikembalikan adalah deklinasi magnetik. Masukkan perhitungan ini ke dalam kode pada baris 378 dari "iic_main_thread.c". Jika deklinasi Anda adalah timur, maka kurangi dari nilai yaw, jika barat maka tambahkan ke nilai yaw.

*foto diambil dari panduan sambungan MPU 9250 Sparkfun, ditemukan di sini.

Langkah 13: Menjalankan Program

Menjalankan Program
Menjalankan Program

Saat yang Anda tunggu-tunggu! Bagian terbaik dari proyek ini adalah melihatnya bekerja. Satu masalah yang kami perhatikan adalah bahwa ada penyimpangan dari nilai yang dilaporkan dari IMU. Filter low-pass dapat membantu memperbaiki penyimpangan ini, dan mengotak-atik magnetometer, akselerasi, dan kalibrasi gyro juga akan membantu memperbaiki penyimpangan ini.

  1. Pertama, build semua di SDK, ini bisa dilakukan dengan menekan Ctrl + B.
  2. Pastikan catu daya menyala dan diatur ke 5V. Periksa kembali apakah semua kabel menuju ke tempat yang benar.
  3. Kemudian, untuk menjalankan program, tekan segitiga hijau di tengah atas bilah tugas.
  4. Saat program berjalan, semua servos akan diatur ulang ke posisi 0, jadi bersiaplah untuk rig bergerak. Setelah program diinisialisasi, servos kemudian akan kembali ke posisi 90 derajat.
  5. Fungsi kalibrasi magnetometer akan berjalan dan petunjuk arah akan dicetak ke terminal UART, yang dapat Anda sambungkan melalui monitor serial seperti 'dempul' atau monitor serial yang disediakan di SDK.
  6. Kalibrasi akan membuat Anda memindahkan perangkat dalam angka 8 selama sekitar 10 detik. Anda dapat menghapus langkah ini dengan mengomentari baris 273 dari "iic_main_thread.c". Jika Anda berkomentar, Anda perlu menghapus komentar pada baris 323 - 325 "iic_main_thread.c". Nilai-nilai ini awalnya dikumpulkan dari kalibrasi magnetometer di atas dan kemudian dicolokkan sebagai nilai.
  7. Setelah kalibrasi, kode stabilisasi akan diinisialisasi dan perangkat akan menjaga kamera tetap stabil.

Direkomendasikan: