Sisällysluettelo:
- Vaihe 1: Vivado -laitteiston asennus
- Vaihe 2: Lohkosuunnittelun määrittäminen
- Vaihe 3: Luo mukautettu PWM IP -lohko
- Vaihe 4: Lisää PWM IP -lohko suunnitteluun
- Vaihe 5: Määritä HDL -kääre ja määritä rajoitustiedosto
- Vaihe 6: Bittivirran luominen
- Vaihe 7: Projektin määrittäminen SDK: ssa
- Vaihe 8: FreeRTOS -koodimuutokset
- Vaihe 9: 3D -tulostus vakaajalle
- Vaihe 10: Osien kokoaminen
- Vaihe 11: Zyboyn liittäminen vakaajaan
- Vaihe 12: Todellinen pohjoisen korjaus
- Vaihe 13: Ohjelman suorittaminen
Video: Käsikameran vakaaja: 13 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Johdanto
Tämä on opas 3-akselisen käsikameran vakautuslaitteen luomiseen GoPro-laitteelle Digilent Zybo Zynq-7000 -kehityskortin avulla. Tämä projekti on kehitetty CPE Real-Time Operating Systems -luokkaa (CPE 439) varten. Vakaaja käyttää kolmea servoa ja IMU: ta korjaamaan käyttäjän liikkeet pitääkseen kameran vaakasuorassa.
Projektissa tarvittavat osat
- Digilent Zybo Zynq-7000 -kehityslauta
- Sparkfun IMU Breakout - MPU 9250
- 2 HiTec HS-5485HB Servoa (osta 180 asteen liike tai ohjelma 90-180 astetta)
- 1 HiTec HS-5685MH Servo (osta 180 asteen liike tai ohjelma 90-180 astetta)
- 2 vakio servokannatinta
- 1 Leipälevy
- 15 uros-uros-hyppyjohdinta
- 4 uros-naaras-hyppyjohdinta
- Kuuma liima
- Kahva tai kahva
- Halkaisijaltaan 5 mm puinen tappi
- GoPro tai muu kamera ja kiinnitystarvikkeet
- Virtalähde, joka voi lähettää 5V.
- Pääsy 3D -tulostimeen
Vaihe 1: Vivado -laitteiston asennus
Aloitetaan projektin taustalla olevan lohkosuunnittelun luominen.
- Avaa Vivado 2016.2, napsauta "Luo uusi projekti" -kuvaketta ja napsauta "Seuraava>".
- Nimeä projekti ja napsauta "Seuraava>".
- Valitse RTL -projekti ja paina "Seuraava>".
- Kirjoita hakupalkkiin xc7z010clg400-1 ja valitse sitten osa ja paina "Seuraava>" ja "Valmis".
Vaihe 2: Lohkosuunnittelun määrittäminen
Nyt aloitamme lohkon suunnittelun luomisen lisäämällä ja määrittämällä Zynq IP -lohkon.
- Napsauta vasemman paneelin IP -integrointi -kohdassa "Luo lohkosuunnittelu" ja napsauta sitten "OK".
- Napsauta hiiren kakkospainikkeella "Kaavio" -välilehteä ja valitse "Lisää IP …".
- Kirjoita "ZYNQ7 Processing System" ja napsauta valintaa.
- Kaksoisnapsauta näkyviin tulevaa Zynq -lohkoa.
- Napsauta "Tuo XPS -asetukset" ja tuo toimitettu "ZYBO_zynq_def.xml" -tiedosto.
- Siirry kohtaan "MIO Configuration" ja valitse "Application Processor Unit" ja ota käyttöön ajastin 0 ja Watchdog -ajastimet.
- Valitse saman välilehden I/O -oheislaitteet -kohdasta ENET 0 (ja vaihda avattavasta valikosta "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
- Valitse GPIO -kohdassa GPIO MIO, ENET Reset, USB Reset ja I2C Reset.
- Siirry nyt kohtaan "Kellon määritys". Valitse FCLK_CLK0 kohdassa PL Fabric Clocks. Napsauta sitten "OK".
Vaihe 3: Luo mukautettu PWM IP -lohko
Tämän IP -lohkon avulla levy voi lähettää PWM -signaalin ulos servojen liikkeen ohjaamiseksi. Työ perustui vahvasti Digitronix Nepalin opetusohjelmaan, joka löytyy täältä. Logiikkaa lisättiin kellon hidastamiseksi, joten pulssi lähetti oikealla nopeudella. Lohko ottaa luvun 0-180 ja muuntaa sen pulssiksi 750-2150 käyttöc.
- Napsauta nyt Työkalut-välilehden vasemman yläkulman lähellä "Luo ja pakkaa IP…" ja napsauta Seuraava.
- Valitse sitten "Luo uusi AXI4 -oheislaite" ja paina Seuraava.
- Nimeä PWM -IP -lohko (nimesimme sen pwm_core) ja napsauta Seuraava ja napsauta sitten Seuraava myös seuraavalla sivulla.
- Napsauta nyt "Muokkaa IP -osoitetta" ja napsauta Valmis. Tämä avaa uuden ikkunan pwm -lohkon muokkaamiseen.
- Laajenna "Lähteet" -välilehden "Suunnittelulähteet" -kohdassa "pwm_core_v1_0" (korvaa pwm_core nimelläsi) ja avaa tiedosto, joka tulee näkyviin.
- Kopioi ja liitä koodin 'pwm_core_v1_0_S00_AXI.v' alla oleva koodi zip -tiedostoon projektin alareunassa. Ctrl + Vaihto + R ja korvaa "pwm_core" nimesi IP -lohkolla.
- Avaa seuraavaksi 'nimi _v1_0' ja kopioi antamasi koodi tiedostoon 'pwm_core_v1_0.v'. Ctrl + Vaihto + R ja korvaa 'pwm_core' nimellä.
- Siirry nyt "Paketin IP - nimi" -välilehdelle ja valitse "Mukautusparametrit".
- Tämän välilehden yläosassa on keltainen palkki, johon on linkitetty teksti. Valitse tämä, ja "Piilotetut parametrit" näkyy ruudussa.
- Siirry nyt "Mukautuskäyttöliittymään" ja napsauta hiiren kakkospainikkeella Pwm Counter Max ja valitse "Muokkaa parametria …".
- Valitse "Näkyvä mukautuskäyttöliittymässä" ja "Määritä alue" -ruudut.
- Muuta avattava "Tyyppi:" -valikko kokonaislukualueeksi ja aseta minimiarvoksi 0 ja maksimiksi 65535 ja valitse "Näytä alue" -ruutu. Napsauta nyt OK.
- Vedä Pwm Counter Max 'Page 0' -puun alle. Siirry nyt kohtaan "Tarkista ja pakkaa" ja napsauta "Pakkaa IP uudelleen" -painiketta.
Vaihe 4: Lisää PWM IP -lohko suunnitteluun
Lisäämme IP -lohkon lohkon suunnitteluun, jotta käyttäjä voi käyttää PWM IP -lohkoa prosessorin kautta.
- Napsauta kaavio -välilehteä hiiren kakkospainikkeella ja napsauta "IP -asetukset…". Siirry "Arkistonhallinta" -välilehdelle.
- Napsauta vihreää pluspainiketta ja valitse se. Etsi nyt ip_repo Tiedostonhallinnasta ja lisää se projektiin. Valitse sitten Käytä ja sitten OK.
- Napsauta kaavio -välilehteä hiiren kakkospainikkeella ja napsauta "Lisää IP…". Kirjoita PWM IP -lohkon nimi ja valitse se.
- Näytön yläosassa pitäisi olla vihreä palkki, valitse ensin "Suorita yhteysautomaatio" ja napsauta OK. Napsauta sitten "Suorita lohkoautomaatio" ja napsauta OK.
- Kaksoisnapsauta PWM -lohkoa ja muuta Pwm Counter Max arvoksi 1024 128.
- Vie hiiri PWM -lohkon PWM0: n päälle. Pienen kynän pitäisi näkyä, kun teet sen. Napsauta hiiren kakkospainikkeella ja valitse "Luo portti …" ja napsauta OK, kun ikkuna avautuu. Tämä luo ulkoisen portin signaalille.
- Toista vaihe 6 myös PWM1: lle ja PWM2: lle.
- Etsi pieni pyöreä kaksoisnuolikuvake sivupalkista ja napsauta sitä. Se uudistaa asettelun ja lohkon suunnittelun pitäisi näyttää yllä olevasta kuvasta.
Vaihe 5: Määritä HDL -kääre ja määritä rajoitustiedosto
Luomme nyt korkean tason suunnittelun lohkomallillemme ja kartoitamme sitten PWM0, PWM1 ja PWM2 Pmod -nastoihin Zybo -kortilla.
- Siirry "Lähteet" -välilehdelle. Napsauta hiiren kakkospainikkeella lohkon suunnittelutiedostoa "Suunnittelulähteet" -kohdassa ja napsauta "Luo HDL -kääre …". Valitse "Kopioi luotu kääre salliaksesi käyttäjän muokkaukset" ja napsauta OK. Tämä luo korkean tason suunnittelun luomallemme lohkomallille.
- Pmod, jota tulostamme, on JE.
- Valitse Tiedosto -kohdasta "Lisää lähteitä …", valitse "Lisää tai luo rajoituksia" ja napsauta Seuraava.
- Napsauta Lisää tiedostoja ja valitse mukana tuleva "ZYBO_Master.xdc" -tiedosto. Jos tarkastelet tätä tiedostoa, huomaat, että kaikki on kommentoimatonta paitsi kuusi "set_property" -riviä kohdassa "## Pmod Header JE". Huomaat, että PWM0, PWM1 ja PWM2 ovat argumentteja näille riveille. Ne kartoitetaan JE Pmodin nastoihin 1, 2 ja 3.
Vaihe 6: Bittivirran luominen
Meidän on luotava bittivirta, jotta laitteistosuunnitelma voidaan viedä SDK: hon, ennen kuin siirrymme eteenpäin.
- Valitse sivupalkin "Ohjelma ja virheenkorjaus" -kohdasta "Luo bittivirta". Tämä suorittaa synteesin, sitten toteutuksen ja luo sitten suunnittelun bittivirran.
- Korjaa esiin tulevat virheet, mutta varoitukset voidaan yleensä jättää huomiotta.
- Siirry kohtaan Tiedosto-> Käynnistä SDK ja napsauta OK. Tämä avaa Xilinx SDK: n.
Vaihe 7: Projektin määrittäminen SDK: ssa
Tämä osa voi olla hieman turhauttava. Jos olet epävarma, tee uusi BSP ja vaihda vanha. Tämä säästi meille joukon virheenkorjausaikaa.
- Aloita lataamalla FreeRTOSin uusin versio täältä.
- Pura kaikki lataamisesta ja tuomisesta FreeRTOS SDK: ksi napsauttamalla Tiedosto-> Tuo ja napsauta "Yleiset" -kohdassa "Olemassa olevat projektit työtilaan" ja napsauta sitten Seuraava.
- Siirry FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 -kansioon FreeRTOS -kansiossa. Tuo vain "RTOSDemo" tästä paikasta.
- Luo nyt Board Support Package (BSP) napsauttamalla File-> New Board Support Package.
- Valitse "ps7_cortexa9_0" ja tarkista "lwip141" ja napsauta OK.
- Napsauta hiiren kakkospainikkeella sinistä RTOSDemo -kansiota ja valitse "Projektiviitteet".
- Poista valinta kohdasta "RTOSDemo_bsp" ja tarkista juuri luomamme uusi BSP.
Vaihe 8: FreeRTOS -koodimuutokset
Tarjoamamme koodi voidaan jakaa 7 eri tiedostoon. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h ja iic_imu.h. Koodi iic_main_thread.c on muokattu Kris Winerin kirjastosta, joka löytyy täältä. Muutimme hänen koodinsa pääasiassa sisällyttämään tehtäviä ja saamaan sen toimimaan Zybo -levyn kanssa. Lisäsimme myös toimintoja kameran suunnan korjauksen laskemiseksi. Olemme jättäneet useita painettuja lausuntoja, jotka ovat hyödyllisiä virheenkorjauksessa. Suurin osa niistä kommentoidaan, mutta jos tuntuu tarpeelliselta, voit poistaa ne.
- Helpoin tapa muokata main.c -tiedostoa on korvata koodi kopioidulla koodilla sisältämästämme main.c -tiedostosta.
- Jos haluat luoda uuden tiedoston, napsauta hiiren kakkospainikkeella RTOSDemo -kohdan src -kansiota ja valitse C Lähdetiedosto. Nimeä tämä tiedosto "iic_main_thread.c".
- Kopioi koodi mukana tulevasta tiedostosta "iic_main_thread.c" ja liitä se juuri luomaasi tiedostoon.
- Toista vaiheet 2 ja 3 muiden tiedostojen kanssa.
- vaatii linkittämisohjeen gcc: ssä. Jos haluat lisätä tämän rakennuspolulle, napsauta hiiren kakkospainikkeella RTOSDemo ja valitse "C/C ++ Build Settings".
- Uusi ikkuna avautuu. Siirry kohtaan ARM v7 gcc linker-> Libraries. Valitse pieni lisätiedosto oikeasta yläkulmasta ja kirjoita "m". Tähän sisältyy matematiikkakirjasto projektiin.
- Luo projekti Ctrl + B: llä ja vahvista, että kaikki toimii. Tarkista annetut varoitukset, mutta voit ehkä jättää ne huomiotta.
- Muutamia paikkoja on muutettava, lähinnä nykyisen sijaintisi magneettinen deklinaatio. Selitämme kuinka muuttaa tätä opetusohjelman kalibrointiosassa.
Vaihe 9: 3D -tulostus vakaajalle
Sinun täytyy tulostaa 3D -projektiin pari osaa. Luultavasti voi ostaa osia, jotka ovat samankokoisia/-kokoisia kuin painetut osat.
- Tulosta GoPron varsi ja pidike käyttämällä mukana toimitettuja tiedostoja.
- Sinun on lisättävä telineet.stl -tiedostoon.
- Leikkaa/puhdista ylimääräisten telineiden osat tulostamisen jälkeen.
- Halutessasi voit korvata puisen vaarnan 3D -painetulla osalla.
Vaihe 10: Osien kokoaminen
Stabilisaattorin kokoamiseen kuuluu useita osia. Ostettujen kiinnikkeiden mukana tulee 4 itsekierteittävää ruuvia ja 4 mutteria. Koska servoja on 3, yksi servosarveista on esikartoitettava, jotta kaksi pulttia mahtuu läpi.
- Juotos 8 nastaa IMU -aukkoon, 4 kummallakin puolella.
- IMU on kiinnitetty GoPro -laitteen 3D -tulostettuun pidikkeeseen kannattimen keskellä.
- Suuntaa kannatin niin, että servon kiinnitysreiät ovat vasemmalla puolella. Aseta IMU lähimpään reunaan siten, että nastat riippuvat reunasta. Aseta sitten GoPro -kiinnike IMU: n päälle ja kiinnitä IMU ja teline paikalleen kiinnikkeeseen.
- Kiinnitä HS-5485HB servokannattimeen, joka on integroitu 3D-tulostettuun varteen.
- Kierrä GoPro -kiinnike käsivarsiin kiinnitettyyn servoon ja varmista, että servo on asetettu niin, että se on liikealueensa keskellä.
- Kiinnitä seuraavaksi HS-5685MH-servo servokannattimeen. Napauta sitten servosarjaa yhdellä ruuvilla. Kiinnitä nyt servo viimeisen servokannattimen alaosaan.
- Kiinnitä nyt viimeinen servo kiinnikkeeseen, johon HS-5685MH-servo on ruuvattu. Kierrä sitten varsi tähän servoon varmistaen, että varsi on ruuvattu kiinni, jotta se voi liikkua 90 astetta kumpaankin suuntaan.
- Viimeistele kardaanin rakentaminen lisäämällä pieni pala puusta vaarnasta GoPro -pidikkeen ja 3D -painetun varren välille. Olet nyt koonnut vakaajan.
- Lopuksi voit lisätä kahvan, joka on liitetty alempaan servokannattimeen.
Vaihe 11: Zyboyn liittäminen vakaajaan
On pari asiaa, joita on syytä varoa, kun teet tämän. Haluat varmistaa, että virtalähteen 5 V ei koskaan mene Zybo -korttiin, koska tämä johtaisi ongelmiin piirilevyn kanssa. Varmista, että tarkistat hyppääjäsi uudelleen ja varmistat, ettei johtoja vaihdeta.
- Zyboyn kiinnittämiseksi vakaajaan tarvitset 15 uros -miespuolista hyppääjää ja 4 uros -naispuolista hyppääjää.
- Liitä ensin kaksi hyppääjää 5V -virtalähteeseesi leipälevyn + ja - kiskoja pitkin. Nämä toimittavat virran servoille.
- Liitä sitten 3 paria hyppääjiä leipälevyn + ja - kiskoihin. Tämä on voima jokaiselle servolle.
- Kytke + ja - -hyppyjen toinen pää jokaiseen servoon.
- Kytke hyppylevy leipälaudan - kiskon ja yhden Zybo JE Pmodin GND -nastojen väliin (katso vaihe 5 kuva). Tämä luo yhteisen maan Zybo -kortin ja virtalähteen välillä.
- Liitä seuraavaksi signaalijohto JE Pmodin nastoihin 1, 2 ja 3. Kiinnitä 1 kartat alempaan servoon, nasta 2 karttaa varren päässä olevaan servoon ja kiinnitä 3 karttaa keskimmäiseen servoon.
- Kytke 4 naarasjohtoa IMU -katkaisijan GND-, VDD-, SDA- ja SCL -nastoihin. GND ja VDD kytketään JF -nastojen GND- ja 3V3 -liittimiin. Kytke SDA -nasta liittimeen 8 ja SCL liittimeen 7 (katso vaihe 5 kuva).
- Lopuksi kytke tietokone korttiin mikro -usb -kaapelilla. Tämä mahdollistaa uart -viestinnän ja voit ohjelmoida Zybo -levyn.
Vaihe 12: Todellinen pohjoisen korjaus
Magneettimittarin kalibrointi IMU: ssa on tärkeää laitteen oikean toiminnan kannalta. Magneettinen deklinaatio, joka korjaa magneettisen pohjoisen todelliseen pohjoiseen.
- Jos haluat korjata eron magneettisesta ja todellisesta pohjoisesta, sinun on käytettävä kahden palvelun yhdistelmää, Google Mapsia ja NOAA: n magneettikenttälaskuria.
- Käytä Google Mapsia löytääksesi nykyisen sijaintisi leveys- ja pituusaste.
- Ota nykyinen pituusaste ja leveysaste ja liitä se magneettikenttälaskimeen.
- Mitä palautetaan, on magneettinen deklinaatio. Liitä tämä laskelma koodiin rivillä 378 "iic_main_thread.c". Jos deklinaatio on itä, vähennä kääntymisarvosta, jos länsi, lisää sitten kääntöarvoon.
*kuva on otettu Sparkfunin MPU 9250 -liitäntäoppaasta, joka löytyy täältä.
Vaihe 13: Ohjelman suorittaminen
Hetki, jota olet odottanut! Parasta projektissa on nähdä sen toimivan. Yksi havaitsemamme ongelma on se, että IMU: n raportoimista arvoista on eroja. Alipäästösuodatin voi auttaa korjaamaan tämän poikkeaman, ja magnetometrin, kiihtyvyyden ja gyroskoopin kalibrointi auttavat myös korjaamaan tämän ajelehtimisen.
- Rakenna ensin kaikki SDK: hon, tämä voidaan tehdä painamalla Ctrl + B.
- Varmista, että virtalähde on kytketty ja asetettu 5V: iin. Tarkista vielä kerran, että kaikki johdot menevät oikeisiin paikkoihin.
- Suorita ohjelma painamalla sitten vihreää kolmiota tehtäväpalkin yläosassa.
- Kun ohjelma on käynnissä, kaikki servot palautuvat 0 -asentoihin, joten ole valmis lautan liikkumaan. Kun ohjelma on alustettu, servot napsahtavat takaisin 90 asteen asentoihinsa.
- Magnetometrin kalibrointitoiminto käynnistyy ja ohjeet tulostetaan UART -liitäntään, johon voit muodostaa yhteyden sarjamonitorin, kuten "kitin" tai SDK: n mukana toimitetun sarjamonitorin kautta.
- Kalibroinnin avulla voit siirtää laitetta kuvassa 8 noin 10 sekunnin ajan. Voit poistaa tämän vaiheen kommentoimalla "iic_main_thread.c" rivin 273. Jos kommentoit sitä, sinun on poistettava rivit 323 - 325 "iic_main_thread.c". Nämä arvot kerättiin aluksi yllä olevasta magnetometrin kalibroinnista ja liitettiin sitten arvoina.
- Kalibroinnin jälkeen vakautuskoodi alustetaan ja laite pitää kameran vakaana.
Suositeltava:
Tee A.C 220 voltin automaattinen vakaaja käyttämällä Arduino NANO tai UNO: 3 vaihetta
Tee A.C 220 voltin automaattinen vakaaja käyttämällä Arduino NANO: ta tai UNO: Tässä ohjeessa näytän sinulle, miten voit tehdä automaattisen jännitteenvakaajan käyttämällä Arduino NANO: ta, joka näyttää AC -jännitteen, watin, portaat, muuntajan lämpötilan ja amp; automaattinen tuulettimen sammutus jäähdytystä varten. Tämä on 3 vaihetta Automaattinen jännitteen vakaaja
Arduino -kameran vakaaja DIY: 4 vaihetta (kuvilla)
Arduino -kameran vakaaja DIY: Tein kameran vakaajan arduinoa käyttäen kouluprojektiin. Tarvitset: 1x Arduino Uno3x -moottori 1x Gyroskooppi MP60502x -painike
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan
Kameran vakaaja ENV2: lle tai muille kamerapuhelimille: 6 vaihetta
Kameran vakaaja ENV2: lle tai muille kamerapuhelimille: Oletko koskaan halunnut tehdä videon, mutta sinulla on vain kamerapuhelin? Oletko koskaan tehnyt videota kamerapuhelimella, mutta et voi pitää sitä paikallaan? No, tämä on opettavainen sinulle