Turinys:

Objektų sekimo kameros slankiklis su sukimosi ašimi. 3D spausdintas ir sukurtas „RoboClaw DC“variklio valdiklyje ir „Arduino“: 5 žingsniai (su paveikslėliais)
Objektų sekimo kameros slankiklis su sukimosi ašimi. 3D spausdintas ir sukurtas „RoboClaw DC“variklio valdiklyje ir „Arduino“: 5 žingsniai (su paveikslėliais)

Video: Objektų sekimo kameros slankiklis su sukimosi ašimi. 3D spausdintas ir sukurtas „RoboClaw DC“variklio valdiklyje ir „Arduino“: 5 žingsniai (su paveikslėliais)

Video: Objektų sekimo kameros slankiklis su sukimosi ašimi. 3D spausdintas ir sukurtas „RoboClaw DC“variklio valdiklyje ir „Arduino“: 5 žingsniai (su paveikslėliais)
Video: Kino dronų filmuota medžiaga 20 esminių patarimų! 2024, Liepa
Anonim
Image
Image
Aparatūros projektavimas + kūrimas + 3D spausdinimas
Aparatūros projektavimas + kūrimas + 3D spausdinimas

„Fusion 360“projektai »

Šis projektas buvo vienas iš mano mėgstamiausių projektų nuo tada, kai susidomėjau vaizdo įrašų kūrimu ir pasidaryk pats. Aš visada žiūrėjau ir norėjau mėgdžioti tuos kino kadrus filmuose, kai fotoaparatas juda per ekraną, o panoraminis, kad galėtų sekti objektą. Tai prideda labai įdomų gylio efektą kitu atveju 2d vaizdo įrašui. Norėdamas tai pakartoti, neišleisdamas tūkstančių dolerių Holivudo įrangai, nusprendžiau pats sukurti tokį fotoaparato slankiklį.

Visas projektas yra sudarytas iš dalių, kurias galite spausdinti 3D, o kodas veikia populiariojoje „Arduino“plokštėje. Visus projekto failus, tokius kaip CAD failai ir kodas, galima atsisiųsti žemiau.

CAD/ 3D spausdinimo failus rasite čia

„Arduino Code“failą galite rasti čia

Projektas sukasi apie 2 pavarų šepečiu valdomus nuolatinės srovės variklius ir pagrindinį „Micro Roboclaw Motor“valdiklį. Šis variklio valdiklis gali paversti šepečiu apdorotus nuolatinės srovės variklius į aukščiausios rūšies servo sistemą su neįtikėtinu padėties tikslumu, tonomis sukimo momento ir 360 laipsnių sukimosi greičiu. Daugiau apie tai vėliau.

Prieš tęsdami, pirmiausia pažiūrėkite čia pateiktą vaizdo įrašo pamoką. Ši pamoka suteiks jums apžvalgą, kaip sukurti šį projektą, o šis „Instructables“vadovas išsamiau paaiškins, kaip aš sukūriau šį projektą.

Medžiagos-

  • 2x 1 metro ilgio m10 srieginiai strypai, naudojami visoms dalims sujungti
  • 8x M10 veržlės, skirtos dalims pritvirtinti prie srieginių strypų
  • 2x 95 cm ilgio 8 mm lygaus plieno strypai, skirti slankikliui slysti
  • 4x lm8uu guoliai, skirti slankikliui sklandžiai slysti ant plieninių strypų
  • 4x 10 mm ilgio m3 veržlės varikliui montuoti
  • 2 x riedlenčių guoliai (22 mm išorinis skersmuo, 8 mm vidinis skersmuo) sukimosi ašiai
  • 1x 15 mm guolis tuščiosios eigos pusei
  • 1x 4 cm ilgio M4 varžtas su m4 fiksavimo veržle, skirta laisvosios eigos guoliui pritvirtinti prie tuščiosios eigos 3D spausdintos dalies.
  • 20 dantų krumpliaratis su 4 mm vidiniu skersmeniu slankiklio varikliui. Tikslus skriemulys nėra labai svarbus, nes jūsų nuolatinės srovės variklis turi būti pritaikytas pakankamai sukimo momentui. Tiesiog įsitikinkite, kad jis yra tokio paties žingsnio kaip jūsų diržas
  • 2 metrų ilgio GT2 diržas. Vėl galite naudoti bet kokį diržą, jei jis atitinka jūsų skriemulio dantų aukštį.

Elektronika

  • 2 * Pavarų nuolatinės srovės varikliai su kodavimo įrenginiais (vienas valdo šoninį judėjimą, o kitas - sukimosi ašį). Štai aš naudojau. Daugiau apie tai - vadovo elektronikos dalyje
  • „RoboClaw“nuolatinės srovės variklio valdiklis. (Aš naudoju dvigubą 15Amp valdiklį, nes tai leido valdyti abu variklius vienu valdikliu)
  • Bet koks „Arduino“. Aš naudojau „Arduino UNO“
  • Baterija/ maitinimo šaltinis. (Aš naudoju 7,4 V 2 ląstelių LiPo bateriją)
  • Ekranas (meniu rodymui. Bet koks su U8G suderinamas ekranas veiks, aš naudoju šį 1,3 colio OLED ekraną)
  • Rotacinis kodavimo įrenginys (skirtas naršyti ir konfigūruoti meniu parinktis)
  • Fizinis mygtukas (slankiklio judesiui suaktyvinti)

1 žingsnis: Aparatūros projektavimas + kūrimas + 3D spausdinimas

Elektronika
Elektronika

Toliau pereikime prie elektronikos. Elektronika yra tai, kur šis projektas turi daug lankstumo.

Pradėkime nuo šio projekto esmės- 2 šepečiais nuolatinės srovės varikliai.

Šepetėlius nuolatinės srovės variklius pasirinkau dėl kelių priežasčių.

  1. Šlifuoti varikliai yra daug paprasčiau prijungti ir valdyti, palyginti su žingsniniais varikliais
  2. Šlifuoti nuolatinės srovės varikliai yra daug lengvesni nei nuolatinės srovės varikliai, o tai ypač svarbu sukimosi ašies varikliui, nes šis variklis fiziškai juda į šoną su fotoaparatu ir todėl kuo lengvesnis yra svarbus, kad būtų išvengta pernelyg didelio pagrindinio fotoaparato slankiklio variklio įtempimo.

Aš pasirinkau būtent šį nuolatinės srovės variklį. Šis variklis man suteikė itin didelį sukimo momentą, kurio reikėjo perkelti tokią didelę fotoaparato apkrovą. Be to, didelė pavara reiškė, kad didžiausias apsisukimų dažnis buvo lėtas, o tai reiškia, kad galėjau filmuoti lėtesnius judesius, o didelė pavara taip pat padidino padėties tikslumą, nes vienas 360 laipsnių išėjimo veleno pasukimas reiškė 341,2 variklio kodavimo skaičiaus.

Tai atveda mus prie „RoboClaw“judesio valdiklio. „Roboclaw“variklio dvigubo nuolatinio variklio valdiklis priima paprastas jūsų „Arduino“instrukcijas per paprastas kodo komandas ir atlieka visus sunkius apdorojimo ir energijos tiekimo veiksmus, kad jūsų variklis veiktų taip, kaip numatyta. „Arduino“gali siųsti signalus į „Roboclaw“per PWM, analoginę įtampą, paprastą serijinę arba paketinę seriją. Paketinis serijinis yra geriausias būdas, nes jis leidžia jums gauti informaciją iš „Roboclaw“, kuri yra būtina padėties stebėjimui. Kitame žingsnyje (programavimas) gilinsiuosi į „Roboclaw“programinės įrangos/programavimo dalį.

Iš esmės „Roboclaw“gali transformuoti nuolatinės srovės šepetėliu varomą variklį su koduotuvu, kad jis būtų labiau panašus į servo, nes „RoboClaw“gali valdyti padėtį. Tačiau, skirtingai nei tradicinis servo, dabar jūsų šepečiu sukurtas nuolatinės srovės variklis turi daug didesnį sukimo momentą, daug didesnį padėties tikslumą dėl didelio variklio pavaros, o svarbiausia, kad jūsų nuolatinės srovės variklis gali nuolat suktis 360 laipsnių kampu, ir to negali padaryti tradicinis servo variklis.

Kita elektronikos dalis yra ekranas. Savo ekranui pasirinkau šį OLED skydelį dėl jo dydžio ir didelio kontrasto. Šis neįtikėtinas didelio kontrasto dėka ekraną labai lengva naudoti esant tiesioginiams saulės spinduliams, tuo pačiu neišskiriant per daug šviesos, kuri gali trukdyti fotografuoti tamsią kamerą. Šį ekraną galima lengvai pakeisti į kitą U8G suderinamą ekraną. Visą suderinamų ekranų sąrašą rasite čia. Tiesą sakant, šis projektas buvo sąmoningai užkoduotas aplink U8G biblioteką, todėl „pasidaryk pats“statybininkai, kaip jūs, turėjo daugiau lankstumo

Paskutinės šio projekto elektronikos dalys buvo sukamasis kodavimo įrenginys ir mygtukas slankiklio judėjimui pradėti. Kodavimo priemonė leidžia naršyti ekrano meniu ir sukonfigūruoti visą slankiklio meniu tik vienu ratuku. Sukamasis kodavimo įrenginys neturi „galinės“padėties, kaip tradicinis potenciometras, ir tai ypač naudinga keičiant objekto sekimo x ir y koordinates ekrane. Mygtukas naudojamas tik slankiklio judėjimui pradėti, nereikia sukti rankos su sukamuoju kodavimo įrenginiu.

3 žingsnis: fotoaparato slankiklio programavimas

Fotoaparato slankiklio programavimas
Fotoaparato slankiklio programavimas
Fotoaparato slankiklio programavimas
Fotoaparato slankiklio programavimas

Kodavimas buvo pats sunkiausias šio projekto iššūkis. Matote, nuo pat pradžių norėjau, kad slankiklį būtų galima valdyti iš ekrano. Kad šis projektas būtų suderinamas su kuo daugiau ekranų, turėjau naudoti „Arduino“„U8Glib“biblioteką. Ši biblioteka palaiko daugiau nei 32 ekranus. Tačiau „U8Glib“biblioteka naudojo paveikslėlio kilpą, norėdama nubrėžti meniu ekrane, ir tai prieštaravo „Arduino“galimybei vienu metu rinkti informaciją apie fotoaparato padėtį, kuri buvo reikalinga kameros kampo skaičiavimo funkcijai (tai aprašyta kitose porose pastraipose)). „U8Glib2“turi alternatyvą vaizdo ciklui, naudojant vadinamąjį viso puslapio buferio parinktį, tačiau biblioteka sunaudojo per daug atminties ir apsunkino likusio kodo pritaikymą, atsižvelgiant į „Arduino Uno“atminties apribojimus. Tai reiškė, kad buvau įstrigęs su U8G ir turėjau išspręsti problemą, neleisdamas ekranui atnaujinti bet kada, kai slankiklis judėjo, o „Arduino“reikėjo rinkti padėties duomenis iš „Roboclaw“. Aš taip pat buvau priverstas suaktyvinti slankiklį, kad jis pradėtų judėti už meniu ciklo ribų, nes kai įžengiau į antrinius meniu, būsiu vaizdo ciklo viduje, o slankiklis neveiks, kaip numatyta. Aš taip pat apėjau šią problemą, turėdamas atskirą fizinį mygtuką, kuris suaktyvina slankiklio judesį.

Toliau pakalbėkime apie sukimosi sekimo elementą. Ši dalis atrodo labai sudėtinga integruoti, tačiau iš tikrųjų ji yra gana paprasta. Tai įgyvendinama pagal „motor ()“funkciją mano „Arduino“kode. Pirmasis žingsnis yra sudaryti 2 matmenų tinklelį ir nuspręsti, kur yra objektas, kurį norite stebėti. Remdamiesi tuo, galite nubrėžti trikampį į savo dabartinę vietą. Dabartinę vietą galite sužinoti iš variklio kodavimo vertės. Jei norite konfigūruoti sekamo objekto padėtį cm/mm, turėsite išversti kodavimo reikšmę į cm/mm reikšmę. Tai galima padaryti tiesiog perkeliant fotoaparato slankiklį 1 cm ir matuojant kodavimo vertės padidėjimą. Šią vertę galite įvesti kodo viršuje, po kintamuoju encoder_mm.

Toliau mes naudosime atvirkštinio liestinės funkciją, kad gautume kampą, kuriuo kamera turi būti nukreipta į jūsų objektą. Atvirkštinė liestinė užima priešingą ir gretimą trikampio kraštą. Priešinga trikampio kraštinė niekada nesikeičia, nes tai yra y atstumas nuo slankiklio iki objekto. Tačiau gretima kameros slankiklio pusė pasikeičia. Šią gretimą pusę galima apskaičiuoti paėmus objekto x padėtį ir atimant iš jos dabartinę padėtį. Kai slankiklis juda per savo judesio diapazoną, jis nuolat atnaujins „Arduino“kodavimo reikšmę. „Arduino“pakartotinai konvertuos šią kodavimo reikšmę į cm/mm x padėties vertę, tada apskaičiuos gretimą šoninį ilgį ir galiausiai apskaičiuos kampą, kuriuo fotoaparatas visada turi būti nukreiptas į objektą.

Dabar, kai mūsų „Arduino“dinamiškai apdoroja kameros kampą, galime išspręsti šio kampo konvertavimą į padėties vertę, kad sukamasis variklis galėtų judėti. Tai atneša mums didžiausią šio projekto „RoboClaw“savybę. Suteikdamas „Roboclaw“padėties vertę, jis iš esmės gali priversti nuolatinės srovės šlifuotą variklį veikti kaip servo. Išskyrus skirtingai nei servo, mūsų variklis turi tonų didesnį sukimo momentą, daug didesnį tikslumą ir taip pat gali suktis 360 laipsnių kampu.

„Arduino“kodas perkelti Roboklavą į tam tikrą padėtį yra toks:

roboclaw. SpeedAccelDeccelPositionM1 (adresas, „greitis“, „pagreitis“, „lėtėjimas“, „vieta, į kurią norite eiti“, 1);

Norėdami sureguliuoti variklio padėties vertę, kad ji atitiktų jūsų kameros kampą, turėsite rankiniu būdu perkelti kameros plokštę 180 laipsnių kampu. Toliau pažiūrėkite, kiek pasikeitė kodavimo priemonės vertė nuo fotoaparato plokštės perkėlimo nuo 0 laipsnių iki 180 laipsnių. Tai suteikia kodavimo diapazoną. Šį diapazoną galite įvesti variklio funkcijoje, kuri susieja „Arduino“kameros kampą su padėties verte. Tai taip pat komentuojama kode, todėl ją turėtų būti lengva rasti *****

„RoboClaw“taip pat suteikė man galimybę sureguliuoti kitus veiksnius, tokius kaip pagreitis, lėtėjimas ir PID vertės. Tai dar labiau leido man išlyginti sukimosi ašies judėjimą, ypač kai kampo pokyčiai buvo nedideli ir pridėjo trūkčiojimų be didelės „D“PID vertės. Taip pat galite automatiškai sureguliuoti savo PID vertes naudodami „Roboclaw“darbalaukio programą.

4 žingsnis: valdykite fotoaparato slankiklį

Fotoaparato slankiklio valdymas
Fotoaparato slankiklio valdymas

Dabar pereiname prie linksmosios dalies, valdydami slankiklį Meniu turi 4 pagrindinius skirtukus. Viršutinis skirtukas skirtas greičio valdymui. Vidurinėje meniu eilutėje yra skirtukai, kuriais galima konfigūruoti stebimo objekto X ir Y padėtį mm, taip pat konfigūruoti, ar norime, kad slankiklis suktųsi ir sektų mūsų objektą, ar tiesiog atliktume paprastą slydimo judesį nesisukdami. Sukamas kodavimo mechanizmas leidžia naršyti įvairiose meniu parinktyse. Norėdami sukonfigūruoti bet kurią parinktį, eikite į parinktį ir paspauskite sukamąjį kodavimo įrenginį. Paspaudus sukamąjį kodavimo įrenginį, pakeičiama paryškinto papildomo meniu reikšmė, o ne peržiūrimas meniu. Pasiekę norimą vertę, galite dar kartą spustelėti sukamąjį kodavimo įrenginį. Dabar grįžote į pagrindinį meniu ir galite naršyti tarp skirtingų skirtukų. Kai būsite pasiruošę, tiesiog paspauskite mygtuką „Eiti“, esantį šalia ekrano, ir slankiklis atliks savo užduotis!

Įsitikinkite, kad kai baigsite naudoti fotoaparato slankiklį, kad fotoaparatas būtų „namų“padėtyje: slankiklio pusėje, nuo kurios jis pradėjo veikti. Taip yra todėl, kad variklio kodavimo įrenginys nėra absoliutus kodavimo įrenginys, o tai reiškia, kad „Roboclaw/Arduino“negali pasakyti, kur yra kodavimo įrenginys. Jie gali tik pasakyti, kiek pasikeitė kodavimo priemonė nuo paskutinio įjungimo. Tai reiškia, kad kai išjungsite fotoaparato slankiklį, slankiklis „pamirš“slankiklio padėtį ir nustatys koduotuvą į 0. Todėl, jei išjungsite slankiklį kitoje pusėje, įjungę slankiklį, jis pabandykite judėti toliau nei kraštas ir atsitrenkti į slankiklio sieną. Dėl šio kodavimo elgesio fotoaparatas iš naujo nustato sukimosi kampą po kiekvieno fotoaparato skaidrės judesio. Sukimosi ašis taip pat apsaugo save nuo smūgio į savo judesio diapazono pabaigą.

Tai galite išspręsti pridėdami galinius sustojimus ir nukreipimo procedūrą, kai paleidžiate. Būtent tai naudoja 3D spausdintuvai.

5 žingsnis: galutinės mintys ir tolesni patobulinimai

Aš primygtinai rekomenduoju kiekvienam kūrėjui sukurti savo šio slankiklio versijas, o ne kurti tą patį slankiklį. Pakeitus mano dizainą, galėsite sukurti savo slankiklį pagal jūsų specifikacijas ir geriau suprasti, kaip veikia elektronika ir kodas.

Aš padariau kodą kiek įmanoma skaitomą ir sukonfigūruojamą, kad galėtumėte pataisyti/kalibruoti skirtingus kodo kintamuosius pagal jūsų slankiklio specifikacijas. Kodas taip pat yra visiškai sudarytas iš funkcijų, taigi, jei norite nukopijuoti/ patobulinti/ perrašyti tam tikrą slankiklio elgseną, jums nereikia pakeisti viso kodo, o tik tų dalių, kurias norite redaguoti.

Galiausiai, jei sukurčiau 2.0 versiją, čia būtų keletas patobulinimų

  1. Didesnis sukimosi ašies variklio pavaros santykis. Didesnis pavarų santykis reiškia, kad galiu atlikti tikslesnius mažus judesius. Tai ypač svarbu, kai fotoaparatas yra toli nuo jūsų objekto ir jūsų kampas keičiasi labai lėtai. Šiuo metu mano variklis nėra per didelis, todėl jis gali šiek tiek trūkčioti, kai fotoaparato slankiklis veikia per lėtai arba kai labai mažai keičiasi sukimosi kampas. Pridėjus didelę „D“PID vertę, man padėjo to atsikratyti, tačiau tai kainavo šiek tiek mažesnį objektų sekimo tikslumą.
  2. Modulinis ilgis. Tai toli siekiamas tikslas, tačiau norėčiau, kad fotoaparato slankiklis būtų modulinio ilgio, o tai reiškia, kad galite lengvai pritvirtinti ilgesnius takelius, kad fotoaparatas galėtų slinkti. Tai gana sunku, nes jūs turite puikiai suderinti abu takelius ir išsiaiškinti, kaip diržų sistema veikia. Nepaisant to, tai būtų puikus atnaujinimas!
  3. Individualus judesio raktų kadravimas. Norėčiau į šią kameros slankiklį įvesti raktinių judesių sąvoką. „Keyframing“yra technika, labai dažnai naudojama vaizdo ir garso gamyboje. Tai leistų netiesinius fotoaparato judesius, kai fotoaparatas eina į tam tikrą padėtį, laukia, tada juda į kitą poziciją kitu greičiu, laukia, tada pereina į trečią padėtį ir pan.
  4. „Bluetooth“/ belaidžio telefono valdymas. Būtų tikrai šaunu, jei būtų galima belaidžiu būdu konfigūruoti fotoaparato slankiklio parametrus ir būtų galima diegti fotoaparato slankiklį sunkiai pasiekiamose vietose. Telefono programa taip pat galėtų atverti galimybes integruoti raktinį kadrą, kaip minėta paskutinėje pastraipoje.

Tai šiai pamokai. Nesivaržykite mesti bet kokių klausimų žemiau esančiame komentarų skyriuje.

Daugiau turinio ir elektronikos pamokų taip pat galite peržiūrėti mano „YouTube“kanale čia.

Rekomenduojamas: