Mundarija:

Ob'ektlarni kuzatish kamerasi aylanishi o'qi bilan. 3D bosma va RoboClaw DC dvigatel boshqaruvi va Arduino -da qurilgan: 5 qadam (rasmlar bilan)
Ob'ektlarni kuzatish kamerasi aylanishi o'qi bilan. 3D bosma va RoboClaw DC dvigatel boshqaruvi va Arduino -da qurilgan: 5 qadam (rasmlar bilan)

Video: Ob'ektlarni kuzatish kamerasi aylanishi o'qi bilan. 3D bosma va RoboClaw DC dvigatel boshqaruvi va Arduino -da qurilgan: 5 qadam (rasmlar bilan)

Video: Ob'ektlarni kuzatish kamerasi aylanishi o'qi bilan. 3D bosma va RoboClaw DC dvigatel boshqaruvi va Arduino -da qurilgan: 5 qadam (rasmlar bilan)
Video: IKKI KO'ZLI KAMERA YANGILANGAN KEYIN HAYRLANGAN!!! 2024, Noyabr
Anonim
Image
Image
Uskuna dizayni + qurish + 3D bosib chiqarish
Uskuna dizayni + qurish + 3D bosib chiqarish

Fusion 360 loyihalari »

Bu loyiha men o'zimning DIY-ga bo'lgan qiziqishimni birlashtirganimdan beri eng sevimli loyihalarimdan biri bo'ldi. Men har doim kamerani ekran bo'ylab harakatlanadigan, ob'ektni kuzatish uchun ekran bo'ylab harakatlanadigan kinofilmlarga qaraganman va ularga taqlid qilishni xohlaganman. Bu aks holda 2 o'lchamli videoga juda qiziqarli chuqurlik effektini qo'shadi. Gollivud uskunalariga minglab dollar sarflamasdan, buni takrorlashni xohlar ekanman, men o'zim shunday kamera slayderini qurishga qaror qildim.

Butun loyiha siz 3D chop etishingiz mumkin bo'lgan qismlarga qurilgan va kod mashhur Arduino kartasida ishlaydi. CAD fayllari va kodlari kabi barcha loyiha fayllarini quyida yuklab olish mumkin.

Bu erda SAPR/ 3D bosma fayllar mavjud

Arduino Code fayli bu erda mavjud

Loyiha 2 tishli cho'tkali shahar dvigatellari va Basic Micro Roboclaw Dvigatel boshqaruvchisi atrofida aylanadi. Bu dvigatel boshqaruvchisi cho'tkali shahar motorlarini ajoyib joylashuv aniqligi, tonna moment va to'liq 360 graduslik aylanish bilan yuqori darajadagi servoga aylantirishi mumkin. Bu haqda keyinroq.

Davom etishdan oldin, avval bu erda bog'langan video darslikni ko'ring. O'quv qo'llanma sizga ushbu loyihani qanday tuzish haqida umumiy ma'lumot beradi va bu ko'rsatma qo'llanmasi men ushbu loyihani qanday qurganim haqida batafsilroq ma'lumot beradi.

Materiallar-

  • Barcha qismlarni ulash uchun ishlatiladigan 2x 1 metr uzunlikdagi m10 tishli tayoqlar
  • Qismlarni tishli novdalarga o'rnatish uchun 8x M10 yong'oq
  • Slayderni siljitish uchun 2x 95 sm uzunlikdagi 8 mm silliq po'lat tayoqlar
  • Po'lat tayoqlar ustida silliq siljish uchun slayder uchun 4x lm8uu rulmanlar
  • Dvigatelni o'rnatish uchun 4x 10 mm uzunlikdagi m3 yong'oqlar
  • Aylanadigan o'q uchun 2 ta skeytbordli rulmanlar (tashqi diametri 22 mm, ichki diametri 8 mm)
  • Bo'sh joy uchun 1x15 mm rulman
  • Rulmanni 3 o'lchamli bosilgan qismiga o'rnatish uchun m4 qulf somunli 1x 4 sm uzunlikdagi bolt.
  • Slayder dvigateli uchun 4 mm ichki diametrli 20 ta tishli tishli. To'g'ridan -to'g'ri kasnaq juda muhim emas, chunki sizning doimiy dvigatelingiz etarli tork uchun mo'ljallangan bo'lishi kerak. Bu sizning belbog'ingiz bilan bir xil ekanligiga ishonch hosil qiling
  • Uzunligi 2 metr bo'lgan GT2 kamari. Siz har qanday kamarni kasnagingizning tishlari balandligiga mos keladigan darajada ishlatishingiz mumkin.

Elektronika

  • 2 * Enkoderli tishli shahar motorlari (biri lateral harakatni boshqaradi, ikkinchisi aylanish o'qini boshqaradi). Mana men foydalangan. Qo'llanmaning "Elektronika" bo'limida bu haqda ko'proq ma'lumot
  • RoboClaw DC vosita boshqaruvchisi. (Men ikkita 15Amp kontrolleridan foydalandim, chunki bu ikkala dvigatelni bitta boshqaruvchi bilan boshqarishga imkon berdi)
  • Har qanday Arduino. Men Arduino UNO -dan foydalanardim
  • Batareya/ quvvat manbai. (Men 7,4 V kuchlanishli 2 hujayrali LiPo batareyasini ishlatganman)
  • Ekran (menyuni ko'rsatish uchun. Har qanday U8G mos keladigan ekran ishlaydi, men bu 1,3 dyuymli OLED ekranidan foydalandim)
  • Rotatry kodlovchi (menyuda parametrlarni sozlash va sozlash uchun)
  • Jismoniy tugma (slayderning harakatlanishini boshlash uchun)

1 -qadam: Uskuna dizayni + Build + 3D bosib chiqarish

Elektronika
Elektronika

Keyin elektronikaga o'tamiz. Elektronika - bu loyiha juda moslashuvchan.

Keling, ushbu loyihaning asosiy qismini- 2 ta cho'tkali shahar motoridan boshlaylik.

Men bir necha sabablarga ko'ra cho'tkali shahar motorlarini tanladim.

  1. Cho'tkali dvigatellar, step motorlariga qaraganda, simi va ishlashi ancha sodda
  2. Cho'tkali shahar dvigatellari shahar motorlariga qaraganda ancha engilroq, bu ayniqsa aylanma o'qli dvigatel uchun juda muhim, chunki bu dvigatel kamera bilan yonma -yon harakat qiladi va asosiy kamera slayder dvigatelida haddan tashqari zo'riqishning oldini olish uchun iloji boricha engil bo'lishi kerak.

Men aynan shu shahar motorini tanladim. Bu dvigatel menga kameraning bunday og'ir yukini harakatlantirish uchun zarur bo'lgan juda katta momentni berdi. Bundan tashqari, yuqori tezlikda aylanish tezligi past edi, bu esa men sekinroq harakatlarni tasvirga olaman degan ma'noni anglatadi va yuqori vites ham yuqori pozitsion aniqlikka olib keladi, chunki chiqish milining 360 gradusga aylanishi dvigatel kodlagichining 341,2 sonini bildiradi.

Bu bizni RoboClaw harakat boshqaruvchisiga olib keladi. Roboclaw dvigatelli dvigatelli dvigatelni boshqaruvchi Arduino -dan oddiy kodli buyruqlar orqali oddiy ko'rsatmalarni oladi va sizning motoringiz maqsadli ishlashi uchun barcha og'ir ishlov berish va quvvat etkazib berishni bajaradi. Arduino signallarni Roboklavga PWM, analog kuchlanish, oddiy ketma -ketlik yoki paketli ketma -ketlik orqali yuborishi mumkin. Paket ketma -ketligi - bu borishning eng yaxshi usuli, chunki u sizga pozitsion kuzatuv uchun zarur bo'lgan Roboklavdan ma'lumot olish imkonini beradi. Keyingi bosqichda (dasturlash) Roboclaw dasturiy ta'minot/dasturlash qismiga chuqurroq kirib boraman.

Aslida, Roboclaw RoboClaw -ning pozitsion boshqaruv qobiliyatiga ega bo'lgani uchun, shahar kodli dvigatelni servoga o'xshash qilib o'zgartirishi mumkin. An'anaviy servodan farqli o'laroq, endi sizning cho'tkali shahar dvigateli ancha yuqori momentga ega, dvigatelning yuqori tezligi tufayli aniq pozitsion aniqlikka ega va eng muhimi, sizning doimiy dvigatelingiz 360 gradusda uzluksiz aylana oladi, bularni hech biri an'anaviy servo qila olmaydi.

Elektronikaning keyingi qismi - bu ekran. Ekranim uchun men o'lchamlari va yuqori kontrasti tufayli OLED panelini tanladim. Bu yuqori kontrast aql bovar qilmas va ekranni to'g'ridan -to'g'ri quyosh nurida ishlatishni osonlashtiradi, shu bilan birga juda ko'p yorug'lik chiqarmaydi, bu esa qorong'i kamerani suratga olishiga xalaqit berishi mumkin. Bu ekranni U8G mos keladigan boshqa ekranga osongina almashtirish mumkin. Mos keladigan ekranlarning to'liq ro'yxati bu erda mavjud. Aslida, bu loyiha U8G kutubxonasi atrofida ataylab kodlangan, shuning uchun siz kabi DIY quruvchilar o'z qismlarida ko'proq moslashuvchanlikka ega edilar.

Ushbu loyihaning elektron qismlari aylanuvchi kodlovchi va slayder harakatini boshlash tugmasi edi. Kodlovchi sizga ekran menyusida harakatlanish va slayderning barcha menyusini bitta terish yordamida sozlash imkonini beradi. Aylanadigan kodlovchi an'anaviy potentsiometr kabi "oxirgi" pozitsiyaga ega emas va bu, ayniqsa, ekrandagi ob'ektlarni kuzatishning x va y koordinatalarini o'zgartirish uchun foydalidir. Tugma faqat aylanadigan kodlovchi bilan skripka qilmasdan slayder harakatini boshlash uchun ishlatiladi.

3 -qadam: Kamera slayderini dasturlash

Kamera slayderini dasturlash
Kamera slayderini dasturlash
Kamera slayderini dasturlash
Kamera slayderini dasturlash

Kodlash bu loyihaning eng qiyin vazifasi edi. Ko'ryapsizmi, men boshidanoq slayderni ekran orqali boshqarilishini xohlardim. Ushbu loyihani iloji boricha ko'proq ekranlarga moslashtirish uchun Arduino uchun U8Glib kutubxonasidan foydalanishim kerak edi. Ushbu kutubxona 32 dan ortiq ekranlarni qo'llab -quvvatlaydi. Ammo, U8Glib kutubxonasi ekrandagi menyuni chizish uchun rasmli tsikldan foydalangan va bu Arduino -ning kameraning burchagi hisoblash funktsiyasi uchun zarur bo'lgan kameraning joylashuvi haqidagi ma'lumotlarni bir vaqtning o'zida to'plash qobiliyatiga ziddir (Bu keyingi paragraflarda keltirilgan.). U8Glib2 to'liq sahifali bufer variantidan foydalangan holda rasm chizig'iga alternativa bor, lekin kutubxona juda ko'p xotirani iste'mol qilgan va Arduino Uno xotira cheklovlarini hisobga olgan holda qolgan kodni joylashtirishni qiyinlashtirgan. Bu shuni anglatadiki, men U8G -da qolib ketdim va slayder harakatlanayotganda va Arduino Roboclaw -dan pozitsion ma'lumotlarni to'plashi kerak bo'lganda ekranning yangilanishiga yo'l qo'ymaslik orqali muammoni hal qilishim kerak edi. Men, shuningdek, pastki menyularga kirganimda, men rasmlar qatorida bo'lardim va slayder mo'ljallangan tarzda ishlamaydi, chunki men menyudan tashqarida harakat qilishni boshlash uchun slayderni ishga tushirishga majbur bo'ldim. Men ham bu muammoni chetlab o'tdim, chunki alohida jismoniy tugma slayderning harakatini qo'zg'atdi.

Keling, rotatsion kuzatuv elementi haqida gapiraylik. Bu qismni birlashtirish juda murakkab ko'rinadi, lekin aslida juda oddiy. Buning amalga oshirilishi mening Arduino kodimdagi "motor ()" funktsiyasida. Birinchi qadam - 2 o'lchovli panjara yaratish va siz kuzatmoqchi bo'lgan ob'ekt qaerda joylashishini aniqlash. Shunga asoslanib, siz hozirgi manzilingizga uchburchak chizishingiz mumkin. Siz joriy joylashuvni dvigatelning kodlovchi qiymatidan bilib olishingiz mumkin. Agar siz kuzatilayotgan ob'ektning holatini sm/mm ga sozlashni xohlasangiz, siz kodlovchi qiymatini sm/mm qiymatiga o'tkazishingiz kerak bo'ladi. Buni kamera slayderini 1 sm siljitish va kodlovchi qiymatining o'sishini o'lchash orqali qilish mumkin. Siz bu qiymatni encoder_mm o'zgaruvchisi ostida kodning yuqori qismiga kiritishingiz mumkin.

Davom etamiz, endi biz teskari teginish funktsiyasidan foydalanib, sizning ob'ektingizga ishora qilish uchun kamera qaragan burchakka ega bo'lamiz. Teskari teginish uchburchakning qarama -qarshi va qo'shni tomonini oladi. Uchburchakning qarama -qarshi tomoni hech qachon o'zgarmaydi, chunki bu slayderdan ob'ektgacha bo'lgan masofa. Biroq, kamera slayderining qo'shni tomoni o'zgaradi. Bu qo'shni tomonni ob'ektning x pozitsiyasini olish va undan hozirgi holatingizni olib tashlash yo'li bilan hisoblash mumkin. Slayder harakat diapazoni bo'ylab harakatlanayotganda, u kodlovchi qiymati bo'yicha Arduino -ni yangilab turadi. Arduino bu kodlovchi qiymatini sm/mm x pozitsion qiymatiga qayta -qayta o'zgartiradi, so'ngra yonma -yon uzunligini hisoblab chiqadi va oxir -oqibat ob'ektga ishora qilish uchun kamera har doim qarashi kerak bo'lgan burchakni hisoblab chiqadi.

Endi bizning Arduino kamera burchagini dinamik ravishda ishlayotganda, biz bu burchakni aylanadigan dvigatel harakatlanishi uchun uni pozitsion qiymatga aylantirish bilan shug'ullanishimiz mumkin. Bu bizni RoboClaw -ning ushbu loyihadagi eng katta xususiyatiga olib keladi. Roboklavga pozitsiya qiymatini berib, u asosan shahar dvigatelini servo kabi tutishi mumkin. Bizning dvigatelimiz servodan farqli o'laroq, ko'proq tork, aniqlik va 360 gradusni aylantira oladi.

Roboklavni ma'lum bir joyga ko'chirish uchun Arduino kodi quyidagicha:

roboclaw. SpeedAccelDeccelPositionM1 (manzil, "tezlik", "tezlashtirish", "sekinlashuv", "bormoqchi bo'lgan pozitsiya", 1);

Dvigatelning pozitsion qiymatini kamera burchagiga moslashtirish uchun siz kamera plastinkasini qo'lda 180 daraja siljitishingiz kerak bo'ladi. Keyin kamerani 0 gradusdan 180 gradusgacha siljitishdan kodlovchi qiymati qanchalik o'zgarganini ko'ring. Bu sizga kodlovchi oralig'ini beradi. Siz bu diapazonni Arduino kamerasining burchagini pozitsion qiymatga moslashtiradigan vosita funktsiyasiga kiritishingiz mumkin. Bu kodda ham yozilgan, shuning uchun uni topish oson bo'lishi kerak *****

RoboClaw menga tezlashuv, sekinlashuv va PID qiymatlari kabi boshqa omillarni sozlash qobiliyatini ham berdi. Bu menga aylanish o'qining harakatini tekislashga imkon berdi, ayniqsa burchak o'zgarishi juda kichik bo'lsa va "D" PID qiymati yuqori bo'lmagan burilishlar qo'shilsa. Siz shuningdek Roboclaw ish stoli ilovasi orqali PID qiymatlarini avtomatik sozlashingiz mumkin.

4 -qadam: Kamera slayderini ishlatish

Kamera slayderining ishlashi
Kamera slayderining ishlashi

Endi biz slayderni ishlatib, qiziqarli qismga keldik Menyuda 4 ta asosiy yorliq bor. Yuqori yorliq tezlikni boshqarishga bag'ishlangan. Menyuning o'rta qatorida kuzatiladigan ob'ektning X va Y holatini mm ga sozlash uchun yorliqlar mavjud, shuningdek, agar biz slayder aylanayotganini va ob'ektimizni kuzatib turishini xohlasak, yoki aylanmasdan oddiy siljish harakatini bajaramiz. Aylanadigan enkoderni burish bizni menyularning turli xil variantlarida harakatlanishimizga imkon beradi. Variantlardan birini sozlash uchun variantga o'ting va aylanadigan kodlovchi tugmasini bosing. Bir marta bosilgandan so'ng, aylanuvchi kodlovchi aylantirilsa, menyuni silamasdan, ajratilgan pastki menyuning qiymati o'zgaradi. Kerakli qiymatga yetganingizdan so'ng, siz yana aylanadigan kodlovchi tugmasini bosishingiz mumkin. Endi siz asosiy menyuga qaytasiz va turli xil yorliqlar o'rtasida harakat qilishingiz mumkin. Tayyor bo'lgach, ekran yonidagi o'tish tugmachasini bosing va slayder o'z vazifasini bajaradi!

Kamera slayderidan foydalanganingizdan so'ng, kamera "uy" holatida ekanligiga ishonch hosil qiling: slayderning yon tomoni. Buning sababi shundaki, motorli kodlovchi mutlaq kodlovchi emas, ya'ni Roboclaw/Arduino kodlovchi qaerda ekanligini aniqlay olmaydi. Ular faqat enkoder oxirgi marta yoqilganidan beri qanchalik o'zgarganini ayta oladilar. Bu shuni anglatadiki, siz kamera slayderini o'chirganingizda, slayder slayder o'rnini "unutadi" va kodlagichni 0 ga qaytaradi. Shuning uchun, agar siz slayderni boshqa tomondan o'chirsangiz, uni yoqsangiz, slayder o'chadi. chetidan uzoqroq harakat qilib, slayder devoriga qulab tushishga harakat qiling. Bu kodlovchi xatti -harakatining sababi shundaki, har bir kamera siljishidan keyin kamera o'z burilish burchagini tiklaydi. Aylanish o'qi, shuningdek, harakat doirasining oxirigacha qulashdan o'zini himoya qiladi.

Siz buni yuklash paytida to'xtash joylari va homing protsedurasini qo'shib tuzatishingiz mumkin. Bu 3D printerlarda qo'llaniladi.

5 -qadam: Yakuniy fikrlar + kelajakdagi yaxshilanishlar

Men har bir quruvchiga aynan shu slayderni qurishdan ko'ra, bu slayderning o'z versiyasini yaratishni qat'iy tavsiya qilaman. Mening dizaynimni o'zgartirish sizga slayderni aniq texnik xususiyatlarga moslashtirishga imkon beradi, shuningdek elektronika va kod qanday ishlashini yaxshiroq tushunishga imkon beradi.

Men kodni iloji boricha o'qilishi mumkin va sozlanadigan qilib qo'ydim, shunda siz slayder spetsifikatsiyalari uchun turli xil kod o'zgaruvchilarini sozlashingiz/sozlashingiz mumkin. Kod, shuningdek, funktsiyalar atrofida to'liq qurilgan, shuning uchun agar siz slayderning ba'zi xatti -harakatlarini nusxalash/ o'zgartirishni/ qayta yozishni xohlasangiz, butun kodni emas, balki tahrir qilmoqchi bo'lgan qismlarni o'zgartirishingiz kerak.

Nihoyat, agar men 2.0 versiyasini yaratgan bo'lsam, bu erda men ba'zi yaxshilanishlarni keltiraman

  1. Aylanadigan eksa mexanizmi uchun yuqori tishli nisbati. Tishli tezligi yuqori bo'lishi, men aniqroq kichik harakatlar qila olaman. Bu, ayniqsa, kamera sizning ob'ektingizdan uzoqda va kameraning burchagi juda sekin o'zgarganda juda muhim. Hozirgi vaqtda mening dvigatelim juda baland emas va bu kamera slayderi juda sekin ishlaganda yoki burilish burchagi juda oz o'zgarganda biroz chayqalishga olib kelishi mumkin. Yuqori "D" PID qiymatini qo'shish menga bundan xalos bo'lishga yordam berdi, lekin ob'ektni kuzatish aniqligi biroz pastroq bo'ldi.
  2. Modulli uzunlik. Bu maqsad juda uzoq, lekin men kamera slayderining modulli uzunligini xohlardim, ya'ni siz kamera uzoqroq bo'lishi mumkin. Bu juda qiyin, chunki har ikkala yo'lni ham to'g'ri tekislash va kamar tizimi qanday ishlashini aniqlash kerak bo'ladi. Shunga qaramay, bu ajoyib yangilanish bo'ladi!
  3. Maxsus harakatlanish. Men kamera slayderiga asosiy kadrli harakatlar kontseptsiyasini kiritishni istardim. Keyframing - bu video va audio ishlab chiqarishda keng qo'llaniladigan usul. Bu chiziqli bo'lmagan kameraning harakatlanishini ta'minlaydi, bu erda kamera pozitsiyaga o'tadi, kutadi, keyin boshqa pozitsiyaga boshqa tezlikda o'tadi, kutadi, keyin uchinchi holatga o'tadi va hokazo.
  4. Bluetooth/ simsiz telefonni boshqarish. Kamera slayderining parametrlarini simsiz sozlash va kamera slayderini kirish qiyin bo'lgan joylarga joylashtirish juda yaxshi bo'lardi. Telefon ilovasi, shuningdek, oxirgi xatboshida aytib o'tilganidek, kalit kadrlarni birlashtirish imkoniyatlarini ochishi mumkin.

Mana shu darslik uchun. Savollaringizni quyidagi izohlar bo'limiga yozib qo'ying.

Qo'shimcha kontent va elektronika bo'yicha darsliklar uchun siz mening YouTube kanalimni tekshirishingiz mumkin.

Tavsiya: