Tartalomjegyzék:

Kézi kamera stabilizátor: 13 lépés (képekkel)
Kézi kamera stabilizátor: 13 lépés (képekkel)

Videó: Kézi kamera stabilizátor: 13 lépés (képekkel)

Videó: Kézi kamera stabilizátor: 13 lépés (képekkel)
Videó: Muay-Thai 🔞🔞🔞🥊🥊🙏🏻🙏🏻 2024, Július
Anonim
Kézi kamera stabilizátor
Kézi kamera stabilizátor

Bevezetés

Ez egy útmutató egy 3 tengelyes kézi fényképezőgép-stabilizáló berendezés létrehozásához a GoPro számára a Digilent Zybo Zynq-7000 fejlesztőlap segítségével. Ezt a projektet a CPE valós idejű operációs rendszerek osztályához (CPE 439) fejlesztették ki. A stabilizátor három szervót és egy IMU -t használ a felhasználó mozgásának korrigálására, hogy a kamera szintben maradjon.

A projekthez szükséges alkatrészek

  • Digilent Zybo Zynq-7000 Fejlesztési Tanács
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB szervó (vásároljon 180 fokos mozgást vagy programot 90 és 180 fok között)
  • 1 HiTec HS-5685MH szervo (vásároljon 180 fokos mozgást vagy programot 90 és 180 fok között)
  • 2 standard szervo konzol
  • 1 Kenyeretábla
  • 15 férfi-férfi áthidaló vezeték
  • 4 férfi-női áthidaló vezeték
  • Forró ragasztó
  • Markolat vagy fogantyú
  • 5 mm átmérőjű fa dübel
  • GoPro vagy más kamera és rögzítő hardver
  • Tápellátás 5 V -os kimenetre.
  • Hozzáférés a 3D nyomtatóhoz

1. lépés: Vivado hardver beállítása

Vivado hardver beállítása
Vivado hardver beállítása

Kezdjük a projekt mögöttes blokktervének létrehozásával.

  1. Nyissa meg a Vivado 2016.2 programot, kattintson az "Új projekt létrehozása" ikonra, majd a "Tovább>" gombra.
  2. Nevezze el a projektet, majd kattintson a "Tovább>" gombra.
  3. Válassza ki az RTL projektet, és kattintson a "Tovább>" gombra.
  4. Írja be az xc7z010clg400-1 keresősávba, majd válassza ki a részt, majd nyomja meg a "Tovább>" és a "Befejezés" gombot.

2. lépés: A blokktervezés beállítása

Most elkezdjük létrehozni a blokktervet a Zynq IP -blokk hozzáadásával és beállításával.

  1. A bal oldali panelen, az IP -integrátor alatt kattintson a "Blokktervezés létrehozása", majd az "OK" gombra.
  2. Kattintson a jobb gombbal a "Diagram" fülre, és válassza az "IP hozzáadása …" lehetőséget.
  3. Írja be a "ZYNQ7 Processing System" parancsot, és kattintson a kiválasztásra.
  4. Kattintson duplán a megjelenő Zynq blokkra.
  5. Kattintson az "XPS -beállítások importálása" gombra, és importálja a mellékelt "ZYBO_zynq_def.xml" fájlt.
  6. Lépjen a "MIO Configuration" menübe, és válassza az "Application Processor Unit" lehetőséget, majd engedélyezze a Timer 0 és a Watchdog időzítőt.
  7. Ugyanezen a lapon, az "I/O perifériák" alatt válassza az ENET 0 lehetőséget (és módosítsa a legördülő menüt "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0 értékre.
  8. A "GPIO" alatt ellenőrizze a GPIO MIO, ENET Reset, USB Reset és I2C Reset beállításokat.
  9. Most lépjen az "Óra konfigurálása" elemre. Válassza az FCLK_CLK0 lehetőséget a PL Fabric Clocks alatt. Ezután kattintson az "OK" gombra.

3. lépés: Hozzon létre egyéni PWM IP -blokkot

Ez az IP -blokk lehetővé teszi, hogy a tábla PWM jelet küldjön a szervók mozgásának szabályozására. A munka nagymértékben az itt található Digitronix Nepál oktatóanyagán alapult. Logikát adtak hozzá az óra lelassításához, így az impulzus a megfelelő sebességgel szólt. A blokk 0-tól 180-ig terjedő számot vesz fel, és 750-2150 felhasználásból impulzussá alakítja.

  1. Most, az Eszközök lapon, a bal felső sarok közelében kattintson a "Létrehozás és csomagolás IP …" gombra, majd kattintson a Tovább gombra.
  2. Ezután válassza az "Új AXI4 periféria létrehozása" lehetőséget, és nyomja meg a Tovább gombot.
  3. Nevezze el a PWM IP -blokkját (ezt neveztük el pwm_core -nak), majd kattintson a Tovább, majd a következő oldalon a Tovább gombra.
  4. Most kattintson az "IP szerkesztése" gombra, és kattintson a Befejezés gombra. Ez új ablakot nyit a pwm blokk szerkesztéséhez.
  5. A „Források” lapon és a „Tervezési források” alatt bontsa ki a „pwm_core_v1_0” lehetőséget (cserélje ki a pwm_core értéket a saját nevével), és nyissa meg a láthatóvá váló fájlt.
  6. Másolja ki és illessze be a projekt alján található zip fájlba a „pwm_core_v1_0_S00_AXI.v” alatt megadott kódot. Ctrl + Shift + R, és cserélje le a „pwm_core” nevet az ip blokk nevére.
  7. Ezután nyissa meg a „name _v1_0” nevet, és másolja be a megadott kódot a „pwm_core_v1_0.v” fájlba. Ctrl + Shift + R, és cserélje le a „pwm_core” nevet.
  8. Most lépjen a „Csomag IP - név” fülre, és válassza a „Testreszabási paraméterek” lehetőséget.
  9. Ezen a lapon egy sárga sáv lesz a tetején, amely linkelt szöveget tartalmaz. Válassza ezt, és a "Rejtett paraméterek" megjelenik a mezőben.
  10. Most menjen a "Testreszabási felhasználói felület" -hez, és kattintson a jobb egérgombbal a Pwm Counter Max elemre, és válassza a "Paraméter szerkesztése …" lehetőséget.
  11. Jelölje be a "Látható a testreszabási felhasználói felületen" és a "Tartomány megadása" négyzeteket.
  12. Változtassa meg a "Típus:" legördülő menüt egész szám tartományra, és állítsa a minimális értéket 0 -ra, a maximumot 65535 -re, és jelölje be a "Tartomány megjelenítése" négyzetet. Most kattintson az OK gombra.
  13. Húzza a Pwm Counter Max -et a 'Page 0' fa alá. Most lépjen a "Felülvizsgálat és csomagolás" oldalra, és kattintson az "Újracsomag IP" gombra.

4. lépés: PWM IP -blokk hozzáadása a tervezéshez

Adja hozzá a PWM IP -blokkot a tervezéshez
Adja hozzá a PWM IP -blokkot a tervezéshez

Hozzáadjuk az IP -blokkot a blokktervhez, hogy lehetővé tegye a felhasználó számára a PWM IP -blokk elérését a processzoron keresztül.

  1. Kattintson a jobb gombbal a diagram fülre, és kattintson az "IP -beállítások …" elemre. Lépjen a "Repository Manager" fülre.
  2. Kattintson a zöld plusz gombra, és válassza ki. Most keresse meg az ip_repo fájlt a Fájlkezelőben, és adja hozzá a projekthez. Ezután nyomja meg az Alkalmaz, majd az OK gombot.
  3. Kattintson a jobb gombbal a diagram fülre, és kattintson az "IP hozzáadása …" gombra. Írja be a PWM IP -blokk nevét, és válassza ki.
  4. A képernyő tetején zöld sávnak kell lennie, először válassza a "Kapcsolati automatizálás futtatása" lehetőséget, majd kattintson az OK gombra. Ezután kattintson a "Blokk automatizálás futtatása" gombra, majd kattintson az OK gombra.
  5. Kattintson duplán a PWM blokkra, és módosítsa a Pwm Counter Max értékét 1024 -re 128 -ról.
  6. Vigye az egérmutatót a PWM blokk PWM0 fölé. Ott kell lennie egy kis ceruzának, amely megjelenik, amikor ezt teszi. Kattintson a jobb egérgombbal, és válassza a "Port létrehozása …" lehetőséget, majd kattintson az OK gombra, amikor megnyílik egy ablak. Ez külső portot hoz létre a jel továbbítására.
  7. Ismételje meg a 6. lépést a PWM1 és a PWM2 esetében is.
  8. Keresse meg a kis kör alakú, dupla nyíl ikont az oldalsávon, és kattintson rá. Ez helyreállítja az elrendezést, és a blokk kialakításának a fenti képhez kell hasonlítania.

5. lépés: A HDL -csomagoló konfigurálása és a kényszerfájl beállítása

Konfigurálja a HDL csomagolót és állítsa be a kényszerfájlt
Konfigurálja a HDL csomagolót és állítsa be a kényszerfájlt

Most létrehozzuk a blokktervünk magas szintű tervezését, majd leképezzük a PWM0, PWM1 és PWM2 Pmod csapokat a Zybo táblán.

  1. Lépjen a "Források" fülre. Kattintson a jobb gombbal a blokktervező fájljára a "Tervezési források" alatt, majd kattintson a "HDL csomagoló létrehozása …" gombra. Válassza a "Generált csomagolóanyag másolása a felhasználói szerkesztések engedélyezéséhez" lehetőséget, majd kattintson az OK gombra. Ez generálja a magas szintű tervezést az általunk létrehozott blokktervhez.
  2. A Pmod, amelyet kiadunk, a JE.
  3. A Fájl alatt válassza a "Források hozzáadása …" lehetőséget, válassza a "Kényszerek hozzáadása vagy létrehozása" lehetőséget, majd kattintson a Tovább gombra.
  4. Kattintson a Fájlok hozzáadása gombra, és válassza ki a mellékelt "ZYBO_Master.xdc" fájlt. Ha megnézi ezt a fájlt, észre fogja venni, hogy minden megjegyzés nincs megjegyezve, kivéve hat "set_property" sort a "## Pmod Header JE" alatt. Észre fogja venni, hogy a PWM0, PWM1 és PWM2 érvek ezekhez a sorokhoz. A JE Pmod 1., 2. és 3. tűjére képezik le őket.

6. lépés: Bitfolyam létrehozása

Mielőtt továbblépnénk, létre kell hoznunk a bitfolyamot, hogy a hardvertervezés exportálhasson az SDK -ba.

  1. Az oldalsáv "Program és hibakeresés" pontjában válassza a "Bitfolyam generálása" lehetőséget. Ez lefuttatja a szintézist, majd a megvalósítást, majd generálja a bitfolyamot a tervezéshez.
  2. Javítsa ki a felbukkanó hibákat, de a figyelmeztetések általában figyelmen kívül hagyhatók.
  3. Lépjen a Fájl-> SDK indítása elemre, majd kattintson az OK gombra. Ez megnyitja a Xilinx SDK -t.

7. lépés: A projekt beállítása az SDK -ban

Ez a rész kissé frusztráló tud lenni. Ha kétségei vannak, készítsen új BSP -t, és cserélje ki a régit. Ezzel rengeteg hibakeresési időt spóroltunk meg.

  1. Kezdje itt a FreeRTOS legújabb verziójának letöltésével.
  2. Bontson ki mindent a FreeRTOS letöltéséből és importálásából az SDK-ba a Fájl-> Importálás gombra kattintva, majd az "Általános" alatt kattintson a "Meglévő projektek a munkaterületre", majd a Tovább gombra.
  3. Lépjen a FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 mappába a FreeRTOS mappában. Csak az "RTOSDemo" importálása innen.
  4. Most hozzon létre egy Board Support Package-t (BSP) a Fájl-> Új Board Support Package elemre kattintva.
  5. Válassza a "ps7_cortexa9_0" lehetőséget, jelölje be az "lwip141" lehetőséget, majd kattintson az OK gombra.
  6. Kattintson a jobb gombbal az RTOSDemo kék mappára, és válassza a "Projekt hivatkozások" lehetőséget.
  7. Törölje a jelet az "RTOSDemo_bsp" jelölőnégyzetből, és ellenőrizze az újonnan létrehozott BSP -t.

8. lépés: FreeRTOS kódmódosítások

Az általunk megadott kód 7 különböző fájlra bontható. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h és iic_imu.h. Az iic_main_thread.c fájlban található kódot Kris Winer könyvtárából alakítottuk át, amely itt található. Főleg a kódját úgy alakítottuk át, hogy belefoglalja a feladatokat, és működjön együtt a Zybo táblával. Funkciókat is hozzáadtunk a kamera tájolásának korrekciójának kiszámításához. Több nyomtatott nyilatkozatot hagytunk, amelyek hasznosak a hibakereséshez. Legtöbbjük megjegyzést fűz hozzá, de ha szükségesnek érzi, megszüntetheti őket.

  1. A main.c fájl módosításának legegyszerűbb módja, ha a kódot a mellékelt main.c fájlból másolt kódra cseréli.
  2. Új fájl létrehozásához kattintson a jobb gombbal az RTOSDemo alatti src mappára, és válassza a C Forrásfájl lehetőséget. Nevezze el ezt a fájlt "iic_main_thread.c".
  3. Másolja ki a kódot a mellékelt "iic_main_thread.c" fájlból, és illessze be az újonnan létrehozott fájlba.
  4. Ismételje meg a 2. és 3. lépést a többi fájllal.
  5. linkelési utasítást igényel a gcc -ben. Ha hozzá szeretné adni ezt az építési útvonalhoz, kattintson jobb gombbal az RTOSDemo elemre, és válassza a "C/C ++ Build Settings" lehetőséget.
  6. Egy új ablak nyílik meg. Keresse meg az ARM v7 gcc linker-> Könyvtárakat. Válassza ki a kis hozzáadási fájlt a jobb felső sarokban, és írja be az "m" -t. Ez magában foglalja a matematikai könyvtárat is a projektben.
  7. Építsen projektet a Ctrl + B billentyűvel, hogy megerősítse, hogy minden működik. Ellenőrizze a generált figyelmeztetéseket, de figyelmen kívül hagyhatja azokat.
  8. Van néhány hely, ahol módosítani kell, főleg az aktuális tartózkodási hely mágneses deklinációját. Az oktatóanyag kalibrációs részében elmagyarázzuk, hogyan lehet ezt megváltoztatni.

9. lépés: 3D nyomtatás a stabilizátorhoz

3D nyomtatás a stabilizátorhoz
3D nyomtatás a stabilizátorhoz

Ehhez a projekthez néhány részt 3D -ben kell kinyomtatnia. Valószínűleg olyan alkatrészeket vásárolhat, amelyek hasonló méretűek/méretűek, mint a nyomtatott részeink.

  1. Használja a mellékelt fájlokat a GoPro karjának és tartókonzoljának kinyomtatásához.
  2. Állványokat kell hozzáadnia a.stl fájlhoz.
  3. Nyomtatás után vágja le/tisztítsa meg a felesleges állványzat részeit.
  4. Ha szeretné, a fadübelt lecserélheti 3D nyomtatott alkatrészre.

10. lépés: Az alkatrészek összeszerelése

Az alkatrészek összeszerelése
Az alkatrészek összeszerelése

A stabilizátor összeszerelésének több része van. A megvásárolt konzolokhoz 4 önmetsző csavar és 4 csavar tartozik. Mivel 3 szervó van, az egyik szervókürtöt előre meg kell ütni, hogy 2 csavar beférjen.

  1. Forrasztjon 8 tüskét az IMU törésre, 4 -et mindkét oldalon.
  2. Az IMU a GoPro 3D nyomtatott tartókonzoljához van rögzítve a konzol közepén.
  3. Irányítsa a tartót úgy, hogy a szervo rögzítőfuratai a bal oldalon legyenek. Helyezze az IMU -t a legközelebbi szélére, és a csapokat lógassa le a széléről. Ezután helyezze a GoPro tartóelemet az IMU tetejére, az IMU -t és a rögzítőt rögzítve a konzolra.
  4. Csatlakoztasson egy HS-5485HB-t a 3D nyomtatott karba integrált szervo konzolhoz.
  5. Csavarja be a GoPro konzolt a karhoz rögzített szervóba, ügyelve arra, hogy a szervó úgy legyen beállítva, hogy a mozgási tartományának közepén legyen.
  6. Ezután csatlakoztassa a HS-5685MH szervót egy szervo konzolhoz. Ezután érintse meg a szervo kürtöt az egyik csavarral. Most rögzítse a szervót az utolsó szervo konzol aljára.
  7. Most rögzítse az utolsó szervót a konzolhoz, amelybe a HS-5685MH szervo van csavarozva. Ezután csavarja be a kart ebbe a szervóba, ügyelve arra, hogy a kar be legyen csavarva, hogy 90 fokban mozoghasson.
  8. A kardántengely felépítésének befejezéséhez adjon hozzá egy kis darab fa dübelt a GoPro konzol és a 3D nyomtatott kar közé. Most összeállította a stabilizátort.
  9. Végül hozzáadhat egy fogantyút az alsó szervo konzolhoz.

11. lépés: A Zybook csatlakoztatása a stabilizátorhoz

A Zybook csatlakoztatása a stabilizátorhoz
A Zybook csatlakoztatása a stabilizátorhoz

Van pár dolog, amire figyelni kell, amikor ezt megteszi. Biztosítani szeretné, hogy a tápegységből származó 5 V soha ne kerüljön a Zybo kártyára, mivel ez problémákat okozhat a táblával. Győződjön meg róla, hogy kétszer ellenőrizze az áthidalókat, hogy megbizonyosodjon arról, hogy nincsenek vezetékek cserélve.

  1. A Zybook stabilizátorhoz való rögzítéséhez 15 férfi -férfi és 4 férfi -női ugróra lesz szüksége.
  2. Először csatlakoztasson két jumpert az 5V -os tápegységhez a kenyérpálya + és - sínje mentén. Ezek biztosítják a szervók áramellátását.
  3. Ezután csatlakoztasson 3 pár jumpert a kenyértábla + és - síneire. Ez lesz az erő minden szervó számára.
  4. Csatlakoztassa a + és - jumper másik végét minden szervóhoz.
  5. Csatlakoztasson egy jumpert a kenyértábla - sínje és a Zybo JE Pmod egyik GND csapja közé (lásd az 5. lépés képét). Ez közös alapot teremt a Zybo kártya és a tápegység között.
  6. Ezután csatlakoztasson egy jelvezetéket a JE Pmod 1., 2. és 3. tűjéhez. Rögzítse az 1 -es térképeket az alsó szervóhoz, a 2 -es térképeket a kar végén lévő szervóhoz, és a 3 -as térképeket a középső szervóhoz.
  7. Csatlakoztassa a 4 hüvelyes vezetéket az IMU törés GND, VDD, SDA és SCL csapjaihoz. A GND és a VDD a GND -hez és a 3V3 -as csatlakozóhoz csatlakozik. Csatlakoztassa az SDA tüskét a 8 -as érintkezőbe, és az SCL -t a 7 -es tűbe a JF -en (lásd az 5. lépés képét).
  8. Végül csatlakoztassa a számítógépet az alaplaphoz mikro -usb -kábellel. Ez lehetővé teszi az uart kommunikációt, és lehetővé teszi a Zybo tábla programozását.

12. lépés: Igazi északi korrekció

Igazi északi korrekció
Igazi északi korrekció

A magnetométer kalibrálása az IMU -ban fontos az eszköz helyes működéséhez. A mágneses deklináció, amely a mágneses északot igaz északra korrigálja.

  1. A mágneses és a valódi észak közötti különbség kijavításához két szolgáltatás, a Google Térkép és a NOAA mágneses mező számológépének kombinációját kell használnia.
  2. A Google Térkép segítségével keresse meg jelenlegi tartózkodási helyének szélességi és hosszúsági fokát.
  3. Vegye ki jelenlegi hosszúsági és szélességi fokát, és csatlakoztassa a mágneses mező számológépéhez.
  4. A visszatérő mágneses deklináció. Dugja be ezt a számítást az "iic_main_thread.c" 378. sorában található kódba. Ha a deklináció keleti, akkor vonja le az elfordulási értékből, ha nyugat, akkor adja hozzá az elfordulási értékhez.

*A fotó a Sparkfun MPU 9250 csatlakoztatási útmutatójából készült, itt található.

13. lépés: A program futtatása

A Program futtatása
A Program futtatása

A pillanat, amire vártál! A projekt legjobb része, hogy látja, hogy működik. Az egyik problémát észrevettük, hogy az IMU által jelentett értékek eltérnek. Az aluláteresztő szűrő segíthet korrigálni ezt az eltolódást, és a mágneses mérőműszerrel való gyorsítás, a gyorsulás és a giroszkóp kalibrálása is segít az eltolás korrigálásában.

  1. Először készítsen mindent az SDK -ban, ezt a Ctrl + B billentyűkombinációval teheti meg.
  2. Győződjön meg arról, hogy a tápegység be van kapcsolva, és 5 V -ra van állítva. Ellenőrizze, hogy az összes vezeték a megfelelő helyre kerül -e.
  3. Ezután a program futtatásához nyomja meg a zöld háromszöget a tálca felső közepén.
  4. Amikor a program fut, a szervók mind visszaállnak 0 helyzetükbe, ezért készen kell állnia a berendezés mozgatására. A program inicializálása után a szervók visszaállnak 90 fokos helyzetükbe.
  5. A magnetométer kalibrálási funkciója elindul, és az utasítások kinyomtatásra kerülnek az UART terminálra, amelyhez soros monitoron, például "gitt" vagy az SDK -ban található soros monitoron keresztül csatlakozhat.
  6. A kalibrálás során a készüléket a 8. ábrán körülbelül 10 másodpercig mozgatja. Ezt a lépést az "iic_main_thread.c" 273. sorának megjegyzésével távolíthatja el. Ha megjegyzést fűz hozzá, törölnie kell a 323 - 325 "iic_main_thread.c" sorokat. Ezeket az értékeket kezdetben a fenti magnetométer kalibrálásából gyűjtötték össze, majd értékekként csatlakoztatták.
  7. A kalibrálás után a stabilizáló kód inicializálódik, és a készülék stabilan tartja a kamerát.

Ajánlott: