Sadržaj:

Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i ugrađeno na RoboClaw DC kontroleru motora i Arduinu: 5 koraka (sa slikama)
Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i ugrađeno na RoboClaw DC kontroleru motora i Arduinu: 5 koraka (sa slikama)

Video: Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i ugrađeno na RoboClaw DC kontroleru motora i Arduinu: 5 koraka (sa slikama)

Video: Klizač kamere za praćenje objekata s rotacijskom osi. 3D ispisano i ugrađeno na RoboClaw DC kontroleru motora i Arduinu: 5 koraka (sa slikama)
Video: Kinematografske snimke dronova 20 bitnih savjeta! 2024, Novembar
Anonim
Image
Image
Dizajn hardvera + Izrada + 3D štampanje
Dizajn hardvera + Izrada + 3D štampanje

Fusion 360 projekti »

Ovaj projekat je jedan od mojih omiljenih projekata otkad sam spojio interesovanje za snimanje videa sa „uradi sam“. Uvijek sam gledao i htio oponašati one filmske kadrove u filmovima gdje se kamera pomiče po ekranu dok se pomiče kako bi pratila objekt. Ovo dodaje vrlo zanimljiv dubinski efekat inače 2d videu. Želeći to ponoviti bez trošenja hiljada dolara na holivudsku opremu, odlučio sam da napravim takav klizač za kameru.

Cijeli projekt izgrađen je na dijelovima koje možete 3D ispisati, a kôd se izvodi na popularnoj Arduino ploči. Sve datoteke projekta, poput CAD datoteka i koda, dostupne su za preuzimanje ispod.

CAD/ 3D datoteke za štampanje dostupne su ovdje

Arduino kod datoteka dostupna ovdje

Projekt se vrti oko 2 zupčastog motora sa četkastim zupčanikom i kontrolera motora Basic Micro Roboclaw. Ovaj kontroler motora može pretvoriti brušene istosmjerne motore u vrhunsku vrstu servo pogona s nevjerojatnom točnošću položaja, tona okretnog momenta i punih 360 stupnjeva rotacije. O ovome kasnije.

Prije nego nastavimo, najprije pogledajte video vodič koji je ovdje povezan. Taj vodič će vam dati pregled kako izgraditi ovaj projekt, a ovaj vodič s uputama će detaljnije objasniti kako sam ja izgradio ovaj projekt.

Materijali-

  • 2x 1 metar navojne šipke m10 za spajanje svih dijelova
  • 8x M10 matica za montažu dijelova na šipke s navojem
  • 2x 95 cm dugačke glatke čelične šipke od 8 mm za klizanje
  • 4x ležajevi lm8uu za klizač za glatko klizanje po čeličnim šipkama
  • 4x 10 mm dugačke matice za montažu motora
  • 2 x ležaja za skejtbord (spoljni prečnik 22 mm, unutrašnji prečnik 8 mm) za os rotacije
  • 1x ležaj od 15 mm za praznu stranu
  • 1x vijak m4 dužine 4 cm sa m4 maticom za pričvršćivanje praznog ležaja na 3d štampani dio praznog hoda.
  • Zupčanik sa 20 zubaca sa unutrašnjim prečnikom 4 mm za klizni motor. Tačna remenica nije jako važna jer bi vaš istosmjerni motor trebao biti prilagođen za dovoljan zakretni moment. Samo pazite da bude iste visine kao i vaš pojas
  • GT2 pojas dugačak 2 metra. Opet možete koristiti bilo koji remen sve dok odgovara visini zuba vašeg remenice.

Elektronika

  • 2 * DC motori sa zupčanikom s enkoderima (jedan kontrolira bočno kretanje, dok drugi kontrolira os rotacije). Evo jedne koju sam koristio. Više o tome u dijelu vodiča o elektronici
  • RoboClaw kontroler istosmjernog motora. (Koristio sam dvostruki kontroler od 15 Ampera jer mi je omogućio upravljanje oba motora s jednim kontrolerom)
  • Bilo koji Arduino. Koristio sam Arduino UNO
  • Baterija/ izvor napajanja. (Koristio sam 7.4V 2 -ćelijsku LiPo bateriju)
  • Ekran (Za prikaz menija. Svaki ekran kompatibilan sa U8G će raditi, koristio sam ovaj 1,3 -inčni OLED ekran)
  • Rotacijski koder (Za navigaciju i konfiguriranje opcija u izborniku)
  • Fizičko dugme (za pokretanje pokreta klizača)

Korak 1: Dizajn hardvera + Izrada + 3D štampanje

Elektronika
Elektronika

Zatim prijeđimo na elektroniku. Elektronika je mjesto gdje ovaj projekt ima veliku fleksibilnost.

Počnimo sa srži ovog projekta- 2 istosmjerna motora sa četkom.

Odabrao sam istosmjerne motore sa četkom iz nekoliko razloga.

  1. Četkasti motori su mnogo jednostavniji za povezivanje i rad u odnosu na koračne motore
  2. Četkasti istosmjerni motori mnogo su lakši od istosmjernih motora, što je posebno važno za motor rotacijske osi, jer se taj motor fizički pomiče bočno s kamerom i što je moguće svjetlije važno za sprječavanje prekomjernog naprezanja na motoru primarne kamere.

Odabrao sam baš ovaj DC motor. Ovaj motor mi je dao izuzetno veliki obrtni moment koji je bio neophodan za premještanje tako velikog tereta kamere. Nadalje, visoki zupčanik je značio da je vršni broj okretaja spor, što je značilo da mogu snimati sporije kretnje, a visoki prijenos također dovodi do veće točnosti položaja jer je jedno okretanje izlazne osovine za 360 stupnjeva značilo 341,2 broja kodera motora.

Ovo nas dovodi do RoboClaw kontrolera kretanja. Roboclaw motor sa dvostrukim DC regulatorom motora preuzima jednostavne upute s vašeg Arduina putem jednostavnih naredbi koda i obavlja svu tešku obradu i isporuku energije kako bi vaš motor funkcionirao kako je predviđeno. Arduino može slati signale u Roboclaw putem PWM -a, analognog napona, jednostavne serijske ili paketne serijske veze. Paketna serija je najbolji način za pokretanje jer vam omogućuje da dobijete informacije iz Roboclawa koje su potrebne za praćenje položaja. U sljedećem koraku (programiranje) dublje ću zaroniti u programski/programski dio Roboclawa.

U osnovi, Roboclaw može transformirati istosmjerni četkani motor s enkoderom kako bi bio više poput servo -a zahvaljujući sposobnosti RoboClawa da vrši pozicijsku kontrolu. Međutim, za razliku od tradicionalnog servo -a, sada vaš četkani istosmjerni motor ima mnogo veći okretni moment, mnogo veću točnost položaja zbog visokog prijenosa motora, i što je najvažnije, vaš istosmjerni motor može se vrtjeti za 360 stupnjeva neprekidno, od čega tradicionalni servo ne može.

Sljedeći dio elektronike je ekran. Za ekran sam odabrao ovaj OLED panel zbog njegove veličine i visokog kontrasta. Ovaj visoki kontrast je nevjerojatan i čini ekran vrlo lakim za upotrebu na direktnoj sunčevoj svjetlosti, a pritom ne daje previše svjetla koje može ometati potencijalni snimak tamne kamere. Ovaj ekran se može lako zamijeniti za drugi ekran kompatibilan sa U8G. Potpuna lista kompatibilnih ekrana dostupna je ovdje. U stvari, ovaj projekt je namjerno kodiran oko U8G biblioteke, pa su graditelji poput vas imali više fleksibilnosti u svojim dijelovima

Završni dijelovi elektronike za ovaj projekt bili su rotacijski enkoder i tipka za pokretanje klizača. Kodirač vam omogućava da se krećete kroz meni na ekranu i konfigurišete sve menije klizača sa samo jednim točkićem. Okretni koder nema krajnji položaj poput tradicionalnog potenciometra, a to je posebno korisno za podešavanje x i y koordinata za praćenje objekta na ekranu. Taster se koristi isključivo za pokretanje klizača bez potrebe za petljanjem po rotacionom davaču.

Korak 3: Programiranje klizača kamere

Programiranje klizača kamere
Programiranje klizača kamere
Programiranje klizača kamere
Programiranje klizača kamere

Kodiranje je bio daleko najteži izazov ovog projekta. Vidite, od početka sam htio da se klizačem može upravljati sa ekrana. Da bih ovaj projekt učinio kompatibilnim sa što više ekrana, morao sam koristiti biblioteku U8Glib za Arduino. Ova biblioteka podržava više od 32 ekrana. Međutim, biblioteka U8Glib koristila je petlju sa slikama za iscrtavanje menija na ekranu, što je u suprotnosti sa Arduinovom sposobnošću da istovremeno prikuplja informacije o položaju kamere koje su potrebne za funkcionalnost izračunavanja ugla kamere (Ovo će biti obrađeno u sljedećih nekoliko odlomaka)). U8Glib2 ima alternativu slikovnoj petlji korištenjem nečeg što se naziva opcijom me uspremnika cijele stranice, ali je biblioteka potrošila previše memorije i otežala prilagođavanje ostatka koda s obzirom na ograničenja memorije Arduino Uno. To je značilo da sam zaglavio s U8G -om i morao sam zaobići problem sprječavajući ažuriranje ekrana kad god je klizač bio u pokretu i Arduino je trebao prikupljati podatke o položaju iz Roboclawa. Takođe sam bio primoran da aktiviram klizač da se počne kretati izvan petlje menija, jer kada bih ušao u podmenije, bio bih unutar petlje sa slikom, a klizač ne bi radio kako je predviđeno. Također sam zaobišao ovaj problem tako što sam zasebnim fizičkim gumbom pokrenuo klizanje.

Zatim razgovarajmo o rotacijskom elementu za praćenje. Ovaj dio djeluje vrlo složeno za integraciju, ali je zapravo prilično jednostavan. Implementacija za to je pod funkcijom 'motor ()' unutar mog Arduino koda. Prvi korak je napraviti dvodimenzionalnu mrežu i odlučiti gdje se nalazi objekt koji želite pratiti. Na osnovu toga možete nacrtati trokut na vašoj trenutnoj lokaciji. Svoju trenutnu lokaciju možete dobiti iz vrijednosti kodera motora. Ako želite konfigurirati položaj objekta koji se prati u cm/mm, morat ćete prevesti vrijednost kodera u vrijednost cm/mm. To se jednostavno može učiniti pomicanjem klizača kamere za 1 cm i mjerenjem povećanja vrijednosti kodera. Ovu vrijednost možete unijeti na vrh koda ispod varijable encoder_mm.

Idemo dalje, sada ćemo koristiti funkciju inverzne tangente kako bismo dobili kut kojim kamera mora biti okrenuta prema vašem objektu. Inverzna tangenta uzima suprotnu i susjednu stranu trokuta. Suprotna strana trokuta nikada se ne mijenja jer je to y udaljenost od vašeg klizača do objekta. Međutim, susjedna strana klizača kamere se mijenja. Ova susjedna strana može se izračunati uzimanjem x pozicije objekta i oduzimanjem trenutne pozicije od njega. Kako se klizač pomiče kroz svoj raspon kretanja, nastavit će ažurirati Arduino na vrijednosti kodera. Arduino će više puta pretvoriti ovu vrijednost kodera u pozicijsku vrijednost cm/mm x, a zatim izračunati dužinu susjedne strane i na kraju izračunati kut s kojim kamera mora biti okrenuta u svakom trenutku kako bi bila usmjerena na objekt.

Sada kada naš Arduino dinamički obrađuje kut kamere, možemo se uhvatiti u koštac s pretvaranjem ovog kuta u pozicijsku vrijednost za kretanje rotacijskog motora. Ovo nas dovodi do najveće značajke RoboClawa za ovaj projekt. Dajući Roboclawu vrijednost položaja, on u osnovi može učiniti da se istosmjerni motor sa četkicom ponaša kao servo. Osim za razliku od servo pogona, naš motor ima mnogo više okretnog momenta, mnogo veću točnost i može okretati 360 stupnjeva.

Arduino kôd za premještanje Roboclawa na određenu poziciju je sljedeći:

roboclaw. SpeedAccelDeccelPositionM1 (adresa, 'brzina', 'ubrzanje', 'usporavanje', 'položaj na koji želite ići', 1);

Da biste podesili pozicijsku vrijednost motora tako da odgovara kutu kamere, morat ćete ručno pomaknuti ploču kamere za 180 stupnjeva. Zatim pogledajte koliko se vrijednost kodera promijenila s pomicanja ploče kamere s 0 stupnjeva na 180 stupnjeva. Ovo vam daje raspon kodera. Ovaj raspon možete unijeti u funkciju motora koja preslikava kut Arduinove kamere na pozicijsku vrijednost. Ovo je također komentirano u kodu pa bi trebalo biti lako pronaći *****

RoboClaw mi je također dao mogućnost podešavanja drugih faktora, poput ubrzanja, usporavanja i PID vrijednosti. To mi je dodatno omogućilo da ublažim kretanje rotacijske osi, posebno kada su promjene kuta bile male i dodale trzaje bez visoke ‘D’ PID vrijednosti. Također možete automatski podesiti svoje PID vrijednosti putem aplikacije za računare Roboclaw.

Korak 4: Rukovanje klizačem kamere

Rukovanje klizačem kamere
Rukovanje klizačem kamere

Sada dolazimo do zabavnog dijela, rukovanja klizačem Izbornik ima 4 glavne kartice. Gornja kartica je posvećena kontroli brzine. Srednji red izbornika sadrži kartice za konfiguriranje X i Y pozicije praćenog objekta u mm, a također i konfiguriranje ako želimo da se klizač rotira i prati naš objekt ili jednostavno kliznim pokretom bez rotacije. Uvrtanje okretnog davača omogućuje nam kretanje kroz različite opcije izbornika. Da biste konfigurirali bilo koju od opcija, idite na opciju i pritisnite okretni davač. Kada se pritisne, okretanje okretnog davača promijenit će vrijednost označenog pod-menija, a ne listati kroz meni. Nakon što postignete željenu vrijednost, možete ponovo kliknuti na okretni davač. Sada ste se vratili na glavni izbornik i možete se kretati između različitih kartica. Kada ste spremni, jednostavno pritisnite dugme za pokretanje pored ekrana i klizač će učiniti svoje!

Uvjerite se da je, nakon što završite s korištenjem klizača kamere, kamera u "kućnom" položaju: sa strane klizača na kojoj je započela. Razlog za to je što koder motora nije apsolutni davač, što znači da Roboclaw/Arduino ne može reći gdje se koder nalazi. Mogu samo reći koliko se koder promijenio od zadnjeg uključivanja. To znači da će, kada isključite klizač fotoaparata, klizač "zaboraviti" položaj klizača i postaviti koder na 0. Stoga, ako isključite klizač s druge strane, kada ga uključite, klizač će pokušajte se pomaknuti dalje od ruba i udariti u zid klizača. Ovakvo ponašanje kodera je i razlog zašto kamera vraća kut rotacije nakon svakog klizanja kamere. Rotacijska os također se štiti od sudaranja s krajem svog raspona kretanja.

To možete riješiti dodavanjem završnih zaustavljanja i postupkom navođenja pri pokretanju. Ovo koriste 3D štampači.

Korak 5: Završne misli + buduća poboljšanja

Toplo preporučujem da svaki graditelj napravi vlastitu verziju ovog klizača, a ne da izgradi potpuno isti klizač. Prilagođavanje mog dizajna omogućit će vam da napravite klizač prema vašim točnim specifikacijama, a također ćete bolje razumjeti kako elektronika i kod rade.

Učinio sam kôd što čitljivijim i konfigurabilnijim, tako da možete prilagoditi/kalibrirati različite varijable koda za vaše specifikacije klizača. Kôd je također u potpunosti izgrađen oko funkcija, pa ako želite kopirati/ prilagoditi/ prepisati određena ponašanja klizača, ne morate mijenjati inženjering i prerađivati cijeli kôd, već samo dijelove koje želite urediti.

Konačno, ako bih napravio verziju 2.0, evo nekih poboljšanja koja bih napravio

  1. Veći prijenosni omjer za motor rotacijske osi. Veći prijenosni omjer znači da mogu napraviti preciznije male poteze. Ovo je posebno važno kada je kamera udaljena od vašeg objekta i kada se ugao kamere jako sporo mijenja. Trenutno moj motor nije usmjeren previsoko i može rezultirati blago trznutim pokretima kada klizač kamere radi presporo ili kada se promijeni vrlo mali kut rotacije. Dodavanje visoke 'D' PID vrijednosti pomoglo mi je da se riješim ovoga, ali je došlo po cijenu malo niže preciznosti praćenja objekata.
  2. Modularna dužina. Ovo je krajnje namjeran cilj, ali volio bih da klizač kamere bude modularne duljine, što znači da možete jednostavno pričvrstiti veće duljine traga na koje fotoaparat može kliziti. To je prilično teško jer ćete morati savršeno poravnati obje staze i smisliti kako funkcionirati sistem pojaseva. Ipak, bila bi to super nadogradnja!
  3. Keyframing prilagođeno kretanje. Volio bih uvesti ovaj koncept pokreta s ključnim okvirima u ovaj klizač kamere. Keyframing je tehnika koja se vrlo često koristi u video i audio produkciji. Omogućilo bi nelinearno kretanje kamere gdje kamera prelazi u položaj, čeka, zatim se premješta u drugi položaj s drugom brzinom, čeka, zatim odlazi u treći položaj itd.
  4. Bluetooth/ bežična kontrola telefona. Bilo bi zaista super kad biste mogli bežično konfigurirati parametre klizača kamere i postaviti klizač kamere na teško pristupačne lokacije. Aplikacija za telefon također bi mogla otvoriti mogućnosti za integriranje ključnih kadrova kao što je spomenuto u posljednjem odlomku.

To je to za ovaj vodič. Slobodno postavite bilo kakva pitanja u donjem odjeljku komentara.

Za više tutorijala o sadržaju i elektronici možete pogledati i moj YouTube kanal ovdje.

Preporučuje se: