Cuprins:

Glisor cameră de urmărire a obiectelor cu axă de rotație. Imprimat 3D și construit pe controlerul de motor CC RoboClaw și Arduino: 5 pași (cu imagini)
Glisor cameră de urmărire a obiectelor cu axă de rotație. Imprimat 3D și construit pe controlerul de motor CC RoboClaw și Arduino: 5 pași (cu imagini)

Video: Glisor cameră de urmărire a obiectelor cu axă de rotație. Imprimat 3D și construit pe controlerul de motor CC RoboClaw și Arduino: 5 pași (cu imagini)

Video: Glisor cameră de urmărire a obiectelor cu axă de rotație. Imprimat 3D și construit pe controlerul de motor CC RoboClaw și Arduino: 5 pași (cu imagini)
Video: Care este cea mai buna camera pentru Vlogging? Sfanta Treime a camerelor pentru Youtube! 2024, Noiembrie
Anonim
Image
Image
Hardware Design + Build + 3D Printing
Hardware Design + Build + 3D Printing

Proiecte Fusion 360 »

Acest proiect a fost unul dintre proiectele mele preferate de când am ajuns să îmi combin interesul de a face video cu DIY. M-am uitat mereu și am vrut să imit acele fotografii cinematografice din filme în care o cameră se mișcă pe un ecran în timp ce faceți o panoramare pentru a urmări obiectul. Acest lucru adaugă un efect de profunzime foarte interesant unui videoclip altfel 2D. Dorind să reproduc acest lucru fără să cheltuiesc mii de dolari pe echipamentul de la Hollywood, am decis să construiesc singur un astfel de glisor de cameră.

Întregul proiect este construit pe părți pe care le puteți imprima 3D, iar codul rulează pe populara placă Arduino. Toate fișierele proiectului, cum ar fi fișierele CAD și codul, sunt disponibile pentru descărcare mai jos.

Fișiere de imprimare CAD / 3D disponibile aici

Fișierul Cod Arduino este disponibil aici

Proiectul se învârte în jurul celor 2 motoare cu curent continuu periat și a controlerului Basic Micro Roboclaw Motor. Acest controler de motor poate transforma motoarele de curent continuu într-un tip superior de servo cu o precizie de poziție incredibilă, tone de cuplu și o rotație completă de 360 de grade. Mai multe despre asta mai târziu.

Înainte de a continua, urmăriți mai întâi tutorialul video legat aici. Acest tutorial vă va oferi o prezentare generală a modului de construire a acestui proiect, iar acest ghid Instructables va aprofunda în modul în care am construit acest proiect.

Materiale-

  • 2x tije filetate m10 lungi de 1 metru utilizate pentru conectarea tuturor pieselor
  • 8 piulițe M10 pentru montarea pieselor pe tijele filetate
  • 2 tije de oțel netede, lungi de 8 cm, de 95 cm, pentru a glisa glisorul
  • Rulmenți 4x lm8uu pentru glisor pentru a aluneca lin pe tijele de oțel
  • 4 piulițe m3 lungi de 10 mm pentru montarea motorului
  • 2 x rulmenți pentru skateboard (22 mm diametru exterior, 8 mm diametru interior) pentru axa de rotație
  • 1x rulment de 15mm pentru partea de mers în gol
  • 1x șurub m4 lung de 4cm cu piuliță de blocare m4 pentru montarea rulmentului rotorului pe partea tipărită 3D.
  • Angrenaj cu 20 de dinți cu diametru interior de 4 mm pentru motorul glisant. Rola exactă nu este foarte importantă, deoarece motorul dvs. DC ar trebui să fie adaptat pentru un cuplu suficient. Asigurați-vă că este același pas cu centura dvs.
  • Curea GT2 lungă de 2 metri. Din nou, puteți utiliza orice centură, atâta timp cât se potrivește cu pasul dinților scripetei.

Electronică

  • 2 * Motoare de curent continuu cu codificatoare (unul controlează mișcarea laterală, în timp ce celălalt controlează axa de rotație). Iată-l pe cel pe care l-am folosit. Mai multe despre acest lucru în partea electronică a ghidului
  • Controler de motor DC RoboClaw. (Am folosit controlerul dual 15Amp, deoarece mi-a permis să controlez ambele motoare cu un singur controler)
  • Orice Arduino. Am folosit Arduino UNO
  • Baterie / sursă de alimentare. (Am folosit o baterie LiPo de 7,4 V 2 celule)
  • Ecran (Pentru afișarea meniului. Orice ecran compatibil U8G va funcționa, am folosit acest ecran OLED de 1,3 inch)
  • Codificator rotativ (Pentru navigarea și configurarea opțiunilor din meniu)
  • Buton fizic (Pentru declanșarea mișcării glisorului)

Pasul 1: Hardware Design + Build + 3D Printing

Electronică
Electronică

În continuare, trecem la electronică. Electronica este locul în care acest proiect are multă flexibilitate.

Să începem cu miezul acestui proiect - cele 2 motoare DC periate.

Am ales motoare DC periate din câteva motive.

  1. Motoarele periate sunt mult mai simple de conectat și de operat în comparație cu motoarele pas cu pas
  2. Motoarele cu curent continuu periat sunt mult mai ușoare decât motoarele cu curent continuu, ceea ce este deosebit de important pentru motorul cu axă de rotație, deoarece motorul se deplasează fizic lateral cu camera și este important să se facă cât mai ușor posibil pentru a preveni solicitarea excesivă a motorului glisant al camerei primare.

Am ales acest motor DC special. Acest motor mi-a oferit o cantitate extrem de mare de cuplu, care era necesară pentru deplasarea unei sarcini atât de grele a camerei. Mai mult, viteza ridicată a însemnat că RPM-ul de vârf a fost lent, ceea ce a însemnat că pot filma mișcări mai lente, iar viteza ridicată duce, de asemenea, la o precizie pozițională mai mare, deoarece o rotație de 360 de grade a arborelui de ieșire însemna 341,2 numere ale codificatorului motorului.

Acest lucru ne aduce la controlerul de mișcare RoboClaw. Controlerul motor dual DC cu motor Roboclaw preia instrucțiuni simple de la Arduino prin comenzi de cod simple și efectuează toate procesările grele și furnizarea de energie pentru ca motorul să funcționeze conform intenției. Arduino poate trimite semnale către Roboclaw prin PWM, tensiune analogică, serie simplă sau serie de pachete. Pachetul serial este cel mai bun mod de a merge, deoarece vă permite să obțineți informații înapoi de la Roboclaw, care sunt necesare pentru urmărirea pozițională. Voi intra mai adânc în partea software / programare a Roboclaw în pasul următor (programare).

În esență, Roboclaw poate transforma un motor DC periat cu un codificator pentru a fi mai mult ca un servo datorită capacității RoboClaw de a face controlul pozițional. Cu toate acestea, spre deosebire de un servo tradițional, acum motorul dvs. DC periat are un cuplu mult mai mare, o precizie pozițională mult mai mare datorită angrenajului ridicat al motorului și, cel mai important, motorul dvs. DC poate roti continuu la 360 de grade, nici unul dintre acestea nu poate fi făcut de un servo tradițional.

Următoarea parte electronică este ecranul. Pentru ecranul meu, am ales acest panou OLED datorită dimensiunii sale și a contrastului ridicat. Acest contrast ridicat este incredibil și face ca ecranul să fie foarte ușor de utilizat în lumina directă a soarelui, în timp ce nu dă prea multă lumină care poate interfera cu o posibilă fotografie întunecată a camerei. Acest ecran poate fi schimbat cu ușurință cu un alt ecran compatibil U8G. Lista completă a ecranelor compatibile este disponibilă aici. De fapt, acest proiect a fost codificat intenționat în jurul bibliotecii U8G, astfel încât constructorii de bricolaj ca tine au avut mai multă flexibilitate în părțile lor

Părțile electronice finale pentru acest proiect au fost codificatorul rotativ și butonul pentru a începe mișcarea glisorului. Codificatorul vă permite să navigați în meniul ecranului și să configurați tot meniul glisorului cu un singur cadran. Codificatorul rotativ nu are o poziție „finală” ca un potențiometru tradițional, iar acest lucru este util în special pentru modificarea coordonatelor x și y ale urmăririi obiectelor pe ecran. Butonul de apăsare este utilizat exclusiv pentru a porni mișcarea glisorului fără a fi nevoie să vă lăsați cu codificatorul rotativ.

Pasul 3: Programarea glisorului camerei

Programarea glisorului camerei
Programarea glisorului camerei
Programarea glisorului camerei
Programarea glisorului camerei

Codificarea a fost de departe cea mai grea provocare a acestui proiect. Vedeți, de la început am vrut ca glisorul să fie controlabil de pe un ecran. Pentru a face acest proiect compatibil cu cât mai multe ecrane posibil, a trebuit să folosesc Biblioteca U8Glib pentru Arduino. Această bibliotecă are suport pentru peste 32 de ecrane. Cu toate acestea, biblioteca U8Glib a folosit o buclă de imagine pentru a desena meniul pe ecran și acest lucru a intrat în conflict cu capacitatea Arduino de a colecta simultan informații despre poziția camerei care erau necesare pentru funcționalitatea de calcul a unghiului camerei (Acest lucru este acoperit în următoarele câteva paragrafe). U8Glib2 are o alternativă la bucla de imagine folosind ceva numit opțiune tampon de pagină completă, dar biblioteca a consumat prea multă memorie și a făcut dificilă adaptarea la restul codului, având în vedere constrângerile de memorie ale Arduino Uno. Acest lucru a însemnat că am rămas cu U8G și a trebuit să rezolv problema, împiedicând actualizarea ecranului de fiecare dată când glisorul era în mișcare și Arduino trebuia să colecteze date de poziție de la Roboclaw. De asemenea, am fost forțat să declanșez glisorul pentru a începe să se deplaseze în afara buclei de meniu, deoarece odată ce am intrat în submeniuri, aș fi în interiorul buclei de imagine, iar glisorul nu va funcționa conform intenției. De asemenea, am ocolit această problemă, având un buton fizic separat care să declanșeze mișcarea glisorului.

În continuare, să vorbim despre elementul de urmărire prin rotație. Această parte pare foarte complexă de integrat, dar este de fapt destul de simplă. Implementarea pentru aceasta se află sub funcția ‘motor ()’ din codul meu Arduino. Primul pas este de a face o grilă bidimensională și a decis unde este plasat obiectul pe care doriți să îl urmăriți. Pe această bază, puteți desena un triunghi către locația dvs. curentă. Puteți obține locația dvs. curentă din valoarea codificatorului motorului. Dacă doriți să configurați poziția obiectului urmărit în cm / mm, va trebui să traduceți valoarea codificatorului la o valoare cm / mm. Acest lucru se poate face pur și simplu prin deplasarea glisorului camerei cu 1 cm și măsurarea creșterii valorii codificatorului. Puteți introduce această valoare în partea de sus a codului sub variabila encoder_mm.

Mergând mai departe, acum vom folosi funcția de tangentă inversă pentru a obține unghiul cu care camera trebuie să fie orientată pentru a indica obiectul dvs. Tangenta inversă ia partea opusă și adiacentă triunghiului. Partea opusă a triunghiului nu se schimbă niciodată, deoarece este distanța y de la glisor la obiect. Partea adiacentă a glisorului camerei se schimbă totuși. Această latură adiacentă poate fi calculată luând poziția x a obiectului și scăzând din acesta poziția curentă. Pe măsură ce glisorul se deplasează prin gama sa de mișcare, va continua să actualizeze Arduino pe valoarea codificatorului. Arduino va converti în mod repetat această valoare a codificatorului la o valoare pozițională cm / mm x și apoi va calcula lungimea laterală adiacentă și, în cele din urmă, va calcula unghiul cu care camera trebuie să fie orientată în permanență pentru a indica obiectul.

Acum că Arduino procesează dinamic unghiul camerei, putem aborda transformarea acestui unghi într-o valoare pozițională pentru a se deplasa la motorul de rotație. Acest lucru ne aduce la cea mai mare caracteristică a RoboClaw pentru acest proiect. Dând Roboclaw o valoare de poziție, poate face în esență un motor cu perii continuu să se comporte ca un servo. Cu excepția diferitelor servo, motorul nostru are un cuplu mai mare, o precizie mult mai mare și poate roti și 360 de grade.

Codul Arduino pentru a muta Roboclaw într-o anumită poziție este după cum urmează:

roboclaw. SpeedAccelDeccelPositionM1 (adresă, „viteză”, „accelerație”, „decelerare”, „poziție în care vrei să mergi”, 1);

Pentru a regla valoarea pozițională a motorului pentru a corespunde cu unghiul camerei, va trebui să mutați manual placa camerei cu 180 de grade. Apoi vedeți cât de mult s-a schimbat valoarea codificatorului de la mutarea plăcii camerei de la 0 grade la 180 de grade. Acest lucru vă oferă gama de codificatori. Puteți introduce acest interval în funcția motor care mapează unghiul camerei Arduino la o valoare pozițională. Acest lucru este, de asemenea, comentat în cod, astfel încât ar trebui să fie ușor de găsit *****

RoboClaw mi-a oferit, de asemenea, capacitatea de a regla alți factori, cum ar fi accelerația, decelerarea și valorile PID. Acest lucru mi-a permis în continuare să netezesc mișcarea axei de rotație, mai ales când modificările unghiului au fost mici și au adăugat sacadate fără o valoare PID ridicată. De asemenea, puteți regla automat valorile PID prin intermediul aplicației desktop Roboclaw.

Pasul 4: Utilizarea glisorului camerei

Utilizarea glisorului camerei
Utilizarea glisorului camerei

Acum ajungem la partea distractivă, acționând glisorul Meniul are 4 file principale. Fila de sus este dedicată controlului vitezei. Rândul din mijloc al meniului conține file pentru a configura poziția X & Y a obiectului urmărit în mm și, de asemenea, pentru a configura dacă dorim ca glisorul să se rotească și să urmărească obiectul nostru sau doar să facem o mișcare simplă de alunecare fără rotație. Răsucirea codificatorului rotativ ne permite să parcurgem diferitele opțiuni ale meniurilor. Pentru a configura oricare dintre opțiuni, navigați la opțiune și apăsați codificatorul rotativ. Odată apăsat, rotirea codificatorului rotativ va schimba valoarea submeniului evidențiat, mai degrabă decât să spele prin meniu. După ce ați atins valoarea dorită, puteți face din nou clic pe codorul rotativ. Acum ați revenit la meniul principal și puteți naviga între diferitele file. Odată ce sunteți gata, pur și simplu apăsați butonul Go de lângă ecran și glisorul își face lucrurile!

Asigurați-vă că, după ce ați terminat de utilizat glisorul camerei, că camera se află în poziția „acasă”: partea laterală a glisorului pe care a pornit. Motivul pentru aceasta este că codificatorul motorului nu este un codificator absolut, ceea ce înseamnă că Roboclaw / Arduino nu poate spune unde este codificatorul. Ei pot spune doar cât de mult s-a schimbat codificatorul de la ultima pornire. Aceasta înseamnă că, atunci când opriți glisorul camerei, glisorul va „uita” poziția glisorului și va reseta codificatorul la 0. Prin urmare, dacă opriți glisorul pe cealaltă parte, când îl porniți, glisorul va încercați să vă deplasați mai departe de margine și să vă ciocniți de peretele glisant. Acest comportament al codificatorului este și motivul pentru care camera își resetează unghiul de rotație după fiecare mișcare a diapozitivului camerei. Axa de rotație se protejează de asemenea de a se prăbuși în capătul intervalului său de mișcare.

Puteți rezolva acest lucru adăugând opriri finale și o procedură de aderare la pornire. Aceasta este ceea ce utilizează imprimantele 3D.

Pasul 5: gânduri finale + îmbunătățiri viitoare

Recomand cu tărie ca fiecare constructor să facă propriile versiuni ale acestui glisor, mai degrabă decât să construiască exact același glisor. Modificarea designului meu vă va permite să vă construiți glisorul la specificațiile dvs. exacte, în timp ce înțelegeți mai bine cum funcționează electronica și codul.

Am făcut codul cât mai citibil și configurabil posibil, astfel încât să puteți modifica / calibra diferitele variabile de cod pentru specificațiile glisorului dvs. Codul este, de asemenea, complet construit în jurul funcțiilor, astfel încât, dacă doriți să copiați / reglați / rescrieți anumite comportamente ale glisorului, nu este nevoie să faceți inginerie inversă și să refaceți întregul cod, ci mai degrabă doar părțile pe care doriți să le editați.

În cele din urmă, dacă aș face o versiune 2.0, iată câteva îmbunătățiri pe care le-aș face

  1. Raport de transmisie mai mare pentru motorul cu axa de rotație. Un raport de transmisie mai mare înseamnă că pot face mișcări mai precise. Acest lucru este deosebit de important atunci când camera este departe de obiectul dvs. și unghiul camerei dvs. se schimbă foarte lent. În prezent, motorul meu nu este orientat prea sus și poate avea ca rezultat o mișcare ușor sacadată atunci când glisorul camerei funcționează prea încet sau când există o schimbare foarte mică a unghiului de rotație. Adăugarea unei valori ridicate PID „D” m-a ajutat să scap de acest lucru, dar a costat costul unei precizii de urmărire a obiectelor ușor mai mici.
  2. Lungime modulară. Acesta este un obiectiv îndelungat, dar mi-ar plăcea ca glisorul camerei să aibă o lungime modulară, ceea ce înseamnă că puteți atașa cu ușurință lungimi mai mari de pistă pentru ca camera să alunece. Acest lucru este destul de dificil, deoarece va trebui să aliniați perfect ambele șine și să aflați cum să funcționeze sistemul curelei. Cu toate acestea, ar fi un upgrade grozav!
  3. Mișcare personalizată Keyframing. Mi-ar plăcea să introduc conceptul de mișcări cu cadre cheie în acest glisor al camerei. Keyframing-ul este o tehnică foarte frecvent utilizată în producția video și audio. Ar permite mișcări neliniare ale camerei în care camera merge într-o poziție, așteaptă, apoi se deplasează într-o altă poziție cu o viteză diferită, așteaptă, apoi merge în a treia poziție etc.
  4. Controlul telefonului Bluetooth / wireless. Ar fi foarte interesant să puteți configura parametrii glisorului camerei fără fir și să puteți implementa glisorul camerei în locații greu accesibile. Aplicația telefonică ar putea deschide, de asemenea, oportunități de integrare a cadrelor cheie, așa cum sa menționat în ultimul paragraf.

Gata pentru acest tutorial. Nu ezitați să lăsați orice întrebare în secțiunea de comentarii de mai jos.

Pentru mai multe tutoriale despre conținut și electronică, puteți consulta și canalul meu YouTube aici.

Recomandat: