İçindekiler:

Elde Taşınabilir Kamera Sabitleyici: 13 Adım (Resimlerle)
Elde Taşınabilir Kamera Sabitleyici: 13 Adım (Resimlerle)

Video: Elde Taşınabilir Kamera Sabitleyici: 13 Adım (Resimlerle)

Video: Elde Taşınabilir Kamera Sabitleyici: 13 Adım (Resimlerle)
Video: iPhone 13'ü olan kamera ayarlarını böyle yapsın! 2024, Kasım
Anonim
Elde Taşınabilir Kamera Sabitleyici
Elde Taşınabilir Kamera Sabitleyici

Tanıtım

Bu, Digilent Zybo Zynq-7000 Geliştirme Kartı kullanan bir GoPro için 3 eksenli el tipi kamera sabitleme teçhizatı oluşturmaya yönelik bir kılavuzdur. Bu proje CPE Gerçek Zamanlı İşletim Sistemleri sınıfı (CPE 439) için geliştirilmiştir. Sabitleyici, kamera seviyesini korumak için kullanıcının hareketini düzeltmek için üç servo ve bir IMU kullanır.

Proje İçin Gerekli Parçalar

  • Digilent Zybo Zynq-7000 Geliştirme Kartı
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servo (90 ila 180 derece arasında 180 derece hareket veya program satın alın)
  • 1 HiTec HS-5685MH Servo (90 ila 180 derece arasında 180 derece hareket veya program satın alın)
  • 2 Standart Servo Braketi
  • 1 ekmek tahtası
  • 15 erkekten erkeğe atlama teli
  • 4 erkek-dişi atlama teli
  • Sıcak tutkal
  • Kavrama veya Sap
  • 5 mm çapında ahşap dübel
  • GoPro veya diğer kamera ve montaj donanımı
  • 5V çıkış verebilen güç kaynağı.
  • 3D Yazıcıya Erişim

Adım 1: Vivado Donanım Kurulumu

Vivado Donanım Kurulumu
Vivado Donanım Kurulumu

Proje için temel blok tasarımını oluşturmaya başlayalım.

  1. Vivado 2016.2'yi açın, "Yeni Proje Oluştur" simgesine tıklayın ve "İleri>"ye tıklayın.
  2. Projenize bir ad verin ve "İleri >"ye tıklayın.
  3. RTL projesini seçin ve "İleri >"ye basın.
  4. Arama çubuğuna xc7z010clg400-1 yazın ve ardından parçayı seçin ve "İleri >" ve "Son" tuşlarına basın.

Adım 2: Blok Tasarımını Ayarlama

Şimdi Zynq IP Block ekleyerek ve ayarlayarak blok tasarımını oluşturmaya başlayacağız.

  1. Sol panelde, IP Entegratörü altında, "Blok Tasarımı Oluştur"a ve ardından "Tamam"a tıklayın.
  2. "Diyagram" sekmesine sağ tıklayın ve "IP Ekle…" seçeneğini seçin.
  3. "ZYNQ7 İşleme Sistemi" yazın ve seçimi tıklayın.
  4. Karşınıza çıkan Zynq bloğuna çift tıklayın.
  5. "XPS Ayarlarını İçe Aktar"ı tıklayın ve sağlanan "ZYBO_zynq_def.xml" dosyasını içe aktarın.
  6. "MIO Yapılandırması"na gidin ve "Uygulama İşlemci Birimi"ni seçin ve Zamanlayıcı 0 ve İzleyici zamanlayıcılarını etkinleştirin.
  7. Aynı sekmede, "G/Ç Çevre Birimleri" altında, ENET 0'ı seçin (ve açılır menüyü "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0 olarak değiştirin.
  8. "GPIO" altında, GPIO MIO, ENET Sıfırlama, USB Sıfırlama ve I2C Sıfırlama'yı kontrol edin.
  9. Şimdi "Saat Yapılandırması"na gidin. PL Yapı Saatleri altında FCLK_CLK0'ı seçin. Ardından, "Tamam" ı tıklayın.

Adım 3: Özel PWM IP Bloğu Oluşturun

Bu IP bloğu, kartın servoların hareketini kontrol etmek için bir PWM sinyali göndermesine izin verir. Çalışma, büyük ölçüde burada bulunan Digitronix Nepal'in öğreticisine dayanıyordu. Saati yavaşlatmak için mantık eklendi, böylece darbe doğru oranda çıktı. Blok, 0'dan 180'e kadar bir sayı alır ve onu 750-2150 usc'den bir darbeye dönüştürür.

  1. Şimdi, sol üst köşenin yakınındaki Araçlar sekmesinin altında, "IP Oluştur ve Paketle…" seçeneğini tıklayın ve İleri'ye basın.
  2. Ardından "Yeni bir AXI4 çevre birimi oluştur"u seçin ve İleri'ye basın.
  3. PWM IP bloğunuzu adlandırın (biz buna pwm_core adını verdik) ve İleri'ye tıklayın ve ardından sonraki sayfada da İleri'ye tıklayın.
  4. Şimdi "IP Düzenle" ye tıklayın ve Bitir'e basın. Bu, pwm bloğunu düzenlemek için yeni bir pencere açacaktır.
  5. "Kaynaklar" sekmesinde ve "Tasarım Kaynakları" altında, 'pwm_core_v1_0' öğesini genişletin (pwm_core'u adınızla değiştirin) ve görünür hale gelen dosyayı açın.
  6. 'pwm_core_v1_0_S00_AXI.v' altında verilen kodu kopyalayıp projenin altındaki zip dosyasına yapıştırın. Ctrl + Shift + R ve 'pwm_core'u ip bloğu için adınızla değiştirin.
  7. Ardından ' name _v1_0' dosyasını açın ve sağlanan kodu 'pwm_core_v1_0.v' dosyasına kopyalayın. Ctrl + Shift + R ve 'pwm_core'u name ile değiştirin.
  8. Şimdi 'Paket IP - adı' sekmesine gidin ve "Özelleştirme Parametreleri"ni seçin.
  9. Bu sekmede, üstte bağlantılı metin içeren sarı bir çubuk olacaktır. Bunu seçin, kutuda "Gizli Parametreler" görünecektir.
  10. Şimdi "Özelleştirme GUI"sine gidin ve Pwm Counter Max'e sağ tıklayın "Parametreyi Düzenle…"yi seçin.
  11. "Özelleştirme GUI'sinde Görünür" ve "Aralığı Belirt" kutularını işaretleyin.
  12. "Tür:" açılır menüsünü Tamsayı aralığı olarak değiştirin ve minimumu 0 ve maksimumu 65535 olarak ayarlayın ve "Aralığı Göster" kutusunu işaretleyin. Şimdi Tamam'ı tıklayın.
  13. Pwm Counter Max'i 'Sayfa 0' Ağacının altına sürükleyin. Şimdi "İncele ve Paketle"ye gidin ve "IP'yi Yeniden Paketle" düğmesini tıklayın.

Adım 4: Tasarıma PWM IP Bloğu Ekleyin

Tasarıma PWM IP Bloğu Ekleyin
Tasarıma PWM IP Bloğu Ekleyin

Kullanıcının işlemci üzerinden PWM IP bloğuna erişmesine izin vermek için IP bloğunu blok tasarımına ekleyeceğiz.

  1. Diyagram sekmesine sağ tıklayın ve "IP Ayarları…" seçeneğine tıklayın. "Depo Yöneticisi" sekmesine gidin.
  2. Yeşil artı düğmesine tıklayın ve seçin. Şimdi Dosya Yöneticisinde ip_repo'yu bulun ve projeye ekleyin. Ardından Uygula'ya ve ardından Tamam'a basın.
  3. Diyagram sekmesine sağ tıklayın ve "IP Ekle…" seçeneğine tıklayın. PWM IP blok adınızı yazın ve seçin.
  4. Ekranın üst kısmında yeşil bir çubuk olmalı, önce "Bağlantı Otomasyonunu Çalıştır" seçeneğini seçin ve Tamam'a tıklayın. Ardından "Blok Otomasyonunu Çalıştır" ı tıklayın ve Tamam'ı tıklayın.
  5. PWM bloğuna çift tıklayın ve Pwm Counter Max'i 128'den 1024'e değiştirin.
  6. Fare işaretçinizi PWM bloğundaki PWM0'ın üzerine getirin. Yaptığınız zaman ortaya çıkan küçük bir kalem olmalıdır. Sağ tıklayın ve "Bağlantı Noktası Oluştur …" seçeneğini seçin ve bir pencere açıldığında Tamam'ı tıklayın. Bu, sinyalin iletilmesi için harici bir bağlantı noktası oluşturur.
  7. PWM1 ve PWM2 için de 6. adımı tekrarlayın.
  8. Kenar çubuğundaki küçük dairesel çift ok simgesini bulun ve tıklayın. Düzeni yeniden oluşturacak ve blok tasarımınız yukarıdaki resimdeki gibi görünmelidir.

Adım 5: HDL Wrapper'ı Yapılandırın ve Kısıtlamalar Dosyasını Ayarlayın

HDL Wrapper'ı Yapılandırın ve Kısıtlamalar Dosyasını Ayarlayın
HDL Wrapper'ı Yapılandırın ve Kısıtlamalar Dosyasını Ayarlayın

Şimdi Blok Tasarımımız için Yüksek Seviye Tasarımı oluşturacağız ve ardından PWM0, PWM1 ve PWM2'yi Zybo kartındaki Pmod pinlerine eşleyeceğiz.

  1. "Kaynaklar" sekmesine gidin. "Tasarım Kaynakları" altındaki blok tasarım dosyanıza sağ tıklayın ve "HDL Sarıcı Oluştur…" seçeneğine tıklayın. "Kullanıcı düzenlemelerine izin vermek için oluşturulan sarmalayıcıyı kopyala"yı seçin ve Tamam'ı tıklayın. Bu, oluşturduğumuz Blok Tasarımı için Üst Düzey Tasarımı oluşturur.
  2. Çıkış yapacağımız Pmod, JE'dir.
  3. Dosya altında, "Kaynak Ekle…"yi seçin ve "Kısıtlama ekle veya oluştur"u seçin ve İleri'ye tıklayın.
  4. Dosya ekle'yi tıklayın ve dahil edilen "ZYBO_Master.xdc" dosyasını seçin. Bu dosyaya bakarsanız, "##Pmod Header JE" altındaki altı "set_property" satırı dışında her şeyin yorumsuz olduğunu fark edeceksiniz. Bu satırların argümanlarının PWM0, PWM1 ve PWM2 olduğunu fark edeceksiniz. JE Pmod'un Pin 1, Pin 2 ve Pin 3 ile eşleşirler.

6. Adım: Bit Akışı Oluşturma

Devam etmeden önce donanım tasarımının SDK'ya aktarılması için bit akışını oluşturmamız gerekiyor.

  1. Kenar çubuğundaki "Program ve Hata Ayıklama" altında, "Bit Akışı Oluştur"u seçin. Bu, sentezi, ardından uygulamayı çalıştıracak ve ardından tasarım için bit akışını oluşturacaktır.
  2. Açılan hataları düzeltin, ancak uyarılar genellikle göz ardı edilebilir.
  3. Dosya->SDK Başlat'a gidin ve Tamam'a tıklayın. Bu, Xilinx SDK'yı açacaktır.

7. Adım: Projeyi SDK'da Ayarlama

Bu kısım biraz sinir bozucu olabilir. Şüphe duyduğunuzda, yeni bir BSP yapın ve eskisini değiştirin. Bu bize bir sürü hata ayıklama süresi kazandırdı.

  1. FreeRTOS'un en son sürümünü buradan indirerek başlayın.
  2. İndirme işleminden her şeyi çıkarın ve FreeRTOS'u Dosya->İçe Aktar'ı tıklatarak SDK'ya aktarın ve "Genel" altında "Çalışma Alanına Mevcut Projeler"i ve ardından İleri'yi tıklayın.
  3. FreeRTOS klasörü içinde "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702"ye gidin. "RTOSDemo"yu yalnızca bu konumdan içe aktarın.
  4. Şimdi Dosya->Yeni Pano Destek Paketi'ne tıklayarak bir Pano Destek Paketi (BSP) oluşturun.
  5. "ps7_cortexa9_0" seçeneğini seçin ve "lwip141" seçeneğini işaretleyin ve Tamam'a tıklayın.
  6. RTOSDemo mavi klasörüne sağ tıklayın ve "Proje Referansları"nı seçin.
  7. "RTOSDemo_bsp" seçeneğinin işaretini kaldırın ve yeni oluşturduğumuz yeni BSP'yi kontrol edin.

8. Adım: FreeRTOS Kod Değişiklikleri

Verdiğimiz kod 7 farklı dosyaya ayrılabilir. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h ve iic_imu.h. iic_main_thread.c'deki kod, burada bulunabilecek Kris Winer'ın kitaplığından uyarlanmıştır. Esas olarak onun kodunu, görevleri birleştirmek ve Zybo panosu ile çalışmasını sağlamak için dönüştürdük. Ayrıca kameranın oryantasyon düzeltmesini hesaplamak için fonksiyonlar ekledik. Hata ayıklama için yararlı olan birkaç print deyimi bıraktık. Çoğu yorumlanır, ancak ihtiyaç duyarsanız, yorumlarını kaldırabilirsiniz.

  1. main.c dosyasını değiştirmenin en kolay yolu, kodu dahil ettiğimiz main.c dosyamızdan kopyalanan kodla değiştirmektir.
  2. Yeni bir dosya oluşturmak için RTOSDemo altındaki src klasörüne sağ tıklayın ve C Source File'ı seçin. Bu dosyaya "iic_main_thread.c" adını verin.
  3. Dahil edilen "iic_main_thread.c"den kodu kopyalayın ve yeni oluşturduğunuz dosyaya yapıştırın.
  4. Kalan dosyalarla 2. ve 3. adımları tekrarlayın.
  5. gcc'de bir bağlantı talimatı gerektirir. Bunu derleme yoluna eklemek için RTOSDemo'ya sağ tıklayın ve "C/C++ Yapı Ayarları"nı seçin.
  6. Yeni bir pencere açılacaktır. ARM v7 gcc linker->Libraries'e gidin. Sağ üst köşedeki küçük ekleme dosyasını seçin ve "m" yazın. Bu, projedeki matematik kitaplığını içerecektir.
  7. Her şeyin çalıştığını doğrulamak için Ctrl + B ile proje oluşturun. Oluşturulan uyarıları kontrol edin, ancak bunları görmezden gelebilirsiniz.
  8. Modifikasyona ihtiyaç duyacak birkaç yer var, özellikle de mevcut konumunuzun manyetik sapması. Bunun nasıl değiştirileceğini öğreticinin kalibrasyon bölümünde açıklayacağız.

9. Adım: Sabitleyici için 3D Baskı

Sabitleyici için 3D Baskı
Sabitleyici için 3D Baskı

Bu proje için birkaç parçayı 3B yazdırmanız gerekiyor. Muhtemelen basılı parçalarımıza benzer boyutlara/boyutlara sahip parçalar satın alınabilir.

  1. GoPro için kolu ve tutma braketini yazdırmak için sağlanan dosyaları kullanın.
  2. .stl dosyasına iskele eklemeniz gerekir.
  3. Yazdırıldıktan sonra fazla iskele parçalarını kesin/temizleyin.
  4. Dilerseniz ahşap dübelleri 3D baskılı parça ile değiştirebilirsiniz.

Adım 10: Parçaların Birleştirilmesi

Parçaların Montajı
Parçaların Montajı

Stabilizatörü monte etmek için birkaç parça vardır. Satın alınan braketler 4 adet kendinden kılavuzlu vida ve 4 adet somunlu cıvata ile birlikte gelir. 3 servo olduğundan, 2 cıvatanın geçmesine izin vermek için servo boynuzlarından birinin önceden açılması gerekir.

  1. Her iki tarafta 4 adet olmak üzere IMU çıkışına 8 pim lehimleyin.
  2. IMU, braketin ortasındaki GoPro için 3D baskılı tutma braketine takılıdır.
  3. Braketi, servo montaj delikleri sol tarafınızda olacak şekilde yönlendirin. IMU'yu, pimler kenardan sarkacak şekilde size en yakın kenara yerleştirin. Ardından, GoPro montajını IMU'nun üstüne yerleştirin, IMU'yu ve montajı braket üzerindeki yerine yapıştırın.
  4. 3D baskılı kola entegre edilmiş servo braketine bir HS-5485HB takın.
  5. GoPro braketini kola takılı servoya vidalayın, servonun hareket aralığının ortasında olacak şekilde ayarlandığından emin olun.
  6. Ardından, HS-5685MH servoyu bir servo braketine takın. Ardından vidalardan biriyle servo kornaya dokunun. Şimdi servoyu son servo braketinin altına takın.
  7. Şimdi son servoyu HS-5685MH servonun vidalandığı brakete takın. Ardından kolu bu servoya vidalayın, her yöne 90 derece hareket edebilmesi için kolun vidalandığından emin olun.
  8. Gimbalın yapımını bitirmek için, GoPro braketi ile 3D baskılı kol arasına bağlamak için küçük bir tahta dübel parçası ekleyin. Şimdi dengeleyiciyi monte ettiniz.
  9. Son olarak, alt servo braketine bağlı bir tutamaç ekleyebilirsiniz.

Adım 11: Zybo'yu Sabitleyiciye Bağlama

Zybo'yu Sabitleyiciye Bağlama
Zybo'yu Sabitleyiciye Bağlama

Bunu yaparken dikkat edilmesi gereken birkaç şey var. Güç kaynağından gelen 5V'nin asla Zybo kartına girmediğinden emin olmak istersiniz, çünkü bu kartta sorunlara yol açacaktır. Hiçbir kablonun değiştirilmediğini doğrulamak için atlama tellerinizi iki kez kontrol ettiğinizden emin olun.

  1. Zybo'yu dengeleyiciye takmak için 15 erkekten erkeğe ve 4 erkekten dişiye jumper'a ihtiyacınız olacak.
  2. İlk olarak, devre tahtasının + ve - rayları boyunca 5V güç kaynağınıza iki jumper bağlayın. Bunlar servolara güç sağlayacaktır.
  3. Ardından, breadboard'un + ve - raylarına 3 çift jumper bağlayın. Bunlar servoların her biri için güç olacaktır.
  4. + ve - atlama tellerinin diğer ucunu servoların her birine takın.
  5. Breadboard'un - rayı ile Zybo JE Pmod üzerindeki GND pinlerinden biri arasına bir köprü bağlayın (bkz. Adım 5 resmi). Bu, Zybo kartı ile güç kaynağı arasında ortak bir zemin oluşturacaktır.
  6. Ardından JE Pmod'un pin 1, pin 2 ve pin 3'e bir sinyal kablosu bağlayın. Pim 1, alt servoya, pim 2, kolun ucundaki servoya ve pim 3, orta servoya eşlenir.
  7. 4 dişi kabloyu IMU koparmasının GND, VDD, SDA ve SCL pinlerine takın. GND ve VDD, JF pinlerindeki GND ve 3V3'e takılır. SDA pimini JF üzerindeki pim 8'e ve SCL'yi pim 7'ye takın (bkz. Adım 5 resmi).
  8. Son olarak, bir mikro usb kablosu kullanarak bilgisayarı karta bağlayın. Bu, uart iletişimine izin verecek ve Zybo kartını programlamanıza izin verecektir.

Adım 12: Gerçek Kuzey Düzeltmesi

Gerçek Kuzey Düzeltme
Gerçek Kuzey Düzeltme

IMU'daki manyetometrenin kalibrasyonu, cihazın doğru çalışması için önemlidir. Manyetik kuzeyi gerçek kuzeye düzelten manyetik sapma.

  1. Manyetik ve gerçek kuzey arasındaki farkı düzeltmek için Google Haritalar ve NOAA'nın manyetik alan hesaplayıcısı olmak üzere iki hizmetin bir kombinasyonunu kullanmanız gerekir.
  2. Mevcut konumunuzun enlem ve boylamını bulmak için Google Haritalar'ı kullanın.
  3. Mevcut boylam ve enleminizi alın ve manyetik alan hesaplayıcıya takın.
  4. Döndürülen şey manyetik sapmadır. Bu hesaplamayı "iic_main_thread.c"nin 378. satırındaki koda ekleyin. Eğiminiz doğu ise sapma değerinden çıkarın, batı ise sapma değerine ekleyin.

*fotoğraf, burada bulunan Sparkfun'un MPU 9250 bağlantı kılavuzundan alınmıştır.

Adım 13: Programı Çalıştırma

Programı Çalıştırmak
Programı Çalıştırmak

Beklediğiniz an! Projenin en iyi yanı çalıştığını görmek. Fark ettiğimiz bir sorun, IMU'dan bildirilen değerlerden sapma olmasıdır. Alçak geçiren bir filtre bu sapmayı düzeltmeye yardımcı olabilir ve manyetometre, hızlanma ve cayro kalibrasyonları ile uğraşmak da bu sapmayı düzeltmeye yardımcı olacaktır.

  1. İlk olarak, hepsini SDK'da oluşturun, bu Ctrl + B tuşlarına basılarak yapılabilir.
  2. Güç kaynağının açık olduğundan ve 5V olarak ayarlandığından emin olun. Tüm kabloların doğru yerlerine gittiğini iki kez kontrol edin.
  3. Ardından programı çalıştırmak için görev çubuğunun üst ortasındaki yeşil üçgene basın.
  4. Program çalıştığında, servoların tümü 0 konumlarına sıfırlanacak, bu nedenle teçhizatın hareket etmesine hazır olun. Program başlatıldığında, servolar 90 derecelik konumlarına geri dönecektir.
  5. Bir manyetometre kalibrasyon işlevi çalışacak ve 'macun' gibi bir seri monitör veya SDK'da sağlanan seri monitör aracılığıyla bağlanabileceğiniz UART terminaline talimatlar yazdırılacaktır.
  6. Kalibrasyon, cihazı yaklaşık 10 saniye boyunca 8 şeklinde hareket ettirmenizi sağlayacaktır. "iic_main_thread.c"nin 273. satırını yorumlayarak bu adımı kaldırabilirsiniz. Yorum yaparsanız, 323 - 325 "iic_main_thread.c" satırlarını kaldırmanız gerekir. Bu değerler başlangıçta yukarıdaki manyetometre kalibrasyonundan toplandı ve ardından değerler olarak eklendi.
  7. Kalibrasyondan sonra stabilizasyon kodu başlatılacak ve cihaz kamerayı sabit tutacaktır.

Önerilen: