Mündəricat:

Əl Kamera Stabilizatoru: 13 Addım (Şəkillərlə birlikdə)
Əl Kamera Stabilizatoru: 13 Addım (Şəkillərlə birlikdə)

Video: Əl Kamera Stabilizatoru: 13 Addım (Şəkillərlə birlikdə)

Video: Əl Kamera Stabilizatoru: 13 Addım (Şəkillərlə birlikdə)
Video: WhatsApp-ın bu hiyləsini bilirsən? 😎 2024, Iyul
Anonim
Əl Kamera Stabilizatoru
Əl Kamera Stabilizatoru

Giriş

Bu, Digilent Zybo Zynq-7000 İnkişaf etdirmə lövhəsindən istifadə edərək GoPro üçün 3 eksenli bir kamera sabitləşdirmə qurğusu yaratmaq üçün bir bələdçidir. Bu layihə CPE Real-Time Əməliyyat Sistemləri sinfi (CPE 439) üçün hazırlanmışdır. Stabilizator, kameranın səviyyəsini qorumaq üçün istifadəçinin hərəkətini düzəltmək üçün üç servo və IMU istifadə edir.

Layihə üçün lazım olan hissələr

  • Digilent Zybo Zynq-7000 İnkişaf Lövhəsi
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servosu (180 dərəcə hərəkət və ya 90 ilə 180 dərəcə arasında bir proqram satın alın)
  • 1 HiTec HS-5685MH Servo (180 dərəcə hərəkət və ya 90 ilə 180 dərəcə arasında bir proqram satın alın)
  • 2 Standart Servo Mötərizəsi
  • 1 Çörək lövhəsi
  • 15 kişidən kişiyə keçid telləri
  • 4 kişi-dişi tullanan tel
  • İsti yapışqan
  • Tutmaq və ya tutmaq
  • 5 mm diametrli taxta dübel
  • GoPro və ya digər kamera və montaj avadanlığı
  • 5V gücündə enerji təchizatı.
  • 3D printerə giriş

Addım 1: Vivado Hardware Setup

Vivado Avadanlıq Quraşdırması
Vivado Avadanlıq Quraşdırması

Layihə üçün əsas blok dizaynını yaratmağa başlayaq.

  1. Vivado 2016.2 -ni açın, "Yeni Layihə Yarat" simgesini basın və "İrəli>" düyməsini basın.
  2. Layihənizi adlandırın və "İrəli>" düyməsini basın.
  3. RTL layihəsini seçin və "Sonrakı>" düyməsini basın.
  4. Axtarış çubuğuna xc7z010clg400-1 yazın və sonra hissəni seçin və "Sonrakı>" və "Bitir" düymələrini vurun.

Addım 2: Blok Dizaynının Qurulması

İndi Zynq IP Blokunu əlavə edərək quraraq blok dizaynını yaratmağa başlayacağıq.

  1. Sol paneldə, IP İnteqratoru altında "Blok Dizaynı Yarat" ı və sonra "OK" düyməsini basın.
  2. "Diaqram" sekmesini sağ vurun və "IP əlavə et …" seçin.
  3. "ZYNQ7 Qenerasiya Sistemi" yazın və seçimi basın.
  4. Görünən Zynq blokuna iki dəfə vurun.
  5. "XPS Ayarlarını İdxal et" düyməsini vurun və təqdim olunan "ZYBO_zynq_def.xml" faylını idxal edin.
  6. "MIO Konfiqurasiyası" na gedin və "Tətbiq Prosessor Birimi" ni seçin və Timer 0 və Watchdog taymerlərini aktiv edin.
  7. Eyni sekmədə, "I/O Periferik Cihazları" altında ENET 0 seçin (və açılan menyunu "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0 olaraq dəyişdirin.
  8. "GPIO" altında GPIO MIO, ENET Sıfırlama, USB Sıfırlama və I2C Sıfırlamanı yoxlayın.
  9. İndi "Saat Konfiqurasiyası" na gedin. PL Fabric Clocks altında FCLK_CLK0 seçin. Sonra, "OK" düyməsini basın.

Addım 3: Xüsusi PWM IP Bloku yaradın

Bu IP bloku, lövhəyə servoların hərəkətini idarə etmək üçün PWM siqnalını göndərməyə imkan verir. Əsər, burada tapılan Digitronix Nepal təlimatına əsaslanaraq hazırlanmışdır. Saatı yavaşlatmaq üçün məntiq əlavə edildi, beləliklə nəbz düzgün sürətlə çıxdı. Blok 0-dan 180-ə qədər bir rəqəm alır və 750-2150 usec arasında bir nəbzə çevirir.

  1. İndi, sol üst küncün yaxınlığındakı Alətlər sekmesinin altında "IP Yarat və Paketlə …" düyməsini basın və Sonrakı düyməsini vurun.
  2. Sonra "Yeni AXI4 ətraf qurğusu yaradın" seçin və Sonrakı düyməsini basın.
  3. PWM IP blokunuza bir ad verin (buna pwm_core adını verdik) və Next düyməsini basın və sonra növbəti səhifədə Next düyməsini basın.
  4. İndi "IP Düzenle" düyməsini basın və Bitir vurun. Bu, pwm blokunu redaktə etmək üçün yeni bir pəncərə açacaq.
  5. "Mənbələr" sekmesinde və "Dizayn Mənbələri" altında 'pwm_core_v1_0' (pwm_core adınızla əvəz edin) genişləndirin və görünən faylı açın.
  6. Layihənin altındakı zip faylına 'pwm_core_v1_0_S00_AXI.v' altında verilən kodu kopyalayın və yapışdırın. Ctrl + Shift + R və ip bloku üçün 'pwm_core' sözünü adınızla əvəz edin.
  7. Sonra 'adı _v1_0' açın və 'pwm_core_v1_0.v' faylında göstərilən kodu kopyalayın. Ctrl + Shift + R və 'pwm_core' adını adla əvəz edin.
  8. İndi 'Paket IP - adı' sekmesine gedin və "Özelleştirme Parametrləri" ni seçin.
  9. Bu sekmədə yuxarıda əlaqəli mətni olan sarı bir çubuq olacaq. Bunu seçin və "Gizli Parametrlər" qutuda görünəcək.
  10. İndi "Özelleştirme GUI" -yə gedin və Pwm Counter Max üzərinə sağ vurun "Parametrini Düzenle …" seçin.
  11. "Özelleştirme GUI -də Görünür" və "Aralığı göstərin" qutularını yoxlayın.
  12. "Növ:" açılan menyusunu tam ədəd aralığı olaraq dəyişdirin və minimumu 0 və maksimumu 65535 olaraq təyin edin və "Aralığı göstər" qutusunu yoxlayın. İndi OK düyməsini basın.
  13. Pwm Counter Max -ı 'Səhifə 0' ağacının altına sürükləyin. İndi "Gözdən keçir və Paketlə" bölməsinə gedin və "Yenidən Paket IP" düyməsini basın.

Addım 4: Dizayna PWM IP Bloku əlavə edin

PWM IP Blokunu Dizayna əlavə edin
PWM IP Blokunu Dizayna əlavə edin

İstifadəçinin PWM IP blokuna prosessor vasitəsilə daxil olmasına icazə vermək üçün blok dizaynına IP bloku əlavə edəcəyik.

  1. Diaqram sekmesini sağ vurun və "IP Ayarları …" düyməsini basın. "Depo meneceri" sekmesine keçin.
  2. Yaşıl artı düyməsini basın və seçin. İndi Fayl menecerində ip_repo tapın və bunu layihəyə əlavə edin. Sonra vurun Tətbiq et sonra OK.
  3. Diaqram sekmesinde sağ basın və "IP əlavə et …" düyməsini basın. PWM IP blok adınızı yazın və seçin.
  4. Ekranın yuxarısında yaşıl bir çubuq olmalıdır, əvvəlcə "Bağlantı Otomasyonunu Çalıştır" seçin və OK düyməsini basın. Sonra "Blok Avtomatlaşdırmasını Çalışdır" düyməsini və OK düyməsini basın.
  5. PWM blokunu iki dəfə vurun və Pwm Counter Max -ı 128 -dən 1024 -ə dəyişdirin.
  6. Siçan imlecinizi PWM blokundakı PWM0 üzərinə gətirin. Etdiyiniz zaman görünən kiçik bir qələm olmalıdır. Sağ vurun və "Liman yaradın …" seçin və bir pəncərə açıldıqda OK düyməsini basın. Bu, siqnalın ötürülməsi üçün xarici bir port yaradır.
  7. PWM1 və PWM2 üçün də 6 -cı addımı təkrarlayın.
  8. Kenar çubuğunda kiçik dairəvi cüt ox işarəsini tapın və üzərinə vurun. Layihəni yenidən canlandıracaq və blok dizaynınız yuxarıdakı şəklə bənzəməlidir.

Addım 5: HDL Sarıcıyı konfiqurasiya edin və Məhdudiyyətlər Faylını Qurun

HDL Sarıcıyı konfiqurasiya edin və Məhdudiyyətlər Faylını Qurun
HDL Sarıcıyı konfiqurasiya edin və Məhdudiyyətlər Faylını Qurun

İndi Blok Dizaynımız üçün Yüksək Səviyyə Dizaynı yaradacağıq və sonra PWM0, PWM1 və PWM2 -ni Zybo lövhəsindəki Pmod sancaqlarına uyğunlaşdıracağıq.

  1. "Mənbələr" sekmesine keçin. "Dizayn Mənbələri" altından blok dizayn sənədinizə sağ vurun və "HDL Sarıcı Yarat …" düyməsini basın. "İstifadəçi düzəlişlərinə icazə vermək üçün yaradılan sarmağı kopyalayın" seçin və OK düyməsini basın. Bu, yaratdığımız Blok Dizaynı üçün Yüksək Səviyyə Dizaynı yaradır.
  2. Çıxaracağımız Pmod JE -dir.
  3. Faylın altında "Mənbə əlavə et …" seçin və "Məhdudiyyətlər əlavə et və ya yaradın" seçin və İrəli düyməsini basın.
  4. Fayl əlavə et düyməsini vurun və daxil olan "ZYBO_Master.xdc" faylını seçin. Bu fayla baxsanız "## Pmod Header JE" altındakı "set_property" sətirləri istisna olmaqla hər şeyin şərh edilmədiyini görəcəksiniz. PWM0, PWM1 və PWM2 -nin bu sətirlərin arqumentləri olduğunu görəcəksiniz. JE Pmodun Pin 1, Pin 2 və Pin 3 üçün xəritələyirlər.

Addım 6: Bitstream yaratmaq

İşə davam etməzdən əvvəl, hardware dizaynının SDK -ya ixrac edilməsi üçün bit axını yaratmalıyıq.

  1. Kenar çubuğunda "Proqram və Debug" bölməsində "Bitstream Yarat" ı seçin. Bu sintezi, sonra həyata keçirməni və sonra dizayn üçün bit axını yaradacaq.
  2. Açılan bütün səhvləri düzəldin, lakin ümumiyyətlə xəbərdarlıqlara məhəl qoyula bilməz.
  3. Fayl-> SDK-nı işə salın və OK düyməsini basın. Bu, Xilinx SDK -nı açacaq.

Addım 7: SDK -da Layihənin Qurulması

Bu hissə bir az incidir. Şübhə olduqda yeni BSP hazırlayın və köhnəsini dəyişdirin. Bu, bir çox ayıklama vaxtına qənaət etdi.

  1. FreeRTOS -un ən son versiyasını buradan yükləməklə başlayın.
  2. Yükləməkdən hər şeyi çıxarın və FreeRTOS-u SDK-ya Fayl-> İdxal et və "Ümumi" altında "İş Sahəsinə Mövcud Layihələr" düyməsini və sonra Sonrakı düyməsini vurun.
  3. FreeRTOS qovluğunda "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" bölməsinə keçin. Yalnız bu yerdən "RTOSDemo" idxal edin.
  4. İndi File-> New Board Support Package düyməsini basaraq Board Support Package (BSP) yaradın.
  5. "Ps7_cortexa9_0" seçin və "lwip141" yoxlayın və OK düyməsini basın.
  6. RTOSDemo mavi qovluğuna sağ vurun və "Layihə İstinadları" nı seçin.
  7. "RTOSDemo_bsp" işarəsini silin və yeni yaratdığımız BSP -ni yoxlayın.

Addım 8: FreeRTOS Kod Dəyişiklikləri

Təmin etdiyimiz kodu 7 fərqli fayla ayırmaq olar. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h və iic_imu.h. İic_main_thread.c -dəki kod Kris Winer kitabxanasından uyğunlaşdırılmışdır və burada tapa bilərsiniz. Əsasən onun kodunu vəzifələri birləşdirmək və Zybo lövhəsi ilə işləmək üçün dəyişdirdik. Kameranın istiqamətinin düzəldilməsini hesablamaq üçün funksiyalar da əlavə etdik. Hata ayıklama üçün faydalı olan bir neçə çap ifadəsi buraxdıq. Əksəriyyəti şərh olunur, amma ehtiyac hiss edirsinizsə, bunları şərh edə bilərsiniz.

  1. Main.c faylını dəyişdirməyin ən asan yolu kodu daxil etdiyimiz main.c faylımızdan kopyalanan kodla əvəz etməkdir.
  2. Yeni bir fayl yaratmaq üçün RTOSDemo altındakı src qovluğuna sağ vurun və C Mənbə Faylını seçin. Bu faylı "iic_main_thread.c" adlandırın.
  3. Daxil olan "iic_main_thread.c" kodunu kopyalayın və yeni yaradılmış faylınıza yapışdırın.
  4. Qalan fayllarla 2 və 3 -cü addımları təkrarlayın.
  5. gcc -də əlaqələndirmə təlimatı tələb olunur. Bunu qurma yoluna əlavə etmək üçün RTOSDemo üzərinə sağ vurun və "C/C ++ Quraşdırma Ayarları" nı seçin.
  6. Yeni bir pəncərə açılacaq. ARM v7 gcc linker-> Kitabxanalara gedin. Sağ üst küncdəki kiçik əlavə faylını seçin və "m" yazın. Bu layihəyə riyaziyyat kitabxanası daxil olacaq.
  7. Hər şeyin işlədiyini təsdiqləmək üçün Ctrl + B ilə layihə yaradın. Yaranan xəbərdarlıqları yoxlayın, ancaq onlara məhəl qoymaya bilərsiniz.
  8. Dəyişikliyə ehtiyacı olan bir neçə yer var, əsasən mövcud yerinizin maqnit meyli. Bunu necə dəyişdirəcəyimizi təlimatın kalibrləmə hissəsində izah edəcəyik.

Addım 9: Stabilizator üçün 3D Çap

Stabilizator üçün 3D Çap
Stabilizator üçün 3D Çap

Bu layihə üçün bir neçə hissəni 3D çap etməlisiniz. Çox güman ki, çap olunmuş hissələrimizə bənzər ölçüdə/ölçüdə olan hissələri satın almaq olar.

  1. GoPro üçün qolu və tutma mötərizəsini çap etmək üçün verilən faylları istifadə edin.
  2. . Stl faylına iskele əlavə etməlisiniz.
  3. Çap edildikdən sonra artıq iskele hissələrini kəsin/təmizləyin.
  4. İstəyirsinizsə taxta dübeli 3D çaplı bir parça ilə əvəz edə bilərsiniz.

Addım 10: Parçaların yığılması

Parçaların yığılması
Parçaların yığılması

Stabilizatoru yığmaq üçün bir neçə hissədən ibarətdir. Satın alınan mötərizələr 4 özünü vurma vintləri və qoz-fındıqlı 4 bolt ilə gəlir. 3 servo olduğundan, 2 boltun içəri girməsi üçün servo buynuzlarından birini əvvəlcədən vurmaq lazımdır.

  1. IMU qırıcısına hər tərəfdən 4 ədəd 8 pin bağlayın.
  2. IMU, mötərizənin ortasında GoPro üçün 3D çap tutma braketinə əlavə olunur.
  3. Mötərizəni servo montaj deliklərinin sol tərəfinizdə olması üçün istiqamətləndirin. Sancaqlar kənarından asılı olaraq IMU'yu sizə ən yaxın kənarda yerləşdirin. Daha sonra, IMP və montajı mötərizədə yerində yapışdıraraq, GoPro montajını IMU -nun üstünə qoyun.
  4. HS-5485HB-ni 3D çap qoluna inteqrasiya olunmuş servo braketə bağlayın.
  5. GoPro braketini qolun bərkidilmiş servosuna vidalayın, servonun hərəkət aralığının ortasında olacağına əmin olun.
  6. Sonra, HS-5685MH servoyu servo mötərizəyə bağlayın. Sonra vintlərdən biri ilə servo buynuzuna vurun. İndi servonu son servo mötərizənin altına yapışdırın.
  7. İndi son servonu HS-5685MH servonun vidalandığı mötərizəyə bağlayın. Sonra qolu bu servoya vidalayın, qolun vidalandığından əmin olun ki, hər tərəf 90 dərəcə hərəkət edə bilsin.
  8. Gimbalın inşasını başa çatdırmaq üçün GoPro mötərizəsi ilə 3D çaplı qolu birləşdirmək üçün taxta dübelin kiçik bir hissəsini əlavə edin. İndi stabilizatoru yığdınız.
  9. Nəhayət, alt servo mötərizəyə bağlı bir qolu əlavə edə bilərsiniz.

Addım 11: Zybo'yu Stabilizatora bağlayın

Zybo'yu Stabilizatora bağlayın
Zybo'yu Stabilizatora bağlayın

Bunu edərkən diqqət etməli olduğunuz bir neçə şey var. Enerji təchizatından gələn 5V -un heç vaxt Zybo lövhəsinə girmədiyinə əmin olmaq istəyirsiniz, çünki bu, lövhədə problemlərə səbəb ola bilər. Kabellərin dəyişdirilmədiyini təsdiqləmək üçün atlayıcılarınızı iki dəfə yoxladığınızdan əmin olun.

  1. Zybo'yu stabilizatora bağlamaq üçün 15 kişi kişi atlayıcısına və 4 kişi dişi tullanan atlayıcıya ehtiyacınız olacaq.
  2. Əvvəlcə çörək taxtasının + və - rayları boyunca 5V enerji təchizatına iki keçid bağlayın. Bunlar servolara enerji verəcək.
  3. Sonra çörək taxtasının + və - raylarına 3 cüt atlayıcını bağlayın. Bunlar hər bir servo üçün güc olacaq.
  4. + Və - atlayıcıların digər ucunu hər bir servoya bağlayın.
  5. Çörək taxtasının dəmir yolu ilə Zybo JE Pmoddakı GND pinlərindən biri arasında bir tullanan bağlayın (5 -ci addıma baxın). Bu, Zybo lövhəsi ilə enerji təchizatı arasında ümumi bir zəmin yaradacaq.
  6. Sonra JE Pmodun 1, 2 və 3 pinlərinə bir siqnal teli bağlayın. 1 xəritəni alt servoya, 2 xəritəni qolun ucundakı servoya və 3 xəritəni orta servoya bağlayın.
  7. 4 qadın telini IMU kopmasının GND, VDD, SDA və SCL pinlərinə bağlayın. GND və VDD, JF pinlərində GND və 3V3 -ə qoşulur. SDA pinini 8 -ci pinə və SCL -ni JF -də 7 -ci pinə qoşun (5 -ci addıma baxın).
  8. Nəhayət, mikro usb kabelindən istifadə edərək kompüteri lövhəyə qoşun. Bu, uart ünsiyyətinə imkan verəcək və Zybo lövhəsini proqramlaşdırmağa imkan verəcəkdir.

Addım 12: Əsl Şimal Düzəlişi

Əsl Şimal Düzəlişi
Əsl Şimal Düzəlişi

IMU -dakı maqnitölçənin kalibrlənməsi cihazın düzgün işləməsi üçün vacibdir. Maqnit şimalını həqiqi şimala düzəldən maqnit meyli.

  1. Maqnit və əsl şimal arasındakı fərqi düzəltmək üçün iki xidmətin birləşməsini istifadə etməlisiniz: Google Xəritə və NOAA -nın maqnit sahəsi kalkulyatoru.
  2. Cari yerinizin enlemini və boylamını tapmaq üçün Google Xəritələrdən istifadə edin.
  3. Cari uzunluq və enleminizi götürün və maqnit sahəsinin kalkulyatoruna qoşun.
  4. Geri qaytarılan şey maqnit əyilməsidir. Bu hesablamanı "iic_main_thread.c" nin 378 -ci sətirindəki koda daxil edin. Əgər meyliniz şərqdədirsə, yaw dəyərindən çıxın, qərbdə yaw dəyərini əlavə edin.

*şəkil Sparkfun -un MPU 9250 qoşulma bələdçisindən götürülmüşdür.

Addım 13: Proqramı işə salın

Proqramın işə salınması
Proqramın işə salınması

Gözlədiyiniz an! Layihənin ən yaxşı tərəfi onun işlədiyini görməkdir. Diqqət yetirdiyimiz bir problem, İB -dən bildirilən dəyərlərdən uzaqlaşmanın olmasıdır. Aşağı keçid filtri bu sürüşməni düzəltməyə kömək edə bilər və maqnitometr, sürətləndirmə və girro kalibrləmə ilə məşğul olmaq da bu sürüşməni düzəltməyə kömək edəcəkdir.

  1. Birincisi, hamısını SDK -da qurun, bunu Ctrl + B düymələrinə basaraq etmək olar.
  2. Enerji təchizatının açıq olduğundan və 5V -ə qoyulduğundan əmin olun. Bütün tellərin düzgün yerlərə getdiyini iki dəfə yoxlayın.
  3. Sonra proqramı işə salmaq üçün tapşırıq çubuğunun yuxarı ortasındakı yaşıl üçbucağa basın.
  4. Proqram işlədikdə, servoların hamısı 0 mövqeyinə qaytarılacaq, buna görə də qurğunun hərəkət etməsinə hazır olun. Proqram işə salındıqdan sonra servolar 90 dərəcə mövqelərinə qayıdır.
  5. Bir maqnitölçən kalibrləmə funksiyası işləyəcək və istiqamətlər 'macun' və ya SDK -da verilən serial monitor kimi serial monitor vasitəsilə qoşula biləcəyiniz UART terminalına yazılacaq.
  6. Kalibrləmə cihazı təxminən 8 saniyə ərzində rəqəm 8 -də hərəkət etdirməyinizə səbəb olacaq. "İic_main_thread.c" nin 273 -cü sətirini şərh edərək bu addımı silə bilərsiniz. Bunu şərh etsəniz, 323 - 325 "iic_main_thread.c" sətirlərini şərh etməlisiniz. Bu dəyərlər əvvəlcə yuxarıdakı maqnitometr kalibrindən toplanmış və sonra dəyərlər olaraq bağlanmışdır.
  7. Kalibrdən sonra stabilizasiya kodu işə salınacaq və cihaz kameranı sabit saxlayacaq.

Tövsiyə: