Kazalo:

Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in vgrajeno v krmilnik DC motorja RoboClaw & Arduino: 5 korakov (s slikami)
Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in vgrajeno v krmilnik DC motorja RoboClaw & Arduino: 5 korakov (s slikami)

Video: Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in vgrajeno v krmilnik DC motorja RoboClaw & Arduino: 5 korakov (s slikami)

Video: Drsnik kamere za sledenje objektom z rotacijsko osjo. 3D natisnjeno in vgrajeno v krmilnik DC motorja RoboClaw & Arduino: 5 korakov (s slikami)
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Julij
Anonim
Image
Image
Oblikovanje strojne opreme + Build + 3D tiskanje
Oblikovanje strojne opreme + Build + 3D tiskanje

Projekti Fusion 360 »

Ta projekt je bil eden mojih najljubših projektov, odkar sem svoje zanimanje za snemanje videa združil z DIY. Vedno sem gledal in želel posnemati tiste kinematografske posnetke v filmih, kjer se kamera premika po zaslonu, medtem ko se premika, da sledi objektu. To sicer 2D videu doda zelo zanimiv globinski učinek. Ker sem želel to ponoviti, ne da bi zapravil na tisoče dolarjev za hollywoodsko opremo, sem se odločil, da bom sam izdelal tak drsnik za kamero.

Celoten projekt je zgrajen na delih, ki jih lahko 3D natisnete, koda pa teče na priljubljeni plošči Arduino. Vse datoteke projekta, kot so datoteke in koda CAD, so na voljo za prenos spodaj.

CAD/ 3D datoteke za tiskanje so na voljo tukaj

Datoteka Arduino Code je na voljo tukaj

Projekt se vrti okrog dveh krmiljenih enosmernih motorjev z enojnim pogonom in krmilnika Basic Micro Roboclaw Motor. Ta krmilnik motorja lahko pretvori brušene enosmerne motorje v vrhunsko vrsto servomotorja z neverjetno natančnostjo pozicioniranja, tonami navora in celo 360 stopinjami vrtenja. Več o tem kasneje.

Preden nadaljujemo, si najprej oglejte video vadnico, povezano tukaj. Ta vadnica vam bo dala pregled, kako zgraditi ta projekt, ta priročnik Instructables pa bo podrobneje opisal, kako sem zgradil ta projekt.

Materiali-

  • 2x 1 meter dolge navojne palice m10, ki se uporabljajo za povezavo vseh delov
  • 8x matice M10 za pritrditev delov na navojne palice
  • 2x 95 cm dolge 8 mm gladke jeklene palice za drsenje drsnika
  • 4x ležaji lm8uu za gladko drsenje drsnika po jeklenih palicah
  • 4x 10 mm dolge matice za montažo motorja
  • 2 x ležaji za rolke (zunanji premer 22 mm, notranji premer 8 mm) za os vrtenja
  • 1x 15 mm ležaj za prosti tek
  • 1x 4 cm dolg vijak m4 z varovalno matico m4 za pritrditev ležaja za prosti tek na 3D tiskani del.
  • 20 zobnikov z notranjim premerom 4 mm za drsni motor. Natančna jermenica ni zelo pomembna, saj mora biti enosmerni motor prilagojen za dovolj navora. Prepričajte se, da je enaka višina kot vaš pas
  • 2 metra dolg pas GT2. Spet lahko uporabite kateri koli pas, če se ujema z višino zob vašega škripca.

Elektronika

  • 2 * Motorji z enosmernim tokom z dajalniki (eden nadzoruje bočno gibanje, drugi pa vrtilno os). Tukaj je tisti, ki sem ga uporabil. Več o tem v delu vodnika o elektroniki
  • RoboClaw krmilnik motorja DC. (Uporabil sem dvojni krmilnik 15Amp, ker mi je omogočal krmiljenje obeh motorjev z enim krmilnikom)
  • Vsak Arduino. Uporabil sem Arduino UNO
  • Baterija/ vir energije. (Uporabil sem 7.4V 2 -celično LiPo baterijo)
  • Zaslon (Za prikaz menija. Vsak zaslon, združljiv z U8G, bo deloval, uporabil sem ta 1,3 -palčni zaslon OLED)
  • Rotacijski dajalnik (Za krmarjenje in konfiguriranje možnosti v meniju)
  • Fizični gumb (za sprožitev premikanja drsnika)

1. korak: Oblikovanje strojne opreme + Gradnja + 3D tiskanje

Elektronika
Elektronika

Nato pojdimo na elektroniko. Elektronika je pri tem projektu velika prilagodljivost.

Začnimo z jedrom tega projekta- 2 brušenima enosmernima motorjema.

Za nekaj razlogov sem se odločil za brušene enosmerne motorje.

  1. Krtačeni motorji so veliko enostavnejši za ožičenje in upravljanje v primerjavi s koračnimi motorji
  2. Brušeni enosmerni motorji so veliko lažji od enosmernih motorjev, kar je še posebej pomembno za motor z rotacijsko osjo, saj se ta motor fizično premika bočno s kamero, zaradi česar je čim lažja svetloba pomembna za preprečevanje prekomerne obremenitve primarnega drsnega motorja kamere.

Izbral sem ravno ta DC motor. Ta motor mi je dal izjemno veliko navora, ki je bil potreben za premikanje tako velike obremenitve kamere. Poleg tega je visoko prestavljanje pomenilo, da je največji vrtljaj v minuti počasen, kar je pomenilo, da lahko snemam počasnejše premike, visoko prestavljanje pa vodi tudi do večje pozicijske natančnosti, saj je eno 360 -stopinjsko obračanje izhodne gredi pomenilo 341,2 števila dajalnika motorja.

To nas pripelje do krmilnika gibanja RoboClaw. Dvojni krmilnik motorja Roboclaw z dvojnim enosmernim motorjem sprejema preprosta navodila iz vašega Arduina prek preprostih kodnih ukazov in opravi vso težko obdelavo in dobavo energije, da bo vaš motor deloval po predvidevanjih. Arduino lahko pošilja signale v Roboclaw preko PWM, analogne napetosti, preproste serijske ali paketne serijske povezave. Paketna serija je najboljši način, saj vam omogoča, da iz Roboclawa dobite informacije, ki so potrebne za sledenje položaja. V naslednjem koraku (programiranje) se bom poglobil v programsko/programski del Roboclawa.

V bistvu lahko Roboclaw zaradi zmožnosti RoboClawa za pozicijsko krmiljenje pretvori enosmerni motor z enosmernim tokom z dajalnikom. Vendar pa ima za razliko od tradicionalnega servomotorja vaš brušeni enosmerni motor veliko več navora, veliko večjo natančnost položaja zaradi visokega prenosa motorja, najpomembneje pa je, da se vaš enosmerni motor neprekinjeno vrti za 360 stopinj, od česar tradicionalni servo motor ne zmore.

Naslednji del elektronike je zaslon. Za svoj zaslon sem izbral to ploščo OLED zaradi njene velikosti in visokega kontrasta. Ta visok kontrast je neverjeten in omogoča, da je zaslon zelo enostaven za uporabo pri neposredni sončni svetlobi, hkrati pa ne oddaja preveč svetlobe, ki bi lahko vplivala na morebitne temne posnetke kamere. Ta zaslon lahko preprosto zamenjate za drug zaslon, združljiv z U8G. Celoten seznam združljivih zaslonov je na voljo tukaj. Pravzaprav je bil ta projekt namerno kodiran v knjižnici U8G, zato so imeli graditelji, kot ste vi, večjo prilagodljivost v svojih delih

Zadnji deli elektronike za ta projekt so bili vrtljivi dajalnik in gumb za zagon drsnika. Dajalnik vam omogoča krmarjenje po meniju na zaslonu in konfiguriranje vsega menija drsnika z enim samim števcem. Rotacijski dajalnik nima "končnega" položaja kot tradicionalni potenciometer, kar je še posebej uporabno za prilagajanje koordinat x in y za sledenje objektom na zaslonu. Gumb se uporablja izključno za zagon premikanja drsnika, ne da bi se morali poigrati z vrtljivim dajalnikom.

3. korak: Programiranje drsnika kamere

Programiranje drsnika kamere
Programiranje drsnika kamere
Programiranje drsnika kamere
Programiranje drsnika kamere

Kodiranje je bilo daleč najtežji izziv tega projekta. Vidite, od začetka sem želel, da je drsnik mogoče upravljati z zaslona. Da bi bil ta projekt združljiv s čim več zasloni, sem moral za Arduino uporabiti knjižnico U8Glib. Ta knjižnica podpira več kot 32 zaslonov. Vendar je knjižnica U8Glib uporabila slikovno zanko za risanje menija na zaslonu, kar je bilo v nasprotju z zmožnostjo Arduina, da hkrati zbira informacije o položaju kamere, ki so bile potrebne za funkcijo izračunavanja kota kamere (To je obravnavano v naslednjih nekaj odstavkih). U8Glib2 ima alternativo slikovni zanki z uporabo nečesa, kar se imenuje možnost medpomnilnika za polno stran, vendar je knjižnica porabila preveč pomnilnika in otežila prilagajanje preostale kode glede na pomnilniške omejitve Arduino Uno. To je pomenilo, da sem obtičal pri U8G in sem se moral izogniti težavi tako, da preprečim posodabljanje zaslona, kadar koli je bil drsnik v gibanju, Arduino pa je moral zbirati podatke o položaju iz Roboclawa. Prav tako sem bil prisiljen sprožiti drsnik, da se je začel premikati zunaj menijske zanke, saj bi bil, ko bi vstopil v podmenije, v slikovni zanki in drsnik ne bi deloval, kot je bilo predvideno. Temu problemu sem se izognil tudi z ločenim fizičnim gumbom, ki sproži gibanje drsnika.

Nato se pogovorimo o rotacijskem elementu za sledenje. Ta del se zdi zelo zapleten za integracijo, v resnici pa je precej preprost. Izvedba tega je pod funkcijo 'motor ()' v moji kodi Arduino. Prvi korak je, da naredite dvodimenzionalno mrežo in se odločite, kje je predmet, ki mu želite slediti. Na podlagi tega lahko narišete trikotnik na svojo trenutno lokacijo. Svojo trenutno lokacijo lahko dobite iz vrednosti dajalnika motorja. Če želite konfigurirati položaj predmeta, ki ga sledite, v cm/mm, morate vrednost dajalnika pretvoriti v vrednost cm/mm. To lahko preprosto naredite tako, da premaknete drsnik kamere za 1 cm in izmerite povečanje vrednosti kodirnika. To vrednost lahko vnesete na vrhu kode pod spremenljivko encoder_mm.

Če nadaljujemo, bomo s funkcijo inverzne tangente dobili kot, na katerega mora biti obrnjena kamera, usmerjen proti vašemu objektu. Inverzna tangenta prevzame nasprotno in sosednjo stran trikotnika. Nasprotna stran trikotnika se nikoli ne spremeni, saj je razdalja y od vašega drsnika do predmeta. Sosednja stran drsnika kamere pa se spremeni. To sosednjo stran je mogoče izračunati tako, da vzamete položaj predmeta x in od njega odštejete vaš trenutni položaj. Ko se drsnik premika po svojem območju gibanja, bo Arduino posodabljal glede na vrednost kodirnika. Arduino bo to vrednost dajalnika večkrat pretvoril v pozicijsko vrednost cm/mm x, nato pa izračunal dolžino sosednje strani in nazadnje izračunal kot, na katerega mora biti fotoaparat ves čas obrnjen, da kaže na objekt.

Zdaj, ko naš Arduino dinamično obdeluje kot kamere, se lahko lotimo pretvarjanja tega kota v pozicijsko vrednost, na katero se premakne rotacijski motor. To nas pripelje do največje funkcije RoboClaw za ta projekt. Če Roboclawu dodeli vrednost položaja, lahko v bistvu povzroči, da se enosmerni motor z enosmernim tokom obnaša kot servo. Razen za razliko od servomotorja ima naš motor na tone več navora, veliko večjo natančnost in se lahko vrti tudi za 360 stopinj.

Koda Arduino za premik Roboclawa na določeno mesto je naslednja:

roboclaw. SpeedAccelDeccelPositionM1 (naslov, 'hitrost', 'pospešek', 'pojemek', 'položaj, kamor želite iti', 1);

Če želite pozicijsko vrednost motorja prilagoditi kotu kamere, morate ročno premakniti ploščo kamere za 180 stopinj. Nato si oglejte, kako se je vrednost kodirnika spremenila s premikanjem plošče kamere z 0 stopinj na 180 stopinj. Tako dobite obseg kodirnika. To območje lahko vnesete v funkcijo motorja, ki preslika kot kamere Arduina na pozicijsko vrednost. To je zapisano tudi v kodi, zato bi ga bilo enostavno najti *****

RoboClaw mi je omogočil tudi prilagajanje drugih dejavnikov, kot so pospešek, pojem in vrednosti PID. To mi je dodatno omogočilo, da sem ublažil gibanje vrtilne osi, še posebej, če so bile spremembe kota majhne in so dodani sunki brez visoke vrednosti "D" PID. Vrednosti PID lahko tudi samodejno nastavite prek namizne aplikacije Roboclaw.

4. korak: Upravljanje drsnika kamere

Upravljanje drsnika kamere
Upravljanje drsnika kamere

Zdaj smo prišli do zabavnega dela, upravljanje z drsnikom Meni ima 4 glavne zavihke. Zgornji zavihek je namenjen nadzoru hitrosti. V srednji vrstici menija so zavihki za nastavitev položaja X in Y predmeta v gosenicah v mm, prav tako pa nastavimo, če želimo, da se drsnik vrti in sledi našemu objektu, ali pa naredimo preprosto drsno gibanje brez vrtenja. Z vrtenjem vrtljivega dajalnika lahko krmarimo po različnih možnostih menijev. Če želite konfigurirati katero koli možnost, se pomaknite do možnosti in pritisnite vrtljivi dajalnik. Ko pritisnete, z vrtenjem vrtljivega dajalnika spremenite vrednost označenega podmenija in ne listate po meniju. Ko dosežete želeno vrednost, lahko znova kliknete vrtljivi dajalnik. Zdaj ste nazaj v glavni meni in lahko krmarite med različnimi zavihki. Ko ste pripravljeni, preprosto pritisnite gumb za zagon poleg zaslona in drsnik naredi svoje!

Ko končate z uporabo drsnika kamere, se prepričajte, da je fotoaparat v "domačem" položaju: na strani drsnika, na katerem se je začel. Razlog za to je, da dajalnik motorja ni absolutni dajalnik, kar pomeni, da Roboclaw/Arduino ne more vedeti, kje je kodirnik. Lahko povejo le, koliko se je kodirnik spremenil od zadnjega vklopa. To pomeni, da ko drsnik fotoaparata izklopite, bo drsnik "pozabil" položaj drsnika in dajalnik ponastavil na 0. Zato, če drsnik izklopite na drugi strani, ko ga vklopite, bo drsnik poskusite se premakniti dlje od roba in trčiti v steno drsnika. To vedenje dajalnika je tudi razlog, zakaj fotoaparat po vsakem premiku fotoaparata ponastavi kot vrtenja. Rotacijska os se prav tako ščiti pred trkom v konec svojega območja gibanja.

To lahko odpravite tako, da med zagonom dodate končne točke in postopek usmerjanja. To uporabljajo 3D tiskalniki.

5. korak: Končne misli + prihodnje izboljšave

Močno priporočam, da vsak graditelj izdela svoje različice tega drsnika, namesto da bi izdelal popolnoma istega drsnika. Prilagoditev moje zasnove vam bo omogočila, da drsnik sestavite po svojih natančnih specifikacijah, hkrati pa boste bolje razumeli delovanje elektronike in kode.

Kodo sem naredil čim bolj berljivo in nastavljivo, tako da lahko prilagodite/umerite različne spremenljivke kode za specifikacije drsnika. Koda je v celoti zgrajena tudi okoli funkcij, zato, če želite kopirati/ prilagoditi/ prepisati določeno vedenje drsnika, vam ni treba spremeniti inženiringa in predelati celotne kode, temveč le dele, ki jih želite urediti.

Nazadnje, če bi naredil različico 2.0, bi naredil nekaj izboljšav

  1. Višje prestavno razmerje za motor z rotacijsko osjo. Višje prestavno razmerje pomeni, da lahko naredim natančnejše majhne poteze. To je še posebej kritično, če je kamera daleč od vašega predmeta in se kot kamere zelo počasi spreminja. Trenutno moj motor ni nastavljen previsoko in lahko povzroči rahlo sunkovito gibanje, ko drsnik fotoaparata deluje prepočasi ali ko se zelo malo spremeni kot vrtenja. Dodajanje visoke vrednosti "D" PID mi je pomagalo, da sem se tega znebil, vendar je prišlo zaradi cene nekoliko nižje natančnosti sledenja predmetom.
  2. Modularna dolžina. To je daleč cilj, vendar bi rad, da je drsnik kamere modularne dolžine, kar pomeni, da lahko preprosto pritrdite daljše dolžine sledi, da fotoaparat zdrsne. To je precej težko, saj bo treba popolnoma uskladiti obe stezi in ugotoviti, kako bo sistem pasov deloval. Kljub temu bi bila to super nadgradnja!
  3. Keyframing gibanje po meri. V drsnik za kamero bi rad predstavil koncept premikanja s ključnimi sličicami. Keyframing je tehnika, ki se zelo pogosto uporablja v video in avdio produkciji. Omogočal bi nelinearno premikanje kamere, kjer se kamera premakne v položaj, počaka, nato se premakne v drug položaj z drugačno hitrostjo, počaka, nato gre v tretji položaj itd.
  4. Bluetooth/ brezžični nadzor telefona. Bilo bi res kul, če bi lahko brezžično konfigurirali parametre drsnika kamere in drsnik kamere umestili na težko dostopna mesta. Telefonska aplikacija bi lahko odprla tudi možnosti za vključitev ključnih kadrov, kot je omenjeno v zadnjem odstavku.

To je to za to vadnico. Vsa vprašanja postavite v spodnjem razdelku za komentarje.

Za več vadnic o vsebini in elektroniki si lahko ogledate tudi moj YouTube kanal tukaj.

Priporočena: