Arduino Lens Controller - Naka-sync na Pag-zoom / Tumutok Sa Wii Classic Controller: 11 Steps (na may Mga Larawan)

Arduino Lens Controller - Naka-sync na Pag-zoom / Tumutok Sa Wii Classic Controller: 11 Steps (na may Mga Larawan)

Talaan ng mga Nilalaman:

Anonim

Ang aking Lumix GH2 Micro Apat na Thirds camera ay hindi lamang ang mga shoots ng hindi kapani-paniwala na mga video ng mataas na kahulugan, ngunit may mga murang adapter na magagamit ko ito sa mas lumang manu-manong lente na mura at madalas na napakataas na kalidad. Kumuha ako ng maraming mga video ng pagganap para sa studio ng sayaw ng aking anak na babae, at gumagamit ako ng f3.5 Nikon 28-85mm zoom lens dahil nagbibigay ito ng mahusay na hanay ng pag-zoom at isang mabilis na siwang para sa isang zoom lens. Ang problema sa pag-setup na ito ay kailangan kong mag-zoom at mag-focus sa lens nang manu-mano, at kahit na subukan kong i-minimize ang pag-zoom habang nagbaril, may mga oras na mahalaga para sa pagpapanatili ng tamang pag-frame at pagpapakita ng kakayahan ng mga mananayaw. Ko na pinamamahalaang upang malaman upang mag-zoom nang mano-mano nang hindi nagpapakilala ng labis na jitter camera (karaniwang), ngunit dahil din ako ay tumutuon nang manu-mano, ito ay isang bit ng isang pang-araw-araw na gawain at mabilis na maayos ayusin ang focus pagkatapos ng pag-zoom in o out. Upang mapagtagumpayan ang kakulangan na ito, nagpasya akong bumuo ng isang power zoom at focus controller para sa aking camera (kung saan marami pang iba ang nagawa), na may kritikal na layunin ng pagiging awtomatikong mapanatili ang wastong pokus habang ang lens ay maayos na nag-zoom in at out. Matapos ang maraming mga buwan ng prototyping dumating ako sa isang mahusay na solusyon na gumagamit ng isang clone Arduino na tumatanggap ng input mula sa isang Wii Classic controller, at kung saan ay gumagamit ng 2 libangan servos upang ilipat ang lens.Ang kabuuang halaga ng huling produkto ay mas mababa sa $ 100.

Ang disenyo na aking ipinatupad sa kalaunan ay may isang bilang ng mga advanced na tampok:

- 2 joysticks ay nagbibigay ng patuloy na variable na bilis ng lens control. Ang paglilipat ng tamang stick forward at back controls ay naka-synchronize na zoom at focus, at inililipat ang kaliwang stick side sa mga kontrol ng panig. Ang pagpapatupad ng bilis ng control ay tumutulong din panatilihin ang servo ingay pababa sa mga katanggap-tanggap na mga antas.

- Mayroong 6 Programmable na "goto" zoom / focus setting na maaaring programmed sa fly mula sa Wii Classic, at na ilipat ang pag-zoom at focus sa nais na posisyon sa pamamagitan lamang ng pagtulak ng isang pindutan (kaliwang balikat para sa pinakamalawak na pag-zoom, kanang balikat para sa karamihan ng pag-zoom, at isang, b, x at y para sa anumang posisyon ng pag-zoom / focus).

- Ang maximum na mga setting ng paggalaw ng lens ay maaari ring i-program sa fly upang matiyak na ang mga servos ay hindi sinusubukang i-rotate na lampas sa mga limitasyon ng zoom ng lens at mga posisyon ng focus.

- Ang D-pad ay nagbibigay ng single degree na paggalaw ng pag-zoom (pataas at pababa pad) at focus (kaliwa at kanang pad) upang gumawa ng tumpak na mga pagsasaayos para sa mga kritikal na focus / zoom.

Narito ang isang pagpapakita kung paano gumagana ang naka-synchronize na pag-zoom - focus sa aking GH2 sa isang Nikon 28 - 85mm zoom lens:

Sa ganitong instructable masasakop ko ang mga pangunahing kaalaman kung paano bumuo ng iyong sariling bersyon ng controller na ito, kabilang ang Arduino code at mga tagubilin para sa pagsakay sa servos sa isang rig na nakabatay sa riles. Babanggitin ko kung paano ko itinayo ang aking kalesa, ngunit dahil hindi ako tunay na nasisiyahan dito, hindi ako makakapasok sa mga detalyadong hakbang na iyon at iiwanan ito sa iyo upang malaman ang iyong sariling solusyon batay sa mga larawan ng aking kalesa at ilang mga tala tungkol sa kung paano ko ginawa ito.

Ito ang aking unang pagtatangka sa pagbuo ng isang bagay sa Arduino, bagaman mayroon akong ilang karanasan sa programming kaya hindi mahirap para sa akin na matutunan ang mga pangunahing kaalaman ng code ng Arduino. Gayunpaman, kung gusto mong matugunan ang proyektong ito at hindi ka pa nakakuha ng pamilyar sa pag-set up at programming ng isang Arduino, inirerekomenda ko na pumunta ka sa mga tutorial sa site ng Arduino, lalo na para sa Servos.

Mga Kagamitan:

Hakbang 1: Pagsisimula: Mga Tool at Materyales

Maaari mong kumpletuhin ang electronics para sa proyektong ito sa pamamagitan lamang ng ilang strippers ng kawad at ng isang panghinang na bakal. Ngunit upang gawin ang servo mounting arms makakatulong na magkaroon ng access sa isang bandsaw at isang drill pindutin (kahit maingat na trabaho sa isang drill kamay ay maaaring negate ang pangangailangan para sa huli). Ginamit ko din ang isang tablesaw upang i-cut ang sheet plastic at router na inimuntar ng table na may isang 1/2 diameter core-box bit upang i-cut ang mga grooves sa plastic upang tumugma sa mga daang-bakal sa aking home-made camera rail system.

Narito ang isang listahan ng mga pangunahing supply na kakailanganin mo upang makumpleto ang proyektong ito, ngunit mangyaring pumunta sa buong instructable bago bumili ng anumang bagay upang maunawaan mo kung ano ang pagbili upang magkasya ang iyong sariling mga pangangailangan.

- Arduino o Arduino clone (Ginamit ko ang isang Seeeduino dahil ito ay isang maliit na mas mura kaysa sa Arduiino at nagbibigay ng parehong pag-andar).

- Wii Classic Controller. Binili ko ang minahan mula sa eBay para sa paligid ng $ 10 naipadala.

- Wiichuck Adapter (isang maliit na circuit board na plugs sa iyong Wii Classic kaya hindi mo na kailangang kunin ang cable). Nakuha ko ito mula sa FunGizmos para sa $ 4:

- 2 standard sized hobby servos na may nylon gears at ball bearings. Ang mga naylon na gears ay mas tahimik at ang mga bearings ng bola ay nagbibigay ng mas mahusay na suporta para sa baras kapag paghawak ng pag-load ng stiffer zoom lenses. Nagbili ako ng ilang sobrang servos mula sa isang lokal na tindahan ng RC para sa $ 5 bawat isa, ngunit pinapalitan ko sila ng 360 degree digital servos na dapat maging mas tahimik at mas tumpak, at mga gastos sa akin $ 20 bawat isa mula sa eBay.

- 2 lens gears upang i-mount sa zoom ng iyong lens at focus singsing. Ginamit ko ang mga nababaluktot na nakita ko sa eBay para sa $ 10 bawat isa, at ginawa ang aking sariling mga spacer ring upang magbigay ng mas mahusay na resolution at medyo mas mekanikal na kalamangan para sa servos. Maaari mo ring gastusin ang tungkol sa dalawang beses ng mas maraming at makakuha ng lens gear rings na may built-in spacers, at ang mga ito ay magagamit din sa eBay. maghanap ka lang ng "lente sa pagtakop ng lente".

- 2 Magmaneho ng gears upang i-mount sa servos upang himukin ang mga gears ng lens. Ang mga pangangailangan na maging 32p o mod.8 gear pitch (kung saan ay ang standard na pitch para sa mga gears ng lens). Gumawa ako ng sarili kong mga gears ng biyahe sa pamamagitan ng angkop na mga $ 4 RC spear gears sa orihinal na servo control arms, ngunit kinakailangan ang ilang trabaho sa isang mini lathe na hindi lahat ay may. Ang isang mas mahusay na opsyon ay ang bumili ng servo-mountable gears mula sa Servo City para lamang ng ilang dolyar higit pa: http://www.servocity.com/html/32_pitch_hitec_servo_gears.html. Habang ikaw ay nag-uutos sa mga ito, makikita mo i-save ang iyong sarili ng ilang mga problema ay bumili ka rin ng isang pares ng mga lead ng servo lalaki upang gawing mas madali upang ikonekta ang iyong mga servos sa iyong Arduino at upang magpalitan servos kung kailangan arises.

- 1/2 inch makapal na sheet plastic o 3/4 "thick aluminum upang gawin ang mga servo mounts. Ginamit ko ang isang lumang plastic cutting board, ngunit kung gagawin mo, siguraduhin na ito ay ang mas mahirap ridgid uri (hindi mo dapat ma-dent ang ibabaw sa lahat sa iyong thumbnail). Ang mas malambot na uri ay UHMW at hindi sapat ang makina para sa layuning ito.

- Mga knobs at pagtutugma ng bolts ng carriage para sa clamping ang servo mounts sa daang-bakal.

Hakbang 2: Pagpili ng Gears at Servos para sa Iyong Mga Lensa

Bago mo bilhin ang iyong mga servos o gears, kailangan mong maunawaan ang ilang mga bagay tungkol sa mga servos. Ang mga Servos ay may limitadong hanay ng paggalaw (kadalasan 180), kaya kung gusto mong makontrol ang iyong lens sa kabuuan ng buong zoom at hanay ng focus, kailangan mong gawin ang isang maliit na pagkalkula batay sa kilusan ng ring ng iyong lens at ang diameter ng lens gear na magmaneho ang servo. Sa tingin ko ito ay pinakamahusay na pumunta lamang sa pamamagitan ng proseso na pinuntahan ko, kaya maaari mong sundin ang parehong diskarte para sa mga pangangailangan ng iyong sariling system.

Ang focus ng lens at pag-zoom ng singsing ay lumipat ng mga 90 degrees mula sa dulo hanggang sa dulo, at sa spacers at lens gear ang kabuuang lapad ng gear na hinimok ng servo ay 4.25 pulgada. Ginamit ko ang calculator ng circumference mula sa web site na ito (http://math.about.com/library/blcirclecalculator.htm) upang makakuha ng circumference ng 13.35 na pulgada. Since 90 degrees ay 1/4 ng 360, maaari kong kalkulahin na ang aking servo ay kailangang magbigay ng tungkol sa 3.4 pulgada ng paglalakbay (13.35 / 4). Ginamit ko ang standard 180 degree servos, kaya alam ko na ang circumference ng aking servo drive gears ay dapat na hindi bababa sa 6.8 pulgada (180 degrees ay kalahati ng 360, kaya ang aking servos ay lamang magagawang magbigay ng kilusan na kalahati ang kabuuang circumference ng ang servo drive gears). Gamit ang muli calculator circumference, alam ko na kailangan ko ng mga gear na hindi bababa sa 2.2 pulgada lapad. Tapos na talaga ako gamit ang isang bahagyang mas maliit na lansungan ng lens dahil hindi ko kailangan ang buong saklaw ng focus motion at gusto kong magkaroon ng kaunting mas mahusay na kontrol ng pokus dahil mas mahalaga kaysa mag-zoom para sa akin. Ito ay isa pang pagsasaalang-alang upang tandaan - mas malapit ka sa 1: 1 sa pagitan ng gear drive at lens gear, ang mas kaunting resolution mayroon ka. Halimbawa, sa aking pag-setup ng 1 degree na servo step = 1/2 degree lens step, ngunit kung ang aking drive gear diameter ay katumbas ng gear lens ang lens ay lumilipat ng 1 degree para sa bawat antas ng servo. Kailangan mo rin ng higit pang servo torque para sa 1: 1 drive: lens ratio na ginagawa mo para sa 1: 2 drive: lens ratio.

Dapat mo ring malaman na may isa pang variable na maaari mong ipakilala - pag-ikot ng magpaandar na puwersa. Ang aking code sa control ng servo ay isinulat para sa mga standard servos na paikutin ang 180 degrees, ngunit nag-order ako ng isang pares ng mga digital na servos na paikutin ang 360 degrees at na magpapahintulot sa aking controller na humawak ng mga lente na nangangailangan ng mas maraming paglalakbay. Maaari kang makakuha ng mga servos na paikutin hanggang sa 3 liko, na dapat ay sapat upang mahawakan ang karamihan sa mga lente habang pinanatili ang mababang biyahe sa mga ratio ng gear lens. Siyempre kailangan mong gumawa ng ilang mga menor de edad na mga pagbabago sa code upang hawakan ang pinataas na hanay ng degree, ngunit dapat itong medyo tapat. Kung nais mo ang buong turn o multi-turn na servos, maghanap ng "winch servo" sa eBay.

Hakbang 3: Ihanda ang Iyong Arduino (o I-clone)

Sa sandaling mayroon ka ng iyong Arduino (o katumbas na), ang iyong Wiichuck connector, ang iyong mga servos at lead, at ang iyong controller ng Wii Classic, handa ka nang magsimulang mag-ipon ng mga bagay at i-load ang code papunta sa iyong Arduino. Narito ang outline: wire ang Wiichuck connector at maghatid ng servo upang maaari mong simulan ang pagsubok ng lahat nang magkasama (ang hakbang na iyon ay nangangailangan ng ilang paghihinang). Sa sandaling mayroon kang mga bagay na nakakonekta, i-set up ang Arduino IDE sa iyong computer, plug sa iyong Arduino, at simulang i-load ang mga library at mga halimbawa na kailangan mo. Pagkatapos magsisimula ang kasiyahan.

Ang kable ng WiiChuck Adapter:

Ang bahaging ito ay medyo madali, kung hindi mo gawin ang aking ginawa at nawala ang maliit na 4 pin na header na kasama nito. Ikaw lang maghinang ang header sa lugar, pagkatapos ay plug ito sa Arduino bilang isinalarawan sa imahe sa site ng FunGizmos web. Upang ikonekta ang iyong Classic controller, tiyakin lamang na ang indentation sa controller plug linya up sa "nc" sa Wiichuck adaptor.

Ang kable ng Servos:

Orihinal na binili ko ang isang motor controller board dahil una kong sinubukan na itayo ang proyektong ito sa mga stepper motors sa halip na servos (dahil naisip ko na wold sila ay mas tahimik, na naging medyo wrongheaded). Ang board ay may 2 libangan na servo connectors, kaya hindi ako kailangang gumawa ng anumang paghihinang upang ikonekta ang aking servos. Ngunit ang proseso ay para sa mga kable ng mga ito nang direkta: ikonekta mo lamang ang mga lead ng kapangyarihan ng parehong mga servos (itim ay negatibo, pula ay positibo) sa lupa at VCC ng iyong board. Mayroon kang ilang mga lokasyon kung saan maaari kang pumili. Pagkatapos ay ikonekta ang isa sa mga signal (dilaw) na wires ng isang servo sa pin 9, at ang iba pa ay pin 10. Ito ang mga default PWM pin na nagbibigay ng default pulse width modulation output na kinakailangan upang sabihin sa servo kung gaano kalayo upang i-on.

Kapag tapos ka na sa mga kable, maaari mong ikonekta ang lahat nang sama-sama, ikonekta ang iyong Arduino sa iyong computer sa pamamagitan ng USB cable, at simulan ang paglo-load ng code.

Hakbang 4: Programa ng Iyong Lupon: Kunin ang Mga Aklatan at Aking Kodigo at Simulan ang Pag-play

Bago mo i-load ang code na isinulat ko para sa aking controller ng lens, kailangan mong makuha ang Arduino IDE na naka-set up sa iyong computer at i-load ang mga aklatan na kailangan mo. Ang library control ng Servo ay kasama sa Arduino IDE, kaya hindi mo kailangang gumawa ng anumang bagay para sa na. Gayunpaman, ang aking code ay gumagamit din ng isang user-contributed Wii Classic Controller library na magagamit sa Arduino playground.

Maaari mong sundin ang mga hakbang sa pahina upang idagdag ito sa iyong library, o i-download lamang ang zip file na na-attach ko at i-unzip ito sa iyong folder ng mga library ng Arduino. Ang mina ay nasa landas na ito:

.. Documents Arduino arduino-1.0 libraries

Lumikha ako ng isang folder na tinatawag na MiconoWiiClassic sa folder ng libararies, at na-save ang "WiiClassic.h" na file sa folder na iyon. Maaari mo lamang i-unzip ang MiconoWiiClassic.zip file na isama ko dito sa iyong folder na Arduino-1.9 libraries.

UPDATE:

1) Mula sa unang pag-post na ito Instructable, naisip ko kung paano i-double ang resolution ng servos, na ginagawang mas malinaw at mas tumpak ang mga ito. Ginawa ko ito sa pamamagitan ng pagsasaayos ng library ng Servos na naka-install ng Arduino. Maaari mong i-tweak ang library mismo, o maaari mong i-download ang file na Servo.zip at i-extract ang file na Servo.cpp sa iyong.. Arduino arduino-1.0 libraries Servo folder at patungan ang file Servo.cpp na naroroon. Kung nais mong mag-tweak ang file sa iyong sarili, maaari mo lamang buksan ang file mula sa iyong library sa Notepad, at palitan ang lahat ng mga pagkakataon ng "180" na may "360". Kung na-download mo ang aking sketch bago ko ginawa ang update na ito, dapat mong i-download muli ang FocusController_gp.zip at kunin ito sa iyong sketch folder. Ito ay magdadagdag ng focus_zoom_controller_servo_final_2xresolution.ino sa folder na iyon.

2) Matapos mong unzip ang mga file na kailangan mong baguhin ang isang bagay sa WiiClassic.h file upang gawin ang aklatan sa trabaho tulad ng inaasahan sa aking code. Ang WiiClassic.h library ay naglalaman ng isang DEFINE_ON_HOLD tampok na dapat na uncommented upang matiyak na ang mga pagpindot sa pindutan ay iniulat nang isang beses lamang. Upang i-uncomment ito, kailangan mong buksan ang.. arduino-1.0 libraries MiconoWiiClassic WiiClassic.h file sa Notepad at palitan ang sumusunod na linya:

// # tukuyin ang REPORT_ON_HOLD

sa

#define REPORT_ON_HOLD

Kung hindi mo gagawin ito, mapapansin mo na ang pagpindot ng D-pad ay magpapatuloy sa paglilipat ng mga servos habang hawak mo ang pindutan, samantalang dapat lamang itong ilipat ang servo isang hakbang bawat pindutin. Ang error na ito ay maaari ring maging sanhi ng kakaibang pag-uugali mula sa iba pang mga pagpindot sa pindutan

3) Kung ikaw ay plugging ang WiiChuck adaptor sa Analog pins 2,3,4 at 5, kailangan mong i-configure ang 2 at 3 bilang lupa at kapangyarihan, sa pamamagitan ng pagdaragdag ng mga sumusunod sa seksyon ng setup ng iyong code (salamat sa Phillip James para sa pansing ito ommision)

"pinMode (16, OUTPUT);" Nagtatakda ng digital 16 pin (aka Analog 2) bilang pin ng lupa

"digitalWrite (16, mababa);"

"pinMode (17, OUTPUT);" Nagtatakda ng digital 17 pin (aka Analog 3) bilang + 5V pin

"digitalWrite (17, HIGH);"

Sa sandaling mayroon ka na sa library na iyon, maaari mo ring i-download ang aking code ng proyekto at i-unzip ito sa iyong pangunahing folder ng Arduino, at sa susunod na ilunsad mo ang Arduino IDE, lalabas ang aking mga proyekto sa folder ng iyong Sketchbook. Ang folder ng Aking Arduino ay nasa folder ng aking mga dokumento, tulad nito:

.. Documents Arduino

Hakbang 5: Subukan ang Mga Bagay: Wii Classic Controller

Gamit ang mga elektronikong bahagi na konektado at ang iyong code sa lugar, oras na upang simulan ang pagsubok ng mga bagay-bagay at tweaking ang code, kung kinakailangan. Magsimula sa pamamagitan ng paglo-load ng sketch ng WiiClassicTestValues ​​mula sa iyong Sketchbook (File> Sketchbook> WiiClassicTestValues). Bago ma-load ito sa iyong board, ipagsama ito upang matiyak na maayos mong na-install ang WiiClassic.h library (dapat mo ring makita ito sa iyong listahan ng mga aklatan (Sketch> Import Library). Kung maayos itong mag-compile, i-load ito papunta sa iyong board.

Ang programa ay nagpapalabas ng halaga ng bawat isa sa iyong sticks sa Wii Classic sa Serial Monitor, kaya kakailanganin mong buksan ang Serial Monitor (Tools> Serial Monitor). Hayaan ang controller magsanay sa sticks sa natitira upang makita kung ano ang mga halaga ay nasa gitnang posisyon, pagkatapos methodically itulak ang parehong sticks ang lahat ng mga paraan pasulong para sa isang ilang segundo, pagkatapos ay ang lahat ng mga paraan pababa, pagkatapos ang lahat ng mga paraan na natitira, pagkatapos ang lahat ng mga paraan tama. Kapag nagawa mo na iyon, maaari mong i-off ang Autoscrolling sa window ng monitor at kopyahin ang mga resulta sa Notepad at i-save ang file para sa karagdagang pagsusuri. Ikaw ay handa na ngayon upang matiyak na ang code ng controller ay naka-calibrate sa iyong Wii Classic Controller.

Hakbang 6: I-load ang Code Controller ng Lens at Ayusin para sa Iyong Controller ng Wii

Ngayon ay maaari mong i-load ang controller code at tiyakin na ang inaasahang halaga ng controller ay tumutugma sa iyong Wii Classic Controller. Magsimula sa pamamagitan ng paglo-load ng aking sketch na controller mula sa File> Sketchbook> focus_zoom_controller_final.

Sa sandaling mai-load ito, mag-scroll sa line 101 ng code upang makita ang mga setting para sa mga halaga ng controller ng stick, na ipinapakita sa ibaba:

/ / Ang tamang stick ay may 1/2 ang resolution ng kaliwa - ang mga halaga na ito ay maaaring mag-iba mula sa isa

// controller sa isa pa, kaya kakailanganin mong magpatakbo ng isang pagsubok na programa upang mabatid ang mga halaga ng

// ang bawat posisyon ng stick

int yCenterRight = 15;

int yMinRight = 2;

int yMaxRight = 28;

int xCenterRight = 15;

int xMinRight = 3;

int xMaxRight = 28;

int centerOffsetRight = 3;

int endOffsetRight = 0;

int yCenterLeft = 32;

int yMinLeft = 6;

int yMaxLeft = 55;

int xCenterLeft = 31;

int xMinLeft = 6;

int xMaxLeft = 55;

int centerOffsetLeft = 6;

int endOffsetLeft = 0;

Suriin ang mga halagang ito laban sa nabasa mula sa iyong controller, at baguhin ang anumang mga halaga kung kinakailangan. Tiyaking i-save mo ang iyong mga pagbabago.

Hakbang 7:

Panahon na upang subukan ang code sa iyong mga servos. Sa aking code mayroon akong Zoom servo na naka-attach sa pin 9 ng Arduino, at ang Focus servo na naka-attach sa pin 10. Madali mong mababago iyon sa code sa pamamagitan ng pagbabago ng mga numero dito:

walang bisa setup () {

Serial.begin (9600); / / mag-set up ng Serial library sa 9600 bps

/ Maglakip ng servos at itakda ang mga ito sa mga unang posisyon para sa pag-mount ang servos sa lens

zoomServo.attach (9);

focusServo.attach (10);

Kapag na tapos na at ang iyong mga servos ay konektado, plug iyong board sa USB port sa iyong computer at i-download ang code sa iyong board. Kapag tapos na ang pag-download at pag-boot, ang Zoom servo ay lumipat sa 180 degrees at ang Focus servo ay lilipat sa 0. Maaari mo na ngayong simulan ang paglalaro gamit ang sticks at mga pindutan upang makita kung ano ang mangyayari, at maaaring subukan ang programming sa iba't ibang mga posisyon ng servo at ang focus ratio. Ang ilan sa mga pindutan ay may mga default na halaga, ngunit maaari kang mag-program anumang pindutan sa pamamagitan ng pagpindot, HOME, pagkatapos ay pindutan at ang programa ay matandaan ang setting hanggang board ay i-reset o pinapatakbo off.

Sa sandaling nasiyahan ka na ang controller ay gumagana nang tama upang ilipat ang mga servos, maaari mong kunin ang iyong camera at lens at masuri kung ang mga direksyon ng servo para sa mga paggalaw ng stick ay tama. Ang pagtulak ng tamang stick forward ay dapat na i-on ang servo sa tamang direksyon upang mag-zoom sa lens, at ang paghila nito ay dapat gawin ang kabaligtaran. Sa parehong oras dapat itong ilipat ang focus sa direksyon na kinakailangan upang mapanatili ang camera sa focus kapag ang zoom ay inilipat. Mayroon akong minahan ng pag-set up upang kapag nag-zoom ako (itulak ang tamang stick forward), kailangan kong ilipat ang focus stick sa kanan upang iwasto ang focus, at kapag nag-zoom out ako (pull ang tamang stick back), kailangan ko ilipat ang focus stick sa kaliwa upang itama ang focus. Ito tila ang pinaka-intuitive arrangement.

Sa pamamagitan ng pagtatakda ng mga servos sa tabi ng iyong camera at lens sa paraan ng plano mong i-mount ang mga ito sa rig ng camera, maaari mong sabihin kung lumilipat ka sa tamang direksyon kung paano gumagalaw ang iyong lens. Kung wala sila, may mga tagubilin sa code kung paano baguhin ang direksyon ng kilusan ng servo na may kaugnayan sa bawat kilusan ng stick. Mayroon akong mga plano sa hinaharap upang tadtarin ang library ng Servo upang gawing mas madali ito, ngunit sa ngayon ay hindi kasingdali ng pag-flipping ng isang switch, ngunit hindi rin masyadong sobrang kumplikado.

Hakbang 8: Ilagay Ito Magkasama para sa isang Real Test

Narito kung saan ito ay talagang masaya. Sa sandaling nasiyahan ka na mayroon ka ng mga servos na lumipat sa tamang direksyon para sa iyong camera, talagang walang dahilan na huwag i-mount ang lahat ng makita kung paano ito gumagana sa iyong camera at lens. Maaari kang gumawa ng mga enclosures at magdagdag ng mga switch, power connectors, at medyo mga ilaw sa sandaling ang lahat ng bagay ay nagtatrabaho sa iyong kasiyahan, ngunit talagang walang point sa paggawa nito hanggang sa makita mo kung ang iyong setup ay makakapag-drive ng iyong lens sa paraang gusto mo. Ginawa ko ito sa ilang mga pag-ulit ng aking proyekto, kabilang ang isang bersyon na nakabatay sa stepper na isang ganap na sakuna at naging dahilan upang baguhin ang kurso at lumipat sa servos. Ang ideya ay mabibigo nang mabilis, bago ka gumawa ng labis na trabaho sa isang pangwakas na produkto na nangangailangan pa rin ng pag-aayos.

Magsimula sa pamamagitan ng pag-mount ang servo drive gears at ang lens gears. Ang lahat ng ito ay medyo tapat, ngunit kung nakita mo na ang iyong lens gear ay dumulas sa lahat (tulad ng minahan ko), ito ay maaaring makatulong upang malaman na maaari mong taasan ang mahigpit na pagkakahawak ng anumang bagay na may goma backing na madaling peeled off sa likod ng isang murang, manipis na mousepad. Ang parehong mga bagay-bagay ay maaari ding gamitin upang patayin ingay mula sa servos. Kasama ang mga linyang iyon, ang pagdaragdag ng ilang plastic-safe grease sa gearbox na gear ay maaari ring makatulong na bawasan ang servo noise.Ginamit ko ang grating ng pangingisda ng pangingisda na itinuturing na ligtas na plastic, at talagang pinahihiya ang aking servo ng pag-zoom.

Kung wala kang sistema ng tren, kakailanganin mong mag-isa ng alinman sa pagsunod sa kung ano ang ginawa ko (ipapadala ko ang larawan na gagabay sa iyo) o makahanap ng mas mahusay na disenyo sa web. Ang aking rig ay mabilis na nagtataglay para sa mga layunin ng pagsubok, at plano kong palitan ang disenyo na may isang bagay na mas kaakit-akit, matibay, at madaling ayusin. Ang aking daang-bakal ay 1/2 lapad na carbon ski poles na kinuha ko mula sa Goodwill para sa $ 4 (Goode brand ay hindi tapered, kaya mahusay silang nagtrabaho para dito). Ang lalagyan ng tren ay ginawa mula sa isang 1/2 "makapal na hard plastic cutting board na aking nakita sa isang 2-1 / 2 inch na lapad ng 6" mahabang strip. Upang lumikha ng mga "butas" ng tren na aking dadalaw sa dalawa 1/4 "malalim sa 1/2" diameter grooves na may isang bit na kahon na naka-mount sa isang router table at ginagabayan ng isang maliit na bakod. Nais kong ngayon ay ginawa ko ang buong bagay na mas malawak, ngunit nais kong panatilihin itong makitid upang maaari pa rin akong makapunta sa aking pinto ng baterya nang hindi nalalansag ang kamera mula sa mga daang-bakal. Pagkatapos ay i-cut ang piraso sa 2 pahaba, naka-mount ang isang spacer bloke ng baltic birch playwud sa isang dulo na may ilang mga tornilyo kahoy, at pagkatapos ay drilled ng isang pares ng 1.4 "butas sa ito para sa paglakip ito sa camera at ang Manfrotto mabilis release plate.

Sa sandaling mayroon ka ng isang rig ng tren, maaari kang mag-fashion ng ilang mga bloke ng pag-mount ng magpaandar na mag-ayos sa iyong mga daang-bakal. Ginawa ko rin ang mina mula sa ilang mga hard plastic cutting board scrap na aking dadalhin sa aking router table. Nakasira ako ng isang dulo kasama ang ilang mga maliliit na drywall screws, at binansagang isang 1.4 "buong sa kabilang bahagi ng butas ng tren upang i-hold ang isang kawayan bolt. Ang isang maliit na hawakan ng pinto ay nagbibigay-daan sa akin upang mahigpit ang mouting block para sa isang medyo masikip magkasya sa daang-bakal. Sa sandaling sigurado ako na ang lahat ng bagay ay magkasya OK, binobisan ko ang mga maliliit na butas ng pilot upang magkasya ang mga boltahe ng pag-mount ng servo na dumating sa aking mga servos, at ikinakabit ang mga servos sa lugar. Tandaan na sa pag-aayos na ito ang servo ay naipit lamang sa front edge, kaya maging maingat kung saan ka magpipilit kapag pinalaki ang servo at harangan ang pagpupulong sa daang-bakal.

Hakbang 9: Bigyan Ito ng Run Test

Gamit ang camera sa lugar (at naka-mount sa isang matatag tripod) at ang mga servos naka-mount sa daang-bakal, oras na upang mag-hook lahat ng bagay para sa isang pagsubok run. Huwag ang kapangyarihan ng Arduino sa mga gears enagaged bagaman. Sa halip, iwanan muna ang mga ito mula sa gear lens upang ang mga servos ay maaaring paikutin nang hindi gumagalaw ang lens. Pagkatapos ay maaari mong i-kapangyarihan ang iyong board. Kung hindi mo gawin ito, maaari mong makita na sinusubukan ng iyong servo na i-on ang lens lampas sa mga limitasyon nito, at hindi iyon maganda.

Programa ng iyong controller para sa iyong lens (mga tagubilin na ito ay nasa code ng Arduino rin)

Matapos ang iyong board boots up at ang servos ay tumigil sa paglipat, ilipat ang lens zoom ring sa na ito ay nasa max setting na tumutugma sa posisyon ng servo. Kapag sinimulan ng aking controller ang aking zoom servo na gumagalaw sa pinakamalawak na posisyon ng pag-zoom, kaya na kung saan ko lilipat ang lens bago ako makisali sa pag-zoom servo. Pagkatapos na mailipat ko ang lens, i-ugoy ko ang servo sa posisyon kaya ang gear drive ay nakikipag-ugnayan lamang sa lansungan ng lens (kung ilagay ang sobrang presyon sa lens, maaari mong maging sanhi ito sa stick at hindi ka makakakuha ng makinis na kilusan). Pagkatapos ay i-program ko ito bilang ang pinakamalawak na setting ng zoom sa pamamagitan ng pagpindot sa "Home", pagkatapos ay "Left Shoulder" sa Wii Classic Controller. Pagkatapos ay gamitin ko ang tamang stick upang mag-zoom in hanggang sa pindutin ng camera ang limitasyon ng zoom nito, at gamitin ang pad upang i-back off ang isang degree o dalawa. Pagkatapos ay i-program ko ang max zoom na posisyon sa pamamagitan ng pagpindot sa "Home", pagkatapos ay "Right Shoulder" upang mag-program ang maximum na setting ng zoom ng lens.

Ulitin ko ang isang katulad na pamamaraan para sa focus servo, ngunit ang programa ang pinaka-tama at iniwan ang pinaka-focus na mga setting ng servo gamit ang mga "Right Z" at "Kaliwa Z" na mga pindutan.

Sa sandaling itakda ang mga limitasyon na ito, oras na upang mapalakas ang iyong camera, pumili ng paksa at itakda ang focus para sa pinakamalawak at pinakamalapit na setting ng pag-zoom. Hindi mahalaga kung saan ka magsimula, ngunit karaniwan kong pumunta sa max zoom (pindutin lamang ang kanang pindutan ng balikat upang awtomatikong pumunta doon). Pagkatapos ay gamitin ko ang kaliwang stick at kaliwang-kanan D-Pad upang makuha ang focus kanan, pagkatapos ay pindutin ang "Home" pagkatapos "+" upang itakda ang focus para sa Max Zoom. Susunod na i-zoom ang iyong lens sa lahat ng paraan papunta sa pinakamalawak na pag-zoom at muli, gamitin ang kaliwang stick at D-Pad upang mag-dial sa focu sa iyong paksa. Sa sandaling ito ay mabuti, pindutin ang "Home" pagkatapos "-" upang itakda ang focus sa posisyon ng Min Zoom (pinakamalawak na zoom). Sa bawat oras na mag-program ka ng alinman sa "-" o "+" na mga pindutan, kinakalkula ng code ang tamang ratio upang ilipat ang focus habang nag-zoom upang mapanatili ang iyong paksa sa pag-focus habang nag-zoom ka. Maaari mong mag-tweak ang focus sa anumang oras sa pamamagitan ng paggamit ng kaliwang stick o D-pad, at hanggang sa muling i-program ang "+" o "-" na key ang focus ay laging lumilipat sa pag-synchronize gamit ang kilusan ng pag-zoom kapag ginamit mo ang tama stick upang i-zoom ang iyong lens. Ito ay kung saan ang magic ng aking "contraption" (bilang tawag ng aking asawa ito) ay.

Maaari mo ring programa ang mga pindutan ng 4 (x, y, a, b) na may dedikadong posisyon ng Zoom / Focus. Ilipat lamang ang pag-zoom at tumuon sa nais na posisyon, pagkatapos ay pindutin ang "Home", at pagkatapos ay ang isa sa mga pindutan upang programa ito para sa posisyon na iyon. Kung inililipat mo lamang ang focus servo habang ang bawat isa sa mga pindutan na ito, maaari mong gawin ang iyong controller magsisilbing isang follow focus na may 4 na mga preset na posisyon ng pokus na hindi ilipat ang zoom lens sa lahat.

Narito ang isang video na nagpapakita ng prosesong ito kasama ang controller na naka-mount sa aking GH2 camera:

Hakbang 10: I-wrap It Up

Kapag tapos ka na sa pag-play at teaking at satisified na ang iyong sariling bersyon ng aking controller ay gagana para sa iyo, oras na upang gawin itong ang lahat ng permanenteng, maganda, at madaling i-mount at pag-alis. Ipapaalam ko sa iyo ang bahaging iyon sa iyong sarili (ngunit inaasahan naming ibahagi mo ang iyong mga resulta sa akin). Mayroon akong isang bilang ng mga pag-aayos upang gawin sa aking magsusupil bago ko i-finalize ito, kaya naisip ko na gusto kong ibahagi ang aking mga plano dito upang makakuha ka ng pag-iisip kasama ang parehong mga linya.

Enclosure at Better Servo Mounts

Hindi ko na lang pinipilit ang tamang enclosure, kaya gusto ko ang sugestions dito. Marahil ay bibili ako ng isang mas maliit na Arduino tulad ng isang mini upang mapapanatili ko ang mga bagay na maliit at magbubukas ng mga opsyon ko. Pupunta rin ako sa rpelace ng plastic servo mounts na may machined aluminum mounts ngayon na alam ko kung gaano kahusay ang bagay na ito ay gumagana. Dadalhin din ako sa pag-upgrade ng mga servos mismo.

Power Supply

Sa ngayon ang aking controller ay nagpapatakbo ng USB kapangyarihan sa pamamagitan ng plugging ang aking USB kurdon sa isang iPod charger. Gayunpaman, mayroon akong isang ekstrang panlabas na 9 bolta DVD baterya na maaaring sisingilin habang ito ay supplying kapangyarihan sa pamamagitan ng controller, at gusto ko ang ideya ng pagkakaroon ng baterya lamang na pagpipilian upang sa sandaling natagpuan ko ang isang angkop na enclosure Pupunta ako sa wire ang tamang konektor sa panlabas na mga mapang-angit sa aking board.

LED Indicators

Ito magiging maganda (at napakadaling magdagdag ng tagapagpahiwatig para sa "mode ng programa", kaya mayroon akong ilang mga LED's na magpapaliwanag kapag ang controller ay nasa Program o Run mode.

Madali Servo Reversing

Tulad ng sinabi ko nang mas maaga, medyo nakakapagod na baguhin ang direksyon ng servo na kamag-anak sa mga paggalaw ng stick, kaya nagsimula akong magtrabaho sa pag-hack sa Arduino servo library upang tanggapin ang flag ng direksyon ng servo.

Memory para sa Mga Setting ng Lens

Magiging mabait din na hindi kailangang reprogram ang mga setting ng limitasyon ng lente sa bawat oras na mai-off ang kontrolin, kaya plano kong magdagdag ng imbakan batay sa SD card para sa bawat setting ng lens.

Hakbang 11: Feedback at Sundin Up

Ang isa pang miyembro. Steve Dray, ay gumawa ng isang mahusay na paggawa ng trabaho ng isang pares ng kanyang sariling mga bersyon ng ito sangkapan, at may generously ibinahagi ang kanyang mga wiring diagram at mga larawan. Umaasa ako na ito ay nagbibigay inspirasyon at tumutulong sa iba na sinusubukan na bumuo ng proyektong ito, lalo na dahil limitado akong oras upang masagot ang mga tanong. Nagkakaroon ng ilang mga problema si Steve na siya ay masuri bilang isang mahinang supply ng kuryente, kaya itinayo niya ang kanyang sariling regulated supply, at isinama ang eskematiko para sa na rin. Ko na pinamamahalaang upang makakuha ng sa pamamagitan ng aking maliit na kubo ipod charger.

Salamat Steve!