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, Studeni
Anonim
Image
Image
Dizajn hardvera + izrada + 3D ispis
Dizajn hardvera + izrada + 3D ispis

Fusion 360 projekti »

Ovaj projekt bio je jedan od mojih omiljenih projekata otkad sam spojio svoj interes za snimanje videa s DIY. Uvijek sam gledao i želio 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 učinak inače 2d videu. Želeći to ponoviti bez trošenja tisuća dolara na holivudsku opremu, odlučio sam i sam napraviti 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 dolje.

CAD/ 3D datoteke za ispis dostupne su ovdje

Arduino kod datoteka dostupna ovdje

Projekt se vrti oko 2 zupčasto brušena istosmjerna motora 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, tonama okretnog momenta i punih 360 stupnjeva rotacije. O ovome kasnije.

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

Materijali-

  • 2x 1 metar dugačke m10 navojne šipke za spajanje svih dijelova
  • 8x matica M10 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 skateboard (vanjski promjer 22 mm, unutarnji promjer 8 mm) za os rotacije
  • 1x ležaj od 15 mm za bočnu stranu
  • 1x vijak m4 duljine 4 cm s m4 maticom za pričvršćivanje praznog ležaja na 3d ispisani dio praznog hoda.
  • Zupčanik od 20 zubaca s unutarnjim promjerom 4 mm za klizni motor. Toč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š remen
  • 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 upravlja osi 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 LiPo bateriju od 7,4 V 2 ćelije)
  • Zaslon (Za prikaz izbornika. Bilo koji U8G kompatibilan zaslon će raditi, koristio sam ovaj 1,3 -inčni OLED zaslon)
  • Rotacijski koder (Za navigaciju i konfiguriranje opcija u izborniku)
  • Fizički gumb (za pokretanje pokreta klizača)

Korak 1: Dizajn hardvera + izrada + 3D ispis

Elektronika
Elektronika

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

Počnimo sa jezgrom ovog projekta- 2 istosmjerna motora sa četkom.

Izabrao sam četkaste istosmjerne motore iz nekoliko razloga.

  1. Četkasti motori mnogo su jednostavniji za povezivanje i rad u usporedbi s koračnim motorima
  2. Četkasti istosmjerni motori mnogo su lakši od istosmjernih motora što je posebno važno za motor s rotacijskom osovinom budući da se taj motor fizički pomiče bočno s kamerom i da je što je moguće svjetlije važno za sprječavanje prekomjernog naprezanja na motoru klizača primarne kamere.

Odabrao sam ovaj istosmjerni motor. Ovaj motor mi je dao iznimno veliki zakretni moment koji je bio neophodan za premještanje tako velikog tereta kamere. Nadalje, visoki zupčanik značio je 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 izlaznog vratila za 360 stupnjeva značilo 341,2 broja kodera motora.

Ovo nas dovodi do RoboClaw kontrolera kretanja. Upravljač s dvostrukim istosmjernim motorom Roboclaw 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 serije. Paketna serija je najbolji način za pokretanje jer vam omogućuje da iz Roboclawa dobijete informacije potrebne za praćenje položaja. U sljedećem koraku (programiranje) dublje ću zaroniti u programski/programski dio Roboclawa.

U biti, Roboclaw može transformirati istosmjerni četkani motor s enkoderom kako bi bio više poput serva zahvaljujući sposobnosti RoboClawa da vrši pozicijsku kontrolu. Međutim, za razliku od tradicionalnog servo pogona, sada vaš brušeni istosmjerni motor ima mnogo veći okretni moment, mnogo veću točnost pozicioniranja zbog velikog 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 zaslon. Za svoj zaslon odabrao sam ovu OLED ploču zbog njene veličine i visokog kontrasta. Ovaj visoki kontrast nevjerojatan i čini zaslon vrlo lakim za korištenje na izravnoj sunčevoj svjetlosti, a pritom ne daje previše svjetla koje može ometati potencijalni tamni snimak fotoaparatom. Ovaj se zaslon može lako zamijeniti za drugi zaslon kompatibilan s U8G. Cijeli popis kompatibilnih zaslona dostupan je ovdje. Zapravo, ovaj je projekt namjerno kodiran u knjižnici U8G, pa su graditelji poput vas imali više fleksibilnosti u svojim dijelovima

Posljednji dijelovi elektronike za ovaj projekt bili su rotacijski enkoder i gumb za pokretanje klizača. Kodirač vam omogućuje da se krećete kroz izbornik na zaslonu i konfigurirate sve izbornike klizača sa samo jednim brojčanikom. Okretni koder nema krajnji položaj poput tradicionalnog potenciometra, a to je osobito korisno za podešavanje x i y koordinata praćenja objekta na ekranu. Gumb se koristi isključivo za pokretanje klizača bez potrebe za petljanjem po rotacijskom 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 s ekrana. Kako bih ovaj projekt bio kompatibilan sa što je više ekrana, morao sam koristiti U8Glib knjižnicu za Arduino. Ova knjižnica podržava više od 32 zaslona. Međutim, knjižnica U8Glib koristila je petlju sa slikama za crtanje izbornika na ekranu, što je u suprotnosti sa Arduinovom sposobnošću da istovremeno prikuplja informacije o položaju kamere koje su bile potrebne za funkcionalnost izračuna kuta kamere (To je obrađeno u sljedećih nekoliko odlomaka)). U8Glib2 ima alternativu slikovnoj petlji korištenjem nečega što se naziva opcijom međuspremnika za punu stranicu, ali je knjižnica potrošila previše memorije i otežala prilagodbu 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 zaslona kad god je klizač bio u pokretu i Arduino je trebao prikupljati podatke o položaju iz Roboclawa. Također sam bio prisiljen pokrenuti klizač da se počne kretati izvan petlje izbornika jer kad bih ušao u podizbornike, 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. Čini se da je ovaj dio vrlo složen za integraciju, ali zapravo je 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 temelju toga možete nacrtati trokut na svoju trenutnu lokaciju. Svoju trenutnu lokaciju možete dobiti iz vrijednosti davača 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 pri vrhu koda ispod varijable encoder_mm.

Idemo dalje, sada ćemo koristiti funkciju inverzne tangente kako bismo dobili kut prema kojem 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 ipak mijenja. Ova susjedna strana može se izračunati uzimanjem x položaja objekta i oduzimanjem trenutnog položaja 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 susjednu duljinu stranice i na kraju izračunati kut prema kojem kamera mora biti okrenuta cijelo vrijeme 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 može bitno učiniti da se istosmjerni četkasti motor 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đeni položaj 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. To vam daje vaš raspon kodera. Ovaj raspon možete unijeti u funkciju motora koja preslikava kut kamere Arduina na pozicijsku vrijednost. To je također komentirano u kodu pa bi trebalo biti lako pronaći *****

RoboClaw mi je također dao mogućnost podešavanja drugih čimbenika, 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 vrijednosti "D" PID. Također možete automatski podesiti svoje PID vrijednosti putem aplikacije za računare Roboclaw.

Korak 4: Rukovanje klizačem kamere

Upravljanje klizačem kamere
Upravljanje klizačem kamere

Sada dolazimo do zabavnog dijela, upravljanje klizačem Izbornik ima 4 glavne kartice. Gornja kartica je posvećena kontroli brzine. Srednji redak izbornika sadrži kartice za konfiguriranje položaja X i Y praćenog objekta u mm, a također i konfiguriranje želimo li klizač rotirati i pratiti naš objekt ili jednostavno izvesti klizno kretanje bez rotacije. Uvrtanje okretnog davača omogućuje nam navigaciju različitim opcijama izbornika. Da biste konfigurirali bilo koju od opcija, idite na opciju i pritisnite okretni davač. Kada se pritisne, okretanje rotacijskog davača promijenit će vrijednost označenog podizbornika, a ne listati kroz izbornik. Nakon što postignete željenu vrijednost, možete ponovno kliknuti na okretni davač. Sada ste se vratili na glavni izbornik i možete se kretati između različitih kartica. Kad ste spremni, jednostavno pritisnite gumb za pokretanje pored zaslona i klizač će učiniti svoje!

Kad završite s korištenjem klizača kamere, provjerite je li kamera u "kućnom" položaju: sa strane klizača na kojoj je započela. Razlog tome je što davač 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 zabiti se u zid klizača. Ovakvo ponašanje kodera također je razlog zašto kamera vraća kut rotacije nakon svakog klizanja kamere. Rotacijska os također se štiti od udara u kraj svog raspona kretanja.

To možete riješiti dodavanjem završnih zaustavljanja i postupkom navođenja pri pokretanju. Ovo koriste 3D pisač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 klizač izradite 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 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. To je osobito važno kada je kamera udaljena od vašeg objekta i kut kamere se mijenja vrlo sporo. Trenutno moj motor nije usmjeren previsoko i može rezultirati lagano trznutim pokretima kada klizač kamere radi presporo ili kad se promijeni vrlo mali kut rotacije. Dodavanje visoke vrijednosti "D" PID pomoglo mi je da se toga riješim, ali to je došlo po cijenu nešto niže točnosti praćenja objekata.
  2. Modularna duljina. Ovo je krajnje očekivan cilj, ali volio bih da klizač kamere bude modularne duljine, što znači da možete jednostavno pričvrstiti duže duljine tragova za klizanje kamere. To je prilično teško jer ćete morati savršeno poravnati obje staze i smisliti kako funkcionirati sustav 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 odlazi 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čno upravljanje telefonom. Bilo bi jako cool kad biste mogli bežično konfigurirati parametre klizača kamere i postaviti klizač kamere na teško dostupna mjesta. Telefonska aplikacija 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č. Sva pitanja slobodno postavite u donjem odjeljku komentara.

Za više sadržaja i elektroničke vodiče možete pogledati i moj YouTube kanal ovdje.

Preporučeni: