Isi kandungan:

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

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

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

Pengenalan

Ini adalah panduan untuk membuat rig penstabilan kamera genggam 3 paksi untuk GoPro menggunakan Papan Pembangunan Digilent Zybo Zynq-7000. Projek ini dibangunkan untuk kelas Sistem Operasi Masa Nyata CPE (CPE 439). Penstabil menggunakan tiga servo dan IMU untuk membetulkan pergerakan pengguna untuk menjaga tahap kamera.

Bahagian Diperlukan untuk Projek

  • Lembaga Pembangunan Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servos (beli gerakan atau program 180 darjah dari 90 hingga 180 darjah)
  • 1 HiTec HS-5685MH Servo (beli gerakan atau program 180 darjah dari 90 hingga 180 darjah)
  • 2 Kurungan Servo Standard
  • 1 Papan Roti
  • 15 wayar pelompat lelaki-ke-lelaki
  • 4 wayar pelompat lelaki-ke-wanita
  • Gam Panas
  • Genggaman atau Pegangan
  • Dowel kayu berdiameter 5 mm
  • GoPro atau perkakasan pemasangan dan kamera lain
  • Bekalan kuasa mampu menghasilkan 5V.
  • Akses ke Pencetak 3D

Langkah 1: Persediaan Perkakasan Vivado

Persediaan Perkakasan Vivado
Persediaan Perkakasan Vivado

Mari mulakan dengan membuat reka bentuk blok yang mendasari untuk projek ini.

  1. Buka Vivado 2016.2, klik ikon "Buat Projek Baru", dan klik "Seterusnya>".
  2. Namakan projek anda dan klik "Next>".
  3. Pilih projek RTL dan tekan "Next>".
  4. Ketik ke bar carian xc7z010clg400-1 dan kemudian pilih bahagiannya dan tekan "Next>" dan "Finish".

Langkah 2: Menyiapkan Reka Bentuk Blok

Sekarang kita akan mula menghasilkan reka bentuk blok dengan menambahkan dan menyiapkan Blok IP Zynq.

  1. Pada panel sebelah kiri, di bawah IP Integrator, Klik "Buat Reka Bentuk Blok" dan kemudian klik "OK".
  2. Klik kanan di tab "Diagram" dan pilih "Add IP…".
  3. Ketik "Sistem Pemprosesan ZYNQ7" dan klik pilihan.
  4. Klik dua kali pada blok Zynq yang muncul.
  5. Klik "Import Tetapan XPS" dan import fail "ZYBO_zynq_def.xml" yang disediakan.
  6. Pergi ke "MIO Configuration" dan pilih "Application Processor Unit" dan aktifkan Timer 0 dan Watchdog timer.
  7. Pada tab yang sama, di bawah "Perisian Perisian I / O", pilih ENET 0 (dan ubah menu lungsur turun ke "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Di bawah "GPIO", periksa GPIO MIO, ENET Reset, USB Reset, dan I2C Reset.
  9. Sekarang arahkan ke "Konfigurasi Jam". Pilih FCLK_CLK0 di bawah Jam Fabric PL. Kemudian, Klik "OK".

Langkah 3: Buat Blok IP PWM Custom

Blok IP ini membolehkan papan menghantar isyarat PWM untuk mengawal pergerakan servo. Karya ini banyak berdasarkan tutorial oleh Digitronix Nepal, yang terdapat di sini. Logik ditambahkan untuk memperlahankan jam sehingga nadi keluar pada kadar yang betul. Blok mengambil nombor dari 0 hingga 180 dan mengubahnya menjadi nadi dari 750-2150 usec.

  1. Sekarang, di bawah tab Tools berhampiran sudut kiri atas, klik "Buat dan Pakej IP …" dan tekan Next.
  2. Kemudian pilih "Buat periferal AXI4 baru" dan tekan Next.
  3. Namakan blok IP PWM anda (kami menamakannya pwm_core) dan klik Next dan kemudian klik Next di halaman seterusnya juga.
  4. Sekarang klik "Edit IP" dan tekan Selesai. Ini akan membuka tetingkap baru untuk mengedit blok pwm.
  5. Di tab "Sumber" dan di bawah "Sumber Reka Bentuk", luaskan 'pwm_core_v1_0' (ganti pwm_core dengan nama anda) dan buka fail yang kelihatan.
  6. Salin dan tampal kod yang disediakan di bawah 'pwm_core_v1_0_S00_AXI.v' dalam fail zip di bahagian bawah projek. Ctrl + Shift + R dan ganti 'pwm_core' dengan nama anda untuk blok ip.
  7. Seterusnya buka 'nama _v1_0' dan salin dalam kod yang disediakan dalam fail 'pwm_core_v1_0.v'. Ctrl + Shift + R dan ganti 'pwm_core' dengan nama.
  8. Sekarang arahkan ke tab 'IP Package - nama' dan pilih "Parameter Penyesuaian".
  9. Di tab ini akan ada bar kuning di bahagian atas yang mempunyai teks yang dipautkan. 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. Tandai kotak "Terlihat dalam Penyesuaian GUI" dan "Tentukan Julat".
  12. Tukar menu drop down "Type:" ke Range of bilangan bulat dan tetapkan minimum ke 0 dan maksimum ke 65535 dan tandakan kotak "Show Range". Sekarang klik OK.
  13. Seret Pwm Counter Max di bawah Pohon 'Halaman 0'. Sekarang pergi ke "Ulasan dan Pakej" dan klik butang "Re-Package IP".

Langkah 4: Tambahkan Blok IP PWM ke Reka Bentuk

Tambah Blok IP PWM ke Reka Bentuk
Tambah Blok IP PWM ke Reka Bentuk

Kami akan menambahkan blok IP ke dalam reka bentuk blok untuk membolehkan pengguna mengakses blok IP PWM melalui pemproses.

  1. Klik kanan pada tab rajah dan klik "Tetapan IP …". Navigasi ke tab "Pengurus Repositori".
  2. Klik butang tambah hijau dan pilih. Sekarang cari ip_repo di Pengurus Fail dan tambahkannya ke projek. Kemudian tekan Memohon dan kemudian OK.
  3. Klik kanan pada tab rajah dan klik "Tambah IP…". Taipkan nama blok IP PWM anda dan pilih.
  4. Harus ada bar hijau di bahagian atas skrin, pilih pertama "Jalankan Automasi Sambungan" dan klik OK. Kemudian klik "Jalankan Automasi Blok" dan klik OK.
  5. Klik dua kali pada blok PWM dan ubah Pwm Counter Max menjadi 1024 dari 128.
  6. Arahkan penunjuk tetikus anda ke atas PWM0 pada blok PWM. Pasti ada pensil kecil yang muncul semasa anda melakukannya. Klik kanan dan pilih "Buat Port …" dan klik OK ketika tetingkap terbuka. Ini membuat port luaran untuk isyarat dihantar.
  7. Ulangi langkah 6 untuk PWM1 dan PWM2 juga.
  8. Cari ikon anak panah berganda bulat kecil di bar sisi dan klik. Ini akan menghasilkan semula susun atur dan reka bentuk blok anda akan kelihatan seperti gambar di atas.

Langkah 5: Konfigurasikan Pembungkus HDL dan Sediakan Fail Kekangan

Konfigurasikan Pembungkus HDL dan Sediakan Fail Kekangan
Konfigurasikan Pembungkus HDL dan Sediakan Fail Kekangan

Kami sekarang akan menghasilkan Reka Bentuk Tahap Tinggi untuk Reka Bentuk Blok kami dan kemudian memetakan pin PWM0, PWM1, dan PWM2 ke Pmod pada papan Zybo.

  1. Pergi ke tab "Sumber". Klik kanan fail reka bentuk blok anda di bawah "Sumber Reka Bentuk" dan klik "Buat Pembungkus HDL …". Pilih "Salin pembungkus yang dihasilkan untuk membenarkan pengeditan pengguna" dan klik OK. Ini menghasilkan Reka Bentuk Tahap Tinggi untuk Reka Bentuk Blok yang kami buat.
  2. Pmod yang akan kita keluarkan adalah JE.
  3. Di bawah Fail, pilih "Tambah Sumber …" dan pilih "Tambah atau buat kekangan" dan klik Seterusnya.
  4. Klik tambah fail dan pilih fail "ZYBO_Master.xdc" yang disertakan. Sekiranya anda melihat dalam fail ini, anda akan melihat semuanya tidak terkecuali kecuali enam baris "set_property" di bawah "## Pmod Header JE". Anda akan melihat bahawa PWM0, PWM1, dan PWM2 adalah argumen untuk baris ini. Mereka memetakan ke Pin 1, Pin 2, dan Pin 3 dari JE Pmod.

Langkah 6: Menjana Bitstream

Kita perlu menjana aliran bit agar reka bentuk perkakasan dapat dieksport ke SDK sebelum kita meneruskannya.

  1. Di bawah "Program dan Debug" di bar sisi, pilih "Hasilkan Bitstream". Ini akan menjalankan sintesis, kemudian pelaksanaan, dan kemudian menghasilkan aliran bit untuk reka bentuk.
  2. Betulkan sebarang kesilapan yang muncul, tetapi amaran amnya dapat diabaikan.
  3. Pergi ke Fail-> Lancarkan SDK dan klik OK. Ini akan membuka Xilinx SDK.

Langkah 7: Menyiapkan Projek di SDK

Bahagian ini boleh sedikit mengecewakan. Sekiranya ragu-ragu, buat BSP baru dan ganti yang lama. Ini menjimatkan banyak masa penyahpepijatan.

  1. Mulakan dengan memuat turun versi terbaru FreeRTOS di sini.
  2. Ekstrak segala-galanya dari muat turun dan import FreeRTOS ke dalam SDK dengan Mengklik Fail-> Import, dan di bawah "Umum" klik "Projek Sedia Ada Ke Ruang Kerja" kemudian klik Seterusnya.
  3. Pergi ke "FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702" dalam folder FreeRTOS. Hanya import "RTOSDemo" dari lokasi ini.
  4. Sekarang buat Pakej Sokongan Papan (BSP) dengan mengklik Fail-> Pakej Sokongan Papan Baru.
  5. Pilih "ps7_cortexa9_0" dan periksa "lwip141" dan klik OK.
  6. Klik kanan pada folder biru RTOSDemo dan pilih "Project References".
  7. Nyahtanda "RTOSDemo_bsp" dan periksa BSP baru yang baru kami buat.

Langkah 8: Pengubahsuaian Kod FreeRTOS

Kod yang kami sediakan dapat dipisahkan menjadi 7 fail yang berbeza. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h dan iic_imu.h. Kod di iic_main_thread.c telah disesuaikan dari perpustakaan Kris Winer, yang boleh didapati di sini. Kami terutamanya mengubah kodnya untuk memasukkan tugas dan membuatnya berfungsi dengan papan Zybo. Kami juga menambahkan fungsi untuk mengira pembetulan orientasi kamera. Kami telah meninggalkan beberapa pernyataan cetak yang berguna untuk penyahpepijatan. Sebilangan besar dari mereka dikomentari tetapi jika anda merasa memerlukannya, anda boleh memberikan komen.

  1. Cara termudah untuk mengubah fail main.c adalah dengan mengganti kod dengan kod yang disalin dari fail main.c yang disertakan.
  2. Untuk membuat fail baru, klik kanan pada folder src di bawah RTOSDemo dan pilih C Source File. Namakan fail ini "iic_main_thread.c".
  3. Salin kod dari "iic_main_thread.c" yang disertakan dan tampalkannya dalam fail yang baru anda buat.
  4. Ulangi langkah 2 dan 3 dengan baki fail.
  5. memerlukan arahan pautan dalam gcc. Untuk menambahkan ini ke jalan binaan anda klik kanan pada RTOSDemo dan pilih "C / C ++ Build Settings".
  6. Tetingkap baru akan dibuka. Navigasi ke ARM v7 gcc linker-> Perpustakaan. Pilih fail tambah kecil di sudut kanan atas dan taipkan "m". Ini akan merangkumi perpustakaan matematik dalam projek.
  7. Bina projek dengan Ctrl + B untuk mengesahkan semuanya berfungsi. Periksa amaran yang dihasilkan tetapi anda mungkin dapat mengabaikannya.
  8. Terdapat beberapa tempat yang memerlukan pengubahsuaian, terutamanya penolakan magnet lokasi semasa anda. Kami akan menerangkan bagaimana mengubahnya di bahagian penentukuran tutorial.

Langkah 9: Percetakan 3D untuk Penstabil

Percetakan 3D untuk Penstabil
Percetakan 3D untuk Penstabil

Anda perlu mencetak 3D beberapa bahagian untuk projek ini. Mungkin ada yang boleh membeli bahagian yang mempunyai ukuran / ukuran yang serupa dengan bahagian yang dicetak kami.

  1. Gunakan fail yang disediakan untuk mencetak lengan dan pendakap untuk GoPro.
  2. Anda perlu menambahkan perancah ke fail.stl.
  3. Potong / bersihkan bahagian perancah yang berlebihan setelah dicetak.
  4. Anda boleh mengganti dowel kayu dengan bahagian bercetak 3D jika anda mahu.

Langkah 10: Menyusun Bahagian

Menyusun Bahagian
Menyusun Bahagian

Ini adalah beberapa bahagian untuk memasang penstabil. Kurungan yang dibeli dilengkapi dengan 4 skru penoreh sendiri dan 4 baut dengan mur. Oleh kerana terdapat 3 servo, salah satu tanduk servo perlu diketuk terlebih dahulu untuk membolehkan 2 baut masuk.

  1. Solder 8 pin ke pelarian IMU, 4 di setiap sisi.
  2. IMU dilampirkan pada pendakap tahan cetak 3D untuk GoPro di tengah-tengah pendakap.
  3. Orientasikan pendakap sehingga lubang pemasangan servo berada di sebelah kiri anda. Letakkan IMU di tepi paling dekat dengan anda, dengan pin tergantung di tepi. Kemudian, letakkan pelekap GoPro di atas IMU, tempelkan IMU dan pelekap di tempat pada pendakap.
  4. Pasang HS-5485HB ke braket servo yang disatukan ke dalam lengan cetak 3D.
  5. Pasang braket GoPro ke servo yang dilekatkan pada lengan, pastikan servo diatur sehingga berada di tengah-tengah jarak gerakannya.
  6. Seterusnya, pasangkan servo HS-5685MH ke braket servo. Kemudian ketuk tanduk servo dengan salah satu skru. Sekarang pasangkan servo ke bahagian bawah braket servo terakhir.
  7. Sekarang pasangkan servo terakhir ke braket yang servo HS-5685MH diskrukan. Kemudian pasangkan lengan ke servo ini, pastikan lengannya tersekat sehingga boleh bergerak 90 darjah setiap arah.
  8. Untuk menyelesaikan pembinaan gimbal, tambahkan sepotong kecil dowel kayu untuk menghubungkan antara pendakap GoPro dan lengan cetak 3D. Anda kini telah memasang penstabil.
  9. Akhir sekali, anda boleh menambah pemegang yang disambungkan ke pendakap servo bawah.

Langkah 11: Menyambungkan Zybo ke Stabilizer

Menyambungkan Zybo ke Stabilizer
Menyambungkan Zybo ke Stabilizer

Terdapat beberapa perkara yang perlu diberi perhatian semasa melakukan ini. Anda ingin memastikan bahawa 5V dari bekalan kuasa tidak pernah masuk ke papan Zybo, kerana ini akan menyebabkan masalah pada papan. Pastikan untuk memeriksa semula jumper anda untuk mengesahkan tidak ada wayar yang ditukar.

  1. Untuk memasang Zybo ke penstabil, anda memerlukan 15 jumper lelaki hingga lelaki dan 4 jumper lelaki ke wanita.
  2. Pertama, sambungkan dua jumper ke bekalan kuasa 5V anda di sepanjang + dan - landasan papan roti. Ini akan memberi kuasa kepada servo.
  3. Kemudian, sambungkan 3 pasang pelompat ke rel + dan - landasan roti. Ini akan menjadi kekuatan untuk setiap servo.
  4. Pasang hujung pelompat + dan - yang lain ke dalam setiap servo.
  5. Sambungkan pelompat antara - rel papan roti dan salah satu pin GND pada Zybo JE Pmod (Lihat gambar Langkah 5). Ini akan mewujudkan persamaan antara papan Zybo dan bekalan kuasa.
  6. Seterusnya sambungkan wayar isyarat ke pin 1, pin 2, dan pin 3 dari JE Pmod. Pin 1 peta ke servo bawah, pin 2 peta ke servo di hujung lengan, dan pin 3 peta ke servo tengah.
  7. Pasang 4 wayar wanita ke pin GND, VDD, SDA dan SCL pelarian IMU. GND dan VDD pasangkan ke GND dan 3V3 pada pin JF. Pasangkan pin SDA ke pin 8 dan SCL ke pin 7 di JF (Lihat gambar Langkah 5).
  8. Akhir sekali, sambungkan komputer ke papan menggunakan kabel usb mikro. Ini akan membolehkan komunikasi uart dan membolehkan anda memprogram papan Zybo.

Langkah 12: Pembetulan Utara Benar

Pembetulan Utara Benar
Pembetulan Utara Benar

Penentukuran magnetometer dalam IMU adalah penting untuk operasi peranti yang betul. Penolakan magnetik, yang membetulkan utara utara ke utara yang benar.

  1. Untuk membetulkan perbezaan dari magnetik dan utara yang benar, anda perlu menggunakan gabungan dua perkhidmatan, Peta Google dan kalkulator medan magnet NOAA.
  2. Gunakan Peta Google untuk mencari garis lintang dan garis bujur lokasi semasa anda.
  3. Ambil garis bujur dan garis lintang semasa anda dan pasangkannya ke kalkulator medan magnet.
  4. Apa yang dikembalikan adalah deklinasi magnetik. Masukkan pengiraan ini ke dalam kod pada baris 378 "iic_main_thread.c". Sekiranya penurunan anda adalah timur, tolak dari nilai yaw, jika barat kemudian tambahkan ke nilai yaw.

* gambar diambil dari panduan penyambungan MPU 9250 Sparkfun, yang terdapat di sini.

Langkah 13: Menjalankan Program

Menjalankan Program
Menjalankan Program

Momen yang anda nantikan! Bahagian terbaik dalam projek ini adalah berfungsi. Satu masalah yang kita perhatikan ialah terdapat perubahan dari nilai yang dilaporkan dari IMU. Penapis lorong rendah dapat membantu memperbaiki arus ini, dan mempermainkan magnetometer, percepatan dan kalibrasi giro juga akan membantu membetulkan arus ini.

  1. Pertama, bina semua di SDK, ini dapat dilakukan dengan menekan Ctrl + B.
  2. Pastikan bekalan kuasa dihidupkan dan ditetapkan ke 5V. Periksa semula bahawa semua wayar menuju ke tempat yang betul.
  3. Kemudian, untuk menjalankan program, tekan segitiga hijau di bahagian atas bar tugas.
  4. Semasa program dijalankan, servos akan diset semula ke kedudukan 0 mereka, jadi bersiaplah untuk rig bergerak. Setelah program dimulakan, servo kemudian akan kembali ke kedudukan 90 darjah mereka.
  5. Fungsi penentukuran magnetometer akan berjalan dan arahan akan dicetak ke terminal UART, yang boleh anda sambungkan melalui monitor bersiri seperti 'putty' atau monitor bersiri yang disediakan dalam SDK.
  6. Kalibrasi akan membuatkan anda menggerakkan peranti dalam angka 8 selama sekitar 10 saat. Anda boleh membuang langkah ini dengan memberi komen pada baris 273 "iic_main_thread.c". Sekiranya anda memberi komen, anda perlu melepaskan baris 323 - 325 "iic_main_thread.c". Nilai-nilai ini pada mulanya dikumpulkan dari penentukuran magnetometer di atas dan kemudian dipasang sebagai nilai.
  7. Selepas penentukuran, kod penstabilan akan dimulakan dan peranti akan memastikan kamera stabil.

Disyorkan: