Kazalo:

Ročni stabilizator kamere: 13 korakov (s slikami)
Ročni stabilizator kamere: 13 korakov (s slikami)

Video: Ročni stabilizator kamere: 13 korakov (s slikami)

Video: Ročni stabilizator kamere: 13 korakov (s slikami)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Ročni stabilizator kamere
Ročni stabilizator kamere

Uvod

To je vodnik za ustvarjanje 3-osne ročne stabilizacijske kamere za GoPro z razvojno ploščo Digilent Zybo Zynq-7000. Ta projekt je bil razvit za razred operacijskih sistemov v realnem času CPE (CPE 439). Stabilizator uporablja tri servomotorje in IMU za popravljanje gibanja uporabnika, da fotoaparat ostane raven.

Deli, potrebni za projekt

  • Digilent Zybo Zynq-7000 razvojni odbor
  • Sparkfun IMU Breakout - MPU 9250
  • 2 servomotorja HiTec HS-5485HB (kupite gibanje za 180 stopinj ali program od 90 do 180 stopinj)
  • 1 servo HiTec HS-5685MH (kupite gibanje za 180 stopinj ali program od 90 do 180 stopinj)
  • 2 standardna servo nosilca
  • 1 Ogledna plošča
  • 15 moških moških žic
  • 4 mostične žice za moške na ženske
  • Vroče lepilo
  • Ročaj ali ročaj
  • Leseni moznik premera 5 mm
  • GoPro ali drugo kamero in montažno opremo
  • Napajalnik lahko oddaja 5V.
  • Dostop do 3D tiskalnika

Korak: Nastavitev strojne opreme Vivado

Nastavitev strojne opreme Vivado
Nastavitev strojne opreme Vivado

Začnimo z ustvarjanjem osnovne zasnove bloka za projekt.

  1. Odprite Vivado 2016.2, kliknite ikono "Ustvari nov projekt" in kliknite "Naprej>".
  2. Poimenujte svoj projekt in kliknite »Naprej>«.
  3. Izberite projekt RTL in pritisnite »Naprej>«.
  4. Vnesite v iskalno vrstico xc7z010clg400-1 in izberite del ter pritisnite »Naprej>« in »Dokončaj«.

2. korak: Nastavitev oblikovanja blokov

Zdaj bomo začeli ustvarjati zasnovo bloka z dodajanjem in nastavljanjem bloka IP Zynq.

  1. Na levi plošči pod IP Integrator kliknite "Create Block Design" in nato "OK".
  2. Z desno miškino tipko kliknite zavihek "Diagram" in izberite "Dodaj IP …".
  3. Vnesite "ZYNQ7 Processing System" in kliknite na izbiro.
  4. Dvokliknite na blok Zynq, ki se prikaže.
  5. Kliknite "Uvozi nastavitve XPS" in uvozite priloženo datoteko "ZYBO_zynq_def.xml".
  6. Pojdite na "MIO Configuration" in izberite "Application Processor Unit" ter omogočite Timer 0 in Watchdog timers.
  7. Na istem zavihku pod "V/I periferne enote" izberite ENET 0 (in spremenite spustni meni v "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Pri »GPIO« preverite GPIO MIO, ENET Reset, USB Reset in I2C Reset.
  9. Zdaj se pomaknite do "Konfiguracija ure". Pri FC Fabric Clocks izberite FCLK_CLK0. Nato kliknite »V redu«.

3. korak: Ustvarite blok IP PWM po meri

Ta blok IP omogoča plošči pošiljanje PWM signala za nadzor gibanja servomotorjev. Delo je v veliki meri temeljilo na vadnici Digitronixa iz Nepala, ki jo najdete tukaj. Dodana je bila logika za upočasnitev ure, tako da se je impulz oddajal s pravilno hitrostjo. Blok vzame število od 0 do 180 in ga pretvori v impulz od 750-2150 usec.

  1. Zdaj na zavihku Orodja blizu zgornjega levega kota kliknite »Ustvari in zapakiraj IP…« in pritisnite Naprej.
  2. Nato izberite "Ustvari novo zunanjo napravo AXI4" in pritisnite Naprej.
  3. Poimenujte svoj blok IP PWM (poimenovali smo ga pwm_core) in kliknite Naprej ter nato tudi Na naslednji strani kliknite Naprej.
  4. Zdaj kliknite "Uredi IP" in pritisnite Dokončaj. To bo odprlo novo okno za urejanje bloka pwm.
  5. Na zavihku »Viri« in pod »Viri oblikovanja« razširite »pwm_core_v1_0« (zamenjajte pwm_core s svojim imenom) in odprite datoteko, ki postane vidna.
  6. Kopirajte in prilepite kodo pod 'pwm_core_v1_0_S00_AXI.v' v datoteko zip na dnu projekta. Ctrl + Shift + R in "pwm_core" zamenjajte z vašim imenom za blok ip.
  7. Nato odprite "name _v1_0" in kopirajte v podano kodo v datoteki "pwm_core_v1_0.v". Ctrl + Shift + R in "pwm_core" zamenjajte z imenom.
  8. Zdaj se pomaknite na zavihek »Paket IP - ime« in izberite »Parametri prilagajanja«.
  9. Na tem zavihku bo na vrhu rumena vrstica s povezanim besedilom. Izberite to možnost in v polju se bodo prikazali "Skriti parametri".
  10. Zdaj pojdite na "Prilagoditveni grafični vmesnik" in z desno miškino tipko kliknite Pwm Counter Max in izberite "Uredi parameter …".
  11. Potrdite polja "Vidno v grafičnem vmesniku za prilagajanje" in "Podaj obseg".
  12. Spustni meni "Vrsta:" spremenite v Obseg celih števil in nastavite minimalno na 0 in največje na 65535 ter potrdite polje "Pokaži obseg". Zdaj kliknite V redu.
  13. Povlecite Pwm Counter Max pod drevo 'Page 0'. Zdaj pojdite na "Pregled in paket" in kliknite gumb "Ponovno zapakiraj IP".

4. korak: Oblikovanju dodajte blok IP PWM

V blok Design dodajte blok IP PWM
V blok Design dodajte blok IP PWM

V zasnovo bloka bomo dodali blok IP, ki bo uporabniku omogočal dostop do bloka IP PWM prek procesorja.

  1. Z desno miškino tipko kliknite zavihek diagrama in kliknite "Nastavitve IP …". Pomaknite se na zavihek "Upravitelj skladišča".
  2. Kliknite zeleni gumb plus in ga izberite. Zdaj poiščite ip_repo v upravitelju datotek in ga dodajte projektu. Nato pritisnite Uporabi in nato V redu.
  3. Z desno miškino tipko kliknite zavihek diagrama in kliknite »Dodaj IP…«. Vnesite ime bloka IP PWM in ga izberite.
  4. Na vrhu zaslona bi morala biti zelena vrstica, najprej izberite »Zaženi samodejno povezovanje« in kliknite V redu. Nato kliknite "Zaženi samodejno blokiranje blokov" in kliknite V redu.
  5. Dvokliknite blok PWM in spremenite Pwm Counter Max na 1024 z 128.
  6. Premaknite kazalec miške nad PWM0 na bloku PWM. Ko to storite, bi moral biti majhen svinčnik. Z desno tipko miške kliknite in izberite "Ustvari vrata …" in kliknite OK, ko se odpre okno. S tem se ustvarijo zunanja vrata, na katera se posreduje signal.
  7. Ponovite 6. korak tudi za PWM1 in PWM2.
  8. Na stranski vrstici poiščite majhno okroglo ikono z dvojno puščico in jo kliknite. Obnovil bo postavitev in zasnova vašega bloka bi morala izgledati kot na zgornji sliki.

5. korak: Konfigurirajte zavijanje HDL in nastavite datoteko omejitev

Konfigurirajte zavijanje HDL in nastavite datoteko omejitev
Konfigurirajte zavijanje HDL in nastavite datoteko omejitev

Zdaj bomo ustvarili zasnovo visoke ravni za našo zasnovo blokov in nato preslikali PWM0, PWM1 in PWM2 v zatiče Pmod na plošči Zybo.

  1. Pojdite na zavihek "Viri". Z desno miškino tipko kliknite datoteko za oblikovanje bloka pod "Viri oblikovanja" in kliknite "Ustvari ovoj HDL …". Izberite "Kopiraj ustvarjen ovoj, da dovolite uporabniške spremembe" in kliknite V redu. Tako nastane zasnova visoke ravni za oblikovanje blokov, ki smo ga ustvarili.
  2. Pmod, na katerega bomo oddajali, je JE.
  3. V razdelku Datoteka izberite "Dodaj vire …" in izberite "Dodaj ali ustvari omejitve" in kliknite Naprej.
  4. Kliknite Dodaj datoteke in izberite priloženo datoteko "ZYBO_Master.xdc". Če pogledate to datoteko, boste opazili, da je vse razkomentirano, razen šestih vrstic "set_property" pod "## Pmod Head JE". Opazili boste, da so argumenti za te vrstice PWM0, PWM1 in PWM2. Preslikajo se na Pin 1, Pin 2 in Pin 3 JE Pmod.

6. korak: Ustvarjanje bitnega toka

Preden nadaljujemo, moramo ustvariti bitni tok za izvoz strojne opreme v SDK.

  1. V razdelku "Program in odpravljanje napak" na stranski vrstici izberite "Ustvari bitni tok". To bo zagnalo sintezo, nato izvedbo in nato ustvarilo bitni tok za oblikovanje.
  2. Odpravite morebitne napake, ki se pojavljajo, vendar je na splošno mogoče zanemariti opozorila.
  3. Pojdite na Datoteka-> Zaženi SDK in kliknite V redu. S tem se odpre Xilinx SDK.

7. korak: Nastavitev projekta v SDK -ju

Ta del je lahko nekoliko frustrirajoč. Če ste v dvomih, naredite nov BSP in zamenjajte starega. To nam je prihranilo kup časa za odpravljanje napak.

  1. Začnite s prenosom najnovejše različice programa FreeRTOS tukaj.
  2. Izvlecite vse iz prenosa in uvozite FreeRTOS v SDK tako, da kliknete Datoteka-> Uvozi in pod »Splošno« kliknite »Obstoječi projekti v delovni prostor«, nato kliknite Naprej.
  3. Pojdite na "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" v mapi FreeRTOS. Uvozite "RTOSDemo" samo s te lokacije.
  4. Zdaj ustvarite paket za podporo plošč (BSP) s klikom na Datoteka-> Nov paket podpore za ploščo.
  5. Izberite "ps7_cortexa9_0" in preverite "lwip141" in kliknite V redu.
  6. Z desno miškino tipko kliknite modro mapo RTOSDemo in izberite "Reference projekta".
  7. Počistite polje »RTOSDemo_bsp« in preverite novi BSP, ki smo ga pravkar ustvarili.

8. korak: Spremembe kode FreeRTOS

Kodo, ki jo ponujamo, lahko ločimo v 7 različnih datotek. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h in iic_imu.h. Koda v iic_main_thread.c je bila prilagojena iz knjižnice Kris Winer, ki jo najdete tukaj. Njegovo kodo smo v glavnem preoblikovali tako, da je vključevala naloge in delovala skupaj s ploščo Zybo. Dodali smo tudi funkcije za izračun popravka orientacije kamere. Napisali smo več tiskalnih izjav, ki so uporabni za odpravljanje napak. Večina jih je komentiranih, če pa čutite potrebo, jih lahko komentirate.

  1. Najlažji način za spremembo datoteke main.c je zamenjava kode s kopirano kodo iz naše vključene datoteke main.c.
  2. Če želite ustvariti novo datoteko, z desno miškino tipko kliknite mapo src pod RTOSDemo in izberite C Izvorna datoteka. Poimenujte to datoteko "iic_main_thread.c".
  3. Kopirajte kodo iz priloženega "iic_main_thread.c" in jo prilepite v novo ustvarjeno datoteko.
  4. Ponovite koraka 2 in 3 s preostalimi datotekami.
  5. zahteva navodila za povezovanje v gcc. Če želite to dodati poti gradnje, z desno miškino tipko kliknite RTOSDemo in izberite "Nastavitve gradnje C/C ++".
  6. Odprlo se bo novo okno. Pomaknite se do povezovalnika gcc za ARM v7-> Knjižnice. Izberite majhno datoteko za dodajanje v zgornjem desnem kotu in vnesite "m". To bo vključilo matematično knjižnico v projekt.
  7. Zgradite projekt s Ctrl + B, da potrdite, da vse deluje. Preverite ustvarjena opozorila, vendar jih lahko prezrete.
  8. Nekaj mest bo potrebno spremeniti, predvsem magnetna deklinacija vaše trenutne lokacije. Kako to spremeniti, bomo razložili v kalibracijskem delu vadnice.

9. korak: 3D tiskanje za stabilizator

3D tiskanje za stabilizator
3D tiskanje za stabilizator

Za ta projekt morate natisniti nekaj delov v 3D. Verjetno je mogoče kupiti dele, ki so podobnih dimenzij/velikosti kot naši tiskani deli.

  1. Za tiskanje roke in nosilca za GoPro uporabite priložene datoteke.
  2. V datoteko.stl morate dodati oder.
  3. Odrežite/očistite dele odvečnih odrov, ko jih natisnete.
  4. Leseni moznik lahko po želji zamenjate s 3D natisnjenim delom.

10. korak: Sestavljanje delov

Sestavljanje delov
Sestavljanje delov

Sestavljanje stabilizatorja je sestavljeno iz več delov. Kupljenim nosilcem so priloženi 4 samorezni vijaki in 4 vijaki z maticami. Ker obstajajo 3 servomotorji, je treba enega od servorogov predhodno pritrditi, da se lahko prilegata 2 vijaka.

  1. Spajajte 8 zatičev na odmik IMU, 4 na vsaki strani.
  2. IMU je pritrjen na 3D natisnjen nosilec za GoPro na sredini nosilca.
  3. Obrnite nosilec tako, da bodo montažne luknje za servo na levi strani. IMU postavite na najbližji rob, pri čemer zatiči visijo z roba. Nato namestite nosilec GoPro na IMU, pritrdite IMU in nosilec na nosilec.
  4. Na servo nosilec, ki je integriran v 3D tiskano roko, pritrdite HS-5485HB.
  5. Nosilec GoPro privijte v servo, pritrjen na roko, pri tem pazite, da je servo nastavljen tako, da je sredi svojega območja gibanja.
  6. Nato pritrdite servo HS-5685MH na servo nosilec. Nato z enim od vijakov tapnite servo rog. Zdaj pritrdite servo na dno zadnjega servo nosilca.
  7. Zdaj pritrdite zadnji servo na nosilec, v katerega je privit servo HS-5685MH. Nato privijte roko v ta servo in se prepričajte, da je roka privita, da se lahko premika za 90 stopinj v vsako smer.
  8. Za dokončanje konstrukcije karbana dodajte majhen košček lesenega moznika za povezavo med nosilcem GoPro in 3D -tiskano roko. Zdaj ste sestavili stabilizator.
  9. Nazadnje lahko dodate ročaj, priključen na spodnji servo nosilec.

11. korak: Priključitev Zyba na stabilizator

Priključitev Zyba na stabilizator
Priključitev Zyba na stabilizator

Pri tem morate biti pozorni na nekaj stvari. Prepričati se želite, da 5V iz napajalnika nikoli ne pride v ploščo Zybo, saj bi to povzročilo težave s ploščo. Dvakrat preverite, ali so mostiči preklopljeni.

  1. Za pritrditev Zyba na stabilizator potrebujete 15 moških in moških skakalcev ter 4 moške in ženske skakalce.
  2. Najprej priključite dva mostička na 5V napajanje vzdolž + in - tirnic na plošči. Ti bodo napajali servomotorje.
  3. Nato priključite 3 pare skakalcev na + in - vodila na plošči. To bo moč vsakega od servomotorjev.
  4. Drugi konec mostov + in - priklopite v vsakega od servomotorjev.
  5. Povežite mostiček med - tirnico plošče in enim od zatičev GND na Zybo JE Pmod (glejte sliko 5. koraka). To bo ustvarilo skupno podlago med ploščo Zybo in napajalnikom.
  6. Nato priključite signalno žico na pin 1, pin 2 in pin 3 JE Pmod. Zemljevide 1 pripnite na spodnji servo, 2 zemljevida pritrdite na servo na koncu roke in 3 zemljevide pripnite na srednji servo.
  7. Priključite 4 ženske žice v zatiče GND, VDD, SDA in SCL izhoda IMU. GND in VDD priključite na GND in 3V3 na zatičih JF. Priključite pin SDA v pin 8 in SCL v pin 7 na JF (glejte sliko 5. koraka).
  8. Nazadnje povežite računalnik s ploščo s kablom micro usb. To bo omogočilo uart komunikacijo in vam omogočilo programiranje plošče Zybo.

Korak: Pravi severni popravek

Pravi severni popravek
Pravi severni popravek

Kalibracija magnetometra v IMU je pomembna za pravilno delovanje naprave. Magnetna deklinacija, ki popravi magnetni sever na pravi sever.

  1. Če želite popraviti razliko od magnetnega in pravega severa, morate uporabiti kombinacijo dveh storitev, Google Zemljevidov in kalkulatorja magnetnega polja NOAA.
  2. Z Google Zemljevidi poiščite zemljepisno širino in dolžino vaše trenutne lokacije.
  3. Vzemite svojo trenutno zemljepisno dolžino in zemljepisno širino ter ju priključite v kalkulator magnetnega polja.
  4. Vrnjeno je magnetno deklinacijo. Ta izračun vključite v kodo v vrstici 378 "iic_main_thread.c". Če je vaš odklon vzhod, potem odštejte od vrednosti nihanja, če zahod, potem dodajte vrednosti nihanja.

*fotografija je bila posneta iz Sparkfunovega priročnika za priključitev MPU 9250, ki ga najdete tukaj.

13. korak: Zaženite program

Izvajanje programa
Izvajanje programa

Trenutek, ki ste ga čakali! Najboljši del projekta je videti, da deluje. Eden od problemov, ki smo ga opazili, je, da je odstopanje od vrednosti, sporočenih iz IMU. Nizkoprepustni filter lahko pomaga popraviti ta premik, poigravanje z magnetometrom, pospeški in žiroskopskimi kalibracijami pa bo pomagalo popraviti ta premik.

  1. Najprej zgradite vse v SDK, to lahko storite s pritiskom na Ctrl + B.
  2. Prepričajte se, da je napajanje vklopljeno in nastavljeno na 5V. Dvakrat preverite, ali so vse žice na svojih mestih.
  3. Nato za zagon programa pritisnite zeleni trikotnik v zgornjem središču opravilne vrstice.
  4. Ko se program zažene, se bodo vsi servomotorji ponastavili na 0 položajev, zato bodite pripravljeni na premik ploščadi. Ko se program inicializira, se servomotorji vrnejo nazaj v položaj 90 stopinj.
  5. Zagnala se bo funkcija umerjanja magnetometra in navodila bodo natisnjena do terminala UART, s katerim se lahko povežete prek serijskega monitorja, na primer 'kit' ali serijskega monitorja, ki je priložen SDK.
  6. S kalibracijo boste napravo premaknili na sliko 8 za približno 10 sekund. Ta korak lahko odstranite tako, da komentirate vrstico 273 "iic_main_thread.c". Če ga komentirate, morate odkomentirati vrstice 323 - 325 "iic_main_thread.c". Te vrednosti so bile sprva zbrane iz zgornje kalibracije magnetometra in nato priključene kot vrednosti.
  7. Po umerjanju se bo stabilizacijska koda inicializirala in naprava bo ohranila kamero stabilno.

Priporočena: