Obsah:

Posuvník kamery pro sledování objektu s rotační osou. 3D vytištěno a postaveno na ovladači stejnosměrného motoru RoboClaw a Arduino: 5 kroků (s obrázky)
Posuvník kamery pro sledování objektu s rotační osou. 3D vytištěno a postaveno na ovladači stejnosměrného motoru RoboClaw a Arduino: 5 kroků (s obrázky)

Video: Posuvník kamery pro sledování objektu s rotační osou. 3D vytištěno a postaveno na ovladači stejnosměrného motoru RoboClaw a Arduino: 5 kroků (s obrázky)

Video: Posuvník kamery pro sledování objektu s rotační osou. 3D vytištěno a postaveno na ovladači stejnosměrného motoru RoboClaw a Arduino: 5 kroků (s obrázky)
Video: Zavřete oči a poslouchejte 😂😂😂 2024, Listopad
Anonim
Image
Image
Hardware Design + Build + 3D Printing
Hardware Design + Build + 3D Printing

Projekty Fusion 360 »

Tento projekt je jedním z mých oblíbených projektů, protože jsem spojil svůj zájem o tvorbu videa s DIY. Vždy jsem se díval a chtěl napodobit ty filmové záběry ve filmech, kde se kamera pohybuje po obrazovce při posouvání a sleduje objekt. Jinak přidané 2d video přidává velmi zajímavý hloubkový efekt. Chtěl jsem to replikovat, aniž bych utratil tisíce dolarů za hollywoodské vybavení, rozhodl jsem se takový posuvník fotoaparátu postavit sám.

Celý projekt je postaven na součástech, které můžete 3D tisknout, a kód běží na populární desce Arduino. Všechny soubory projektu, jako jsou soubory CAD a kód, jsou k dispozici ke stažení níže.

Soubory pro tisk CAD/ 3D jsou k dispozici zde

Soubor kódu Arduino je k dispozici zde

Projekt se točí kolem 2 ozubených kartáčovaných stejnosměrných motorů a ovladače Basic Micro Roboclaw Motor. Tento ovladač motoru může přeměnit kartáčované stejnosměrné motory na vynikající typ serv s neuvěřitelnou přesností polohy, tunami točivého momentu a plnými 360 stupni otáčení. Více o tom později.

Než budeme pokračovat, podívejte se nejprve na videonávod, který je zde propojen. Tento tutoriál vám poskytne přehled o tom, jak vytvořit tento projekt, a tento průvodce Instructables půjde hlouběji do toho, jak jsem tento projekt vytvořil.

Materiály-

  • 2x 1 metr dlouhé závitové tyče m10 sloužící k propojení všech dílů
  • 8x matice M10 k upevnění dílů na závitové tyče
  • 2 x 95 cm dlouhé 8 mm hladké ocelové tyče, na které se může jezdec nasouvat
  • 4x ložiska lm8uu, aby jezdec plynule klouzal po ocelových tyčích
  • 4x 10 mm dlouhé m3 matice pro montáž motoru
  • 2 x skateboardová ložiska (vnější průměr 22 mm, vnitřní průměr 8 mm) pro osu otáčení
  • 1x 15mm ložisko pro volnoběžnou stranu
  • 1x 4 cm dlouhý šroub m4 s pojistnou maticí m4 pro upevnění volnoběžného ložiska k 3D tištěné části napínací kladky.
  • Převodovka s 20 zuby s vnitřním průměrem 4 mm pro posuvný motor. Přesná řemenice není příliš důležitá, protože váš stejnosměrný motor by měl být vybaven dostatečným točivým momentem. Jen se ujistěte, že je stejný jako váš pás
  • 2 metry dlouhý pás GT2. Opět můžete použít jakýkoli řemen, pokud odpovídá rozteči zubů vaší kladky.

Elektronika

  • 2 * Převodové stejnosměrné motory s kodéry (jeden ovládá boční pohyb, zatímco druhý ovládá osu otáčení). Tady je ten, který jsem použil. Více o tom v části elektroniky průvodce
  • Řídicí jednotka motoru RoboClaw DC. (Použil jsem duální 15Amp ovladač, protože mi umožňoval ovládat oba motory jedním ovladačem)
  • Jakékoli Arduino. Použil jsem Arduino UNO
  • Baterie/ zdroj energie. (Použil jsem 7,4V 2článkovou LiPo baterii)
  • Obrazovka (Pro zobrazení nabídky. Jakákoli obrazovka kompatibilní s U8G bude fungovat, použil jsem tuto 1,3palcovou obrazovku OLED)
  • Rotační kodér (Pro navigaci a konfiguraci možností v nabídce)
  • Fyzické tlačítko (pro spuštění pohybu jezdce)

Krok 1: Hardware design + Build + 3D Printing

Elektronika
Elektronika

Dále přejdeme k elektronice. Elektronika je místo, kde má tento projekt velkou flexibilitu.

Začněme jádrem tohoto projektu- 2 kartáčovanými stejnosměrnými motory.

Vybral jsem kartáčované stejnosměrné motory z několika důvodů.

  1. Ve srovnání s krokovými motory jsou kartáčované motory mnohem jednodušeji zapojeny a ovládány
  2. Kartáčované stejnosměrné motory jsou mnohem lehčí než stejnosměrné motory, což je zvláště důležité pro motor s rotační osou, protože tento motor se fyzicky pohybuje bočně s kamerou a aby bylo co nejlehčí, je důležité, aby se zabránilo nadměrnému namáhání motoru posuvníku primární kamery.

Vybral jsem si tento konkrétní stejnosměrný motor. Tento motor mi poskytl extrémně vysoký točivý moment, který byl nezbytný pro přesun tak velkého zatížení kamery. Vysoký převod navíc znamenal, že špičkové otáčky byly pomalé, což znamenalo, že jsem mohl natáčet pomalejší pohyby, a vysoké převody také vedly k vyšší přesnosti polohy, protože jedno otočení výstupního hřídele o 360 stupňů znamenalo 341,2 počtu kodérů motoru.

Tím se dostáváme k pohybovému ovladači RoboClaw. Motorový regulátor Roboclaw s duálním stejnosměrným motorem přijímá jednoduché pokyny z vašeho Arduina prostřednictvím jednoduchých kódových příkazů a provádí veškeré náročné zpracování a dodávky energie, aby váš motor fungoval tak, jak měl. Arduino může posílat signály do Roboclaw přes PWM, analogové napětí, jednoduché sériové nebo paketové sériové číslo. Paketový seriál je nejlepší cestou, protože vám umožňuje získat informace zpět z Roboclaw, které jsou nezbytné pro sledování polohy. V dalším kroku (programování) se ponořím hlouběji do softwarové/programovací části Roboclaw.

Roboclaw v podstatě dokáže transformovat stejnosměrný kartáčovaný motor pomocí kodéru tak, aby se více podobal servu díky schopnosti RoboClaw provádět polohové řízení. Na rozdíl od tradičního serva má nyní váš kartáčovaný stejnosměrný motor mnohem větší točivý moment, mnohem větší přesnost polohy díky vysokému převodu motoru, a co je nejdůležitější, váš stejnosměrný motor se může točit nepřetržitě o 360 stupňů, což tradiční servo neumí.

Další částí elektroniky je obrazovka. Pro svou obrazovku jsem si vybral tento OLED panel kvůli jeho velikosti a vysokému kontrastu. Tento vysoký kontrast je neuvěřitelný a umožňuje velmi snadné použití obrazovky na přímém slunci, přičemž nevyzařuje příliš mnoho světla, které by mohlo rušit potenciální záběr tmavé kamery. Tuto obrazovku lze snadno vyměnit za jinou obrazovku kompatibilní s U8G. Úplný seznam kompatibilních obrazovek je k dispozici zde. Ve skutečnosti byl tento projekt záměrně kódován kolem knihovny U8G, takže stavitelé kutilů jako vy měli ve svých částech větší flexibilitu

Konečné části elektroniky pro tento projekt byly rotační kodér a tlačítko pro spuštění pohybu posuvníku. Kodér vám umožňuje procházet nabídkou obrazovky a konfigurovat celou nabídku posuvníku jediným otočným knoflíkem. Rotační kodér nemá žádnou „koncovou“polohu jako tradiční potenciometr, což je zvláště užitečné pro vyladění souřadnic x a y sledování objektu na obrazovce. Tlačítko slouží výhradně ke spuštění pohybu posuvníku, aniž byste museli hrát s rotačním kodérem.

Krok 3: Programování posuvníku kamery

Programování posuvníku kamery
Programování posuvníku kamery
Programování posuvníku kamery
Programování posuvníku kamery

Kódování bylo zdaleka nejtěžší výzvou tohoto projektu. Víte, od začátku jsem chtěl, aby byl posuvník ovladatelný z obrazovky. Aby byl tento projekt kompatibilní s co největším počtem obrazovek, musel jsem pro Arduino použít knihovnu U8Glib. Tato knihovna podporuje více než 32 obrazovek. Knihovna U8Glib však použila obrazovou smyčku k vykreslení nabídky na obrazovce, což bylo v rozporu se schopností Arduina současně shromažďovat informace o poloze kamery, která byla vyžadována pro funkci výpočtu úhlu kamery (To je popsáno v následujících několika odstavcích). U8Glib2 má alternativu k obrazové smyčce tím, že používá něco, co se nazývá možnost plné stránky vyrovnávací paměti, ale knihovna spotřebovávala příliš mnoho paměti a kvůli omezení paměti Arduino Uno ztěžovala přizpůsobení zbytku kódu. To znamenalo, že jsem se zasekl na U8G a musel jsem problém vyřešit tak, že jsem zabránil aktualizaci obrazovky kdykoli byl posuvník v pohybu a Arduino potřebovalo sbírat poziční data z Roboclaw. Také jsem byl nucen spustit posuvník, aby se začal pohybovat mimo smyčku nabídky, jakmile jsem vstoupil do podnabídek, byl bych uvnitř obrazové smyčky a posuvník by nefungoval tak, jak měl. Tento problém jsem také obešel tím, že pohyb jezdce spustilo samostatné fyzické tlačítko.

Dále si promluvíme o prvku rotačního sledování. Tato část se zdá být velmi složitá na integraci, ale ve skutečnosti je poměrně jednoduchá. Implementace je pod funkcí „motor ()“v mém kódu Arduino. Prvním krokem je vytvoření dvourozměrné mřížky a rozhodnutí, kde je umístěn objekt, který chcete sledovat. Na základě toho můžete nakreslit trojúhelník do vaší aktuální polohy. Svou aktuální polohu můžete zjistit z hodnoty kodéru motoru. Chcete -li konfigurovat polohu sledovaného objektu v cm/mm, budete muset hodnotu kodéru převést na hodnotu cm/mm. To lze jednoduše provést posunutím posuvníku kamery o 1 cm a měřením zvýšení hodnoty kodéru. Tuto hodnotu můžete zadat v horní části kódu pod proměnnou encoder_mm.

Pokračujeme dál, nyní použijeme funkci inverzní tangens, abychom získali úhel, ke kterému musí kamera směřovat, aby mířil na váš objekt. Inverzní tangenta zaujímá opačnou a přilehlou stranu trojúhelníku. Opačná strana trojúhelníku se nikdy nezmění, protože je to vzdálenost y od vašeho posuvníku k objektu. Přilehlá strana posuvníku fotoaparátu se však změní. Tuto přilehlou stranu lze vypočítat tak, že vezmeme polohu x objektu a odečteme od něj vaši aktuální polohu. Jak se posuvník pohybuje v rozsahu pohybu, bude aktualizovat Arduino na hodnotu kodéru. Arduino bude opakovaně převádět tuto hodnotu kodéru na poziční hodnotu cm/mm x a poté vypočítá délku sousední strany a nakonec vypočítá úhel, ke kterému musí kamera vždy směřovat, aby mířila na objekt.

Nyní, když naše Arduino dynamicky zpracovává úhel kamery, můžeme se vypořádat s převodem tohoto úhlu na hodnotu polohy, na kterou se má pohybovat rotační motor. Tím se dostáváme k největší vlastnosti RoboClaw pro tento projekt. Tím, že Roboclaw získá hodnotu polohy, může v podstatě přimět stejnosměrný kartáčovaný motor chovat se jako servo. Na rozdíl od serva má náš motor mnohem větší točivý moment, mnohem vyšší přesnost a může se také točit o 360 stupňů.

Kód Arduino pro přesunutí Roboclawa do určité polohy je následující:

roboclaw. SpeedAccelDeccelPositionM1 (adresa, „rychlost“, „zrychlení“, „zpomalení“, „poloha, do které chcete přejít“, 1);

Abyste poziční hodnotu motoru vyladili tak, aby odpovídala vašemu úhlu kamery, budete muset desku kamery ručně posunout o 180 stupňů. Dále se podívejte, jak moc se hodnota kodéru změnila z posunutí desky kamery z 0 stupňů na 180 stupňů. Tím získáte rozsah kodéru. Tento rozsah můžete zadat ve funkci motoru, která mapuje úhel kamery Arduina na poziční hodnotu. To je také uvedeno v kódu, takže by mělo být snadné najít *****

RoboClaw mi také dal možnost naladit další faktory, jako jsou hodnoty zrychlení, zpomalení a PID. To mi dále umožnilo vyhladit pohyb osy otáčení, zejména když byly změny úhlu malé a přidaly se trhnutí bez vysoké hodnoty „D“PID. Hodnoty PID můžete také automaticky vyladit prostřednictvím desktopové aplikace Roboclaw.

Krok 4: Ovládání posuvníku kamery

Ovládání posuvníku kamery
Ovládání posuvníku kamery

Nyní se dostáváme k zábavné části, ovládání posuvníku Nabídka má 4 hlavní karty. Horní karta je věnována ovládání rychlosti. Prostřední řádek nabídky obsahuje karty pro konfiguraci polohy X & Y sledovaného objektu v mm a také konfiguraci, pokud chceme, aby se jezdec otáčel a sledoval náš objekt, nebo jen provádíme jednoduchý posuvný pohyb bez otáčení. Otočení rotačního kodéru nám umožňuje procházet různými možnostmi nabídek. Chcete -li konfigurovat některou z možností, přejděte na možnost a stiskněte otočný kodér. Po stisknutí otočení rotačního kodéru změní hodnotu zvýrazněné podnabídky, nikoli procházením nabídky. Jakmile dosáhnete požadované hodnoty, můžete znovu kliknout na rotační kodér. Nyní jste zpět v hlavní nabídce a můžete procházet mezi různými kartami. Jakmile jste připraveni, jednoduše stiskněte tlačítko Přejít vedle obrazovky a posuvník dělá své věci!

Ujistěte se, že jakmile budete s posuvníkem fotoaparátu hotovi, bude kamera v „domovské“poloze: na straně posuvníku, na které začala. Důvodem je to, že kodér motoru není absolutním kodérem, což znamená, že Roboclaw/Arduino nemůže říci, kde je kodér. Mohou pouze říci, jak moc se kodér od posledního zapnutí změnil. To znamená, že když vypnete posuvník fotoaparátu, posuvník „zapomene“polohu posuvníku a resetuje kodér na hodnotu 0. Pokud tedy vypnete posuvník na druhé straně, když jej zapnete, posuvník se zkuste se pohybovat dále než na hraně a narazit do stěny posuvníku. Toto chování kodéru je také důvodem, proč kamera resetuje úhel otočení po každém pohybu snímku. Rotační osa se také chrání před nárazem na konec rozsahu pohybu.

Můžete to vyřešit přidáním koncových zarážek a procedury navádění při spuštění. To 3D tiskárny používají.

Krok 5: Závěrečné myšlenky + budoucí vylepšení

Důrazně doporučuji, aby každý stavitel vytvořil své vlastní verze tohoto posuvníku, než aby stavěl přesně stejný posuvník. Vylepšení mého designu vám umožní sestavit posuvník podle vašich přesných specifikací a zároveň lépe porozumět tomu, jak funguje elektronika a kód.

Udělal jsem kód tak čitelný a konfigurovatelný, jak je to jen možné, takže můžete vyladit/kalibrovat různé proměnné kódu pro vaše specifikace posuvníku. Kód je také plně postaven na funkcích, takže pokud chcete kopírovat/ vyladit/ přepsat určité chování posuvníku, nemusíte zpětně analyzovat a přepracovávat celý kód, ale spíše jen části, které chcete upravit.

Nakonec, pokud jsem vytvořil verzi 2.0, zde jsou některá vylepšení, která bych udělal

  1. Vyšší převodový poměr pro motor s rotační osou. Vyšší převodový poměr znamená, že mohu provádět přesnější malé pohyby. To je zvláště důležité, když je kamera daleko od vašeho objektu a váš úhel kamery se mění velmi pomalu. V současné době není můj motor zařazen příliš vysoko a může to mít za následek mírně trhavé pohyby, když jezdec kamery běží příliš pomalu nebo když se velmi málo mění úhel otáčení. Přidání vysoké hodnoty „D“PID mi pomohlo toho se zbavit, ale stálo to za cenu mírně nižší přesnosti sledování objektů.
  2. Modulární délka. To je cíl přitažený za vlasy, ale byl bych rád, kdyby jezdec kamery měl modulární délku, což znamená, že můžete snadno připojit delší stopy, aby se kamera mohla sklouznout. To je docela obtížné, protože člověk bude muset dokonale zarovnat obě stopy a zjistit, jak systém pásů fungovat. Přesto by to byl skvělý upgrade!
  3. Vlastní pohyb Keyframing. Rád bych představil koncept pohybů klíčových snímků do tohoto posuvníku fotoaparátu. Keyframing je technika velmi běžně používaná ve video a audio produkci. Umožnilo by to nelineární pohyby kamery, kde kamera přejde do polohy, čeká, pak se přesune do jiné polohy jinou rychlostí, čeká, pak přejde do třetí polohy atd.
  4. Bluetooth/ bezdrátové ovládání telefonu. Bylo by opravdu skvělé mít možnost bezdrátově konfigurovat parametry posuvníku kamery a být schopen nasadit posuvník kamery na těžko přístupná místa. Telefonní aplikace by také mohla otevřít příležitosti k integraci klíčového rámce, jak je uvedeno v posledním odstavci.

To je pro tento tutoriál vše. Neváhejte napsat jakékoli dotazy dolů do sekce komentářů níže.

Další návody k obsahu a elektronice najdete také na mém kanálu YouTube zde.

Doporučuje: