Mündəricat:

Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: 5 Addım (Şəkillərlə birlikdə)
Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: 5 Addım (Şəkillərlə birlikdə)

Video: Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: 5 Addım (Şəkillərlə birlikdə)

Video: Fırlanma Eksenli Obyekt İzləmə Kamerası Sürgüsü. RoboClaw DC Motor Controller və Arduino üzərində 3D Çap və Quraşdırma: 5 Addım (Şəkillərlə birlikdə)
Video: XƏZƏRƏ DÜŞƏN UNO: ONUN ARDINCA BAKIYA KİMLƏR GƏLDİ? 2024, Iyul
Anonim
Image
Image
Hardware Design + Build + 3D Print
Hardware Design + Build + 3D Print

Fusion 360 Layihələri »

Video hazırlamaq marağımı DIY ilə birləşdirməli olduğumdan bəri bu layihə ən çox sevdiyim layihələrdən biridir. Həmişə obyekti izləmək üçün sürüşərkən kameranın ekranda hərəkət etdiyi filmlərdə o kinematoqrafik kadrları təqlid etmək istəmişəm. Bu, başqa bir 2d videoya çox maraqlı bir dərinlik təsiri əlavə edir. Hollywood vasitələrinə minlərlə dollar xərcləmədən bunu təkrarlamaq istəyərək özüm belə bir kamera sürgüsü düzəltmək qərarına gəldim.

Bütün layihə 3D çap edə biləcəyiniz hissələr üzərində qurulub və kod məşhur Arduino lövhəsində işləyir. CAD faylları və kodu kimi bütün layihə faylları aşağıda endirilə bilər.

CAD/ 3D çap sənədləri burada mövcuddur

Arduino Kod faylı burada mövcuddur

Layihə 2 dişli fırçalanmış DC mühərrikləri və Basic Micro Roboclaw Motor idarəedicisi ətrafında gedir. Bu motor idarəedicisi fırçalanmış DC mühərriklərini inanılmaz mövqe dəqiqliyi, ton fırlanma anı və tam 360 dərəcə fırlanma ilə üstün bir servo növünə çevirə bilər. Bu barədə daha sonra.

Davam etməzdən əvvəl əvvəlcə burada əlaqəli video təlimatına baxın. Bu təlimat sizə bu layihənin necə qurulacağına dair ümumi bir məlumat verəcək və bu Təlimat kitabçası bu layihəni necə qurduğumu daha dərindən izah edəcək.

Materiallar-

  • Bütün hissələri birləşdirmək üçün istifadə olunan 2x 1 metr uzunluğunda m10 yivli çubuqlar
  • Parçaları yivli çubuqlara bağlamaq üçün 8x M10 qoz -fındıq
  • Kaydırıcının sürüşməsi üçün 2x 95 sm uzunluğunda 8 mm hamar polad çubuqlar
  • Polad çubuqlarda hamar bir şəkildə sürüşmək üçün sürgü üçün 4x lm8uu yataklar
  • Motorun montajı üçün 4x 10 mm uzunluğunda m3 qoz -fındıq
  • Fırlanma oxu üçün 2 ədəd skeytbord yatağı (22 mm xarici diametri, 8 mm daxili diametri)
  • Boş tərəf üçün 1x15 mm rulman
  • Rulman yatağının rölanti 3d çap hissəsinə montajı üçün m4 kilid qozu olan 1x 4 sm uzunluğunda m4 bolt.
  • Sürgülü motor üçün 4 mm daxili diametrli 20 dişli dişli. Dəqiq mühərrik çox vacib deyil, çünki DC mühərrikiniz kifayət qədər fırlanma anına malik olmalıdır. Yalnız kəmərinizlə eyni meydança olduğundan əmin olun
  • 2 metr uzunluğunda GT2 kəməri. Yenə də kasnağınızın dişlərinin səthinə uyğun olduğu müddətdə hər hansı bir kəmərdən istifadə edə bilərsiniz.

Elektronika

  • 2 * Enkoderləri olan dişli DC mühərrikləri (biri yanal hərəkəti, digəri isə fırlanma oxunu idarə edir). İşdə istifadə etdiyim budur. Bu barədə bələdçinin Elektronika hissəsində daha çox məlumat əldə edə bilərsiniz
  • RoboClaw DC motor nəzarətçisi. (Hər iki mühərriki bir nəzarətçi ilə idarə etməyimə imkan verdiyindən ikili 15Amp nəzarətçi istifadə etdim)
  • İstənilən Arduino. Arduino UNO istifadə etdim
  • Batareya/ Güc mənbəyi. (7.4V 2 hüceyrəli LiPo batareya istifadə etdim)
  • Ekran (Menyu göstərmək üçün. Hər hansı bir U8G uyğun ekran işləyəcək, mən bu 1.3 düymlük OLED ekrandan istifadə etdim)
  • Rotatry encoder (Menyuda gedən və seçimləri konfiqurasiya etmək üçün)
  • Fiziki düymə (sürüşmə hərəkətini tetiklemek üçün)

Addım 1: Hardware Design + Build + 3D Print

Elektronika
Elektronika

Sonra elektronikaya keçək. Elektronika, bu layihənin çox çevikliyə sahib olduğu yerdir.

Bu layihənin özəyindən başlayaq- 2 fırçalanmış DC mühərriki.

Bir neçə səbəbdən fırçalanmış DC mühərrikləri seçdim.

  1. Fırçalanmış mühərriklər, step motorlara nisbətən tel çəkmək və işlətməkdən daha asandır
  2. Fırçalanmış DC mühərrikləri, fırlanma oxu mühərriki üçün xüsusilə vacib olan DC mühərriklərindən daha yüngüldür, çünki bu mühərrik fiziki olaraq kamera ilə yanal hərəkət edir və birincil kamera sürüşmə motorunda həddindən artıq gərginliyin qarşısını almaq üçün mümkün qədər yüngül etmək vacibdir.

Bu xüsusi DC motorunu seçdim. Bu mühərrik mənə belə ağır bir kamera yükünü hərəkət etdirmək üçün lazım olan çox yüksək tork verdi. Bundan əlavə, yüksək ötürmə, ən yüksək RPM -in yavaş olması deməkdir, bu da daha yavaş hərəkətləri çəkə biləcəyimi və yüksək ötürmə də daha yüksək mövqe dəqiqliyinə gətirib çıxarır, çünki çıxış milinin bir 360 dərəcə dönməsi motorun kodlayıcısının 341.2 sayını nəzərdə tutur.

Bu bizi RoboClaw hərəkət nəzarətçisinə gətirir. Roboclaw motorlu ikili DC motor nəzarətçisi, sadə kod əmrləri ilə Arduino -dan sadə təlimatlar alır və motorunuzun istədiyi kimi işləməsi üçün bütün ağır emal və güc tədarükünü edir. Arduino, PWM, Analog gərginlik, sadə serial və ya paket seriyası vasitəsilə Roboclaw -a siqnal göndərə bilər. Paket serialı, mövqelərin izlənməsi üçün lazım olan Roboclawdan məlumat almağa imkan verdiyindən getməyin ən yaxşı yoludur. Növbəti addımda (proqramlaşdırma) Roboclaw -ın proqram/proqramlaşdırma hissəsinə daha dərindən girəcəyəm.

Əslində, Roboclaw, RoboClaw'ın mövqe nəzarət qabiliyyəti sayəsində bir DC fırçalanmış mühərriki bir kodlayıcı ilə daha çox servoya bənzətməyə çevirə bilər. Ancaq ənənəvi servodan fərqli olaraq, indi fırçalanmış DC mühərrikiniz daha yüksək torka, daha yüksək mühərrik ötürücüsünə görə daha çox mövqe dəqiqliyinə malikdir və ən əsası, DC motorunuz 360 dərəcə dönə bilir, nə də ənənəvi servo bunu edə bilməz.

Növbəti elektronika hissəsi ekrandır. Ekranım üçün ölçüsü və yüksək kontrastı səbəbindən bu OLED panelini seçdim. Bu yüksək kontrast inanılmazdır və potensial qaranlıq kamera çəkilişinə müdaxilə edə biləcək çox işıq verməyərkən ekranı birbaşa günəş işığında istifadə etməyi çox asanlaşdırır. Bu ekran asanlıqla başqa U8G uyğun bir ekrana dəyişdirilə bilər. Uyğun ekranların tam siyahısı burada mövcuddur. Əslində bu layihə qəsdən U8G kitabxanasının ətrafında kodlanmışdı, buna görə sizin kimi DIY inşaatçıların hissələrində daha çox rahatlıq var idi

Bu layihə üçün son elektronika hissələri, fırlanan kodlayıcı və sürüşmə hərəkətinə başlamaq üçün düymə idi. Enkoder, ekranın menyusunda gəzməyə və bütün kaydırıcının menyusunu yalnız bir yığımla konfiqurasiya etməyə imkan verir. Rotary encoder -in ənənəvi potensiometr kimi heç bir 'son' mövqeyi yoxdur və bu, xüsusən ekrandakı obyekt izləmə x və y koordinatlarını düzəltmək üçün faydalıdır. Düymə, fırlanan kodlayıcı ilə əyilmədən kaydırıcının hərəkətinə başlamaq üçün istifadə olunur.

Addım 3: Kamera Kaydırıcısının Proqramlaşdırılması

Kamera Kaydırıcısının Proqramlaşdırılması
Kamera Kaydırıcısının Proqramlaşdırılması
Kamera Kaydırıcısının Proqramlaşdırılması
Kamera Kaydırıcısının Proqramlaşdırılması

Kodlaşdırma bu layihənin ən çətin problemi idi. Görürsünüz, əvvəldən kaydırıcının ekrandan idarə olunmasını istəyirdim. Bu layihəni mümkün qədər çox ekrana uyğunlaşdırmaq üçün Arduino üçün U8Glib Kitabxanasından istifadə etməli oldum. Bu kitabxana 32 -dən çox ekrana dəstək verir. Bununla birlikdə, U8Glib kitabxanası ekrandakı menyunu çəkmək üçün bir şəkil döngəsi istifadə etdi və bu, Arduino -nun kameranın bucağı hesablama funksiyası üçün lazım olan kameranın mövqeyi haqqında eyni vaxtda məlumat toplama qabiliyyəti ilə ziddiyyət təşkil etdi (Bu, sonrakı iki paraqrafda verilmişdir)). U8Glib2, tam səhifə tampon seçimi adlanan bir şey istifadə edərək şəkil döngəsinə alternativdir, lakin kitabxana çox yaddaş istehlak etdi və Arduino Uno yaddaş məhdudiyyətləri nəzərə alınmaqla kodun qalan hissəsinə uyğunlaşmağı çətinləşdirdi. Bu, U8G ilə sıxışdığımı və sürgü hərəkət edərkən və Arduinonun Roboclaw'dan mövqe məlumatları toplaması lazım olduğu zaman ekranın yenilənməsini maneə törətməklə problemi həll etmək məcburiyyətində olduğumu ifadə etdi. Alt menyulara girəndə şəkil döngəsinin içərisində olacağım üçün menyu döngəsinin xaricində hərəkət etməyə başlamaq üçün kaydırıcıyı işə salmaq məcburiyyətində qaldım və kaydırıcı istədiyi kimi işləməyəcək. Ayrı bir fiziki düymənin kaydırıcının hərəkətini tetikleyerek bu problemi də aşdım.

Sonra, rotasiya izləmə elementi haqqında danışaq. Bu hissəni birləşdirmək çox mürəkkəb görünür, amma əslində olduqca sadədir. Bunun tətbiqi Arduino kodumdakı 'motor ()' funksiyası altındadır. İlk addım, 2 ölçülü bir şəbəkə düzəltmək və izləmək istədiyiniz obyektin harada yerləşdiriləcəyinə qərar verməkdir. Buna əsaslanaraq indiki yerinizə üçbucaq çəkə bilərsiniz. Mövcud yerinizi motorun kodlayıcı dəyərindən əldə edə bilərsiniz. İzlənilən obyektin mövqeyini cm/mm olaraq konfiqurasiya etmək istəyirsinizsə, kodlayıcı dəyərinizi cm/mm dəyərinə çevirməlisiniz. Bu, sadəcə kamera sürgüsünü 1 sm hərəkət etdirmək və kodlayıcı dəyərinin artmasını ölçməklə edilə bilər. Bu dəyəri encoder_mm dəyişəninin altından kodun üstünə daxil edə bilərsiniz.

Davam edirik, indi kameranın obyektinizə işarə etmək üçün üzləşdiyi bucağı əldə etmək üçün tərs toxunma funksiyasından istifadə edəcəyik. Ters teğet üçbucağın əks və bitişik tərəfini alır. Üçbucağın əks tərəfi heç vaxt dəyişmir, çünki sürgüdən obyektə olan məsafə. Kamera kaydırıcısının bitişik tərəfi dəyişir. Bu bitişik tərəf, obyektin x mövqeyini alaraq və indiki mövqeyinizi çıxarmaqla hesablana bilər. Kaydırıcı hərəkət aralığında hərəkət edərkən, Arduino kodlayıcı dəyərini yeniləməyə davam edəcək. Arduino, bu kodlayıcı dəyərini dəfələrlə bir sm/mm x mövqel dəyərinə çevirəcək və sonra bitişik tərəf uzunluğunu hesablayacaq və nəhayət kameranın obyektə işarə etmək üçün hər zaman üzləşməsi lazım olan bucağı hesablayacaq.

İndi Arduinomuz kamera açısını dinamik şəkildə işlətdiyinə görə, bu bucağı fırlanan motorun hərəkət etməsi üçün mövqe dəyərinə çevirməklə məşğul ola bilərik. Bu bizi RoboClaw'ın bu layihə üçün ən böyük xüsusiyyətinə gətirir. Roboclawa bir mövqe dəyəri verərək, əslində bir DC fırçalanmış motoru servo kimi apara bilər. Bir servodan fərqli olaraq, motorumuz daha çox torka, daha yüksək dəqiqliyə malikdir və 360 dərəcə fırlaya bilir.

Roboclawı müəyyən bir mövqeyə daşımaq üçün Arduino kodu belədir:

roboclaw. SpeedAccelDeccelPositionM1 (ünvan, 'sürət', 'sürətlənmə', 'yavaşlama', 'getmək istədiyiniz mövqe', 1);

Motorun mövqe dəyərini kamera açısına uyğunlaşdırmaq üçün kamera lövhəsini 180 dərəcə əl ilə hərəkət etdirməlisiniz. Daha sonra, kodlayıcı dəyərinin kamera lövhəsini 0 dərəcədən 180 dərəcəyə dəyişməsindən nə qədər dəyişdiyini görün. Bu sizə kodlayıcı aralığınızı verir. Bu aralığı Arduinonun kamera açısını mövqe dəyərinə uyğunlaşdıran motor funksiyasına daxil edə bilərsiniz. Bu kodda da yazılmışdır, buna görə tapmaq asan olmalıdır *****

RoboClaw mənə sürətləndirmə, yavaşlama və PID dəyərləri kimi digər faktorları tənzimləmək qabiliyyətini də verdi. Bu, fırlanma oxunun hərəkətini hamarlaşdırmağa imkan verdi, xüsusən bucaq dəyişikliyi kiçik olduqda və yüksək 'D' PID dəyəri olmayan sarsıntılar əlavə edərkən. Roboclaw masa üstü tətbiqi vasitəsi ilə PID dəyərlərinizi avtomatik tənzimləyə bilərsiniz.

Addım 4: Kamera Kaydırıcısının İşlənməsi

Kamera Kaydırıcısının İşlənməsi
Kamera Kaydırıcısının İşlənməsi

İndi əyləncəli hissəyə gəlirik, kaydırıcıyı idarə edərək Menyuda 4 əsas nişan var. Üst nişan sürət nəzarətinə həsr edilmişdir. Menyunun orta cərgəsində izlənilən obyektin X və Y mövqeyini mm olaraq konfiqurasiya etmək üçün nişanlar var və həmçinin kaydırıcının obyektimizi döndərməsini və izləməsini və ya fırlanmadan sadə bir sürüşmə hərəkəti etməsini istədiyimizi də konfiqurasiya edirik. Döner kodlayıcının bükülməsi, menyuların müxtəlif variantlarını gəzməyə imkan verir. Seçimlərdən birini konfiqurasiya etmək üçün seçimə gedin və fırlanan kodlayıcıya basın. Bir dəfə basıldıqda, fırlanan kodlayıcının fırlanması menyu silmək əvəzinə vurgulanan alt menyunun dəyərini dəyişəcək. İstədiyiniz dəyərə çatdıqdan sonra, fırlanan enkoderi yenidən vura bilərsiniz. İndi əsas menyuya qayıdırsınız və fərqli nişanlar arasında gəzə bilərsiniz. Hazır olduqdan sonra sadəcə ekranın yanındakı getmək düyməsini basın və kaydırıcı öz işini görür!

Kamera kaydırıcısını istifadə edərək bitirdikdən sonra kameranın 'ev' mövqeyində olduğundan əmin olun: başladığı sürüşmə tərəfi. Bunun səbəbi, motor kodlayıcının mütləq bir kodlayıcı olmamasıdır, yəni Roboclaw/Arduino kodlayıcının harada olduğunu deyə bilməz. Enkoderin son açıldıqdan sonra nə qədər dəyişdiyini deyə bilərlər. Bu o deməkdir ki, kamera sürüşdürücüsünü söndürdükdə, sürüşdürücü sürüşmə mövqeyini 'unudacaq' və kodlayıcını sıfıra sıfırlayacaq. Buna görə də, sürüşdürücünüzü digər tərəfdən söndürsəniz, açdığınız zaman kaydırıcının kənarından daha irəli getməyə və sürüşmə divarına çırpmağa çalışın. Bu kodlayıcı davranışı, hər kamera sürüşmə hərəkətindən sonra kameranın fırlanma bucağını sıfırlamasının səbəbidir. Fırlanma oxu da hərəkət dairəsinin sonuna düşməkdən özünü qoruyur.

Başladığınız zaman son nöqtələr və bir ev proseduru əlavə edərək bunu düzəldə bilərsiniz. 3d printerlərin istifadə etdiyi budur.

Addım 5: Son Düşüncələr + Gələcək Təkmilləşdirmələr

Hər bir inşaatçının eyni kaydırıcıyı qurmaq əvəzinə, bu kaydırıcının öz versiyalarını hazırlamasını şiddətlə tövsiyə edirəm. Dizaynımı düzəltmək, kaydırıcınızı dəqiq spesifikasiyalarınıza uyğun qurmağa imkan verəcək, eyni zamanda elektronikanın və kodun necə işlədiyini daha yaxşı başa düşəcəksiniz.

Kodu mümkün qədər oxunaqlı və konfiqurasiya edə bildim ki, sürüşdürücü xüsusiyyətləriniz üçün fərqli kod dəyişənlərini tənzimləyə/kalibr edə biləsiniz. Kod həm də funksiyalar ətrafında tam qurulmuşdur, buna görə də sürgünün müəyyən davranışlarını kopyalamaq/ düzəltmək/ yenidən yazmaq istəyirsinizsə, bütün kodu yox, redaktə etmək istədiyiniz hissələri dəyişdirmək və yenidən işləmək lazım deyil.

Nəhayət, 2.0 versiyasını hazırlasaydım, burada bəzi təkmilləşdirmələr edərdim

  1. Fırlanma oxu mühərriki üçün daha yüksək dişli nisbəti. Daha yüksək sürət nisbəti, daha dəqiq kiçik hərəkətlər edə biləcəyim deməkdir. Bu, kamera obyektinizdən çox uzaqda olduqda və kamera bucağınız çox yavaş dəyişəndə xüsusilə vacibdir. Hal -hazırda, motorum çox yüksək dişli deyil və kamera sürüşməsi çox yavaş işlədikdə və ya fırlanma bucağı çox az dəyişdikdə bir qədər sarsıntı ilə nəticələnə bilər. Yüksək bir 'D' PID dəyəri əlavə etməyim mənə kömək etdi, ancaq obyekt izləmə dəqiqliyinin bir qədər aşağı olması səbəbindən gəldi.
  2. Modul uzunluğu. Bu çox uzaq bir məqsəddir, amma kamera sürüşdürücüsünün modul uzunluğunda olmasını istərdim ki, kameranın sürüşməsi üçün daha uzun uzunluqdakı parçaları asanlıqla bağlaya bilərsiniz. Bu olduqca çətindir, çünki hər iki yolu mükəmməl şəkildə hizalamalı və kəmər sisteminin necə işlədiyini anlamalı olacaqsınız. Buna baxmayaraq, sərin bir yüksəliş olardı!
  3. Xüsusi hərəkət açar çərçivəsi. Açar çərçivəli hərəkətlər anlayışını bu kamera kaydırıcısına daxil etmək istərdim. Keyframing, video və audio istehsalında çox istifadə edilən bir texnikadır. Kameranın bir mövqeyə getdiyi, gözlədiyi, sonra fərqli bir sürətlə başqa bir mövqeyə keçdiyi, gözlədiyi, sonra üçüncü bir mövqeyə getdiyi və qeyri-xətti kamera hərəkətlərini təmin edərdi.
  4. Bluetooth/ simsiz telefon nəzarəti. Kamera kaydırıcısının parametrlərini simsiz olaraq konfiqurasiya etmək və kamera sürüşdürücüsünü çətin yerlərdə yerləşdirə bilmək çox gözəl olardı. Telefon tətbiqi, son paraqrafda qeyd edildiyi kimi açar çərçivəni birləşdirmək imkanları da aça bilər.

Bu dərslik üçün budur. Aşağıdakı şərhlər bölməsində hər hansı bir sualınızı verməkdən çekinmeyin.

Daha çox məzmun və elektronika dərsləri üçün YouTube kanalıma da buradan baxa bilərsiniz.

Tövsiyə: