Cuprins:

Stabilizator de cameră portabil: 13 pași (cu imagini)
Stabilizator de cameră portabil: 13 pași (cu imagini)

Video: Stabilizator de cameră portabil: 13 pași (cu imagini)

Video: Stabilizator de cameră portabil: 13 pași (cu imagini)
Video: Conectare, instalare camera marsarier fara filtru stabilizator, legare camera din canbus. 2024, Iulie
Anonim
Stabilizator de cameră portabil
Stabilizator de cameră portabil

Introducere

Acesta este un ghid pentru crearea unei platforme de stabilizare a camerei portabile cu 3 axe pentru un GoPro utilizând o placă de dezvoltare Digilent Zybo Zynq-7000. Acest proiect a fost dezvoltat pentru clasa de sisteme de operare în timp real CPE (CPE 439). Stabilizatorul folosește trei servo și un IMU pentru a corecta mișcarea utilizatorului pentru a menține camera la nivel.

Piese necesare pentru proiect

  • Consiliul de dezvoltare Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 servere HiTec HS-5485HB (cumpărați mișcare de 180 de grade sau program de la 90 la 180 de grade)
  • 1 servo HiTec HS-5685MH (cumpărați mișcare de 180 de grade sau program de la 90 la 180 de grade)
  • 2 servocupi standard
  • 1 Pană de pâine
  • 15 fire jumper de la bărbat la bărbat
  • 4 fire jumper de la bărbat la femeie
  • Lipici fierbinte
  • Mâner sau mâner
  • Diblă din lemn cu diametrul de 5 mm
  • GoPro sau altă cameră și hardware de montare
  • Sursa de alimentare capabilă să producă 5V.
  • Acces la imprimanta 3D

Pasul 1: Configurare hardware Vivado

Configurare hardware Vivado
Configurare hardware Vivado

Să începem cu crearea blocului de bază pentru proiect.

  1. Deschideți Vivado 2016.2, faceți clic pe pictograma „Creați un proiect nou” și faceți clic pe „Următorul>”.
  2. Denumiți proiectul și faceți clic pe „Următorul>”.
  3. Alegeți proiectul RTL și apăsați „Următorul>”.
  4. Tastați în bara de căutare xc7z010clg400-1 și apoi selectați partea și apăsați „Următorul>” și „Finalizare”.

Pasul 2: Configurarea designului blocului

Acum vom începe să generăm designul blocului prin adăugarea și configurarea blocului IP Zynq.

  1. În panoul din stânga, sub IP Integrator, faceți clic pe „Creați design bloc” și apoi faceți clic pe „OK”.
  2. Faceți clic dreapta în fila „Diagramă” și alegeți „Adăugați IP …”.
  3. Tastați „ZYNQ7 Processing System” și faceți clic pe selecție.
  4. Faceți dublu clic pe blocul Zynq care apare.
  5. Faceți clic pe „Importați setările XPS” și importați fișierul „ZYBO_zynq_def.xml” furnizat.
  6. Mergeți la „Configurare MIO” și selectați „Unitate de procesare a aplicației” și activați temporizatoarele 0 și temporizatoarele Watchdog.
  7. În aceeași filă, sub „Perifere I / O”, selectați ENET 0 (și schimbați meniul derulant în „MIO 16.. 27”, USB 0, SD 0, UART 1, I2C 0.
  8. Sub „GPIO”, verificați GPIO MIO, ENET Reset, USB Reset și I2C Reset.
  9. Navigați acum la „Configurarea ceasului”. Selectați FCLK_CLK0 sub PL Fabric Clocks. Apoi, faceți clic pe „OK”.

Pasul 3: Creați un bloc IP personalizat PWM

Acest bloc IP permite plăcii să trimită un semnal PWM pentru a controla mișcarea servoarelor. Lucrarea s-a bazat în mare parte pe tutorialul Digitronix Nepal, găsit aici. Logica a fost adăugată pentru a încetini ceasul, astfel încât pulsul a ieșit la viteza corectă. Blocul ia un număr de la 0 la 180 și îl transformă într-un impuls de la 750-2150 usec.

  1. Acum, sub fila Instrumente din colțul din stânga sus, faceți clic pe „Creați și împachetați IP …” și apăsați Următorul.
  2. Apoi selectați „Creați un nou periferic AXI4” și apăsați Următorul.
  3. Denumiți blocul IP PWM (l-am numit pwm_core) și faceți clic pe Următorul, apoi faceți clic pe Următorul și pe pagina următoare.
  4. Acum faceți clic pe „Editați IP” și apăsați Terminare. Aceasta va deschide o fereastră nouă pentru a edita blocul pwm.
  5. În fila „Surse” și sub „Surse de proiectare”, extindeți „pwm_core_v1_0” (înlocuiți pwm_core cu numele dvs.) și deschideți fișierul care devine vizibil.
  6. Copiați și lipiți codul furnizat sub „pwm_core_v1_0_S00_AXI.v” în fișierul zip din partea de jos a proiectului. Ctrl + Shift + R și înlocuiți „pwm_core” cu numele dvs. pentru blocul ip.
  7. Apoi deschideți „nume _v1_0” și copiați codul furnizat în fișierul „pwm_core_v1_0.v”. Ctrl + Shift + R și înlocuiți „pwm_core” cu numele.
  8. Navigați acum la fila „Pachet IP - nume” și selectați „Parametrii de personalizare”.
  9. În această filă va exista o bară galbenă în partea de sus care are text legat. Selectați acest lucru și „Parametri ascunși” va apărea în casetă.
  10. Acum mergeți la „Customization GUI” și faceți clic dreapta pe Pwm Counter Max selectați „Edit Parameter…”.
  11. Bifați casetele „Vizibil în Customization GUI” și „Specify Range”.
  12. Schimbați meniul derulant „Tip:” la Gama de numere întregi și setați minimum la 0 și maxim la 65535 și bifați caseta „Afișați intervalul”. Acum faceți clic pe OK.
  13. Trageți Pwm Counter Max sub arborele „Pagina 0”. Acum, accesați „Revizuire și pachet” și faceți clic pe butonul „Re-Package IP”.

Pasul 4: Adăugați blocul IP PWM la proiectare

Adăugați blocul IP PWM la proiectare
Adăugați blocul IP PWM la proiectare

Vom adăuga blocul IP în designul blocului pentru a permite utilizatorului accesul la blocul IP PWM prin intermediul procesorului.

  1. Faceți clic dreapta în fila diagramă și faceți clic pe „Setări IP …”. Navigați la fila „Repository Manager”.
  2. Faceți clic pe butonul verde plus și selectați-l. Acum găsiți ip_repo în File Manager și adăugați-l la proiect. Apoi apăsați Aplicare și apoi OK.
  3. Faceți clic dreapta în fila diagramă și faceți clic pe „Adăugați IP …”. Introduceți numele blocului IP PWM și selectați-l.
  4. Ar trebui să existe o bară verde în partea de sus a ecranului, selectați mai întâi „Rulați automatizarea conexiunii” și faceți clic pe OK. Apoi faceți clic pe „Run Block Automation” și faceți clic pe OK.
  5. Faceți dublu clic pe blocul PWM și schimbați Pwm Counter Max la 1024 din 128.
  6. Plasați cursorul mouse-ului peste PWM0 pe blocul PWM. Ar trebui să existe un creion mic care apare atunci când faceți acest lucru. Faceți clic dreapta și selectați „Creați port…” și faceți clic pe OK când se deschide o fereastră. Aceasta creează un port extern pentru care semnalul să fie transmis.
  7. Repetați pasul 6 și pentru PWM1 și PWM2.
  8. Găsiți pictograma mică săgeată dublă circulară pe bara laterală și faceți clic pe aceasta. Acesta va regenera aspectul și designul blocului dvs. ar trebui să arate ca imaginea de mai sus.

Pasul 5: configurați HDL Wrapper și configurați fișierul de constrângeri

Configurați HDL Wrapper și configurați fișierul de constrângeri
Configurați HDL Wrapper și configurați fișierul de constrângeri

Acum vom genera Designul la nivel înalt pentru Block Design-ul nostru și apoi vom mapa PWM0, PWM1 și PWM2 la pinii Pmod de pe placa Zybo.

  1. Accesați fila „Surse”. Faceți clic dreapta pe fișierul de proiectare a blocului de sub „Surse de proiectare” și faceți clic pe „Creați HDL Wrapper…”. Selectați „Copiați împachetarea generată pentru a permite modificările utilizatorilor” și faceți clic pe OK. Acest lucru generează designul la nivel înalt pentru designul de blocuri pe care l-am creat.
  2. Pmodul pe care îl vom produce este JE.
  3. Sub Fișier, selectați „Adăugați surse …” și selectați „Adăugați sau creați constrângeri” și faceți clic pe Următorul.
  4. Faceți clic pe adăugați fișiere și selectați fișierul „ZYBO_Master.xdc” inclus. Dacă vă uitați în acest fișier, veți observa că totul nu este comentat, cu excepția a șase linii „set_property” sub „## Pmod Header JE”. Veți observa că PWM0, PWM1 și PWM2 sunt argumentele pentru aceste linii. Se mapează la Pinul 1, Pinul 2 și Pinul 3 al modelului JE Pmod.

Pasul 6: Generarea Bitstream

Trebuie să generăm fluxul de biți pentru ca proiectarea hardware să fie exportată în SDK înainte de a trece mai departe.

  1. Sub „Programare și depanare” din bara laterală, selectați „Generați fluxul de biți”. Aceasta va rula sinteza, apoi implementarea și apoi va genera fluxul de biți pentru proiectare.
  2. Corectați orice erori care apar, dar avertismentele pot fi ignorate în general.
  3. Accesați Fișier-> Lansați SDK și faceți clic pe OK. Acest lucru va deschide Xilinx SDK.

Pasul 7: Configurarea proiectului în SDK

Această parte poate fi puțin frustrantă. Când aveți dubii, creați un BSP nou și înlocuiți-l pe cel vechi. Acest lucru ne-a salvat o grămadă de timp de depanare.

  1. Începeți prin descărcarea celei mai recente versiuni a FreeRTOS aici.
  2. Extrageți totul din descărcare și importați FreeRTOS în SDK făcând clic pe Fișier-> Import, și sub „General” faceți clic pe „Proiecte existente în spațiul de lucru”, apoi faceți clic pe Următorul.
  3. Accesați „FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702” din folderul FreeRTOS. Importați „RTOSDemo” numai din această locație.
  4. Acum generați un pachet de asistență pentru bord (BSP) făcând clic pe Fișier-> Pachet nou de asistență pentru bord.
  5. Selectați „ps7_cortexa9_0” și bifați „lwip141” și faceți clic pe OK.
  6. Faceți clic dreapta pe folderul albastru RTOSDemo și selectați „Referințe proiect”.
  7. Debifați „RTOSDemo_bsp” și verificați noul BSP pe care tocmai l-am creat.

Pasul 8: Modificări ale codului FreeRTOS

Codul pe care îl oferim poate fi separat în 7 fișiere diferite. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h și iic_imu.h. Codul din iic_main_thread.c a fost adaptat din biblioteca lui Kris Winer, care poate fi găsit aici. Am transformat în principal codul său pentru a încorpora sarcini și a-l face să funcționeze cu placa Zybo. Am adăugat și funcții pentru calcularea corecției de orientare a camerei. Am lăsat în mai multe declarații tipărite care sunt utile pentru depanare. Majoritatea sunt comentate, dar dacă simțiți nevoia, le puteți descomenta.

  1. Cel mai simplu mod de a modifica fișierul main.c este de a înlocui codul cu codul copiat din fișierul nostru main.c inclus.
  2. Pentru a crea un fișier nou, faceți clic dreapta pe folderul src sub RTOSDemo și selectați C Source File. Denumiți acest fișier „iic_main_thread.c”.
  3. Copiați codul din „iic_main_thread.c” inclus și lipiți-l în fișierul nou creat.
  4. Repetați pașii 2 și 3 cu fișierele rămase.
  5. necesită o instrucțiune de conectare în gcc. Pentru a adăuga acest lucru la calea de construire, faceți clic dreapta pe RTOSDemo și selectați „C / C ++ Build Settings”.
  6. Se va deschide o fereastră nouă. Navigați la linker ARM v7 gcc-> Biblioteci. Selectați fișierul de adăugare mic din colțul din dreapta sus și introduceți „m”. Aceasta va include biblioteca de matematică în proiect.
  7. Construiți proiectul cu Ctrl + B pentru a confirma că totul funcționează. Verificați avertismentele generate, dar este posibil să le puteți ignora.
  8. Există câteva locuri care vor necesita modificări, în principal declinarea magnetică a locației dvs. curente. Vom explica cum să schimbați acest lucru în partea de calibrare a tutorialului.

Pasul 9: Imprimare 3D pentru stabilizator

Imprimare 3D pentru stabilizator
Imprimare 3D pentru stabilizator

Trebuie să imprimați 3D câteva părți pentru acest proiect. Probabil că se pot achiziționa piese care au dimensiuni / dimensiuni similare cu piesele noastre tipărite.

  1. Utilizați fișierele furnizate pentru a imprima brațul și suportul de susținere pentru GoPro.
  2. Trebuie să adăugați schele la fișierul.stl.
  3. Tăiați / curățați părțile de eșafodaj în exces odată tipărite.
  4. Puteți înlocui diblul din lemn cu o piesă imprimată 3D dacă doriți.

Pasul 10: Asamblarea pieselor

Asamblarea pieselor
Asamblarea pieselor

Sunt mai multe părți pentru asamblarea stabilizatorului. Suporturile achiziționate vin cu 4 șuruburi autofiletante și 4 șuruburi cu piulițe. Deoarece există 3 servo-uri, unul dintre claxoanele servo trebuie să fie presat în prealabil pentru a permite ca 2 dintre șuruburi să se potrivească.

  1. Lipiți 8 pini pe orificiul IMU, 4 pe fiecare parte.
  2. IMU este atașat la suportul de susținere tipărit 3D pentru GoPro în centrul suportului.
  3. Orientați suportul astfel încât găurile de montare a servo-ului să fie pe partea stângă. Așezați IMU pe cea mai apropiată margine de dvs., cu știfturile atârnate de margine. Apoi, așezați suportul GoPro deasupra IMU, lipind IMU-ul și suportul în poziție pe suport.
  4. Atașați un HS-5485HB la suportul servo care este integrat în brațul imprimat 3D.
  5. Înșurubați suportul GoPro în servo atașat la braț, asigurându-vă că servo-ul este setat astfel încât să se afle în mijlocul domeniului său de mișcare.
  6. Apoi, atașați servo HS-5685MH la un suport de servodirecție. Apoi atingeți claxonul servo cu unul dintre șuruburi. Acum atașați servo-ul la partea inferioară a ultimei consolă servo.
  7. Acum atașați ultimul servo la suportul în care este înșurubat servo HS-5685MH. Apoi înșurubați brațul în acest servo, asigurându-vă că brațul este înșurubat, astfel încât să se poată deplasa cu 90 de grade în fiecare direcție.
  8. Pentru a termina construcția cardanului, adăugați o bucată mică din diblul din lemn pentru a vă conecta între suportul GoPro și brațul imprimat 3D. Acum ați asamblat stabilizatorul.
  9. În cele din urmă, puteți adăuga un mâner conectat la brațul servo inferior.

Pasul 11: Conectarea Zybo la stabilizator

Conectarea Zybo la stabilizator
Conectarea Zybo la stabilizator

Există câteva lucruri de care trebuie să aveți grijă atunci când faceți acest lucru. Doriți să vă asigurați că 5V de la sursa de alimentare nu intră niciodată în placa Zybo, deoarece acest lucru ar duce la probleme cu placa. Asigurați-vă că verificați jumperii pentru a confirma că nu se schimbă firele.

  1. Pentru a atașa Zybo la stabilizator, veți avea nevoie de 15 jumperi de la bărbați la bărbați și 4 jumperi de la bărbați la femei.
  2. Mai întâi, conectați două jumperi la sursa de alimentare de 5V de-a lungul șinelor + și - ale panoului de control. Acestea vor furniza energie servo-urilor.
  3. Apoi, conectați 3 perechi de jumperi la șinele + și - ale panoului. Acestea vor fi puterea pentru fiecare servo.
  4. Conectați celălalt capăt al jumperilor + și - în fiecare dintre servo-uri.
  5. Conectați un jumper între șina - panoului și unul dintre pinii GND de pe Zybo JE Pmod (Vedeți imaginea pasului 5). Acest lucru va crea un teren comun între placa Zybo și sursa de alimentare.
  6. Conectați apoi un fir de semnal la pinul 1, pinul 2 și pinul 3 al modelului JE Pmod. Pinul 1 se mapează la servo inferior, pinul 2 mapează la servo la capătul brațului și pinul 3 mapează la servo-ul din mijloc.
  7. Conectați cele 4 fire de sex feminin la pinii GND, VDD, SDA și SCL ai break-ului IMU. GND și VDD se conectează la GND și 3V3 pe pinii JF. Conectați pinul SDA la pinul 8 și SCL la pinul 7 de pe JF (a se vedea imaginea pasului 5).
  8. În cele din urmă, conectați computerul la placă folosind un cablu micro USB. Acest lucru va permite comunicarea uart și vă va permite să programați placa Zybo.

Pasul 12: Corecția nordică adevărată

Corecția nordică adevărată
Corecția nordică adevărată

Calibrarea magnetometrului în IMU este importantă pentru funcționarea corectă a dispozitivului. Declinația magnetică, care corectează nordul magnetic spre nordul adevărat.

  1. Pentru a corecta diferența față de nordul magnetic și adevărat, trebuie să utilizați o combinație de două servicii, Google Maps și calculatorul de câmp magnetic al NOAA.
  2. Utilizați Google Maps pentru a găsi latitudinea și longitudinea locației dvs. curente.
  3. Luați longitudinea și latitudinea curentă și conectați-le la calculatorul câmpului magnetic.
  4. Ceea ce este returnat este declinarea magnetică. Conectați acest calcul la codul de pe linia 378 din „iic_main_thread.c”. Dacă declinul dvs. este la est, atunci scădeți din valoarea de girație, dacă la vest, adăugați la valoarea de girație.

* fotografia a fost făcută din ghidul de conectare MPU 9250 de la Sparkfun, găsit aici.

Pasul 13: Rularea programului

Rularea programului
Rularea programului

Momentul pe care l-ai așteptat! Cea mai bună parte a proiectului este să-l vezi funcționând. O problemă pe care am observat-o este că există o derivare de la valorile raportate de la IMU. Un filtru trece-jos poate ajuta la corectarea acestei derive, iar jocul cu magnetometrul, accelerarea și calibrările giroscopice vor ajuta, de asemenea, la corectarea acestei derive.

  1. Mai întâi, construiți totul în SDK, acest lucru se poate face apăsând Ctrl + B.
  2. Asigurați-vă că sursa de alimentare este pornită și setată la 5V. Verificați de două ori dacă toate firele merg în locurile lor corecte.
  3. Apoi, pentru a rula programul, apăsați triunghiul verde din centrul superior al barei de activități.
  4. Când programul rulează, toate servo-urile vor reveni la pozițiile lor 0, așa că fiți gata să se miște platforma. Odată ce programul se inițializează, servo-urile vor reveni la pozițiile lor de 90 de grade.
  5. O funcție de calibrare a magnetometrului va rula și direcțiile vor fi imprimate la terminalul UART, la care vă puteți conecta printr-un monitor serial, cum ar fi „chit” sau monitorul serial furnizat în SDK.
  6. Calibrarea vă va face să mutați dispozitivul în figura 8 timp de aproximativ 10 secunde. Puteți elimina acest pas comentând linia 273 din „iic_main_thread.c”. Dacă îl comentezi, trebuie să decomentezi liniile 323 - 325 „iic_main_thread.c”. Aceste valori au fost inițial colectate din calibrarea magnetometrului de mai sus și apoi conectate ca valori.
  7. După calibrare, codul de stabilizare va fi inițializat și dispozitivul va menține camera stabilă.

Recomandat: