INHOUDSOPGAWE:

Handstabilisator: 13 stappe (met foto's)
Handstabilisator: 13 stappe (met foto's)

Video: Handstabilisator: 13 stappe (met foto's)

Video: Handstabilisator: 13 stappe (met foto's)
Video: Lost & Found | Critical Role | Campaign 2, Episode 13 2024, Julie
Anonim
Handheld kamera stabiliseerder
Handheld kamera stabiliseerder

Inleiding

Dit is 'n gids vir die skep van 'n 3-as-kamera vir kamera-stabilisering vir 'n GoPro met behulp van 'n Digilent Zybo Zynq-7000 Development Board. Hierdie projek is ontwikkel vir die CPE Real-Time Operating Systems klas (CPE 439). Die stabiliseerder gebruik drie servo's en 'n IMU om die beweging van die gebruiker reg te stel om die kamera gelyk te hou.

Onderdele benodig vir die projek

  • Digilent Zybo Zynq-7000 Ontwikkelingsraad
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB servo's (koop 180 grade beweging of program van 90 tot 180 grade)
  • 1 HiTec HS-5685MH Servo (koop 180 grade beweging of program van 90 tot 180 grade)
  • 2 standaard servo hakies
  • 1 Broodbord
  • 15 man-tot-man trui
  • 4 man-tot-vroulike springdrade
  • Warm gom
  • Greep of handvatsel
  • Houtspeld met 'n deursnee van 5 mm
  • GoPro of ander kamera en bevestigingshardeware
  • Kragtoevoer wat 5V kan lewer.
  • Toegang tot 3D -drukker

Stap 1: Vivado hardeware -opstelling

Vivado hardeware -opstelling
Vivado hardeware -opstelling

Kom ons begin met die skep van die onderliggende blokontwerp vir die projek.

  1. Maak Vivado 2016.2 oop, klik op die ikoon "Skep nuwe projek" en klik op "Volgende>".
  2. Noem u projek en klik op "Volgende>".
  3. Kies die RTL -projek en klik op "Volgende>".
  4. Tik in die soekbalk xc7z010clg400-1 en kies dan die onderdeel en druk "Volgende>" en "Voltooi".

Stap 2: Opstel van blokontwerp

Nou begin ons die blokontwerp genereer deur die Zynq IP -blok by te voeg en op te stel.

  1. Klik op "Skep blokontwerp" in die linkerpaneel onder IP Integrator en klik dan op "OK".
  2. Klik met die rechtermuisknop op die oortjie "Diagram" en kies "Voeg IP by …".
  3. Tik "ZYNQ7 Processing System" en klik op die keuse.
  4. Dubbelklik op die Zynq -blok wat verskyn.
  5. Klik op "Import XPS Settings" en voer die "ZYBO_zynq_def.xml" -lêer in.
  6. Gaan na "MIO Configuration" en kies "Application Processor Unit" en aktiveer Timer 0 en Watchdog timers.
  7. Kies ENET 0 op dieselfde oortjie onder "I/O randapparatuur" (en verander die keuselys na "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Gaan onder "GPIO" na GPIO MIO, ENET Reset, USB Reset en I2C Reset.
  9. Gaan nou na "Klokkonfigurasie". Kies FCLK_CLK0 onder PL Fabric Clocks. Klik dan op "OK".

Stap 3: Skep pasgemaakte PWM IP -blok

Met hierdie IP -blok kan die bord 'n PWM -sein stuur om die beweging van die servo's te beheer. Die werk was sterk gebaseer op die handleiding deur Digitronix Nepal, wat hier gevind word. Logika is bygevoeg om die klok te vertraag, sodat die pols met die korrekte tempo uitgaan. Die blok neem 'n getal van 0 tot 180 en sit dit om in 'n pols van 750-2150 usec.

  1. Klik nou op die blad Gereedskap in die linker boonste hoek "Skep en verpak IP …" en klik op Volgende.
  2. Kies dan 'Skep 'n nuwe AXI4 -randapparaat' en klik op Volgende.
  3. Noem u PWM IP -blok (ons het dit pwm_core genoem) en klik op Volgende en klik dan ook op Volgende op die volgende bladsy.
  4. Klik nou op "Edit IP" en druk op Voltooi. Dit sal 'n nuwe venster oopmaak om die pwm -blok te wysig.
  5. Op die oortjie "Bronne" en onder "Ontwerpbronne", brei 'pwm_core_v1_0' uit (vervang pwm_core met u naam) en maak die lêer oop wat sigbaar word.
  6. Kopieer en plak die kode onder 'pwm_core_v1_0_S00_AXI.v' in die zip -lêer onderaan die projek. Ctrl + Shift + R en vervang 'pwm_core' met u naam vir die ip -blok.
  7. Maak vervolgens 'naam _v1_0' oop en kopieer die gegewe kode in die lêer 'pwm_core_v1_0.v'. Ctrl + Shift + R en vervang 'pwm_core' met naam.
  8. Gaan nou na die oortjie 'Pakket -IP -naam' en kies 'Aanpassingsparameters'.
  9. Op hierdie blad sal daar 'n geel balk aan die bokant wees wat teks gekoppel het. Kies dit, en 'Versteekte parameters' verskyn in die kassie.
  10. Gaan nou na "Customization GUI" en klik met die rechtermuisknop op Pwm Counter Max en kies "Parameter wysig …".
  11. Merk die blokkies "Sigbaar in aanpassings -GUI" en "Spesifiseer reeks".
  12. Verander die keuselys "Tipe:" na Bereik heelgetalle en stel die minimum in op 0 en die maksimum op 65535 en merk die boks "Wys reeks". Klik nou op OK.
  13. Sleep Pwm Counter Max onder die 'Bladsy 0' -boom. Gaan nou na "Hersien en verpak" en klik op die knoppie "Herpak pakket IP".

Stap 4: Voeg PWM IP -blok by Design

Voeg PWM IP -blok by Design
Voeg PWM IP -blok by Design

Ons sal die IP -blok by die blokontwerp voeg om die gebruiker deur die verwerker toegang tot die PWM IP -blok te gee.

  1. Klik met die rechtermuisknop op die diagram -oortjie en klik op "IP -instellings …". Gaan na die oortjie "Bewaarplekbestuurder".
  2. Klik op die groen plusknoppie en kies dit. Soek nou ip_repo in die lêerbestuurder en voeg dit by die projek. Klik dan op Apply en dan op OK.
  3. Klik met die rechtermuisknop op die diagram -oortjie en klik op "Voeg IP by …". Tik u PWM IP -bloknaam in en kies dit.
  4. Bo -aan die skerm moet 'n groen balk verskyn, kies eers 'Verbindingsautomatisering uitvoer' en klik op OK. Klik dan op "Run Block Automation" en klik op OK.
  5. Dubbelklik op die PWM -blok en verander Pwm Counter Max na 1024 van 128.
  6. Beweeg jou muiswyser oor PWM0 op die PWM -blok. Daar moet 'n klein potlood verskyn wat verskyn. Klik met die rechtermuisknop en kies "Skep poort …" en klik op OK wanneer 'n venster oopmaak. Dit skep 'n eksterne poort waarna die sein oorgedra moet word.
  7. Herhaal ook stap 6 vir PWM1 en PWM2.
  8. Soek die klein ronde dubbele pyltjie -ikoon op die sidebar en klik daarop. Dit sal die uitleg herstel en u blokontwerp moet soos die prent hierbo lyk.

Stap 5: Stel HDL Wrapper op en stel beperkingslêer op

Stel HDL Wrapper op en stel beperkingslêer op
Stel HDL Wrapper op en stel beperkingslêer op

Ons gaan nou die hoëvlakontwerp vir ons blokontwerp genereer en dan PWM0, PWM1 en PWM2 na Pmod -penne op die Zybo -kaart in kaart bring.

  1. Gaan na die oortjie "Bronne". Klik met die rechtermuisknop op u blokontwerplêer onder "Ontwerpbronne" en klik op "Skep HDL Wrapper …". Kies "Kopieer gegenereerde omslag om gebruikersbewerkings toe te laat" en klik op OK. Dit genereer die hoëvlakontwerp vir die blokontwerp wat ons geskep het.
  2. Die Pmod waarna ons sal uitreik, is JE.
  3. Onder "Lêer", kies "Voeg bronne by …" en kies "Voeg of skep beperkings" en klik op Volgende.
  4. Klik op Voeg lêers by en kies die ingesluit "ZYBO_Master.xdc" lêer. As u in hierdie lêer kyk, sal u agterkom dat alles sonder kommentaar is, behalwe ses reëls "set_property" onder "## Pmod Header JE". U sal sien dat PWM0, PWM1 en PWM2 die argumente vir hierdie reëls is. Hulle word in kaart gebring na pen 1, pen 2 en pen 3 van die JE Pmod.

Stap 6: Genereer Bitstream

Ons moet die bitstroom genereer sodat die hardeware -ontwerp na die SDK kan uitvoer voordat ons verder gaan.

  1. Kies 'Genereer bitstroom' onder 'Program en ontfout' op die sidebar. Dit sal sintese, dan implementering uitvoer, en dan die bitstroom vir die ontwerp genereer.
  2. Korrigeer enige fout wat opduik, maar waarskuwings kan oor die algemeen geïgnoreer word.
  3. Gaan na File-> Launch SDK en klik OK. Dit maak die Xilinx SDK oop.

Stap 7: Opstel van projek in SDK

Hierdie deel kan 'n bietjie frustrerend wees. As u twyfel, maak 'n nuwe BSP en vervang die ou. Dit het ons 'n klomp ontfoutingstyd bespaar.

  1. Laai die nuutste weergawe van FreeRTOS hier af.
  2. Haal alles uit die aflaai en voer FreeRTOS in die SDK in deur op File-> Import te klik, en klik onder "Algemeen" op "Bestaande projekte in die werkruimte" en klik dan op Next.
  3. Gaan na "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" in die FreeRTOS -lêergids. Voer slegs 'RTOSDemo' vanaf hierdie plek in.
  4. Genereer nou 'n Board Support Package (BSP) deur op File te klik-> New Board Support Package.
  5. Kies "ps7_cortexa9_0" en merk "lwip141" en klik op OK.
  6. Klik met die rechtermuisknop op die RTOSDemo blou gids en kies "Projekverwysings".
  7. Skakel "RTOSDemo_bsp" uit en kyk na die nuwe BSP wat ons pas geskep het.

Stap 8: FreeRTOS -kodewysigings

Die kode wat ons verskaf, kan in 7 verskillende lêers verdeel word. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h en iic_imu.h. Die kode in iic_main_thread.c is aangepas uit die biblioteek van Kris Winer, wat u hier kan vind. Ons het sy kode hoofsaaklik verander om take op te neem en dit met die Zybo -bord te laat werk. Ons het ook funksies bygevoeg vir die berekening van die korreksie van die oriëntasie van die kamera. Ons het 'n paar gedrukte verklarings agtergelaat wat nuttig is vir ontfouting. Die meeste van hulle word kommentaar gelewer, maar as u dit nodig het, kan u dit nie opmerk nie.

  1. Die maklikste manier om die main.c -lêer te verander, is om die kode te vervang deur 'n gekopieerde kode uit ons hoof.c -lêer.
  2. Om 'n nuwe lêer te skep, klik met die rechtermuisknop op die src -lêergids onder RTOSDemo en kies C -bronlêer. Noem hierdie lêer "iic_main_thread.c".
  3. Kopieer kode van die ingesluit "iic_main_thread.c" en plak dit in u nuutgeskepte lêer.
  4. Herhaal stap 2 en 3 met die oorblywende lêers.
  5. vereis 'n skakelinstruksie in gcc. Om dit by die boupad te voeg, klik u met die rechtermuisknop op RTOSDemo en kies "C/C ++ Build Settings".
  6. 'N Nuwe venster sal oopmaak. Gaan na ARM v7 gcc linker-> biblioteke. Kies die klein toevoeglêer in die regter boonste hoek en tik "m". Dit sal die wiskundebiblioteek in die projek insluit.
  7. Bou 'n projek met Ctrl + B om te bevestig dat alles werk. Kyk na die waarskuwings wat gegenereer word, maar u kan dit moontlik ignoreer.
  8. Daar is 'n paar plekke wat gewysig moet word, veral die magnetiese deklinasie van u huidige ligging. Ons sal verduidelik hoe u dit kan verander in die kalibrasie -gedeelte van die tutoriaal.

Stap 9: 3D -druk vir stabiliseerder

3D -druk vir stabiliseerder
3D -druk vir stabiliseerder

U moet 'n paar dele vir hierdie projek in 3D druk. U kan waarskynlik onderdele koop wat soortgelyk is aan ons gedrukte onderdele.

  1. Gebruik die gegewe lêers om die arm en houbeugel vir die GoPro uit te druk.
  2. U moet steierwerk by die.stl -lêer voeg.
  3. Sny/maak dele van oortollige steierwerk skoon nadat dit gedruk is.
  4. U kan die houtdoek vervang deur 'n 3D -gedrukte deel as u wil.

Stap 10: Monteer die dele

Montering van die onderdele
Montering van die onderdele

Dit bestaan uit verskeie dele om die stabilisator te monteer. Die gekose hakies kom met 4 self-tappende skroewe en 4 boute met moere. Aangesien daar 3 servo's is, moet een van die servo-horings vooraf getik word sodat 2 van die boute daardeur kan pas.

  1. Soldeer 8 penne aan die IMU -uitbraak, 4 aan elke kant.
  2. Die IMU is gekoppel aan die 3D -gedrukte houerbeugel vir die GoPro in die middel van die hakie.
  3. Rig die hakie sodat die servo -monteergate aan u linkerkant is. Plaas die IMU op die rand wat die naaste aan u is, terwyl die penne aan die rand hang. Plaas die GoPro -houer bo -op die IMU en plak die IMU en die houer op die hakie vas.
  4. Koppel 'n HS-5485HB aan die servo-houer wat in die 3D-gedrukte arm geïntegreer is.
  5. Skroef die GoPro -beugel in die servo aan die arm vas, en maak seker dat die servo in die middel van sy bewegingsbereik is.
  6. Heg vervolgens die HS-5685MH servo aan 'n servo-houer. Tik dan op die servohoring met een van die skroewe. Bevestig nou die servo aan die onderkant van die laaste servo -houer.
  7. Heg nou die laaste servo aan die bracket waarin die HS-5685MH servo vasgeskroef is. Skroef dan die arm in hierdie servo vas en maak seker dat die arm vasgeskroef is sodat hy 90 grade kan beweeg.
  8. Om die konstruksie van die gimbal te voltooi, voeg 'n klein stukkie van die houtpennetjie by om tussen die GoPro -beugel en die 3D -gedrukte arm te verbind. U het die stabiliseerder nou bymekaargemaak.
  9. Laastens kan u 'n handvatsel byvoeg wat aan die onderste servo -houer gekoppel is.

Stap 11: Koppel Zybo aan stabilisator

Koppel Zybo aan stabilisator
Koppel Zybo aan stabilisator

Daar is 'n paar dinge om versigtig te wees wanneer u dit doen. U wil seker maak dat die 5V van die kragtoevoer nooit in die Zybo -bord ingaan nie, aangesien dit probleme met die bord kan veroorsaak. Maak seker dat u u springers twee keer nagaan om te bevestig dat geen drade omgeskakel word nie.

  1. Om die Zybo aan die stabilisator te koppel, benodig jy 15 manlike tot manlike springers en 4 manlike tot vroulike springers.
  2. Koppel eers twee springers aan u 5V -kragtoevoer langs die + en - relings van die broodbord. Dit sal die servo's van krag voorsien.
  3. Koppel dan 3 pare springers aan die + en - relings van die broodbord. Dit is die krag vir elk van die servo's.
  4. Steek die ander kant van die + en - springers in elk van die servo's.
  5. Koppel 'n trui tussen die - rail van die broodbord en een van die GND -penne op die Zybo JE Pmod (sien stap 5 -prent). Dit sal 'n gemeenskaplike grondslag skep tussen die Zybo -bord en die kragtoevoer.
  6. Koppel vervolgens 'n seindraad aan pen 1, pen 2 en pen 3 van die JE Pmod. Speld 1 -kaarte na die onderste servo, pen 2 -kaarte vir die servo aan die einde van die arm en pen 3 -kaarte vir die middelste servo.
  7. Sluit die 4 vroulike drade aan op die GND-, VDD-, SDA- en SCL -penne van die IMU -uitbraak. GND en VDD sluit aan op die GND en 3V3 op die JF -penne. Steek SDA -pen in pen 8 en SCL in pen 7 op die JF (sien stap 5 prentjie).
  8. Koppel laastens die rekenaar aan die kaart met 'n mikro -usb -kabel. Dit sal uart -kommunikasie moontlik maak en u toelaat om die Zybo -bord te programmeer.

Stap 12: Ware noordkorreksie

Ware Noordkorreksie
Ware Noordkorreksie

Die kalibrasie van die magnetometer in die IMU is belangrik vir die korrekte werking van die toestel. Die magnetiese deklinasie, wat die magnetiese noord na die ware noord regstel.

  1. Om die verskil tussen magnetiese en ware noord reg te stel, moet u 'n kombinasie van twee dienste, Google Maps en NOAA se magnetiese veldrekenaar, gebruik.
  2. Gebruik Google Maps om jou breedtegraad en lengtegraad van jou huidige ligging te vind.
  3. Neem u huidige lengte- en breedtegraad en steek dit in die magnetiese veldrekenaar.
  4. Wat teruggestuur word, is die magnetiese deklinasie. Sluit hierdie berekening in die kode op reël 378 van "iic_main_thread.c" in. As u deklinasie oos is, trek dan die yaw -waarde af, as west, voeg dan by die yaw -waarde.

*foto is geneem uit Sparkfun se MPU 9250 aansluitingsgids, hier gevind.

Stap 13: Begin die program

Die bestuur van die program
Die bestuur van die program

Die oomblik waarop u gewag het! Die beste deel van die projek is om dit te sien werk. Een probleem wat ons opgemerk het, is dat daar afwykings is van die waardes wat deur die IMU gerapporteer is. 'N Laagdoorlaatfilter kan help om hierdie wegdrywing reg te stel, en om te peuter met die magnetometer, versnelling en gyro-kalibrasies, sal ook help om hierdie drywing reg te stel.

  1. Bou eers alles in die SDK; dit kan gedoen word deur op Ctrl + B.
  2. Maak seker dat die kragtoevoer aan is en op 5V gestel is. Maak seker dat al die drade na hul regte plekke gaan.
  3. Druk dan op die groen driehoek in die boonste middel van die taakbalk om die program uit te voer.
  4. As die program uitgevoer word, sal die servo's almal terugkeer na hul 0 -posisies, dus wees gereed om die tuig te beweeg. Sodra die program geïnitialiseer is, sal die servo's terugkeer na hul posisies van 90 grade.
  5. 'N Magnetometer -kalibrasie -funksie word uitgevoer en aanwysings sal na die UART -terminale gedruk word, waarmee u kan koppel via 'n seriële monitor, soos' stopverf 'of die seriële monitor in die SDK.
  6. Deur die kalibrasie sal u die toestel ongeveer 10 sekondes in 'n figuur 8 laat beweeg. U kan hierdie stap verwyder deur op reël 273 van "iic_main_thread.c" kommentaar te lewer. As u kommentaar lewer, moet u reëls 323 - 325 "iic_main_thread.c" uitlaat. Hierdie waardes is aanvanklik verkry uit die magnetometer -kalibrasie hierbo en dan as waardes ingeprop.
  7. Na die kalibrasie sal die stabiliseringskode geïnisieer word en die toestel hou die kamera stabiel.

Aanbeveel: