tag:blogger.com,1999:blog-24639298961610905602024-03-12T16:57:21.985-07:00Fotografías panorámicas y otras cosillasXavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.comBlogger59125tag:blogger.com,1999:blog-2463929896161090560.post-20866326062514671582016-12-31T09:27:00.001-08:002016-12-31T09:27:23.690-08:00Feliz 2017!<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-lORchDXs3ts/WGfqURPYsgI/AAAAAAAABss/9UycsqFFryMKy3xTFkxcGCB8hOd2PChKACLcB/s1600/feliz2017.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://1.bp.blogspot.com/-lORchDXs3ts/WGfqURPYsgI/AAAAAAAABss/9UycsqFFryMKy3xTFkxcGCB8hOd2PChKACLcB/s640/feliz2017.jpg" width="640" /></a></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-89855347478067410802016-10-16T07:24:00.001-07:002016-10-16T07:24:56.731-07:00Súria 360ºBueno, pues hoy toca sólo compartir un video montaje, el de mi último proyecto: Súria 360º dónde se puede observar el pueblo de Súria visto desde su perímetro.<br />
<br />
Todas los videos están hechos con la GoPro Hero Black 4. El 60% con la lente de OSCR 5.4mm y el resto con la GitUp de 4.3mm.<br />
<br />
Las tomas aereas con un drone DJI F550 que aunque parezca que está muy cerca de las viviendas u objetos no es asi, la culpable es la lente que no tiene nada que ver con el ojo de pez original de estas cámaras.<br />
<br />
Una de las ventajas es que no hay que acercarse para ver los detalles, pero como "pegas" es que a la mas mínima vibración, corriente de aire o desestabilización no hay quién lo arregle fácilmente.<br />
<br />
Tuve que desestimar muchas tomas debido a la vegetación, era imposible tener visión directa con el drone por lo que para evitar sorpresas se han ido reduciendo.<br />
<br />
Deseo que os guste:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/LqB82js__E4/0.jpg" src="https://www.youtube.com/embed/LqB82js__E4?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com2tag:blogger.com,1999:blog-2463929896161090560.post-83490255191608960712016-10-15T02:56:00.002-07:002016-10-15T02:56:35.472-07:00GoPro Drone panorámicas (II)<div style="text-align: justify;">
Pues despues de varios piñazos del <a href="http://walkera-rc.es/QR-X350-Pro.html" target="_blank">Walkera QRx350Pro</a> por causas desconocidas (llegé a la conclusión de un mal contacto o exceso de temperatura en algun elemento de control ya que en frio funcionaba bién y a los minutos de vuelo...fly away!) decidí montar un flame wheel , o dicho de otra manera un hexacóptero <a href="http://www.dji.com/es/flame-wheel-arf/feature" target="_blank">DJI F550</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div>
<div style="text-align: justify;">
Si uno es manitas y con un poco de paciencia es fácil (para mi, jiji !): Un puñado de soldaduras y dos o tres puñados de tornillos a los que recomiendo fijarlos con fija tornillos (yo utilizé el <a href="http://www.pattex.es/pagina-de-inicio/productos/especialidades/para-el-profesional/roscas/nural-50.html" target="_blank">Pattex Nural 50</a>). En plan configuraciones puedes encontrar muchos videos por youtube</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-vmFnt5oYEvU/WAH740UaILI/AAAAAAAABrI/2tGvVNINgOAlY5wkfLYBWjLMzgZGFfypwCLcB/s1600/IMG_20160131_111153843_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://4.bp.blogspot.com/-vmFnt5oYEvU/WAH740UaILI/AAAAAAAABrI/2tGvVNINgOAlY5wkfLYBWjLMzgZGFfypwCLcB/s640/IMG_20160131_111153843_HDR.jpg" width="640" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-f6zYT8Y_0bI/WAH74xf7qlI/AAAAAAAABrM/Lb5vHJlTKP4u7hytb2fdXy0MFDAjCu94gCLcB/s1600/IMG_20151220_115938251.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://3.bp.blogspot.com/-f6zYT8Y_0bI/WAH74xf7qlI/AAAAAAAABrM/Lb5vHJlTKP4u7hytb2fdXy0MFDAjCu94gCLcB/s640/IMG_20151220_115938251.jpg" width="640" /></a></div>
<div>
<br /></div>
<div style="text-align: justify;">
Ya hace casi un año desde el montaje inicial, por lo que el drone ha sufrido varias mejoras tales como:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Sustitución receptor: Durante los primeros vuelos aproveché la radio del <a href="http://www.helipal.com/walkera-devo-f7-7-channel-2-4ghz-digital-radio-system-w-fpv-monitor.html" target="_blank">walkera DEVO F7</a> unido a un receptor <a href="http://www.walkeraonline.com/walkera-hm-devo-rx-701-devo-rx-701-2-4ghz-receiver.html" target="_blank">RX701</a> pero necesitaba más canales , pasandome a un transmisor <a href="http://www.frsky-rc.com/product/pro.php?pro_id=113" target="_blank">Taranis X9D plus</a> y un receptor <a href="http://www.frsky-rc.com/product/pro.php?pro_id=105" target="_blank">FrSky x8R</a>. Las señales del receptor van hacia la <a href="http://www.dji.com/es/naza-m-v2" target="_blank">Naza v2</a> (el procesador del drone)</div>
<div style="text-align: justify;">
* Sustitución motores DJI 2312E 960 KV por unos <a href="http://www.emaxmodel.com/brushless-motor/emax-multicopter-motor-mt2216-with-prop1045-combo.html" target="_blank">EMAX MT2216 de 810 kV</a> con unas hélices 1045</div>
<div style="text-align: justify;">
* Montaje de un <a href="http://www.banggood.com/es/FPV-2-Axis-Brushless-Gimbal-With-Controller-For-DJI-Phantom-GoPro-3-p-908068.html" target="_blank">Gimbal chino de 2 ejes</a>, ahora mismo gestionado con una placa BGC de 32 bits. </div>
<div style="text-align: justify;">
* Montaje <a href="https://rc-innovations.es/MCG0181-rojo-patin-quadcoptero-hexacoptero-fibra-vidrio-multcoptero-soportes-bateria" target="_blank">patín </a> para evitar que el gimbal y cámara estuviera tan próximo al suelo</div>
<div style="text-align: justify;">
* Módulo de telemetria <a href="http://www.dji.com/es/iosd-mini" target="_blank">iOSD mini</a> (a traves del FPV puedo ver distancia, altura, velocidad, batería, satelites gps...)</div>
<div style="text-align: justify;">
* Transmisor de FPV <a href="http://www.hobbyking.com/hobbyking/store/__78079__Walkera_5_8Ghz_TX5803_200mW_FPV_Video_Transmitter.html" target="_blank">Walkera TX5803</a> de 200mW encargado de transmitir las señales de video de la GoPro y los datos de la telemetria, y luego verlos en un monitor de 7"</div>
<div style="text-align: justify;">
* Bateria de 4S de unos 6000 mAh 35C (unos 8 minutos de vuelo)</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-p5dfaBhtdxI/WAH7AZoAPwI/AAAAAAAABrA/a5G4e0vk50U5fX3Zro2W1zStJsqebSi7wCLcB/s1600/IMG_20160626_081838143_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://2.bp.blogspot.com/-p5dfaBhtdxI/WAH7AZoAPwI/AAAAAAAABrA/a5G4e0vk50U5fX3Zro2W1zStJsqebSi7wCLcB/s640/IMG_20160626_081838143_HDR.jpg" width="480" /></a></div>
<div>
<br /></div>
<div style="text-align: justify;">
Actualmente utilizo una GoPro Hero 4 Black con lente GitUp de 4.35 mm, previamente también usé una GoPro Hero3+Black con la lente original y con la de OSCR de 5.4mm . También llegé a montar una <a href="http://www.sony.es/electronics/camaras-lentes-intercambiables/ilce-5100-body-kit" target="_blank">Sony A5100</a> con una lente 16-50 y con un gimbal a base de motores <a href="http://www.fpvmodel.com/dys-blg3sn-3-axis-brushless-gimbal-frame-kit-with-3pcs-bgm4108-130-brushless-motors-for-sony-nex-_g451.html" target="_blank">BGM4108-130</a> pero mucho peso para tan poco: las baterías duraban muuuuy poco y una vez visualizados los videos tampoco me convencían.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Después de algunas horas de vuelo se va ganando agilidad en los controles, pero controlar visualmente el espacio dónde está volando el drone y visualizar el monitor lo que se está grabando y estar pendiente de la autonomía del mismo puede llegar a ser difícil para una sóla persona (quizás las mujeres estén capacitadas, pero los hombres...). Hacer una toma a ras de algún objeto (suelo, arboles) no es fácil hay que tener las medidas claras y sobretodo lo que ves en la pantalla (al útilizar grandes angulares en la cámara puede parecer que estamos apartados de los objetos pero en realidad a centímetros), pero de vez en cuando uno calcula mal y la cosa acaba peor, es por ello que no se debe volar en sitios dónde existan personas o en poblaciones.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-mIJGPiBvq-8/WAH6XmSJOsI/AAAAAAAABq4/PElTVnTZyNEVHOLDkh3nDCHRd34Xt8MMQCLcB/s1600/IMG_20160924_114615224.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://3.bp.blogspot.com/-mIJGPiBvq-8/WAH6XmSJOsI/AAAAAAAABq4/PElTVnTZyNEVHOLDkh3nDCHRd34Xt8MMQCLcB/s640/IMG_20160924_114615224.jpg" width="640" /></a></div>
<div>
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para facilitar la captura de imágenes para mi es mejor es hacer un video a máxima resolución (4K) , al máximo número de frames por segundo y finalmente realizar la "captura" visualizando el video desde casa.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En mi Taranis tengo varios modos de vuelo programados que a la hora de hacer tomas panorámicas son muy útiles:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Bloqueo del acelerador : así sé que trabajando en modo GPS el drone no sé irá hacia arriba o hacia abajo.</div>
<div style="text-align: justify;">
* Movimiento rotación drone: Tengo unos interruptores fijados en la emisora que le dan una señal constante de giro hacia cada uno de los dos sentidos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Utilizando la combinación de ambos me ahorro de estar con el stick del acelerador y de giro haciendo virguerias para que esté el drone "estático" en un punto. En la siguiente imagen aparecen helices mágicas: el giro de las mismas a muy altas revoluciones puede provocar estos efectos al fotografiarlas)</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-LYdSzuX5vik/WAH6i3Kc32I/AAAAAAAABq8/x66BG1PixtMHUQPhShGemB3IEnlahQ5qACLcB/s1600/IMG_20160416_111532298.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://1.bp.blogspot.com/-LYdSzuX5vik/WAH6i3Kc32I/AAAAAAAABq8/x66BG1PixtMHUQPhShGemB3IEnlahQ5qACLcB/s640/IMG_20160416_111532298.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div style="text-align: justify;">
Utilizando esta técnica he realizado varias fotos, pero la que de momento ha tenido más resolución ha sido la realizada en <a href="http://www.lurdeia.com/" target="_blank">Lurdeia</a>: son 28 capturas teniendo la camara en posición vertical y realizando dos pasadas de 14 para cubrir dos vueltas de 360º, y entre las dos vueltas se realizó el movimiento del gimbal para abarcar más ángulo en la composición.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Kyup1vXjBQg/WAH38Ec5tMI/AAAAAAAABqo/mpKLkBKuEB0viyy5I56typxi-8gWU60PACLcB/s1600/lurdeia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://2.bp.blogspot.com/-Kyup1vXjBQg/WAH38Ec5tMI/AAAAAAAABqo/mpKLkBKuEB0viyy5I56typxi-8gWU60PACLcB/s640/lurdeia.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
La podeis ver en <a href="https://www.flickr.com/photos/xaviergp/28062442745/in/photostream/" target="_blank">flickr</a> y en <a href="https://www.360cities.net/image/lurdeia-lurkoi" target="_blank">360cities</a></div>
<div>
<br /></div>
<div>
Ese mismo dia también realicé el siguiente pequeño video :</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/wFPnx0qtX8M/0.jpg" src="https://www.youtube.com/embed/wFPnx0qtX8M?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div>
<br /></div>
<div>
A volaaaar!</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-35347593581139326562016-09-24T01:02:00.002-07:002016-09-24T01:02:43.335-07:00Comparativa lentes para la GoProDespués de mucho tiempo sin escribir nada, y tras ver que últimamente varias personas se han interesado en el cambio de la lente de la GoPro, hoy quiero mostraros una pequeña compartiva entre la lente original (2.97 mm), una de 4.35 mm y otra de 5.4 mm<br />
<br />
Como que dicen que una imagen vale más que mil palabras, pues juzgar vosotros mismos:<br />
<br />
Lente original GoPro (2.97 mm)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-O_xkc1SOnX8/V-YqihvXYPI/AAAAAAAABp0/iyemRAqDis0BhEvXHGx7VRyfBUX_GXz_ACLcB/s1600/GOPR1111.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://3.bp.blogspot.com/-O_xkc1SOnX8/V-YqihvXYPI/AAAAAAAABp0/iyemRAqDis0BhEvXHGx7VRyfBUX_GXz_ACLcB/s640/GOPR1111.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Lente de GitUp (4.35mm):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-5a-2uHR0xLY/V-YrM2EaMrI/AAAAAAAABp8/qKBBcU7uREMJ3mvFE-jckiaK4XzG2dzfwCLcB/s1600/GOPR1110.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://1.bp.blogspot.com/-5a-2uHR0xLY/V-YrM2EaMrI/AAAAAAAABp8/qKBBcU7uREMJ3mvFE-jckiaK4XzG2dzfwCLcB/s640/GOPR1110.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Y finalmente la de OST (5.4mm):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-VaIFYk9rY0w/V-Yr82peefI/AAAAAAAABqE/bag7c8_Y0dY33WSh2VR8XGJtkHvZRGNggCLcB/s1600/GOPR1100.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://1.bp.blogspot.com/-VaIFYk9rY0w/V-Yr82peefI/AAAAAAAABqE/bag7c8_Y0dY33WSh2VR8XGJtkHvZRGNggCLcB/s640/GOPR1100.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En mi caso , el cambio de lente fué pensado para obtener una mejor calidad de imagen cuando realizo tomas desde el drone. Con la lente original de GoPro al ser un ojo de pez tiene una gran efecto barril. Ya sé que desde el software GoPro Studio y desde PhotoShop es fácil eliminarlo pero todo lo que puedas captar correctamente no esperes que un software lo arregle.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
También al volar desde el drone y querer monitorizar las imagenes en directo me costaba mucho orientarme correctamente, lo que observaba por la pequeña pantalla no me ofrecia gran detalle . Debido a que grabo videos para luego extraer los fotogramas me tenia que aproximar mucho (con los riesgos que comporta) o verme obliagado desde software a recortar la imagen quedandote con una resolución muy pésima.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Fué por ello que me decidí a cambiar de lente y durante un año estuve utilizando la de 5.4 mm de OST , a un precio cercano de 150$. A nivel óptico ninguna queja, excepto para mi gusto que el angulo de la imagen es algo pequeño y en varias ocasiones me vi obligado a alejarme de los objetos.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Hoy espero estrenar en campo la lente de GitUp de 4.35 mm. con la que espero estar entre medio de las dos anteriores. Esta lente tiene un coste muy inferior (50$) y a juzgar por la toma comparativa puede funcionar...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Os dejo los links de estas lentes comentadas de OST y GitUp por si os animáis:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.ostrc.com/products/ost-10mp-5-4mm-replacement-lens-for-gopro">http://www.ostrc.com/products/ost-10mp-5-4mm-replacement-lens-for-gopro</a></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.gitup.com/lens/44-f28-435mm-16m-hfov-72-13g-lens-for-git2gopro.html">http://www.gitup.com/lens/44-f28-435mm-16m-hfov-72-13g-lens-for-git2gopro.html</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Finalmente unos consejos:</div>
<div class="separator" style="clear: both; text-align: left;">
* Para desmontar la lente original hay que ser un poco manitas, no hay que ser un crack de relojeria , pero tampoco puedes ir a lo bruto con las alicates universales de 20 años que andan tiradas en una caja en el garaje.</div>
<div class="separator" style="clear: both; text-align: left;">
* Si quereis probar algun modelo, miradlo bién ! en ebay puedes ver modelos económicos , pero en muchos de ellos no se comenta si tienen el filtro IR incorporado. El filtro IR es básico si quereis hacer tomas de día! Obviamente si comprais a GitUp podeis estar más tranquilos pues ya es un poco garantia de que te estan vendiendo una pieza compatible.</div>
<div class="separator" style="clear: both; text-align: left;">
* En lentes suelen poner si tienen resolución en MP. Es interesante. Si quereis nitidez va a venir en acorde con una lente capaz de transmitir estos MegaPixeles!</div>
<div class="separator" style="clear: both; text-align: left;">
* La rosca es de M12x0.5 mm . No intenteis poner una que no sea de estas medidas. </div>
<div class="separator" style="clear: both; text-align: left;">
* Poner teflón en la rosca, entre 6-10 vueltas.</div>
<div class="separator" style="clear: both; text-align: left;">
* Tema enfoque requiere paciencia: yo hago marcas, y voy haciendo unas pocas tomas, luego monitorizo en el PC hasta obtener un resultado aceptable. Es la parte más lenta, pero en realidad vale la pena perder el tiempo. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Parece que sale el sol... a volar !</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Buen fin de semana & DIY !</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-46217122517678034922015-05-01T07:14:00.000-07:002015-05-01T07:16:53.962-07:00Gopro drone panorámicaHoy toca comentar como he realizado alguna fotografía panorámica desde el drone Walkera QR x350Pro. Antes de llegar al final he realizado varias peripecias por el camino para intentar obtener una panorámica un poco con clase, pero no sé si lo habré conseguido...<br />
En mi post anterior expliqué cómo cambiar la lente de la GoPro, basicamente la idea consisitia en eliminar la distorsión del objetivo tipo ojo de pez que la caracteriza por uno con un poco más de focal y sin distorsión. Con esto al fín y al cabo ganaba en no tener que corregir las imagenes distorsionadas y así evitaria possibles errores de solape. Obviamente al cambiar también la focal obtuve una mayor definición/calidad del espacio fotografiado y un augmento en la resolución de la foto final.<br />
<br />
Para facilitar el movimiento vertical de la cámara modifiqué el mando Devention DevoF7 para que el movimiento arriba/abajo del Gimball se realizara con simples pulsadores en vez de un potenciometro con el que andava descontrolado. antes para subir la camara debia rotar el potenciometro unos -90º (empezamos con una lógica invertida!) , cuando deseaba frenar el movimiento devia desplazarme hasta 90º un momento y luego dejarlo en 0º. Vamos un cachondeo si tienes que estar con la vista al drone, a la pantalla y al potenciometro. Me falta un ojo ! Ahora con un par de pulsadores y bién orientados es fácil subir y bajar la cámara sin tener que perder de vista el "pájaro", este es muy sensible a las corrientes de aire por lo que a la que te despistas...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-J0jawGNI2FM/VUN6ipMddCI/AAAAAAAABgM/5DjkhXDgNlo/s1600/devo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-J0jawGNI2FM/VUN6ipMddCI/AAAAAAAABgM/5DjkhXDgNlo/s1600/devo.jpg" height="195" width="640" /></a></div>
<br />
La modificación interior es muy fácil , tan sólo hay que desmontar el mando , sustituir el interruptor y poténciometro por dos pulsadores. El cableado consiste en utilizar el cable comun del potenciometro (negro) será el comun de los dos pulsadores, mientra que cada uno de los dos cables restantes del potenciometro original (blanco y azul) van a cada uno de los contactos abiertos de los dos pulsadores.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-jo2-IY3P5PY/VUN7wKUnvqI/AAAAAAAABgk/sIk6Lr5tai4/s1600/IMG_20150417_204953.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-jo2-IY3P5PY/VUN7wKUnvqI/AAAAAAAABgk/sIk6Lr5tai4/s1600/IMG_20150417_204953.jpg" height="320" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4YOditcusY0/VUN7vYaauII/AAAAAAAABgc/7aG5ZsAllMc/s1600/IMG_20150417_204834079.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4YOditcusY0/VUN7vYaauII/AAAAAAAABgc/7aG5ZsAllMc/s1600/IMG_20150417_204834079.jpg" height="356" width="640" /></a></div>
<br />
<br />
Finalmente el siguiente paso fué en colocar la camara en vértical, para ganar más ángulo . Para ello me fabriqué con un trozo de plástico rígido una pieza que encaja en el soporte del Gimball y acto seguido realizé los agujeros pertinentes. Este metacrilato va fijado al gimball mediante unas bridas tipo Unex que de momento aguantan...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-YWYxjrRyHmw/VUN8T412EpI/AAAAAAAABgs/HuDbt8-G5Ls/s1600/IMG_20150501_150029979.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-YWYxjrRyHmw/VUN8T412EpI/AAAAAAAABgs/HuDbt8-G5Ls/s1600/IMG_20150501_150029979.jpg" height="356" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-b1jzwssom04/VUN8UZMxitI/AAAAAAAABgw/7sKLQHxYX30/s1600/IMG_20150501_150233005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-b1jzwssom04/VUN8UZMxitI/AAAAAAAABgw/7sKLQHxYX30/s1600/IMG_20150501_150233005.jpg" height="358" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Acto seguido tocó ajustar el Gimbal mediante el uso del potenciometro v1. Para los no habituados, el Gimbal es la soportación con estabilizador de cámara , compuesta aparte del soporte por dos motores. Uno de ellos sirve para subir/bajar la camara mientras que el otro es un estabilizador del la cámara que intenta mantener a esta todo el rato horizontal respecto al plano del suelo. Yo utilizo un Gimbal Walkera G-2D . Si alguien quiere instrucciones, <a href="http://img.banggood.com/images/upload/2014/04-1/Walkera%20G-2D%20Gimbal%20Manual.pdf" target="_blank">aquí </a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-onErqWxZnKs/VUN9z0XotvI/AAAAAAAABhA/y7fioJWQU-Y/s1600/g2d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-onErqWxZnKs/VUN9z0XotvI/AAAAAAAABhA/y7fioJWQU-Y/s1600/g2d.jpg" height="476" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Todo ajustado, el drone calibrado (muy importante), las baterias a tope (estos drones no aguantan mucho rato en el aire y cuando no hay baterias bajan de golpe!) ya sólo falta poner la camara en modo video 4K (equivalente a 12MPx) . Si ya sé que vamos a hacer una foto, pero mejor hacer un video y extraer los mejores fotogramas no ?<br />
<br />
Si teneis una HERO BLACK 3+ grabareis a 12fps, con la <a href="http://es.shop.gopro.com/EMEA/cameras/hero4-black/CHDHX-401.html" target="_blank">HERO4</a> , la cosa asciende hasta los 30fps. Acordaros de poner una microSD lo suficientemente grande de capacidad y velocidad. Activad también el ProTune ! Por cierto, yo soy de los que desactivan el WiFi de la GoPro pues trabaja a 2.4 GHz, al igual que el mando rmoto del drone. La emisión de video es a 5.7GHz.<br />
<br />
Ahora a volaaaarrrr !<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-u0xBnyEtECE/VUOC-hpaEnI/AAAAAAAABhQ/UwfoJPn38lM/s1600/drone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-u0xBnyEtECE/VUOC-hpaEnI/AAAAAAAABhQ/UwfoJPn38lM/s1600/drone.jpg" height="472" width="640" /></a></div>
<br />
Una vez el drone en el aire , ya despegado sin volteretas hacia delante (el que ha pilotado algun trasto de estos ya sabe a que me refiero) pondremos el modo GPS que tiene la función de intentar quedarse quieto en la misma posición y olvidarnos un poco de los mandos (hay que dejarlos en un punto medio).<br />
<br />
Obviamente como que giremos la camara 90º, la imagen que veo a través del sistema <a href="http://en.wikipedia.org/wiki/First-person_view_(radio_control)" target="_blank">FPV</a> integrado en el mando es la imagen también girada 90º. Acto seguido consiste en hacer girar el drone una vuelta entera mediante el Rudder Stick en el plano horizontal. Si damos la vuelta a poco a poco y haciendo pausas entre los posibles fotogramas mejor, tened en cuenta el tema del solape, más vale que sobre que no que falte!<br />
<br />
Una vez capturado el video con los 360º es hora de aterrizar el drone sin piñarlo. Yo acostumbro a hacerlo descender poco a poco en modo GPS y finalmente cazarlo con la mano.<br />
<br />
Vuelta para casa y a descargar el video.<br />
<br />
Aqui es cuando empiezo editando el video mediante el software <a href="http://es.shop.gopro.com/EMEA/softwareandapp/gopro-studio/GoPro-Studio.html#/gclid=Cj0KEQjwyIyqBRD4janGs5e67IsBEiQAoF8DGiZh-Qhp6V4Mo8FqvTUh-Z--Yda73WK0bqsA8tOR5TIaAnIA8P8HAQ&start=1" target="_blank">GoPro Studio </a> . Con el software intento corregir los colores y exposición. Podeis encontrar muchos video-tutoriales en youtube.<br />
Una vez "corregido" el color, lo que hago es grabarlo a máxima resolución y a una velocidad lenta (sobre el 30%). Con ello consigo que posteriormente al reproducir el video sea más lento y me sea más fácil pausar , elejir y captar los mejores fotogramas.<br />
<br />
Una vez grabado el video en nuestro ordenador es hora de extraer los fotogramas haciendo capturas de pantalla. Para ello lo primero que deberemos hacer es descargarnos el reproductor <a href="http://www.videolan.org/vlc/" target="_blank">VLC</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8y-zk1GQcmk/VUOFEAk0VeI/AAAAAAAABhc/bPfZ9X-dpyQ/s1600/vlc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-8y-zk1GQcmk/VUOFEAk0VeI/AAAAAAAABhc/bPfZ9X-dpyQ/s1600/vlc.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
¿ Por qué utilizar este reproductor y no el clássico de nuestro ordenador ? Muy fácil, reproducid un video y haced una captura de pantalla; obteneis una captura con resolución del tamaño de vuestra pantalla. Vamos que si la teneis a 1600x1200 obteneis un archivo de unos 2 MB, aunque el video original sean imagenes de 12 MB.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En cambio si utilizamos el VLC podemos hacer capturas de pantalla utilizando otra combinación de teclas: <a href="http://es.wikihow.com/capturar-pantalla-en-un-fichero-usando-VLC" target="_blank">CONTROL + ALT (cmd en MAC) + S</a> . Desde el reproductor vamos reproduciendo y haciendo pausas (teniendo en cuenta el solape!) y capturas hasta obtener todas las necesarias. Obviamente a la hora de reproducir también se nos reproducirá el video girado pero eso no es gran problema. Si vais lo suficientemente rápidos no cojereis dolor de cuello!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-X9sV7HrrY4o/VUOHlHvz3pI/AAAAAAAABho/gZxXKPg0vHQ/s1600/teclat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-X9sV7HrrY4o/VUOHlHvz3pI/AAAAAAAABho/gZxXKPg0vHQ/s1600/teclat.jpg" height="204" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ya nos falta poco! Ahora es questión de entrar en nuestro software de creación de panorámicas e intentar unir todas las imagenes para conseguir nuestra foto final.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En mi caso (utilizo MAC) tuve que rotar las imagenes 90º antes de processarlas con Auto Pano Giga.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente con la ayuda de otros softwares de edición tipo PhotoShop podreis "maquearla" un poquito y corregir imperfecciones.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En mi caso utilizando una GoPro 3+ Black con la optica cambiada de 5.4 mm realizé 10 capturas con una resolución final de unos 110 MB . Podeis verla en grande en este link:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-JRdC3wlOacE/VUOJzPz4xgI/AAAAAAAABh0/elpowmnpzaQ/s1600/Captura%2Bde%2Bpantalla%2B2015-05-01%2Ba%2Bla(s)%2B16.12.00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-JRdC3wlOacE/VUOJzPz4xgI/AAAAAAAABh0/elpowmnpzaQ/s1600/Captura%2Bde%2Bpantalla%2B2015-05-01%2Ba%2Bla(s)%2B16.12.00.png" height="360" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://gigapan.com/gigapans/171948">http://gigapan.com/gigapans/171948</a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
¿ Os animais? </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-73156020145780029662015-02-21T07:25:00.000-08:002015-02-21T07:34:35.214-08:00Cambio lente en GoPro<div style="text-align: justify;">
¿Cansado del ojo de pez de tu GoPro?<br />
<br /></div>
<div style="text-align: justify;">
Hoy os explicaré como cambié esta lente en mi GoPro Hero Black 3+ que es la que uso en mi drone Walkera QR x350 Pro. En principio este método sirve también para la serie Hero 4 pues utiliza la misma lente.<br />
<br /></div>
<div style="text-align: justify;">
Uno de mis proyectos para este año es la realización de fotografias panorámicas aereas con la ayuda del drone. La cámara que venia de origen, una iLook, tenia muy mala definición, generaba archivos de 1 Mb y encima tenia un efecto de desenfoque en todos los extremos de la imagen muy acentuados, por lo que decidí sustituirla por la GoPro, y tras instalar el sistema de FPV (visión en primera persona) empezé a realizar mis pruebas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/HgXff1FElf8/0.jpg" frameborder="0" height="266" src="http://www.youtube.com/embed/HgXff1FElf8?feature=player_embedded" width="320"></iframe></div>
<br />
<br /></div>
<div style="text-align: justify;">
Haciendo caso a consejos de un gran conocedor de las GoPro , <a href="https://twitter.com/micbergsma">MicBergsma</a> (os recomiendo su canal de <a href="https://www.youtube.com/user/micbergsma">youtube</a>) , empecé haciendo videos , para luego poder elejir la frame ideal , y posteriormente generar una panorámica. Es un sistema un poco diferente pero tal y como en algun video de Mic comenta, es quizás el mejor sistema para obtener la imagen perfecta.<br />
<br /></div>
<div style="text-align: justify;">
Con un drone como el mio es susceptible a los cambios de viento, y por mucho que uno active el modo GPS y en principio debería quedarse "estable" se hace díficil controlar el drone y la cámara, por lo que mejor un video, y ya perderemos tiempo en casa buscando la frame deseada sin sufrir por la duración de bateria del drone y no lo piñemos. Otra opción es hacer un burst de imágenes o una toma de secuencias tipo time-lapse, pero claro, un video con esta camara a alta definición 4k da para 12-15fps, en cambio si intentais hacerlo con como fotografia secuencial tomará fotos cada 0.5 segundos.<br />
<br /></div>
<div style="text-align: justify;">
Pero el tema de hoy es la lente de la GoPro, si queremos hacer panoramicas con un poco más de definición deberemos hacer varias tomas.<br />
<br /></div>
<div style="text-align: justify;">
La lente que viene de origen tiene un efecto barril tipico de un ojo de pez que nos provoca que cuando fotografiamos desde el cielo quede nuestro horizonte totalmente abombado. Si , ya sé que la tierra es redonda, pero tampoco tanto !<br />
<br /></div>
<div style="text-align: justify;">
Esta lente original tiene un campo de visión de unos 170º entre sus extremos por lo que practicamente ya tenemos todo el paisaje fotografiado. El equivalente en milimetros es de 2.97 mm. Según he encontrado el sensor que tiene es de 1/2.3"<br />
<br /></div>
<div style="text-align: justify;">
Si nos queremos cargar este efecto barril en nuestro horizonte, hay dos sistemas, o bién cambiando la lente o bien mediante procesado de la imagen por software. Yo pienso que lo que se pueda corregir con una lente mejor que no por software como os expliqué en el anterior post.</div>
<div style="text-align: justify;">
Existen varias lentes, incluso si uno no desea perder este campo de visión tan grande, existen lentes de 2.97 mm sin distorsión.<br />
<br /></div>
<div style="text-align: justify;">
Para la gente que viene del campo de las réflex, ya sabe lo que vale una lente, pues aquí el tema económico también es un punto a considerar y a tener en cuenta, pues podemos encontrar lentes made in China muy baratas a menos de 5 euros, o otras que superan los 200 euros.</div>
<div style="text-align: justify;">
En mi caso, como que no me interesa un gran angular para volar con el drone pues me provoca un efecto de no saber para dónde estoy pues veo los paisajes muy pequeños y alejados , decidí cambiar por una que tiene su buena fama en muchos blogs, la típica 5.4 mm</div>
<div style="text-align: justify;">
Otros detalles a tener en cuenta, en algunas webs hablan de que la lente sea MegaPixel, pero quizás lo más importante es que tenga el corte de cristal para IR infrarojos , de lo contrario vais a tomar imágenes de espionaje nocturnas !<br />
<br /></div>
<div style="text-align: justify;">
Ah! se me olvidava, la rosca de esta lente es de M12 x 0.5mm, o sea que con esto ya podemos empezar a buscar con google, aqui un resumen de las caracteristicas más importantes</div>
<div style="text-align: justify;">
Tamaño rosca: M12 x 0.5 mm</div>
<div style="text-align: justify;">
Lente IR</div>
<div style="text-align: justify;">
Equivalencia en milimetros del sensor 2.97 mm.</div>
<div style="text-align: justify;">
Tamaño sensor GoPro 1/2.3"</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para vuestra curiosidad , a continuación podeis ver la relación de varias lentes que he encontrado con su conversión en grados de visión en horizontal ©RAGECAMS<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-SKSpQLkGYDE/VOigNk22a1I/AAAAAAAABek/1e6_Xtqxu2U/s1600/grados%2Bgopro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-SKSpQLkGYDE/VOigNk22a1I/AAAAAAAABek/1e6_Xtqxu2U/s1600/grados%2Bgopro.jpg" height="226" width="320" /></a></div>
<br />
Y ahora vamos al grano, queriamos cambiar la lente de la GoPro, antes de nada : NO ME HAGO RESPONSABLE DE LOS DAÑOS QUE PODAIS OCASIONAR EN VUESTRA CAMARA.<br />
<br />
He visto dos métodos: el "profesional" sólo apto para manitas con nivel (yo no me atrevo!), y el sistema "bruto". Por si os interesa el video profesional (en youtube hay varios):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/EYjugMBJ8II/0.jpg" frameborder="0" height="266" src="http://www.youtube.com/embed/EYjugMBJ8II?feature=player_embedded" width="320"></iframe></div>
<br />
Yo os explicaré el método bruto, vamos a ello!<br />
<br />
Antes de empezar prepararos todo el material necesario. También es ideal marcar la posición de la lente original por si nunca quereis volver hacia atrás. Si os fijais en la siguiente foto hay una marca en la parte superior realizada con un permanente.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-XL_e5lUUbNo/VOiRJw7sShI/AAAAAAAABdM/4w4dn1rJcDw/s1600/IMG_20150210_195111998_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-XL_e5lUUbNo/VOiRJw7sShI/AAAAAAAABdM/4w4dn1rJcDw/s1600/IMG_20150210_195111998_HDR.jpg" height="223" width="400" /></a></div>
<br />
<br />
He leido en un blog que hay quien previamente al proceso de desmontaje de la lente original pone la camara hacia arriba (para no rayar la lente original) dentro de un horno a una temperatura de unos 60ºC durante 10 minutos encima de un guante de los que aguantan temperatura (también podriais usar unos tejanos rotos) a una altura intermedia. Previamente sacarle la bateria !<br />
<br />
Deducí que este proceso es para ablandar el "loctite" que fija la lente metalica con el soporte de plástico. Yo este paso me lo salté, y los puntos siguientes no se me opusieron.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jal6djx5nF8/VOiYW4YVl9I/AAAAAAAABeI/Zh88U0MSGwY/s1600/gopro%2Blens.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-jal6djx5nF8/VOiYW4YVl9I/AAAAAAAABeI/Zh88U0MSGwY/s1600/gopro%2Blens.jpg" height="320" width="256" /></a></div>
<br />
Acto seguido desmontamos el embellecedor de la lente haciendo una ligera palanca hacia arriba tal y como se observa en la anterior foto. Yo coloqué un trapo de cocina o si teneis una espumita debajo de la cámara, y utilicé un cuchillo muy fino para clararlo suavemente. Luego es cuestion de hacer un poco de palanca. Si no quereis dejar marcas, poner cinta de carrocero, o un plástico fino pero duro (podeis usar un calendario).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NS7LIw8rngc/VOiTLXNCPGI/AAAAAAAABdY/_bnz6_z2xa4/s1600/IMG_20150210_194933194.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NS7LIw8rngc/VOiTLXNCPGI/AAAAAAAABdY/_bnz6_z2xa4/s1600/IMG_20150210_194933194.jpg" height="223" width="400" /></a></div>
<br />
<br />
Una vez desmontado el embellecedor , ya veremos la lente, ahora es hora de aflojarla. Para ello utilicé una pieza de aluminio de unos 7 mm de grosor con un agujero de 18 mm en el centro al que se le aplico un corte con un disco de 1 mm en un lateral. Una foto vale más que mil palabras…<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-0VjVN6pZrIE/VOiTk93U4iI/AAAAAAAABds/MQc06ifT-tw/s1600/IMG_20150210_195013340.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="http://1.bp.blogspot.com/-0VjVN6pZrIE/VOiTk93U4iI/AAAAAAAABds/MQc06ifT-tw/s1600/IMG_20150210_195013340.jpg" height="223" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-RJoJTeXzzMQ/VOiTys0kgWI/AAAAAAAABdw/Ppcpj1wf4bA/s1600/IMG_20150210_195527443.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-RJoJTeXzzMQ/VOiTys0kgWI/AAAAAAAABdw/Ppcpj1wf4bA/s1600/IMG_20150210_195527443.jpg" height="223" width="400" /></a></div>
<br />
Con esta pieza y la ayuda de una alicate de presión podemos fijar fuertemente y uniformemente la lente sin romperla. Hay que ajustar las alicates de presión poco a poco! También hay algun bruto que aprieta la lente directamente con las alicates de presión, yo no os lo recomiendo pues correis el riesgo sin quedaros con vuestra lente original , sin mencionar de los mordiscos feos que vais a dejar en la lente, pero cada uno que haga lo que quiera!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IK3B2z7Ek0o/VOiTcf6ErWI/AAAAAAAABdg/-V5nj3DdENA/s1600/IMG_20150210_195544701.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-IK3B2z7Ek0o/VOiTcf6ErWI/AAAAAAAABdg/-V5nj3DdENA/s1600/IMG_20150210_195544701.jpg" height="223" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Acto seguido intentaremos girar suavemente en ambos sentidos haciendo un vaivén hasta que escuchemos unos clicks que significaran en principio que hemos roto la fijación que habia entre la lente y el porta lente. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora ya es cuestion de aflojar la lente durante bastantes vueltas, ya que el paso de rosca es de 0.5mm. hasta que este totalmente liberada de nuestra cámara.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-9krK4arCyJQ/VOiVQnL3QjI/AAAAAAAABd8/m80ovtz_8kU/s1600/IMG_20150210_200138735.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9krK4arCyJQ/VOiVQnL3QjI/AAAAAAAABd8/m80ovtz_8kU/s1600/IMG_20150210_200138735.jpg" height="223" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez la lente ya está fuera, ya podemos respirar tranquilos, pues hemos pasado por el punto con más riesgo del proceso.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora vamos a eliminar los restos del fijador mediante el uso de un elemento punzante, yo sigo con mi cuchillo de cortar patatas! Este proceso consiste en arrancar pequeñas partes de fijador para evitar que entren en el habitaculo del sensor CMOS. Si podeis hacerlo con la camara hacia abajo os asegurareis un poquito más que los restos van hacia el suelo.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-UB-CYdPA1Ac/VOianR10kAI/AAAAAAAABeU/yVO26YfZhas/s1600/IMG_20150210_195849543.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-UB-CYdPA1Ac/VOianR10kAI/AAAAAAAABeU/yVO26YfZhas/s1600/IMG_20150210_195849543.jpg" height="223" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Cuando acabeis de arrancar los restos (es muy rápido de hacer), si teneis una pera de las que se usan/usaban para limpiar de polvo los sensores CMOS de las DSLR's es buen momento para aplicarlo aqui también.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora ya nos toca roscar nuestra nueva lente. En mis caso monté una de 5.4 mm de <a href="http://www.ostrc.com/collections/gopro-accessories/products/ost-10mp-5-4mm-replacement-lens-for-gopro">OSTR</a>. Os recomiendo que le pongais teflón a la rosca para que quede el conjunto lente-soporte más fuerte y evitareis polvo y humedad.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para un correcto ajuste del foco de la lente seria recomendable conectar nuestra camara a un monitor cuanto más grande mejor mediante la salida HDMI de la pequeña cámara situado encima del compartimento de la microSD. Si no disponeis de el cable necesario podeis hacerlo monitorizando la imágen desde la APP de GoPro, que será más lento pues existe un retardo de almenos dos segundos en la imágen. En mi caso son pocas las vueltas que hay roscadas (3 o 4 a lo máximo), por lo que no empeceis a darle muchas vueltas a la lente o debereis desenroscarla de nuevo casi…</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Y wualá! Ya tenemos una lente sin distorsión montada en nuestra GoPro, ya podemos salir a probarla. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-U_ahpu7tzfs/VOijs0DCGKI/AAAAAAAABew/zkMQqZB81vM/s1600/IMG_20150210_200224829.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-U_ahpu7tzfs/VOijs0DCGKI/AAAAAAAABew/zkMQqZB81vM/s1600/IMG_20150210_200224829.jpg" height="223" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Obviamente hemos perdido mucho campo de visión y ahora tendreis que afinar más si lo que os gustan son los selfies!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Os dejo unos links que quizás os puedan ser interesantes:<br />
<br />
<a href="http://ragecams.com/">http://ragecams.com/</a><br />
<a href="http://stuntcams.com/shop/gopro-hd-accessories/gopro-plus-lenses-c-23_43_115.html">http://stuntcams.com/shop/gopro-hd-accessories/gopro-plus-lenses-c-23_43_115.html</a><br />
<a href="http://www.back-bone.ca/">http://www.back-bone.ca/</a><br />
<br />
Saludos y DIY !</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com17tag:blogger.com,1999:blog-2463929896161090560.post-76370502866805251992015-02-18T11:40:00.000-08:002015-02-18T11:40:22.206-08:00GoPro panorámicasHoy nos vamos a salir de las Gigapanorámicas realizadas con robots para explicar como procesar una foto panorámica realizada desde una GoPro.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-5bA6kkSvE9E/VN9nBD3igjI/AAAAAAAABZg/RPUZhyMhQiI/s1600/images.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-5bA6kkSvE9E/VN9nBD3igjI/AAAAAAAABZg/RPUZhyMhQiI/s1600/images.jpeg" height="200" width="400" /></a></div>
<div style="text-align: justify;">
A la hora de realizar la panorámica y a diferencia de las reflex y otras cámaras en las que podemos definir la exposición , con las pequeñas GoPro deberemos tomarlas un poco a "saco" pues los menús de las mismas dan para poco. La cosa se complica más cuando no podemos pre-visualizar lo que estamos fotografiando. Aqui es cuando un <a href="http://es.shop.gopro.com/EMEA/accessories/lcd-touch-bacpac/ALCDB-401.html#/start=1">bacpac</a> seria ideal. Otra opción es monitorizar desde un dispositivo Android o iOS mediante la <a href="http://shop.gopro.com/softwareandapp/gopro-app/GoPro-App.html">app </a>correspondiente, aqui hay que decir que tenemos un retardo de un par de segundos entre lo que ve la cámara y lo que vemos desde nuestro dispositivo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez tengamos realizadas las capturas es la hora del procesado, pero aqui surgen más problemas: la lente original de la GoPro 3 y 4 es un ojos de pez que nos distorsiona mucho la imagenes que captemos y que deberemos "aplanar".</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para ello empezamos abriendo el Adobe Bridge y seleccionando todas las imágenes que formaran parte de nuestra panorámica.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nGVSE0OdtoM/VN9qzgfY6hI/AAAAAAAABZs/a72pxSM7CGo/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.32.31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-nGVSE0OdtoM/VN9qzgfY6hI/AAAAAAAABZs/a72pxSM7CGo/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.32.31.png" height="250" width="400" /></a></div>
<br />
<br />
<div style="text-align: justify;">
A continuación las abrimos con el CameraRaw (por ejemplo con el botón derecho del ratón y apretando sobre Abrir en CameraRAW) , si ya sé que no son RAW's, pero si se deja… y digo que por si se deja porque en uno de mis ordenadores me los abre y en el otro no, y en ambos hay el mismo software instalado (creo que el problema viene de una mala desinstalación previa).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-9t2eyy7h5s0/VN9sk0kg6fI/AAAAAAAABZ4/D3hjtwvihLk/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.38.39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-9t2eyy7h5s0/VN9sk0kg6fI/AAAAAAAABZ4/D3hjtwvihLk/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.38.39.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez abierto el CameraRAW buscaremos en la barra izquierda la foto más representativa (en mi caso es la tercera de once imagenes) que nos servirá de referencia a la hora de revelar, luego se nos abrirá en grande y acto seguido pulsaremos sobre <b>Seleccionar todo</b> en la esquina superior izquierda, esto lo haremos para que todo lo que hagamos afecte a todas las fotos por igual.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-7T1XxwvZMzo/VN9uEh5Jw5I/AAAAAAAABaA/rPj08lyc5tM/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.46.24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-7T1XxwvZMzo/VN9uEh5Jw5I/AAAAAAAABaA/rPj08lyc5tM/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B16.46.24.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora, nos iremos al sexto icono de los que hay debajo del histograma llamado <b>Correcciones de lente</b> y seleccionaremos la opción <b>Activar correcciones de perfil de lente</b> con lo que nos cargaremos la distorsión producida por el ojo de pez, a mi automaticamente me ha salido que es una GoPro Hero 4 Black, si utilizais cualquier otra lente en principio nos aparecería . La base de datos de cameraRAW ya tiene por defecto muchas lentes y si uno es muy sibarita siempre puede corregir estos defectos de distorsión.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-pPcHSxIyV60/VN9v0VCB-BI/AAAAAAAABaM/17W9qS43JxI/s1600/Sin%2Bti%CC%81tulo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-pPcHSxIyV60/VN9v0VCB-BI/AAAAAAAABaM/17W9qS43JxI/s1600/Sin%2Bti%CC%81tulo.jpg" height="320" width="296" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A simple vista cuesta de apreciar el cambio, cuando lo hagais vosotros con el ordenador os dareis cuenta, todo y eso pongo unas capturas de ejemplo:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-CWIl8hUqPpE/VN90RcZzAcI/AAAAAAAABaY/__QVrkeUznA/s1600/Sin%2Bti%CC%81tulo2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-CWIl8hUqPpE/VN90RcZzAcI/AAAAAAAABaY/__QVrkeUznA/s1600/Sin%2Bti%CC%81tulo2.jpg" height="260" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si os fijais en los edificios de los extremos han "desaparecido" elementos, esto hay que tenerlo en cuenta sobretodo a la hora de hacer panorámicas , incrementaremos el "solape" siendo generosos… La foto de la derecha es la original , mientras que la de la izquierda es la que ya tiene la distorsión de lente corregida.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A continuación "revelaríamos" todas las fotos a nuestro gusto, yo os voy a dar una pequeña pauta a tener en cuenta pero no soy ningún maestro del tema y si mirais en youtube hay muchos tutoriales.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para ello, lo primero que haremos es pulsar sobre el primer icóno llamado <b>básico</b> que hay debajo del histograma y que tiene forma de anillo de petalos del diafragma.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora aqui tenemos dos posibilidades: revelar todas las fotos y generar la panorámica o bién realizar la panorámica y luego revelar la foto resultante. Yo os explicaré con la primera posibilidad que es un poco menos lioso y es tal y como revelo las Gigapanes, debo decir que para el proceso de revelado de Gigapanes hay que verificar varias imágenes una y otra vez para intentar evitar aberraciones y conseguir un resultado de compromiso.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para ello volveremos a pulsar en el botón <b>Seleccionar todo</b> de la columna izquierda en su parte superior y a continuación vamos a ajustar la temperatura de la foto, para ello podemos hacerlo también de dos maneras:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
a.- Utilizando la <b>Herramienta de equilibrio de blancos</b> , el icono está encima de la foto principal (tercer icono , con forma de cuentagotas). </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Seleccionamos la herramienta y hacemos click sobre un punto que sabemos que era blanco o un gris neutro en nuestra foto .</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si no nos gusta el resultado quizás es que no hemos elejido un punto correcto, podemos volver a probar con otro punto.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
b.- Sistema a ojo: desplazaremos el deslizador de la barra que dice Temperatura (si nuestra foto fuera realmente un RAW veriamos que la escala aparecería expresada en grados Kelvin, para vuestra referencia una luz natural son unos 5000K)</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-9QTPQ36neFo/VN-ixBGNtOI/AAAAAAAABao/JbTFwXvz3UA/s1600/Sin%2Bti%CC%81tulo3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-9QTPQ36neFo/VN-ixBGNtOI/AAAAAAAABao/JbTFwXvz3UA/s1600/Sin%2Bti%CC%81tulo3.jpg" height="169" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si deseamos volver al ajuste inicial tan solo hay que seleccionar en el desplegable de la derecha la opción Equilibrio de blancos como se ha tomado.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A continuación revelaremos la foto fijándonos tanto en la imágen y en el histograma blanco que es el principal y con el que en principios nos deberíamos fijar. En una foto de paisaje deberia quedar más o menos como el siguiente :</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-oWt17Gwf1LM/VN-wKkn17CI/AAAAAAAABa4/uf-hn-05RUo/s1600/Sin%2Bti%CC%81tulo4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-oWt17Gwf1LM/VN-wKkn17CI/AAAAAAAABa4/uf-hn-05RUo/s1600/Sin%2Bti%CC%81tulo4.jpg" height="400" width="220" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Antes de nada , evitar pulsar sobre Auto, pues los resultados conseguidos no son siempre los más deseados.</div>
<div class="separator" style="clear: both; text-align: justify;">
En principio deberíamos seguir el mismo orden: Exposición, Contraste, Iluminaciones, Sombras, Blancos, Negros pero si quereis que quede bién hay que tocar los tiradores varias veces. Curiosidad: si os poneis encima del histograma con el ratón también podeis desplazarlo.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si subimos la <b>exposición</b> , nuestro histograma se desplazará hacia la derecha y tendrá más luz la fotografía, y si lo desplazamos hacia la izquierda , nuestra imagen se oscurecerá en global.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si incrementamos el valor del <b>contraste</b>, ensancharemos los extremos del histograma provocando un mayor contraste, pero al igual que el resto de los tiradores no es bueno abusar.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En <b>iluminaciones</b> ajustaremos las partes más iluminadas o claras de la fotografía, mientras que en sombras haremos el mismo efecto en las partes sombreadas, aqui es muy útil para potenciar aquellas partes que nos han quedado un poco oscuras y podemos ganar detalle, yo por ejemplo las sombras siempre las desplazo hacia positivo, no tiene mucho sentido en un paisaje oscurecer las partes oscuras…</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente nos quedan los <b>Blancos</b> y los <b>negros</b>, aqui podemos seleccionar en las pequeñas gotas que hay encima del histograma que nos servirá de ayuda si nos pasamos, apareciendo manchas azules o rojas en las zonas sub-expuestas y sobre-expuestas respectivamente. En este punto también hay otro "truquillo": una vez sobre estos deslizadores pulsar aparte del click del ratón a la tecla ALT de vuestro ordenador, a continuación la fotografia desaparecerá quedando la imagen toda blanca y a medida que desplazais los tiradores vereis que llega un punto dónde empiezan a aparecer las manchas azules y rojas. La idea es buscar el límite , aquel punto en que no aparezcan estan manchas, aunque yo discrepo ligeramente, si aparece una zona en rojo o azul pero en principio no nos hace dolor de ojos pues no pasa nada.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Acto seguido yo acostumbro a repetir la operación pero con pequeños cambios, optimizando a mi gusto, porque por encima de todo , las fotografias nos tienen que gustar a nosotros , y ya sabeis para gustos colores.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Seguidamente ajustaremos los tiradores que hay a continuación:</div>
<div class="separator" style="clear: both; text-align: justify;">
<b>Claridad</b>: Si lo desplazamos hacia la derecha perfilaremos todas las formas, que en paisaje nos suele interesar. Si nos desplazaramos a la derecha provocariamos un efecto de desenfoque en toda la imagen, o sea que en principio no interesa.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Intensidad y saturación: si los desplazamos hacia la izquierda cualquiera de ellos provocaremos que la imagen pierda todo el color , por lo que en principio los desplazaremos hacia la derecha ganado más rango dinámico pero siempre evitando hacer un HDR o un pastelazo!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QbXnQ7Lfxko/VN-6H1ewz3I/AAAAAAAABbI/bPuWgZzdPOM/s1600/Sin%2Bti%CC%81tulo5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-QbXnQ7Lfxko/VN-6H1ewz3I/AAAAAAAABbI/bPuWgZzdPOM/s1600/Sin%2Bti%CC%81tulo5.jpg" height="244" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Algo hemos ganado no ?</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Llegado este punto seria recomendable hacer un <b>guardar imágenes</b> (esquina inferior izquierda), y finalmente pulsar en <b>Hecho</b> (esquina inferior derecha) para salir del CameraRAW y volver al Bridge .</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez aqui , y de nuevo con todas las fotos seleccionadas, nos dirigiremos a la barra superior de herramientas a la opción <b>Herramientas > Photoshop > Photomerge</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-WVNDQVAbRkk/VODR5p-btII/AAAAAAAABbc/9KBDi9E9xA8/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.21.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-WVNDQVAbRkk/VODR5p-btII/AAAAAAAABbc/9KBDi9E9xA8/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.21.48.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A partir de aqui es cuando en realidad empezamos a crear la fusión de la panorámica. Acto seguido se nos abrirá la siguiente pantalla desde dónde podemos elejir el tipo de composición , por defecto en modo automático, pero es interesante probarlas todas para experimentar.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nwrRKYm6m6o/VOTfeY8S5vI/AAAAAAAABbs/uFNiGHtVMQU/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.22.01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-nwrRKYm6m6o/VOTfeY8S5vI/AAAAAAAABbs/uFNiGHtVMQU/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.22.01.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Las seleccionamos todas y pulsamos sobre OK, momento en el cual se empezará a generar, y dependiendo de vuestro ordenador, del tamaño y numero de fotos la cosa tardará más o menos. En mi caso este el resultado obtenido:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-GLa4mlVuDYM/VOTghke5ozI/AAAAAAAABb0/Qr4uh0P8nH8/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-GLa4mlVuDYM/VOTghke5ozI/AAAAAAAABb0/Qr4uh0P8nH8/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.07.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si os fijais en la esquina inferior derecha nos aparecen todas las imágenes y podemos ver en cada una de ellas la máscara que ha elejido photoshop para fusionar entre ellas para crear nuestra panorámica. Acto seguido para agrupar todas estas imágenes pulsaremos con el botón izquierdo de nuestro ratón encima de cualquiera del listado mencionado (debén estar todas seleccionadas!) y se nos abrirá un menú, en el cual pulsaremos sobre <b>Acoplar imagen</b>.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-yzxpx3Sgqxc/VOTiGB4FQWI/AAAAAAAABcA/4xoyXQlxYqQ/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.37.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-yzxpx3Sgqxc/VOTiGB4FQWI/AAAAAAAABcA/4xoyXQlxYqQ/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.37.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora ya podriamos recortar pero antes sin muchos esfuerzos intentaremos rellenar ese espacio en blanco y aprovechar hasta un límite razonable, para ello utilizaremos una función del photoshop muy interesante : el relleno</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Primero de todo en la barra vertical de iconos de nuestra izquierda seleccionaremos la <b>herramienta varita mágica </b>y acto seguido haremos click sobre la superficie blanca de nuestra panorámica para seleccionarla.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-L07L2gCEA0c/VOTi65gDgxI/AAAAAAAABcI/sL-KIlB8nuU/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-L07L2gCEA0c/VOTi65gDgxI/AAAAAAAABcI/sL-KIlB8nuU/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.23.57.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A continuación en la barra superior de herramientas iremos a <b>Edición</b> y luego en <b>Rellenar</b>.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-FuEo_UmlGag/VOTl478B2zI/AAAAAAAABcU/0kZmOHjuIMA/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-FuEo_UmlGag/VOTl478B2zI/AAAAAAAABcU/0kZmOHjuIMA/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.10.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Se nos aparecerá la siguiente pantalla dónde deberemos comprobar que esté seleccionado <b>contenido > según el contenido</b>, y la <b>opacidad</b> que esté al 100% , acto seguido <b>Ok</b></div>
<div class="separator" style="clear: both; text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-h_UtbIb7ZyM/VOTmQcApz5I/AAAAAAAABcc/jvXTqgD2jWc/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-h_UtbIb7ZyM/VOTmQcApz5I/AAAAAAAABcc/jvXTqgD2jWc/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.15.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Y wualaaaaá! Mágia ! Nota > Según el tamaño global de la foto no os va dejar hacer el relleno , por lo que debereis hacer selecciones más pequeñas (con otras herramientas tipo rectángulo) e ir rellenando poco a poco.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-3lH9DPa5_Ak/VOTncQsmz1I/AAAAAAAABco/jehwWLZ9zuc/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-3lH9DPa5_Ak/VOTncQsmz1I/AAAAAAAABco/jehwWLZ9zuc/s1600/Captura%2Bde%2Bpantalla%2B2015-02-14%2Ba%2Bla(s)%2B22.24.57.png" height="250" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora ya sólo nos falta recortarla a nuestro gusto, pero a partir de aqui ya no hay grande a comentar.</div>
<div class="separator" style="clear: both; text-align: justify;">
Saludos y DIY ! </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-76795266121111478262015-01-30T06:31:00.002-08:002015-01-30T06:31:53.250-08:00Gigapanorámicas 2014 (2 de 2)<div style="text-align: justify;">
Y aquí la segunda parte del resumen de fotografias gigapanorámicas realizadas durante el 2014. Todas las mostradas a continuación de este post están realizadas con el objetivo Tamron 70-300 ajustado a 300mm (equivalente a 450 mm en el formato DX de Nikon) y con el robot panorámico XS y el cuerpo Nikon d5200.</div>
<br />
<b><u>Sallent</u></b> <a href="http://gigapan.com/gigapans/156564">http://gigapan.com/gigapans/156564</a><br />
Fecha 8 Junio 2014<br />
1326 capturas<br />
Resolución final = 23.28 GPx<br />
Exposición = 1/400<br />
Diafragma = f/25<br />
ISO = 2000<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-s4j4dBt8JIo/VMuJI-6wyLI/AAAAAAAABXM/o9RMNYkF_RU/s1600/156564-952x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-s4j4dBt8JIo/VMuJI-6wyLI/AAAAAAAABXM/o9RMNYkF_RU/s1600/156564-952x360.jpg" height="242" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<b><u>Martorell </u></b> <a href="http://gigapan.com/gigapans/156755">http://gigapan.com/gigapans/156755</a><br />
Fecha 7 Junio 2014<br />
1296 capturas<br />
Resolución final = 26.83 GPx<br />
Exposición = 1/320<br />
Diafragma = f/25<br />
ISO = 2000<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-gIznIM_P594/VMuJvcX3i7I/AAAAAAAABXU/att68ujX9ec/s1600/156755-837x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-gIznIM_P594/VMuJvcX3i7I/AAAAAAAABXU/att68ujX9ec/s1600/156755-837x360.jpg" height="274" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<b><u>Balsareny </u></b> <a href="http://gigapan.com/gigapans/156947">http://gigapan.com/gigapans/156947</a><br />
Fecha 14 Junio 2014<br />
1.372 capturas<br />
Resolución final = 27.02 GPx<br />
Exposición = 1/400<br />
Diafragma = f/25<br />
ISO = 2000<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-v6HtLpRBzRs/VMuKSuzqfMI/AAAAAAAABXc/elylqE1IMbQ/s1600/156947-963x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-v6HtLpRBzRs/VMuKSuzqfMI/AAAAAAAABXc/elylqE1IMbQ/s1600/156947-963x360.jpg" height="238" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Manresa desde els dipòssits de les agües </u></b> <a href="ttp://gigapan.com/gigapans/157759">http://gigapan.com/gigapans/157759</a><br />
Fecha 21 Junio 2014<br />
1300 capturas<br />
Resolución final = 30.76 GPx<br />
Exposición = 1/800<br />
Diafragma = f/20<br />
ISO = 3200<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Lyh_Q1jmnzw/VMuK3vP7weI/AAAAAAAABXk/G_bVrwW6BDE/s1600/157759-992x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Lyh_Q1jmnzw/VMuK3vP7weI/AAAAAAAABXk/G_bVrwW6BDE/s1600/157759-992x360.jpg" height="232" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />
<b><u>Montserrat desde Sant Joan </u></b> <a href="http://gigapan.com/gigapans/158154">http://gigapan.com/gigapans/158154</a><br />
Fecha 5 Junio 2014<br />
1080 capturas<br />
Resolución final = 19.97 GPx<br />
Exposición = 1/800<br />
Diafragma = f/20<br />
ISO = 3200<br />
Distancia focal = 300 mm.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Exu4SGRdJ60/VMuLY0rZYTI/AAAAAAAABXs/4caU_tAvwDc/s1600/158154-609x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Exu4SGRdJ60/VMuLY0rZYTI/AAAAAAAABXs/4caU_tAvwDc/s1600/158154-609x360.jpg" height="378" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Abadia de Montserrat </u></b> <a href="http://gigapan.com/gigapans/158627">http://gigapan.com/gigapans/158627</a><br />
Fecha 5 Junio 2014<br />
972 capturas<br />
Resolución final = 37.75 GPx<br />
Exposición = 1/640<br />
Diafragma = f/20<br />
ISO = 3200<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OZPtoXlOXto/VMuL714wuqI/AAAAAAAABX0/EeE64qPXq3g/s1600/158627-482x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-OZPtoXlOXto/VMuL714wuqI/AAAAAAAABX0/EeE64qPXq3g/s1600/158627-482x360.jpg" height="478" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<div style="text-align: justify;">
<div style="text-align: start;">
<b><u>Lurdeia (Bermeo) </u></b><a href="http://gigapan.com/gigapans/161278">http://gigapan.com/gigapans/161278</a></div>
<div style="text-align: start;">
Fecha 17 agosto 2014</div>
<div style="text-align: start;">
1316 capturas </div>
<div style="text-align: start;">
Resolución final = 30.76 GPx</div>
<div style="text-align: start;">
Exposición = 1/400</div>
<div style="text-align: start;">
Diafragma = f/25<br />
ISO = 2500<br />
Distancia focal = 300 mm.</div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-lOVPScGxSA4/VMuMet4MFhI/AAAAAAAABX8/P3gQXFRHmP0/s1600/161278-844x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-lOVPScGxSA4/VMuMet4MFhI/AAAAAAAABX8/P3gQXFRHmP0/s1600/161278-844x360.jpg" height="272" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>La foradada de Cantonigrós </u></b><a href="http://gigapan.com/gigapans/164688">http://gigapan.com/gigapans/164688</a></div>
<div style="text-align: start;">
Fecha 20 octubre 2014</div>
<div style="text-align: start;">
1064 capturas </div>
<div style="text-align: start;">
Resolución final = 24.50 GPx</div>
<div style="text-align: start;">
Exposición = 1/320</div>
<div style="text-align: start;">
Diafragma = f/7,1<br />
ISO = 6400<br />
Distancia focal = 300 mm.</div>
<div style="text-align: start;">
<br /></div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-tHKWIIeBhBs/VMuNQFLDV5I/AAAAAAAABYE/Ykga_toAfOQ/s1600/164688-674x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-tHKWIIeBhBs/VMuNQFLDV5I/AAAAAAAABYE/Ykga_toAfOQ/s1600/164688-674x360.jpg" height="340" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Camprodón </u></b><a href="http://gigapan.com/gigapans/164978">http://gigapan.com/gigapans/164978</a></div>
<div style="text-align: start;">
Fecha 25 Octubre 2014</div>
<div style="text-align: start;">
1023 capturas </div>
<div style="text-align: start;">
Resolución final = 35.84 GPx</div>
<div style="text-align: start;">
Exposición = 1/400</div>
<div style="text-align: start;">
Diafragma = f/10<br />
ISO = 400<br />
Distancia focal = 300 mm.</div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-_YMLoOtE9ic/VMuOIjxro4I/AAAAAAAABYM/BZ5i17gYtwc/s1600/164978-643x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-_YMLoOtE9ic/VMuOIjxro4I/AAAAAAAABYM/BZ5i17gYtwc/s1600/164978-643x360.jpg" height="358" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Fira Medieval d'oficis de Súria <a href="https://www.blogger.com/goog_436711941"> </a></u></b><a href="http://gigapan.com/gigapans/166036">http://gigapan.com/gigapans/166036</a></div>
<div style="text-align: start;">
Fecha 17 Noviembre 2014</div>
<div style="text-align: start;">
529 capturas </div>
<div style="text-align: start;">
Resolución final = 14.33 GPx</div>
<div style="text-align: start;">
Exposición = 1/640</div>
<div style="text-align: start;">
Diafragma = f/8<br />
ISO = 1250<br />
Distancia focal = 300 mm.</div>
<div style="text-align: start;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QMTIMhu0ceM/VMuOtv77QrI/AAAAAAAABYU/bjARQ7ksgYA/s1600/166036-527x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-QMTIMhu0ceM/VMuOtv77QrI/AAAAAAAABYU/bjARQ7ksgYA/s1600/166036-527x360.jpg" height="436" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Fira Medieval d'oficis de Súria 2 </u></b><a href="http://gigapan.com/gigapans/166784">http://gigapan.com/gigapans/166784</a></div>
<div style="text-align: start;">
Fecha 16 Noviembre 2014</div>
<div style="text-align: start;">
784 capturas </div>
<div style="text-align: start;">
Resolución final = 14.83 GPx</div>
<div style="text-align: start;">
Exposición = 1/640</div>
<div style="text-align: start;">
Diafragma = f/8<br />
ISO = 500<br />
Distancia focal = 300 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-lY16NX6Sc5A/VMuPt6nIzII/AAAAAAAABYg/DfwF9dw12pE/s1600/166784-511x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-lY16NX6Sc5A/VMuPt6nIzII/AAAAAAAABYg/DfwF9dw12pE/s1600/166784-511x360.jpg" height="450" width="640" /></a></div>
<br />
<br /></div>
<div class="" style="clear: both; text-align: justify;">
Y hasta aquí el resumen de Gigapanorámicas realizadas durante el pasado 2014. Ahora toca ir pensando en nuevos proyectos, que de tenerlos tengo, sólo es cuestión de tiempo, ganas y que los dias acompañen para obtener nítidas imágenes. DIY !</div>
<div>
<br /></div>
<div style="text-align: start;">
</div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-43502815268171903252015-01-30T04:13:00.001-08:002015-01-30T06:13:33.503-08:00Gigapanorámicas 2014 (1 de 2)<div style="text-align: justify;">
Durante principios del año pasado 2014 diseñé un nuevo robot , la versión XS mucho más fácil de transportar con el cual puedo trasladarlo a cualquier sitio sin muchas dificultades . Este robot está diseñado para mover objetivos más pequeños , todoterrenos que su relación peso-zoom no tienen nada que ver con el <a href="http://www.sigma-photo.es/objetivos/subgrupos.asp?idP=127" target="_blank">Sigma 150-500 f5-6.3</a>. Obviamente al utilizar menos zoom también son menos las fotos a realizar, menos consumo de bateria y menos resolución pero no por ello dejan de ser interesantes. También se reduce mucho el tiempo de procesado, redenderizado, y todo eso a la vez hace que la dedicación sea menor y en consequencia que se pueden llegar a hacer más capturas a lo largo del año. Durante el pasado 2014 fueron 21 gigapanorámicas completas, y dos de ellas las tuve que repetir por problemas que a continuación os contaré.<br />
<br />
Durante el inicio del año estube utilizando un <a href="http://www.nikon.es/es_ES/product/discontinued/nikkor-lenses/2013/18-200mm-f-3-5-5-6g-if-ed-af-s-vr-dx-zoom-nikkor" target="_blank">Nikkor 18-200 f3.5-5.6</a>, y las últimas están tomadas con un <a href="http://www.tamron.eu/es/objetivos/sp-af-70-300-f4-56-di-vc-usd/" target="_blank">Tamron 70-300 f4-5.6</a>, i todas con el "mismo" equipo, una cámara <a href="http://www.nikon.es/es_ES/product/digital-cameras/slr/consumer/d5200" target="_blank">Nikon d5200</a>. Y digo "mismo" porque a mitad de temporada empezó a aparecer unas motas de polvo raras en el sensor que misteriosamente provenian del terciopelo de un lateral del obturador, llegando a la conclusión que el espejo rascaba sobre el lateral derecho. No tengo ninguna foto pero parecia que tuviera mucha traya. Después de varias limpiezas de sensor junto la pera para soplar, los bastoncillos , el alcohol isopropílico quedaba operativa pero con la incertidumbre de esas "rascadas".<br />
<br />
Dias después realizando alguna gigapan escuchaba ruidos anormales en el obturador, como si se encallasen, momento en el cual y tras pausar el robot comprobé que debería llevar un número x de fotos según el contador del Arduino pero que me aparecía un numero inferior en las capturas de cámara. Me dejó intranquilo pero terminé con las capturas y una vez en casa comprobé que las cantidades no cuadraban, había perdido varias fotos aleatoriamente.<br />
<br />
Dias después en otra toma de capturas me pasó lo mismo, y aqui por suerte la mia pudé clonar partes de la imágen final para disimular, y no quedó mal!<br />
<br />
Entonces es cuando decidí cambiar el equipo, faltaba poco para el verano y queria hacer fotos en mi destino de vacaciones y no podia jugármela con un equipo que fallaba por lo que adquirí otra d5200 y la vieja la vendí en un sitio dónde compran camaras on-line, vamos que no sé que hacen luego con ellas pero que le pongan un precio sin haberla chequeado muy profesionales no son...<br />
<br /></div>
<div style="text-align: justify;">
Otra de las contramedidas que apliqué es en fotografias dónde hay muchos claros, y últimamente ya lo estoy haciendo en todas es la de implementar un retardo de 1 segundo entre capturas ya que últimamente veo que el led de "tarjeta ocupada" se queda muchas veces con un verde fijo , de esta manera me aseguro que no saturo el buffer de la camara y evito fallo en la grabación de datos.<br />
<br />
Este año sólo he realizado una foto con el robot grande + Sigma 150-500 concretamente la realizada en la Vall de Lord, el resto ha sido con el pequeñito que me ha dado muchas alegrias.<br />
<br />
Otra mejora "tonta" pero muy práctica ha sido la inclusión de la alimentación de la camara desde el mismo robot, ahora ya me olvido de como están las baterías. Pensad que en principio una bateria para la d5200 no deberia tener capacidad para hacer más de unas 500 fotos, y yo muchas veces he hecho de más de 800, jugandomela a quedarme sin batería. En el robot XS la cámara va fijada al propio balancín del robot y en pleno proceso mejor no desmontarla si no queremos perder el sólape. Pués bién, después de montar un step down y acoplar una batería clónica codificada la cosa ya funciona!<br />
<br />
La Nikon d5200 utiliza un tipo de baterias con codificación y la cámara se "entera" si las baterías son originales o clónicas bloqueando la funcionalidad de la cámara. Este tema está más que resuelto. Informar que a veces , en cámaras anteriores el firmware que venia de origen permitía el uso de baterías clónicas pero "grácias" a las actualizaciones se jode el invento! Conclusión: si vais a actualizar algo mirad antes que vais a ganar o a perder, no siempre estar a la última es lo mejor. Yo esta prueba la realizé con la d5200 "mala" que de origen venia con una versión 0 de firmware, al ponerle la 1 aún funcionaban las clónicas, con la versión 2 se acabó!</div>
<br />
<b><u>La Seu de Manresa</u></b> <a href="http://gigapan.com/gigapans/151600">http://gigapan.com/gigapans/151600</a><br />
Fecha 15 Marzo 2014<br />
576 capturas<br />
Resolución final = 10.31 GPx<br />
Exposición = 1/500<br />
Diafragma = f/16<br />
ISO = 1000<br />
Distancia focal = 200 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-xLFUd-zdzik/VMtMBwbMSUI/AAAAAAAABVo/CQaqqgNaS6o/s1600/151600-887x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-xLFUd-zdzik/VMtMBwbMSUI/AAAAAAAABVo/CQaqqgNaS6o/s1600/151600-887x360.jpg" height="257" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Súria desde el poble vell </u></b> <a href="http://gigapan.com/gigapans/151988">http://gigapan.com/gigapans/151988</a><br />
Fecha 23 Marzo 2014<br />
555 capturas<br />
Resolución final = 9.50 GPx<br />
Exposición = 1/200<br />
Diafragma = f/18<br />
ISO = 1000<br />
Distancia focal = 200 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-JFKgT3MMjcI/VMtN4SKsXbI/AAAAAAAABVw/CfQQRpWGYfg/s1600/151988-1296x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-JFKgT3MMjcI/VMtN4SKsXbI/AAAAAAAABVw/CfQQRpWGYfg/s1600/151988-1296x360.jpg" height="176" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Vall de Lord </u></b> <a href="http://gigapan.com/gigapans/152891">http://gigapan.com/gigapans/152891</a><br />
Fecha 5 Abril 2014<br />
2.955 capturas<br />
Resolución final = 49.05 GPx<br />
Exposición = 1/1000<br />
Diafragma = f/14<br />
ISO = 1600<br />
Distancia focal = 700 mm. (500mm + TC1.4x)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dWWDjSc9vo0/VMtOYa6GXSI/AAAAAAAABV4/6KTqlBowqUk/s1600/152891-968x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-dWWDjSc9vo0/VMtOYa6GXSI/AAAAAAAABV4/6KTqlBowqUk/s1600/152891-968x360.jpg" height="238" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Plaça de St. Domènec de Manresa </u></b> <a href="http://gigapan.com/gigapans/153338">http://gigapan.com/gigapans/153338</a><br />
Fecha 14 Abril 2014<br />
852 capturas<br />
Resolución final = 13.69 GPx<br />
Exposición = 1/400<br />
Diafragma = f/22<br />
ISO = 1600<br />
Distancia focal = 200 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-A81BmOEzSMg/VMtO62x6N5I/AAAAAAAABWA/j_dSV_1Q8RI/s1600/153338-796x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-A81BmOEzSMg/VMtO62x6N5I/AAAAAAAABWA/j_dSV_1Q8RI/s1600/153338-796x360.jpg" height="288" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />
<b><u>Collbaix </u></b> <a href="http://gigapan.com/gigapans/153421">http://gigapan.com/gigapans/153421</a><br />
Fecha 17 abril 2014<br />
608 capturas <br />
Resolución final = 10.98 GPx<br />
Exposición = 1/400<br />
Diafragma = f/22<br />
ISO = 1000<br />
Distancia focal = 200 mm.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZaLSBIid59s/VMtPfmGDXqI/AAAAAAAABWI/oTxqRrUHFKE/s1600/153421-1204x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZaLSBIid59s/VMtPfmGDXqI/AAAAAAAABWI/oTxqRrUHFKE/s1600/153421-1204x360.jpg" height="190" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<b><u>Cardona </u></b> <a href="http://gigapan.com/gigapans/153499">http://gigapan.com/gigapans/153499</a><br />
Fecha 19 abril 2014<br />
468 capturas <br />
Resolución final = 8.57 GPx<br />
Exposición = 1/640<br />
Diafragma = f/16<br />
ISO = 1000<br />
Distancia focal = 200 mm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-6HIx-zVavG0/VMtQLgawLvI/AAAAAAAABWQ/G8nVfJI32J0/s1600/153499-838x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-6HIx-zVavG0/VMtQLgawLvI/AAAAAAAABWQ/G8nVfJI32J0/s1600/153499-838x360.jpg" height="274" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<div style="text-align: justify;">
<div style="text-align: start;">
<b><u>Barcelona desde el turó de la Rovira </u></b><span style="text-align: justify;"><a href="http://gigapan.com/gigapans/155386">http://gigapan.com/gigapans/155386</a></span></div>
<div style="text-align: start;">
Fecha 27 abril 2014</div>
<div style="text-align: start;">
693 capturas </div>
<div style="text-align: start;">
Resolución final = 11.93 GPx</div>
<div style="text-align: start;">
Exposición = 1/500</div>
<div style="text-align: start;">
Diafragma = f/20<br />
ISO = 1000<br />
Distancia focal = 200 mm.</div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-DQqws-Ma-JA/VMtQ0FIFZyI/AAAAAAAABWY/jEpECmOgaYE/s1600/155386-930x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-DQqws-Ma-JA/VMtQ0FIFZyI/AAAAAAAABWY/jEpECmOgaYE/s1600/155386-930x360.jpg" height="246" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Barcelona desde Puig Castellar </u></b><span style="text-align: justify;"><a href="http://gigapan.com/gigapans/155459">http://gigapan.com/gigapans/155459</a></span></div>
<div style="text-align: start;">
Fecha 27 abril 2014</div>
<div style="text-align: start;">
capturas </div>
<div style="text-align: start;">
Resolución final = 5.87 GPx</div>
<div style="text-align: start;">
Exposición = 1/500</div>
<div style="text-align: start;">
Diafragma = f/20<br />
ISO = 1000<br />
Distancia focal = 200 mm.</div>
<div style="text-align: start;">
<br /></div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-1Ds_ZCFunmM/VMtRbrZGrHI/AAAAAAAABWk/6YREqaUKDSo/s1600/155459-1350x168.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-1Ds_ZCFunmM/VMtRbrZGrHI/AAAAAAAABWk/6YREqaUKDSo/s1600/155459-1350x168.jpg" height="76" width="640" /></a></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Plà de Bages </u></b><span style="text-align: justify;"><a href="http://gigapan.com/gigapans/155500">http://gigapan.com/gigapans/155500</a></span></div>
<div style="text-align: start;">
Fecha 3 mayo 2014</div>
<div style="text-align: start;">
532 capturas </div>
<div style="text-align: start;">
Resolución final = 8.81 GPx</div>
<div style="text-align: start;">
Exposición = 1/640</div>
<div style="text-align: start;">
Diafragma = f/20<br />
ISO = 1600<br />
Distancia focal = 200 mm.</div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-M7ug6aF7JaA/VMtSNrWRzyI/AAAAAAAABW0/_-3z-mEAJek/s1600/155500-766x360.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-M7ug6aF7JaA/VMtSNrWRzyI/AAAAAAAABW0/_-3z-mEAJek/s1600/155500-766x360.jpg" height="300" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: start;">
<b><u>Sant Joan de Vilatorrada<a href="https://www.blogger.com/goog_436711941"> </a></u></b><span style="text-align: justify;"><a href="http://gigapan.com/gigapans/155557">http://gigapan.com/gigapans/155557</a></span></div>
<div style="text-align: start;">
Fecha 23 mayo 2014</div>
<div style="text-align: start;">
816 capturas </div>
<div style="text-align: start;">
Resolución final = 14.50 GPx</div>
<div style="text-align: start;">
Exposición = 1/640</div>
<div style="text-align: start;">
Diafragma = f/20<br />
ISO = 1600<br />
Distancia focal = 200 mm.</div>
<div style="text-align: start;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Zr5bHrW346U/VMtSx59eNXI/AAAAAAAABW8/F3fjQd_LBaY/s1600/155557-1350x337.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Zr5bHrW346U/VMtSx59eNXI/AAAAAAAABW8/F3fjQd_LBaY/s1600/155557-1350x337.jpg" height="158" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Y hasta aquí la primera mitad del resumen de Gigapanorámicas realizadas durante el pasado 2014.</div>
<div style="text-align: start;">
<br /></div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-9509958349880314142014-12-07T10:37:00.001-08:002014-12-08T09:49:01.143-08:00USB On the go !<div style="text-align: justify;">
Hace semanas en una sesión de light painting observé a un asistente que tenia conectada su Nikon a un telefono móvil el cual utilizaba como Live View.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Yo como que soy de las cosas a lo grande pensé…¿y en una tablet ?</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Me puse a investigar un poco y la cosa es facilísima!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Sólo necesitamos nuestra reflex (Canon , Sony y Nikon funcionan) , un dispositivo android (*) y un cable USB OTG .</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-7L8S_Ut0yeI/VISVHHZ5S4I/AAAAAAAABTw/gdGB7PA27sc/s1600/usb-otg-logo-680x339.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-7L8S_Ut0yeI/VISVHHZ5S4I/AAAAAAAABTw/gdGB7PA27sc/s1600/usb-otg-logo-680x339.png" height="159" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El cable adaptador USB OTG (On The Go!) nos permitirá usar nuestro dispositivo android como si se tratara de un disparador remoto con las funcionalidades básicas de nuestra cámara. Obviamente no podremos cambiar el zoom ni enfocar , pero como que en principio usaremos el Live View es posible que lo veamos todo más grande y nos cueste menos enfocar.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Os dejo un <a href="http://www.elandroidelibre.com/2013/03/todo-sobre-el-usb-otg-que-es-como-se-usa-es-compatible-mi-smartphone.html" target="_blank">link</a> para que aprendais un poco más de que es un USB OTG. Al fin y al cabo lo único que lo diferencia es un simple puente por lo que externamente no podéis distinguirlos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Existen tanto para mini como para micro USB.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-xSkp9PVBhn8/VISYBtkqCsI/AAAAAAAABUM/zMKk4z_HaYk/s1600/images.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xSkp9PVBhn8/VISYBtkqCsI/AAAAAAAABUM/zMKk4z_HaYk/s1600/images.jpeg" /></a></div>
<br />
<br />
Si sois manitas y os lo quereis fabricar, es muy simple, con las siguientes imágenes vereis que es un pim pam, pero bueno, en eBay por poco más de un euro podeis tenerlo en casa…<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4rkDkHHXmkI/VISXJ-shrLI/AAAAAAAABUA/5aTl0u8D8B8/s1600/350x700px-LL-70caff61_usbcable.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4rkDkHHXmkI/VISXJ-shrLI/AAAAAAAABUA/5aTl0u8D8B8/s1600/350x700px-LL-70caff61_usbcable.jpeg" height="183" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-r9XwWbdYRN4/VISXJRd_XDI/AAAAAAAABT8/Vk_IG6OXZEk/s1600/350x700px-LL-dbfd8cfd_difference_circuit_271738111300.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-r9XwWbdYRN4/VISXJRd_XDI/AAAAAAAABT8/Vk_IG6OXZEk/s1600/350x700px-LL-dbfd8cfd_difference_circuit_271738111300.jpeg" height="165" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
El tutorial , en inglés , y estas imagenes podeis encontrarlas en el siguiente <a href="http://www.head-fi.org/t/666267/diy-otg-micro-usb-b-cable-to-usb-b-tutorial" target="_blank">link</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Yo por ejemplo he logrado sin ningún esfuerzo conectar mi Nikon d300s y la d5200 a una tablet china, simplemente he necesitado un simple cable más USB mini a USB.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Obviamente si conectamos nuestra reflex a nuestro dispositivo android mediante el cable USB OTG la cosa no hará nada, necesitamos una aplicación, en mi caso utilizo DslrDashboard, esta aplicación si vais a utilizarla en vuestro Android la podeis descargar gratis desde la <a href="https://play.google.com/store/apps/details?id=com.dslr.dashboard&hl=es" target="_blank">Play Store</a>, o bién entrais en su <a href="http://dslrdashboard.info/downloads/" target="_blank">web</a>, desde la cual he observado que también existe esta aplicación para Windows, Linux y Mac OS. En mi caso la descargé para Mac Os y como prueba de ello un pantallazo! Si vais a utilizar un ordenador , tan sólo necesitareis el cable USB típico para enlazar vuestra camara al ordenador. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-TjjOQKdE55Y/VISZmuYbQ8I/AAAAAAAABUY/D3-oulfRR8Y/s1600/Captura%2Bde%2Bpantalla%2B2014-12-07%2Ba%2Bla(s)%2B19.16.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-TjjOQKdE55Y/VISZmuYbQ8I/AAAAAAAABUY/D3-oulfRR8Y/s1600/Captura%2Bde%2Bpantalla%2B2014-12-07%2Ba%2Bla(s)%2B19.16.08.png" height="400" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Lo que si que he podido probar es directamente desde mis dispositivos Android:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-KhGB5D23LLI/VISaK8cbncI/AAAAAAAABUg/modz20sgnHA/s1600/P1020033.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-KhGB5D23LLI/VISaK8cbncI/AAAAAAAABUg/modz20sgnHA/s1600/P1020033.JPG" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Y aquí todo el conjunto:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-v6Rl9bcDaYo/VISasBMC7aI/AAAAAAAABUo/tk4gPktWxYA/s1600/P1020030.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-v6Rl9bcDaYo/VISasBMC7aI/AAAAAAAABUo/tk4gPktWxYA/s1600/P1020030.JPG" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Aunque no venga al caso, también nos puede servir este cable USB OTG para conectar un pen a nuestro Android para descargar fotos, un teclado, un ratón…</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Por cierto, creo recordar que en nuestro dispositivo Android, al igual que en el ordenador se nos genera una carpeta dónde se nos grabaran también las fotos que vamos haciendo. Una de las pegas es la velocidad que será un poco lenta a la hora de previsualizar con cierto retardo, pero si la cosa va de bodegones no hay problema!</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Por cierto, si os habéis quedado curioseando sobre que mini tripode utilizo, se trata de un dos en uno: Es un Tripode <a href="http://www.amazon.com/Slik-Mini-Pro-Tripod-2-Way-Tilt/dp/B000ASTKWQ" target="_blank">Silk Mini-Pro</a> al que le he adaptado una rótula <a href="http://www.manfrotto.com/mini-ball-head-with-rc2" target="_blank">Manfrotto 494RC2</a> con el cual puedo utilizar para realizar fotos desde el nivel del suelo sin tener que utilizar un tripode más grande (obviamente cambia el punto de vista normalmente). Una de las ventajas es que me cabe en la mochila y no me pesa, pero hay que ir con cuidado a la hora de compensar los pesos pues tiene tendencia a caer hacia delante.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A jugaaar !</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com1tag:blogger.com,1999:blog-2463929896161090560.post-56642898459704589452014-11-09T07:59:00.000-08:002014-11-09T08:09:26.640-08:00How I built a Huge mega giga-panoramic robot<span style="color: #f3f3f3; font-family: Arial, sans-serif; font-size: 13px; line-height: 20px;">Published on DIY Photography </span><a href="http://www.diyphotography.net/built-huge-mega-giga-panoramic-robot/" style="font-family: Arial, sans-serif; font-size: 13px; line-height: 20px;">http://www.diyphotography.net/built-huge-mega-giga-panoramic-robot/</a><br />
<div class="entry-content" itemprop="text" style="box-sizing: border-box; font-family: Arial, sans-serif; font-size: 13px; line-height: 20px;">
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Published on DIY Petapixel </span><a href="http://petapixel.com/2014/10/28/how-i-built-a-huge-mega-giga-panoramic-robot/">http://petapixel.com/2014/10/28/how-i-built-a-huge-mega-giga-panoramic-robot/</a><br />
<span style="color: #f3f3f3;"><br /></span><img alt="giga-pano-v2-04" class="aligncenter size-large wp-image-14860" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-v2-04-670x446.jpg" height="446" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Today I want to share how I created a few huge, Gigapixel photos, using a DIYed panoramic head. Actually, it is not a panoramic head because it not only goes right and left, but also up and down.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I’ve been a big fan of panoramic photography and of landscape in general for a long time. But four years ago I was climbing a mountain and the view from the top simply took my breath away. I felt an urgent need to share the image with people don’t climb and therefore will never get access to such views.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Here is the thing though, standard photos do not have enough details. Our eyes have far more resolution that your standard digital camera, so a new project began: I wanted to build the best Gigapan Robot – an automated panoramic head for DSLR.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">[editor's note: things get highly </span><br />
<del style="box-sizing: border-box;"><span style="color: #f3f3f3;">nerdy</span></del><span style="color: #f3f3f3;"> techy from this point on]</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span id="more-14687" style="box-sizing: border-box; color: #f3f3f3;"></span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I got inspired by some pro grade products, but could not find one that fits my needs: total control and A LOT of weight. The idea is to move a <a href="http://www.amazon.com/exec/obidos/ASIN/B001ET5U92/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Nikon D90</a> (about 650 grams) body mounted with a <a href="http://www.amazon.com/exec/obidos/ASIN/B001542X64/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Sigma 150-500mm lens</a> (1.9 Kg) at small increments on two axis overlapping images in both the vertical and horizontal axis.</span></div>
<h2 style="box-sizing: border-box; font-size: 2.6rem; font-weight: 500; line-height: 1.2; margin: 0px 0px 1.6rem; text-transform: uppercase;">
<span style="color: #f3f3f3;">
GIGA-PANORAMIC ROBOT V1.0</span></h2>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-v1-02" class="aligncenter size-large wp-image-14855" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-v1-02-670x502.jpg" height="502" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Incandescently, just a few days prior to climbing, my friends (Alex & Joan) gave to a quick down about <a href="http://arduino.cc/" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Arduino</a>: it’s a small micro controller with open source software and a lot of expansion options: control motors & sensors and interact with inputs and outputs just like a small PLC.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I’ve had some PLC experience so I was up for the task. only two minor items remained: learn Arduino and build a robot.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">My first step was to buy an <a href="http://www.amazon.com/exec/obidos/ASIN/B006H06TVG/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Arduino UNO</a> and a stepper motor. This stepper motor moves by small increments, around 200 steps for a complete turn. If I can control the movement of the motor , I can control the movement of the camera, now I just needed the write the software.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I took me six months, but I had my robot finished, it was time to test it out.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">My first photo - 1098 shots nearing 10 GigaPixels – turned Ok after rendered with <a href="http://www.kolor.com/image-stitching-software-autopano-giga.html" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">AutoPanoGiga</a>.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-v2-02" class="aligncenter size-large wp-image-14858" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-v2-02-670x376.png" height="376" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">But while the final results were good photo-wise, I needed to make some improvements to reduce the weight and size of the robot. It was impossible to bring the robot over the mountains. To get it up I would have to split the thing between more than a handful of people, the weight of all parts it’s over 35 kilos.</span></div>
<h2 style="box-sizing: border-box; font-size: 2.6rem; font-weight: 500; line-height: 1.2; margin: 0px 0px 1.6rem; text-transform: uppercase;">
<span style="color: #f3f3f3;">
GIGA-PANORAMIC ROBOT V2.0</span></h2>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-v2-03" class="aligncenter size-large wp-image-14859" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-v2-03-670x446.jpg" height="446" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Next step was to do some software optimizations, install two wheels and add two aluminum. Now it’s easier to lag around. I still had a big risk of damaging a stepper motor while hiking on rough terrains at the mountains, so this v1.5 was not good enough for me, and I decided to re-design the robot over the next winter.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">For the version 2.0 I used a geared stepper motor for the horizontal axis movement, and stronger motor for the others axis.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px; text-align: center;">
<span style="color: #f3f3f3;"><iframe allowfullscreen="" frameborder="0" height="377" src="https://www.youtube.com/embed/sdoRbd9j15M?feature=oembed" style="box-sizing: border-box; max-width: 100%;" width="670"></iframe></span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">for control I am still using an Arduino platform, and using switches I can modify the settings of the robot (stuff like zoom, camera type, overlap %, and more).</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">With this robot I created a 99GPx Gigaphoto of my village, S.ria, a potash village in the center of Catalonia, near Barcelona . It is made out of 4520 single shots. And the magnification is astounding: <a href="http://www.amazon.com/exec/obidos/ASIN/B00AXTQR5U/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Nikon d5200 body</a> + <a href="http://www.amazon.com/exec/obidos/ASIN/B001542X64/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Sigma 150-500</a> @ 500 mm + <a href="http://www.amazon.com/exec/obidos/ASIN/B00009XV7A/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">1.4x teleconverter</a>.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Both robots are heavy and they both weight about a ton (or at least this is how it feels). Another caveat is the difficulty to move with the needed accessories (battery for the robot, lens, camera, tools, support for the robot), so finally I decide to create a new robot which would be cheaper and lighter.</span></div>
<h2 style="box-sizing: border-box; font-size: 2.6rem; font-weight: 500; line-height: 1.2; margin: 0px 0px 1.6rem; text-transform: uppercase;">
<span style="color: #f3f3f3;">
GIGA-PANORAMIC ROBOT XS</span></h2>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-xs-02" class="aligncenter size-large wp-image-14861" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-xs-02-670x446.jpg" height="446" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Building on the experience I accumulated building the previous two robots, I tried to optimize all sizes and weights. It was time to design the Panoramic Robot XS !</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">For this robot I used an aluminium box for install inside the x-axis stepper geared and all electronics parts (<a href="http://www.amazon.com/exec/obidos/ASIN/B006H0DWZW/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Arduino MEGA2560R3</a>, two <a href="http://www.amazon.com/exec/obidos/ASIN/B00CAG6GX2/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">L298N drivers</a> for the steppers motors, a relay for remote camera shot switch, a step-down voltage converter to reduce the 12v of UPS battery to 5v of the motors NEMA-17, switches, LCD, plugs, etc…)</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="box-sizing: border-box; font-weight: 700;"><span style="box-sizing: border-box; color: #f3f3f3; text-decoration: underline;">This is the parts list:</span></span></div>
<ul style="box-sizing: border-box; margin: 0px 0px 1.5rem 4rem; padding: 0px;">
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">Metal plate (1-1.5 mm): We need a plate approximately 800 x 200 mm.</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">Metal box . I use an aluminium Hammond 1590FBK</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">Two NEMA-17 stepper motors . I spend a lot of time to found it! The problem appears of the height of the box. I use a Kysan 1040222 buyed on eBay .</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">One Arduino MEGA2560</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">One LCD i2c screen of 20×4 characters.</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">Two <a href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=2&pub=5575046181&toolid=10001&campid=5337308081&customid=&icep_item=310795441230&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">L298N drivers</a> for arduino control.</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;"><a href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=2&pub=5575046181&toolid=10001&campid=5337308081&customid=&icep_item=151298302075&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Dc to DC Step down converter</a> with 12/24v input and 5v 10A output.</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><span style="color: #f3f3f3;">Belt GT2 y and two pulleys of 36 teeth. Same than used in 3-D printers</span></li>
<li style="box-sizing: border-box; list-style-type: disc;"><a href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=2&pub=5575046181&toolid=10001&campid=5337308081&customid=&icep_item=400560659579&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank"><span style="color: #f3f3f3;">Bearing Unit Conveyor Roller</span></a></li>
</ul>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Next , It was time to do a lot of holes in the aluminium box and start assembling</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I used a metal plate to support the Y axis, and we fixed the camera using a 1/4-20 bolt. Since this place will only perform with one camera, we wanted to make it fixed on the camera’s Nodal Point. The nodal point would then correspond to the center of both axis. For the horizontal and vertical axis, it was easy, we only needed to calculate the distance from the hole to the center of both axis. The difficult part is finding the d3 value. You can use <a href="https://www.youtube.com/watch?v=k0HaRZi-FWs" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">this guide</a>, or just google for it.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-nodal-02" class="aligncenter size-large wp-image-14867" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-nodal-02-670x446.jpg" height="446" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /><img alt="giga-pano-nodal-01" class="aligncenter size-large wp-image-14866" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-nodal-01-670x478.jpg" height="478" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Now, again, it was time for assembling the electronics parts, wiring the steppers motors, the drivers and connecting power supply.</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">And the last step was uploading the Arduino code. If you are building this and need the code, please contact with me (via the comments or the contact details supplied below).</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-v1-01" class="aligncenter size-large wp-image-14868" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-v1-01-670x558.jpg" height="558" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Using this last robots I create Gigaphotos of about 30 GPx. This is the resolution I get using a Nikon d5200+ <a href="http://www.amazon.com/exec/obidos/ASIN/B003YH9DZE/diy0c-20" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Tamron 70-300</a> @300mm. It takes about 1,000 per panorama. If you thought the camera part was hard, wait till you feed 1,000 photos to your computer ;).</span></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<img alt="giga-pano-xs-06" class="aligncenter size-large wp-image-14865" src="http://www.diyphotography.net/wordpress/wp-content/uploads/2014/10/giga-pano-xs-06-670x376.png" height="376" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 0px auto 2.4rem; max-width: 100%;" width="670" /></div>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">I have another robot optimized for a Sigma 150-500mm lens, more stronger. The electronics and code are the same, I only had to change the mechanics of it to support more weight. With the bigger robot I can create 99 GPx photos composed of over 4500 shots each.</span></div>
<h2 style="box-sizing: border-box; font-size: 2.6rem; font-weight: 500; line-height: 1.2; margin: 0px 0px 1.6rem; text-transform: uppercase;">
<span style="color: #f3f3f3;">
ABOUT THE AUTHOR</span></h2>
<div style="box-sizing: border-box; margin-bottom: 1.5rem; padding: 0px;">
<span style="color: #f3f3f3;">Xavier Gonzalo is a climber and a photographer based in Spain. You can see his panoramic work <a href="http://gigapan.com/profiles/XavierGP" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">here</a>. You can also read more about his panoramic robots (in Spanish / Gooogle translated) <a href="http://www.xaviergp.blogspot.com/" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">here</a>. Lastly, you can visit Xavier’s youtube channel <a href="https://www.youtube.com/user/XavierGP1974/videos" style="-webkit-transition: all 0.1s ease-in-out; box-sizing: border-box; color: #4eaae7; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">here</a>.</span></div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-8395878610111133532014-08-23T08:36:00.002-07:002014-08-23T08:37:35.145-07:00Gigapan Lurdeia<div style="text-align: justify;">
Este año repetí mis vacaciones en Lurdeia (<a href="http://www.lurdeia.com/">www.lurdeia.com</a>), una casa de turismo rural cerca de Bermeo (Vizcaya) y decidí pasear el robot para realizar varias fotografias, pero el tiempo meteorologicamente no acompañó y sólo pude realizar una desde esta casa con encanto.</div>
<div style="text-align: justify;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-y9GMUblWr4M/U_eJKwx8LwI/AAAAAAAABOs/Eh0zRts6Pcs/s1600/P1010112.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-y9GMUblWr4M/U_eJKwx8LwI/AAAAAAAABOs/Eh0zRts6Pcs/s1600/P1010112.JPG" height="300" width="400" /></a></div>
<br /></div>
<div style="text-align: justify;">
Semanas antes habia cambiado el cuerpo de la camara fotográfica (Nikon d5200) al detectar un problema en el espejo del obturador y tras un par de Gigafotos nefastas por culpa de algun error del mismo cuerpo que provocaba que no realizara las tomas aleatoriamente. Cabe decir que soy consciente de la batalla que le doy a la cámara, ya que en poco más de un año le han caido 30.000 fotos a base de unas cuantas "palizas". Por aquello que más vale malo conocido que bueno por conocer, elejí otra Nikon d5200 para substituirla, y sorpresa : tenia el firmware actualizado a la C1.02 y no me reconoce una de las dos baterías clónicas que dispongo. Intento downgradear a la C1.01 y sigue igual. Busco la versión original C1.00 y no la encuentro por niongún lado, es más empiezo a buscar en foros (del extranjero, off course!) y encuentro que Nikon en la versión 1.01 entre otras cosas ha creado un bug para reconocer baterias clónicas. El miedo viene cuando alimento la cámara directamente desde mi robot y sorpesa : Si funciona!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-X7jX1cOG7rc/U_i0xwshxdI/AAAAAAAABPw/wOL9NtmjcOw/s1600/P1020003.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-X7jX1cOG7rc/U_i0xwshxdI/AAAAAAAABPw/wOL9NtmjcOw/s1600/P1020003.JPG" height="300" width="400" /></a></div>
</div>
<div style="text-align: justify;">
Si quereis actualizar , es muy fácil hacerlo , pero antes de analizar si realmente os vale la pena o no. Para que os hagais una idea, tengo una Lumix TZ-35 y no la actualizo porque me he documentado y sé que el firmware actual me deja las baterias clónicas inservibles...vosotros mismos!<br />
<br /></div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-TY5sQNTM_oI/U_i0zjubosI/AAAAAAAABP4/ypBgNrMjUR0/s1600/P1020005.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-TY5sQNTM_oI/U_i0zjubosI/AAAAAAAABP4/ypBgNrMjUR0/s1600/P1020005.JPG" height="300" width="400" /></a></div>
<br /></div>
<div style="text-align: justify;">
En fín que me preparo todos los trastos necesarios y realizo una nueva Gigafoto desde Lurdeia, esta vez también uso el Tamron 70-300 ajustados a 300 mm. y como ajustes de camara : modo RAW, iso 2500, f25 y velocidad 1/400. Para determinar estos valores hago el procedimiento habitual: Si utilizo un 300 mm. es equivalente a 450 mm al tener un factor de multiplicación 1.5 en el formato Nikon DX. En principio la velocidad deberia ser superior a 1/450 , pero me la juego y la dejo en 1/400. Ahora toca buscar el compromiso entre apertura del diafragma y sensibilidad. Como que no me gusta trabajar con valores de ISO altos, lo dejo en 2500 y ahora mediante la rueda del selector de diafragmas voy desplazandome a traves de sus valores hasta conseguir un valor de compromiso para que tenga la exposición correcta mirando el exposimetro de la cámara y intentando que la profundidad de campo sea lo máxima possible (diafragma más cerrado posible). El enfoque, otro dilema, hay que buscar otro compromiso siguiendo la regla de los tercios que dice que desde el punto de enfoque queda enfocado 1/3 por delante y 2/3 por detrás, mejor utilizar un software tipo DOF master...</div>
<div style="text-align: justify;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-YV6AUrZVBwY/U_eJsoy6JpI/AAAAAAAABO0/ALQV8l2jTsY/s1600/P1010119.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-YV6AUrZVBwY/U_eJsoy6JpI/AAAAAAAABO0/ALQV8l2jTsY/s1600/P1010119.JPG" height="400" width="300" /></a></div>
<br /></div>
<div style="text-align: justify;">
A continuación arranco el robot, selecciono modo Gigapan, camara Nikon DX, 300 mm y un solape del 20% las otras opciones las dejo como por defecto (modo normal y retardo=0.0 segundos). Acto seguido defino mediante el joystick los extremos inicial y final obteniendo 47 columnas por 28 filas, lo que equivale a 1316 capturas abarcando unos 170º horizontales y 60 verticales aproximadamente.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/iWzlooIxYKI?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Es hora de empezar el proyecto , y parece que todo va bién, en realidad tengo mis dudas, la gente acaba de desayunar y sé que saldrán personas por la puerta, movimiento de vehiculos... mis prediciones obvias se cumplen, pero en principio no me afectan al area que estoy fotografiando en aquel momento (el verde más próximo, la carretera...). Minutos más tarde de realizar el video , Neus y su marido se sientan en la mesa , mientras que Markus y Elke en un banco, él no aparece porque se ausentó mientras el robot tomaba las capturas del banco.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
De momento todo controlado justo hasta el momento en que debo fotografiar las personas por segunda vez (solape entre filas), momento en que aparece Emma y segundos más tarde Tomás y me plantan una sombrilla en la mesa, aqui ya casi tiro la toalla, pauso el robot y dejo que se vuelva todo a la normalidad mientras fuerzo al robot manualmente para repetir las tomas de la última fila, siendo consciente y por experiencia previa que hay muchas posibilidades de fracaso en la composición final. La sombrilla es un elemento muy grande para eliminar con el Photoshop y más cuando está en un primer plano.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Puestos al fracaso, sólo queda proseguir y esperar llegar a casa para ver el resultado. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez terminado el proyecto es hora de desmontar los artilugios y aprovechar para explicar a los curiosos como funciona el robot y enseñarles las tripas (Arduino, 2x L298N, LCD 4x20 , 2xNema-17, etc...)</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora vamos a la fase 2: Una vez en casa , convierto los RAW's a JPG (un par de horas haciendolo de modo automatizado), y luego toca arrancar el AutoPano Giga 2.6 en el Mac. En principio parece que pueda "colocar" todas las imagenes en su sitio (vista previa) pero una vez intento editar para recortar me doy cuenta de que no es así: tengo media linea que repetí por culpa de la sombrilla que me hace un efecto Ghost (clonado). Para evitar esto se me ocurren dos opciones: La primera es de recortar la parte inferior de la imagenes que se clonan, en otras palabras toca recortar 47 imagenes a la misma altura, y acto seguido volver a procesar, mientras que la opción 2 es renderizar la imagen y luego cortarla y encajarla mediante Photoshop . </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-UHGElpD42YQ/U_dcZO3RamI/AAAAAAAABOM/6Z5jSFYykpQ/s1600/Captura%2Bde%2Bpantalla%2B2014-08-20%2Ba%2Bla(s)%2B10.06.24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-UHGElpD42YQ/U_dcZO3RamI/AAAAAAAABOM/6Z5jSFYykpQ/s1600/Captura%2Bde%2Bpantalla%2B2014-08-20%2Ba%2Bla(s)%2B10.06.24.png" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Decido aplicar la opción 1 y obtengo el resultado deseado , ahora en modo edición no veo el clonado de media linea, ejecuto la orden de grabación a formato PSD/PSB y ya sólo toca esperar más de 15 horas que el ordenador tenga terminada esta tarea. Informo que utilizo un iMac core i7 de 8 nucleos, 32 GB de RAM y 2 de video. Si intentais realizar el mismo proyecto con un ordenador con menos prestaciones se os puede quedar en el intento. También es necesario disponer un disco duro grande, pues los archivos temporales pueden ser superiores a 1 TB ! Horas más tarde obtengo el archivo cuyo peso es superior a 250 GB . </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-06MVVtBGxjI/U_dc7PnFZaI/AAAAAAAABOU/CQ-_JS6sLjk/s1600/Captura%2Bde%2Bpantalla%2B2014-08-20%2Ba%2Bla(s)%2B10.07.39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-06MVVtBGxjI/U_dc7PnFZaI/AAAAAAAABOU/CQ-_JS6sLjk/s1600/Captura%2Bde%2Bpantalla%2B2014-08-20%2Ba%2Bla(s)%2B10.07.39.png" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Antes de subirlo al servidor de Gigapan suelo abrir el archivo con el Photoshop e intentar eliminar las matriculas de los coches y intentar corregir algun defecto. Es un proceso lento, en este caso para abrir el archivo necesité más de 1.5 horas y para grabar puede llegar a ser el doble. Si utilizais discos duros de estado sólido SSD estos procesos serán mucho más rápidos pero según parece estos no están muy preparados para estos menesteres.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez abierto el archivo resultante , observé muchas lineas de varios pixeles que me recordaban a las interferencias de los televisores. Generé otra imagen con menos resolución y se veia correctamente. Volví a abrir el archivo grande y apareció el mismo problema por lo que decidí volver a generar de nuevo la imagen, y esta vez parece que se procesó/grabó correctamente.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QOzeKoX-Zi8/U_iyvW8ac-I/AAAAAAAABPk/qz9e-3NrPK8/s1600/Sin%2Bti%CC%81tulo-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-QOzeKoX-Zi8/U_iyvW8ac-I/AAAAAAAABPk/qz9e-3NrPK8/s1600/Sin%2Bti%CC%81tulo-1.jpg" height="252" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora es hora de subir el archivo resultante , y tras algo más de 40 horas ya está la imagen de 30 GigaPixeles visible para todos . Posiblemente y a dia de hoy la más grande de Vizcaya.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Disfrutad de ella en :</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.gigapan.com/gigapans/161278"><span style="font-size: large;">http://www.gigapan.com/gigapans/161278</span></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-150196040063422752014-06-29T10:21:00.002-07:002014-06-29T10:24:34.930-07:00Unas cuantas fotillos...<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ahora unas cuantas fotillos realizadas desde el movil que me he dejado de poner en el anterior post:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Barcelona desde el turó de la Rovira:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-M1sx1XmAf9U/U7BF3INoSUI/AAAAAAAABGE/7hPNUaOCOoo/s1600/IMAG0889.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-M1sx1XmAf9U/U7BF3INoSUI/AAAAAAAABGE/7hPNUaOCOoo/s1600/IMAG0889.jpg" height="425" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-eSX_vWL_p5M/U7BF9ZYXTdI/AAAAAAAABGU/_wqEcrEN3IA/s1600/IMAG0890.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-eSX_vWL_p5M/U7BF9ZYXTdI/AAAAAAAABGU/_wqEcrEN3IA/s1600/IMAG0890.jpg" height="425" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-S65arzuGe0k/U7BF4NQ3y3I/AAAAAAAABGM/QX7mm-gyojw/s1600/IMAG0891.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-S65arzuGe0k/U7BF4NQ3y3I/AAAAAAAABGM/QX7mm-gyojw/s1600/IMAG0891.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-NmI8Ay1Kx70/U7BF9gHuSqI/AAAAAAAABGY/R2N0xeVp-As/s1600/IMAG0892.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-NmI8Ay1Kx70/U7BF9gHuSqI/AAAAAAAABGY/R2N0xeVp-As/s1600/IMAG0892.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-waXQ5GjBr-0/U7BGDAJweGI/AAAAAAAABGk/2jLbNuOGeiM/s1600/IMAG0893.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-waXQ5GjBr-0/U7BGDAJweGI/AAAAAAAABGk/2jLbNuOGeiM/s1600/IMAG0893.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-HiIPnfUs6Ck/U7BGL0L3hGI/AAAAAAAABG0/-DhC3B6jKbk/s1600/IMAG0894.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-HiIPnfUs6Ck/U7BGL0L3hGI/AAAAAAAABG0/-DhC3B6jKbk/s1600/IMAG0894.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4iQFN0M90Qw/U7BGFpM7-VI/AAAAAAAABGs/jNTjRzrBzBs/s1600/IMAG0895.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4iQFN0M90Qw/U7BGFpM7-VI/AAAAAAAABGs/jNTjRzrBzBs/s1600/IMAG0895.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-DyZIZdX6BDk/U7BGNSxRh7I/AAAAAAAABG4/Co6WNlvnuj8/s1600/IMAG0896.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-DyZIZdX6BDk/U7BGNSxRh7I/AAAAAAAABG4/Co6WNlvnuj8/s1600/IMAG0896.jpg" height="640" width="426" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b style="text-align: left;">Barcelonés desde Puig Castellar:</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Fo_vCC3-eIg/U7BGPbPtzLI/AAAAAAAABHA/2Yn8JrIsP3o/s1600/IMAG0897.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Fo_vCC3-eIg/U7BGPbPtzLI/AAAAAAAABHA/2Yn8JrIsP3o/s1600/IMAG0897.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-pGu8gFsmhYY/U7BGTABk5rI/AAAAAAAABHM/jtmecHD1Ok4/s1600/IMAG0898.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-pGu8gFsmhYY/U7BGTABk5rI/AAAAAAAABHM/jtmecHD1Ok4/s1600/IMAG0898.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-G4jsGOGP2mg/U7BGXvhbXzI/AAAAAAAABHU/AGnXysTfsbk/s1600/IMAG0899.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-G4jsGOGP2mg/U7BGXvhbXzI/AAAAAAAABHU/AGnXysTfsbk/s1600/IMAG0899.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-uk22HUtGJjE/U7BGXX6xqAI/AAAAAAAABHY/0vovtt3W_Bk/s1600/IMAG0900.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-uk22HUtGJjE/U7BGXX6xqAI/AAAAAAAABHY/0vovtt3W_Bk/s1600/IMAG0900.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xyUM3i15B54/U7BGcjskFII/AAAAAAAABHk/KOvKu8qdVWQ/s1600/IMAG0901.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xyUM3i15B54/U7BGcjskFII/AAAAAAAABHk/KOvKu8qdVWQ/s1600/IMAG0901.jpg" height="426" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Sant Joan de Vilatorrada:</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HS9_vFQciAA/U7BGiuy-gLI/AAAAAAAABH0/ftC_X9Wtp-g/s1600/IMAG0902.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-HS9_vFQciAA/U7BGiuy-gLI/AAAAAAAABH0/ftC_X9Wtp-g/s1600/IMAG0902.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-GuWT-BxzgMA/U7BGf0FLHjI/AAAAAAAABHs/ClivU1ddvPc/s1600/IMAG0903.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-GuWT-BxzgMA/U7BGf0FLHjI/AAAAAAAABHs/ClivU1ddvPc/s1600/IMAG0903.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-uf5pjjcMkgc/U7BGnhsacuI/AAAAAAAABIA/aiCouMxAeCY/s1600/IMAG0904.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-uf5pjjcMkgc/U7BGnhsacuI/AAAAAAAABIA/aiCouMxAeCY/s1600/IMAG0904.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-BmEqf-3kPxU/U7BGnSvi0LI/AAAAAAAABH8/IPsyDvSke74/s1600/IMAG0905.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-BmEqf-3kPxU/U7BGnSvi0LI/AAAAAAAABH8/IPsyDvSke74/s1600/IMAG0905.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-xaSwecKaBp4/U7BGt6raCaI/AAAAAAAABIc/E_0XobcWOZE/s1600/IMAG0908.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xaSwecKaBp4/U7BGt6raCaI/AAAAAAAABIc/E_0XobcWOZE/s1600/IMAG0908.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-i2B3yaDEGO0/U7BGumJSVzI/AAAAAAAABIg/twiuzm2u-9w/s1600/IMAG0909.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-i2B3yaDEGO0/U7BGumJSVzI/AAAAAAAABIg/twiuzm2u-9w/s1600/IMAG0909.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-S2M46J08I7s/U7BGy1_JdCI/AAAAAAAABIs/X_kpTTfgOcM/s1600/IMAG0910.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-S2M46J08I7s/U7BGy1_JdCI/AAAAAAAABIs/X_kpTTfgOcM/s1600/IMAG0910.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-NxEsMyjTlGI/U7BG15lC49I/AAAAAAAABI8/bssaOTixK-E/s1600/IMAG0911.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-NxEsMyjTlGI/U7BG15lC49I/AAAAAAAABI8/bssaOTixK-E/s1600/IMAG0911.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-p6aVf2AJc9o/U7BG3tmmhlI/AAAAAAAABJE/hY6wbtF5OnM/s1600/IMAG0913.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-p6aVf2AJc9o/U7BG3tmmhlI/AAAAAAAABJE/hY6wbtF5OnM/s1600/IMAG0913.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<b>El plà de Bages desde el Serrat de Castellnou de Bages:</b><br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-XhSffDUtWzU/U7BG-YeKLWI/AAAAAAAABJc/0RcCAFshGC0/s1600/IMAG0916.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-XhSffDUtWzU/U7BG-YeKLWI/AAAAAAAABJc/0RcCAFshGC0/s1600/IMAG0916.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jrRANhXObd0/U7BHEyTcqCI/AAAAAAAABJs/6S57s8_xCr0/s1600/IMAG0917.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-jrRANhXObd0/U7BHEyTcqCI/AAAAAAAABJs/6S57s8_xCr0/s1600/IMAG0917.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ha1-qhcRdQ0/U7BHEpNar8I/AAAAAAAABJo/Ue-SyjSqJmY/s1600/IMAG0918.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ha1-qhcRdQ0/U7BHEpNar8I/AAAAAAAABJo/Ue-SyjSqJmY/s1600/IMAG0918.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-uCbH1_kq3hY/U7BHEOaTKuI/AAAAAAAABJk/FIQHv8W9PiA/s1600/IMAG0919.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-uCbH1_kq3hY/U7BHEOaTKuI/AAAAAAAABJk/FIQHv8W9PiA/s1600/IMAG0919.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-flk8e8tvPO0/U7BHIS6qI-I/AAAAAAAABJ8/666Olpi31J8/s1600/IMAG0920.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-flk8e8tvPO0/U7BHIS6qI-I/AAAAAAAABJ8/666Olpi31J8/s1600/IMAG0920.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ApO9JlzzIxw/U7BHKHjktOI/AAAAAAAABKE/5CdlujqXq4E/s1600/IMAG0921.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ApO9JlzzIxw/U7BHKHjktOI/AAAAAAAABKE/5CdlujqXq4E/s1600/IMAG0921.jpg" height="426" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Martorell desde encima de la autopista:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-R9YC5B_C1kw/U7BHyWy5xBI/AAAAAAAABKM/jgVgvVWeRNQ/s1600/IMAG0997.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-R9YC5B_C1kw/U7BHyWy5xBI/AAAAAAAABKM/jgVgvVWeRNQ/s1600/IMAG0997.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-01_7wfKp_7c/U7BH0ZWniLI/AAAAAAAABKc/xXOvNK7X1XE/s1600/IMAG0998.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-01_7wfKp_7c/U7BH0ZWniLI/AAAAAAAABKc/xXOvNK7X1XE/s1600/IMAG0998.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Ne8hYnSDiSE/U7BHyXOv9qI/AAAAAAAABKQ/t7RZmugykcA/s1600/IMAG0999.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Ne8hYnSDiSE/U7BHyXOv9qI/AAAAAAAABKQ/t7RZmugykcA/s1600/IMAG0999.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-8RCLEMf-Dv8/U7BIANA3qBI/AAAAAAAABK0/Gl5vK3msHyM/s1600/IMAG1000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-8RCLEMf-Dv8/U7BIANA3qBI/AAAAAAAABK0/Gl5vK3msHyM/s1600/IMAG1000.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-5Y7QZLdLN0k/U7BH48PonKI/AAAAAAAABKk/1ctQLtcQB2E/s1600/IMAG1001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-5Y7QZLdLN0k/U7BH48PonKI/AAAAAAAABKk/1ctQLtcQB2E/s1600/IMAG1001.jpg" height="425" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-b4TV_N98TUI/U7BH5yZ998I/AAAAAAAABKs/Gk2hlBawxUA/s1600/IMAG1002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-b4TV_N98TUI/U7BH5yZ998I/AAAAAAAABKs/Gk2hlBawxUA/s1600/IMAG1002.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-4knJI_60Gbg/U7BIC1snsOI/AAAAAAAABK8/udqWM0uQiFI/s1600/IMAG1003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-4knJI_60Gbg/U7BIC1snsOI/AAAAAAAABK8/udqWM0uQiFI/s1600/IMAG1003.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-mdwQMSrs19w/U7BIAia03CI/AAAAAAAABLA/8jGE1seeJNY/s1600/IMAG1005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-mdwQMSrs19w/U7BIAia03CI/AAAAAAAABLA/8jGE1seeJNY/s1600/IMAG1005.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Ar1tHaHg-WA/U7BIHKXXa9I/AAAAAAAABLM/W5vHkFDlC24/s1600/IMAG1006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Ar1tHaHg-WA/U7BIHKXXa9I/AAAAAAAABLM/W5vHkFDlC24/s1600/IMAG1006.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OxsugLrRVWI/U7BISqbJIiI/AAAAAAAABLo/VTiF_iUf7EY/s1600/IMAG1008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-OxsugLrRVWI/U7BISqbJIiI/AAAAAAAABLo/VTiF_iUf7EY/s1600/IMAG1008.jpg" height="640" width="426" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Gs1ZOybnwRI/U7BIM9naOnI/AAAAAAAABLc/1hI5CcCNLEQ/s1600/IMAG1009.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Gs1ZOybnwRI/U7BIM9naOnI/AAAAAAAABLc/1hI5CcCNLEQ/s1600/IMAG1009.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Balsareny:</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-2uaor_CvAsI/U7BIT0rpo3I/AAAAAAAABL0/bf3xtPMGXw4/s1600/IMAG1041.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-2uaor_CvAsI/U7BIT0rpo3I/AAAAAAAABL0/bf3xtPMGXw4/s1600/IMAG1041.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-si37Sa2A8pM/U7BIcE0P-VI/AAAAAAAABMA/meKEWf4Em_g/s1600/IMAG1043.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-si37Sa2A8pM/U7BIcE0P-VI/AAAAAAAABMA/meKEWf4Em_g/s1600/IMAG1043.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-eqY_ME9p4TE/U7BIakEBEbI/AAAAAAAABMM/q87gqZVDbxs/s1600/IMAG1044.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-eqY_ME9p4TE/U7BIakEBEbI/AAAAAAAABMM/q87gqZVDbxs/s1600/IMAG1044.jpg" height="426" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-BROy-5FsVB0/U7BIfQ-utLI/AAAAAAAABMU/uGzjvQKSv_8/s1600/IMAG1045.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-BROy-5FsVB0/U7BIfQ-utLI/AAAAAAAABMU/uGzjvQKSv_8/s1600/IMAG1045.jpg" height="426" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Nadie mas se anima?<br />
<br />
Saludos !XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com1tag:blogger.com,1999:blog-2463929896161090560.post-63593458087820137322014-06-29T09:44:00.000-07:002014-06-29T09:44:17.085-07:00Aprovechando la primavera (II)<div style="text-align: justify;">
Tal y como dije, la primavera es mi estación preferida para fotografiar pues los contrastes de colores suelen ser más accentuados y los verdes son verdes, sólo hay que esperar un dia nítido para ganar en profundidad de campo. Asi que aqui vienen otro grupo de Gigapanes realizadas durante la primavera con el robot panorámico XS.</div>
<br />
<b>Barcelona desde el turó de la Rovira:</b><br />
<b><br /></b>
<div style="text-align: justify;">
La primera que hice (siempre por orden cronológico), fué de Barcelona ciudad desde el turó de la Rovira (bunkers anti aereos) , es un lugar que a todos los que visiten esta ciudad les recomiendo que pierdan unas horas para gozar de las vistas de este sitio. Llevaba muchos meses esperando el momento, habia subido a varios lugares intentando buscar el sitio perfecto y este casi lo era. El casi es porque es un lugar muy transitado por visitantes, curiosos, vamos que no te da sni cuenta y tienes mas de un centenar de personas a tu lado y como es de comprender para mi y mi invento es una situación molesta. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Resumen, era un domingo despejado porque por la noche del sábado hizo viento lo que propiciaba que no hubiera la típica contaminación que caracteriza esta ciudad. Fué cuestión de comer temprano para poder llegar a este emblematico lugar con la esperanza de no encontrarme mucha gente y asi fué.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Todos los astros se alinearon y aqui hay la captura resultante tras unir las 693 fotos (33 columnas x 21 filas) y una resolución próxima a los 12 GPx.:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ccLMD8mswgk/U7AveYz5wLI/AAAAAAAABEs/CAv6ZGEhPoI/s1600/bcn1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ccLMD8mswgk/U7AveYz5wLI/AAAAAAAABEs/CAv6ZGEhPoI/s1600/bcn1.jpg" height="248" width="640" /></a></div>
<br />
<div style="text-align: justify;">
Me habria gustado realizarla con mi robot grande con el sigma 150-500 pero no me atreví por culpa de los curiosos, con el 18-200 de Nikkor tardé menos de una hora, mientras que con el Sigma habrian sido 4 horas, un espacio de tiempo muy grande.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En grande la podéis ver en <a href="http://gigapan.com/gigapans/155386">http://gigapan.com/gigapans/155386</a></div>
<br />
<b>Barcelona desde Puig Castellar:</b><br />
<b><br /></b>
<div style="text-align: justify;">
Acto seguido y para aprovechar la tarde del domingo me desplazé hasta otro sitio con buenas vistas hacia Barcelona y comarca, justo en el poblado ibérico de Puig Castellar situado en el término municipal de Badalona.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la cima de esta montaña hacia mucho viento por lo que el proyecto no pintaba muy bien, a ratos me veia obligado a pausar el proyecto al tener grandes ráfagas de viento que parecia que tenia que salir el trípode + robot volando hasta Mallorca! </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Fué la primera vez que utilizaba el estabilizador a la hora de tomar capturas y eso significó que a poco más de la mitad del proyecto me quedé sin batería y tuve que desamblar la camara respecto al robot para poder cambiar la batería con el riesgo que comporta.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Aunque parezca mentira aqui todo y estar perdido en la montaña, el número de curiosos se multiplicó con las frases típicas de "ponlo en el youtube, en que canal de tv va a salir...", en fín que tengo un imán para atraer a los curisosos y a los locos!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Todo y eso, al final no hubo ningún problema a la hora de unir las fotografias y componer la gigafoto de 6 GPx. que podeis verla en grande en <a href="http://gigapan.com/gigapans/155459">http://gigapan.com/gigapans/155459</a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-G5Zbm_7NtGw/U7Ayted_V7I/AAAAAAAABE4/lClnLljhZ0Q/s1600/bcn2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-G5Zbm_7NtGw/U7Ayted_V7I/AAAAAAAABE4/lClnLljhZ0Q/s1600/bcn2.jpg" height="76" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: -webkit-auto;">
<b>El plà de Bages:</b></div>
<div class="separator" style="clear: both; text-align: -webkit-auto;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: justify;">
La siguiente fué realizada sobre Santpedor , en Castellnou de Bages con una vista al sur de la comarca del Bages. En esta ocacisón quedé con Jordi para mostrarle como funcionaba mi robot y como realizaba este tipo de fotografia en cuestión de conceptos de fotografia.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En este caso fueron 532 fotografias (28 lineas x 29 columnas) con la Nikon d5200 y el Nikkor 18-200.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-BFQm9yrKd48/U7A0j1njRWI/AAAAAAAABFE/SC7zpu3QRQE/s1600/pladebages.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-BFQm9yrKd48/U7A0j1njRWI/AAAAAAAABFE/SC7zpu3QRQE/s1600/pladebages.jpg" height="298" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
La resolución final de 8.8 GPx, y también podeis navegar por ella en <a href="http://gigapan.com/gigapans/155500">http://gigapan.com/gigapans/155500</a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Sant Joan de Vilatorrada:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A pocos minutos en coche de mi vivienda fué tomada la siguiente gigafoto, en este caso fotografié el pueblo de Sant Joan de Vilatorrada con 816 capturas (14.5 GPx) , y el resultado fué el siguiente:</div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="http://gigapan.com/gigapans/155557">http://gigapan.com/gigapans/155557</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-LyukNt2WdGo/U7A1_pMX38I/AAAAAAAABFQ/s1cC3HGSkcU/s1600/santjoan.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-LyukNt2WdGo/U7A1_pMX38I/AAAAAAAABFQ/s1cC3HGSkcU/s1600/santjoan.jpg" height="156" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Sallent:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: justify;">
En esta ocasión la cosa salió rana...y tuve que repetirla. El problema fué debido a una gran tontería...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Fuí un domingo por la mañana, y empecé a realizar capturas, hasta llegar al campo de futbol en el que estaban haciendo la media parte del partido de futbol y pausé el robot. Pasaban los minutos y los niños no seguian el partido por lo que decidí seguir con mi proyecto, y tras fotografiar el campo, reemprenden el partido. En ese momento intenté repetir esas tomas pero se me descuadró el solape entre capturas y luego el software AutoPano Giga no era capaz de unirmelas correctamente provocandome unos duplicados de casi una fila, por lo que decidí volver una semana después con la Loli para que viera como realizo este tipo de fotografias.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En esta ocasión estrené el sistema de alimentación ininterrumpido hacia la camara (explicado en otro post) y un Tamron 70-300 mm y todo fué bién, sin ninguna anormalidad digna de destacar.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si la quereis ver en grande (23.3 GPx), sólo hay que visitar el siguiente link:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://gigapan.com/gigapans/156564">http://gigapan.com/gigapans/156564</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-tQ_g4Mvskhk/U7A4eNmlsxI/AAAAAAAABFc/4-Po7mwNYGM/s1600/sallent.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-tQ_g4Mvskhk/U7A4eNmlsxI/AAAAAAAABFc/4-Po7mwNYGM/s1600/sallent.jpg" height="240" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Martorell:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: justify;">
Otro de los lugares pendientes...pasando por la autopista siempre veia la industria química y pensaba en los infinitos detalles que albergaría una fotografia por lo que un sábado soleado por la tarde decidí ir a fotografiar el paisaje.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Fueron algo más de 1100 fotografias para componerla, pero dió mucha guerra debido a dos motivos principalmente: </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
* Los coches cortados y matriculas que habria que borrar</div>
<div class="separator" style="clear: both; text-align: justify;">
* Los cables de alta tensión que no quedaron bién solapados por culpa del punto nodal desajustado.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Mediante Photoshop suelo reparar anormalidades pero se hizo muy pesado al trabajar con un archivo PSD de 150 GBytes todo y utilizar un iMac core i7 con 32 GB de RAM</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
El resultado de 26.8 GPx (aunque no satisfactorio para mi todo y la guerra que me dió) es el siguiente:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-cXAMtViNPys/U7A6fzvwkhI/AAAAAAAABFo/3o3wk3XxCxY/s1600/martorell.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-cXAMtViNPys/U7A6fzvwkhI/AAAAAAAABFo/3o3wk3XxCxY/s1600/martorell.jpg" height="276" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: justify;">
Podéis verla en <a href="http://gigapan.com/gigapans/156755">http://gigapan.com/gigapans/156755</a></div>
<div style="text-align: justify;">
Nota> Se observan varias tomas con una intensidad diferente, pero no sé a que fue debido pues el revelado siempre lo hago en lote con los mismos ajustes en todas las fotos...</div>
<div style="text-align: justify;">
Por cierto, después de realizar esta fotografia tuve que hacer limpieza del sensor utilizando alcohol isopropilico para sacar unas motas de polvo que tenia en el CMOS.</div>
<div style="text-align: justify;">
Durante la limpieza observé que en un lateral del receptáculo dónde se mueve el espejo de la cámara tenia un desgaste como si el propio espejo lo hubiera rascado y quizas la tela negra era las motas de suciedad que residian en el sensor...en fín que la cosa no pintaba bién.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Balsareny:</b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
Finalmente esta es la última de este post. Cabe decir que horas antes estube haciendo otra gigafoto , que no pude "revelar" porque durante las capturas se perdieron magicamente unas 20 fotos. Lo único que observé es que el ruido del espejo era anormal, como si no actuara correctamente cosa que me dejó preocupado. La desaparición de dichas fotos no me percaté hasta que fuí a procesar la foto.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pero vamos a la que vamos...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Llegé al sitio, tenia que subir los trastos una cuesta de unos 50 metros, con un sol que deslumbrava, pues tras hacer esas carreras arriba abajo arriba con los trastos tardé 10 minutos en recuperarme. No tenia ni una sombra por lo que me refugié en la que producia un triste arbusto.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Monté todo el invento y empecé con las capturas. Volví a escuchar los ruidos anormales en el espejo, pausé el robot, y apagé la camara y la volví a encender y a partir de ese momento no falló mas...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez en casa me percaté que me habian desaparecido 5 fotos, las cuales eran "fáciles" de disimular pues eran de arbustos por lo que manos a la obra y tras unas horas de photoshop parece que ha quedado disimulado.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Tras procesar las 1372 imagenes, este es el resultado final de 27 GPx. que deseo que os guste:</div>
<div style="text-align: justify;">
<a href="http://gigapan.com/gigapans/156947">http://gigapan.com/gigapans/156947</a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_euXYsn_vy4/U7BBaYWFDmI/AAAAAAAABF4/w2JWL6crw2g/s1600/balsareny.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_euXYsn_vy4/U7BBaYWFDmI/AAAAAAAABF4/w2JWL6crw2g/s1600/balsareny.jpg" height="238" width="640" /></a></div>
<br />
Deseo que en general os hayan gustado.<br />
Saludos y DIY !<br />
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-39635035832584681952014-05-18T10:28:00.000-07:002014-05-18T10:28:10.832-07:00Aprovechando la primavera<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Llega la primavera, mi epoca preferida a nivel de fotografia, los campos verdes , los cielos azules, una buena temperatura y muchas dias con una buena visibilidad, ya no existe la niebla del invierno ni esa "calicha" que se ocasiona en verano. Aparte es una epoca en que de vez en cuando cae un chaparrón y sirve para limpiarlo todo, inclusive el ambiente. </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En fín que ha sido una temporada para realizar Gigapanes o Gigafotos, en este post os intentaré hacer un resumen de mis experiencias:</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Empiezo por una Gigafoto realizada en mi pueblo natal, Súria , en la cual se puede ver el rio Cardener. Este dia fué un poco desastre con el tema baterias, el problema empezó cuando un domingo por la mañana y viendo la climatologia exterior uno decide ir a hacer fotos...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Lo preparo todo: Nikon d5200, Nikkor 18-200, robot , miro las baterias y en principio tienen carga, lo cojo todo y me desplazo hasta el lugar elejido.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Hace un poco de viento, alineo el conjunto y empiezan las tomas...tengo el tiempo justo debido a otros compromisos, todo parece que va bién hasta que se acaba la bateria de la cámara cuando tenia realizada algo más de la mitad de las tomas. Tengo dos opciones, cancelar o probar de cambiar la bateria. Decido esta segunda opción pero para ello debo aflojar completamente la camara y tengo un riesgo excesivo de que luego no se solapen las imagenes. Y asi lo hice: cambio de bateria y reanudamos el ciclo desde el principio de la linea dónde estaba. Es muy importante antes de empezar con las tomas apuntarse el numero de filas, columnas, diafragma y otros valores empleados, asi si hay que seguir el ciclo después de un problema evitaremos tener otro... El problema que tuve luego es que me equivoque e introduje una columna menos en la segunda parte del proyecto.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fteCLQTrUUE/U3jsfzzP2xI/AAAAAAAABDI/XFDVUy4oikk/s1600/IMAG0806.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-fteCLQTrUUE/U3jsfzzP2xI/AAAAAAAABDI/XFDVUy4oikk/s1600/IMAG0806.jpg" height="320" width="213" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ese dia también se me acabó la bateria de la camara deportiva que me acompaña mientras realizaba un time-lapse del making off. Y para rematar la bateria del telefono movil también se agotó!</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En fín que fué un poco un desastre. Una vez en casa logré cuadrar las capturas de la última columna, eliminando las ultimas tomas de cada fila previas, y de este modo el software de pegado AutoPano Giga no tuviera problemas para procesar las 555 capturas que ofrecen una resolución de 9.5 GPx.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y el resultado aqui esta: <a href="http://gigapan.com/gigapans/151988">http://gigapan.com/gigapans/151988</a></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ah0N3L-uLgY/U3jbcp6f7mI/AAAAAAAABCM/8ppzYiPFVYk/s1600/Sin+ti%CC%81tulo-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ah0N3L-uLgY/U3jbcp6f7mI/AAAAAAAABCM/8ppzYiPFVYk/s1600/Sin+ti%CC%81tulo-1.jpg" height="176" width="640" /></a></div>
<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Dias mas tarde , decidí realizar otra gigafoto pero con el equipo grande, es decir usando el Sigma Bigmos 150-500 + el teleconversor 1.4x. Aqui ya utilizo el otro robot, más grande y robusto y optimizado para este objetivo. En esta ocasión el sitio a fotografiar fué la Vall de Lord, cerca del pueblo de Sant Llorenç de Morunys (Port del Compte - Lérida).</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Dado a que con este objetivo acabo generando una imagen con muchas fotos, me cercioné de tener esta vez todas las baterias bien cargadas antes de salir de casa.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Salí de casa y me desplazé hasta el aparcamiento más cercano, a unos 700 metros del mirador desde realizaría las capturas. Ahora tocaba pasear todo el material de un viaje, es un proceso muy agotador que todo el conjunto pesa... (robot + soporte + objetivo + 2 baterias 12v/7Ah , cuatro herramientas de supervivéncia, etc... unos 20 kilos quizás...). Una vez allí empecé a montarlo todo. Era un dia soleado con algunas nuves, y no tenia nadie "molestando". Es normal cuando me encuentro a alguién que te ve con el robot que empiece a hacer preguntas del tipo "lo vas a poner en youtube" (si es una foto , no un video!), luego los que preguntan en que canal de la TV va a salir...nada un chou !</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VJYa4pF0Pww/U3jsvhy7XRI/AAAAAAAABDQ/GT6ppMz_HzM/s1600/IMAG0848.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-VJYa4pF0Pww/U3jsvhy7XRI/AAAAAAAABDQ/GT6ppMz_HzM/s1600/IMAG0848.jpg" height="320" width="213" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La cosa fué bién, no hubo ningun percance a destacar y aqui teneis el resultado de 2925 capturas y una resolución de 49 GPx.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Os dejo el video del making off...</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://i1.ytimg.com/vi/ulVtcbS_9eo/0.jpg"><param name="movie" value="https://www.youtube.com/v/ulVtcbS_9eo?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/ulVtcbS_9eo?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y una pequeña captura de pantalla de la foto resultante. Si quereis verla en grande entrad al siguiente link : <a href="http://gigapan.com/gigapans/152891">http://gigapan.com/gigapans/152891</a></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zTGImtMvQls/U3jgOvjwoNI/AAAAAAAABCY/etZvJei3Oco/s1600/Sin+ti%CC%81tulo-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-zTGImtMvQls/U3jgOvjwoNI/AAAAAAAABCY/etZvJei3Oco/s1600/Sin+ti%CC%81tulo-2.jpg" height="236" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Dias mas tarde, ya en semana santa y con dias libres tenia previsto fotografiar Barcelona, el sitio ya elejido previamente, sus accesos, todo claroy todo a punto en casa. Cojo el coche y empiezo a desplazarme, pero pocos minutos después de salir de casa ya empiezan mis dudas...Barcelona tiene otros handycaps: la nieblilla generada por la brisa del mar y su contaminación que reduce la visión y como que parte de la grácia de las fotografias de detalles es ver detalles lo más nítido posible acabé cancelando el proyecto justo llegando a la capital. Estuve esperando a ver la ciudad para confirmar lo que me esperaba, por lo que media vuelta y de retorno a Manresa. Llegé a mi ciudad al mediodia, momento en que la ciudad esta tranquila de personas ya que el sector comercial permanece cerrado a diferencia de las grandes ciudades , y me planté el la Plaça Sant Domenec.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Monté el robot pequeño en el tripode Manfrotto y empecé con las capturas con la Nikon d5200 + Nikkor 18-200 @200mm. Una detrás de otra y de nuevo otra vez con las visitas pertinentes preguntando. Como que habian personas en movimiento de vez en cuando debia pausar para evitar cortes de cabezas inesperados.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-qOLOTppyFSU/U3js-Y_MWcI/AAAAAAAABDY/vVD4xTs8Zbw/s1600/IMAG0862.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-qOLOTppyFSU/U3js-Y_MWcI/AAAAAAAABDY/vVD4xTs8Zbw/s1600/IMAG0862.jpg" height="320" width="213" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En este caso fueron 850 tomas y algo cerca de 13.7 GPx de resolución final.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Podeis verla en grande en el siguiente link : <a href="http://gigapan.com/gigapans/153338">http://gigapan.com/gigapans/153338</a></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-SuJ3qKYHGvM/U3jjWkTxIhI/AAAAAAAABCg/VVxy9G14lYE/s1600/Sin+ti%CC%81tulo-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-SuJ3qKYHGvM/U3jjWkTxIhI/AAAAAAAABCg/VVxy9G14lYE/s1600/Sin+ti%CC%81tulo-3.jpg" height="208" width="640" /></a></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Esta dió guerra a la hora de procesarla debido a que corte un coche, difuminé caras de los niños y reparé pequeñas imperfecciones con el Photoshop. La acción de reparar el coche cortado fué clonando la cartelera publicitaria que hay en la izquierda de la pantalla , "montando" otra unos metros más hacia arriba en sentido de un coche gris. Fué "fácil" el clonarla, el problema es que con una fotografia de este tamaño se acaban generando archivos de unos 100 Gb de peso que cuestan de trabajar, aunque hace pocos dias que una persona me dijo... tampoco es tanto! ignorantes...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Tres dias más tarde, decidí subir al Collbaix, una montañita con vistas a gran parte de la comarca del Bages, aqui también me acompañaria mi robot, el trípode y la cámara deportiva AEE SD19, ya que se trataba de un proyecto atrasado por culpa de la dificultad de subir el material a esta montaña, algo mas de 30 minutos cuesta arriba con un ambiente soleado, y una vez allí unas vistas dignas de quedarse un rato a relajarse o simplemente a descansar. Es una montaña con asiduidad de visitas por lo que decidí subir al mediodia para poder montar los artilugios y evitar encontrar muchas personas en el sitio dónde debería montar el robot.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-hRpSmYYdB7Y/U3jtMBOQPkI/AAAAAAAABDg/9FY6gddYYJE/s1600/IMAG0871.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-hRpSmYYdB7Y/U3jtMBOQPkI/AAAAAAAABDg/9FY6gddYYJE/s1600/IMAG0871.jpg" height="320" width="213" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">No hubo ningún percance ni en las tomas ni en el procesamiento de las 608 imagenes que darian una resolución de 11 GPx. Esta fotografia la dediqué a toda la gente que le gustaria subir para ver las vistas que por los motivos que sean no puedan hacerlo y les pique la curiosidad de que es lo que se observa desde allí arriba, para vosotros va!</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Os dejo el link de la imagen en grande: <a href="http://gigapan.com/gigapans/153421">http://gigapan.com/gigapans/153421</a></span></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-s6ZIN8bZYcI/U3jnKNxWRLI/AAAAAAAABCs/aUrYSGX2qtg/s1600/Sin+ti%CC%81tulo-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-s6ZIN8bZYcI/U3jnKNxWRLI/AAAAAAAABCs/aUrYSGX2qtg/s1600/Sin+ti%CC%81tulo-4.jpg" height="190" width="640" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y un pequeño video time-lapse con el making off que también deseo que os guste:</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Oi6xRL6hTEo?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y para terminar el post , otra gigafoto apurando los dias de semana "manta" , esta vez desde Cardona con su castillo medieval en primer plano. Tuve que colocar el trípode como pude en un punto de la montaña en que no me molestara ningún arbol.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-BnYRBHbVyHQ/U3jtdb7C2WI/AAAAAAAABDo/Em20Vahxqsg/s1600/IMAG0875.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-BnYRBHbVyHQ/U3jtdb7C2WI/AAAAAAAABDo/Em20Vahxqsg/s1600/IMAG0875.jpg" height="213" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nckWM3qH5mM/U3jtfVCj1hI/AAAAAAAABDw/aHLx0VjzvZE/s1600/IMAG0876.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-nckWM3qH5mM/U3jtfVCj1hI/AAAAAAAABDw/aHLx0VjzvZE/s1600/IMAG0876.jpg" height="320" width="213" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"> Fueron 468 imagenes y unos 8.5 GPx de resolución. Esta vez también usé los mismos equipos y fué acabar las últimas fotos y oscurecerse el cielo, pero aun llegé al coche sin mojarme después de los 20 minutos de paseada. Si la quereis ver en grande podeis verla en <a href="http://gigapan.com/gigapans/153499">http://gigapan.com/gigapans/153499</a> </span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2ji0H2x0VwU/U3jpxdGUgOI/AAAAAAAABC4/2RWe9_2E24g/s1600/Sin+ti%CC%81tulo-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2ji0H2x0VwU/U3jpxdGUgOI/AAAAAAAABC4/2RWe9_2E24g/s1600/Sin+ti%CC%81tulo-5.jpg" height="198" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y este es el primer "paquete" de fotografias que realicé durante primavera y semana Santa, en estos momentos tengo otras por procesar en espera de un nuevo iMac más potente que deseo que fluya aun más rápido que el anterior.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<br /></div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-79628639560943573092014-05-18T02:37:00.001-07:002014-05-18T02:38:01.609-07:00Robot panorámico XS (El programa de Arduino 2 de 2)<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora toca explicar la segunda parte del programa del robot panorámico. Ahora es el momento del programa para la slide dolly.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Empoezamos borrando la pantalla y en principio ejecutamos la calibración inicial de ejes. Esta subrutina esta comentada para que no se active ya que para que funcione correctamente hay que montar unos sensores extra para marcar los límites.</span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido llamamos a la subrutina define_modo() , programa_limite_recorrido() y la subrutina define_velocidad() que cuando llege el momento ya las explicaré con mas detalle, pero que en resumidas cuentas la primera sirve para elejir si queremos hacer time-lapse, video o un modo joystick. En la segunda subrutina es la encargada de programar los limites mientras que en la tercera definimos la velocidad a la que vamos a mover los motores. También definimos la variable pp con el valor de pdisplay (modo de funcionamiento) . Mágicamente el valor de pdisplay se cambiava sólo y el hecho de definir una variable nueva en este punto sirve para memorizar el valor correctamente.</span></div>
<br />
<br />
void slide_dolly(){<br />
<br />
lcd.clear();<br />
// calibracion_inicial_ejes(); *********BORRAR<br />
define_modo();<br />
int pp=pdisplay;<br />
programa_limite_recorrido();<br />
define_velocidad();<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido comprobamos si hemos elejido el modo de time-lapse, si es que si, ejecutaremos la subrutina define_fotos() , define_tiempo(); y acto seguido una vez tengamos ejecutadas estas subrutinas que son las encargadas de definir el número de fotos y el espacio de tiempo entre tomas. A continuación dividimos los pasos totales que hemos definido previamente por el numero de fotos a realizar menos una. Igualmente haremos lo mismo para el segundo eje.</span></div>
<br />
if (pp==0){ // if modo !=timelapse no demani ni define_fotos ni define_tiempo<br />
define_fotos();<br />
<br />
define_tiempo();<br />
pasoX=pasoX/(shot-1);<br />
pasoY=pasoY/(shot-1);<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Borramos de nuevo la pantalla y nos preparamos para empezar mostrandonos en la pantalla el mensaje de "[ENTER] = Start", acto seguido redondeamos los pasos que se van a mover los diferentes ejes , para ello sumamos +0.4 antes de redondear estos valores, esto lo hago porque se tratan de valores enteros y si tiene que dar 33.7 el arduino entenderia que son 33 pasos enteros , aunque se aproxima más a 34, es por ello que le sumo 0.4 y con eso se convierten en 33.7+0.4=34.1 que una vez redondeado que en 34. En cambio si el valor fuera de 33.4 al sumarle 0.4 quedaria en 33.8 que al ser redondeado por arduino serian 33 igualmente.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido provocamos una pausa poniendo la variable a=0 y hasta que no pulsemos select, este valor no cambiará a 1 y estará continuamente en el bucle esperando.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-UxTJODivins/U3hfi8ttmKI/AAAAAAAAA_o/SQWUZ5-DKQA/s1600/FILE0944.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-UxTJODivins/U3hfi8ttmKI/AAAAAAAAA_o/SQWUZ5-DKQA/s1600/FILE0944.JPG" height="300" width="400" /></a></div>
<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("[ENTER] = Start");<br />
lcd.setCursor(0,1);<br />
for (int k=0 ; k<16; k++){<br />
lcd.print(".");<br />
delay(100);<br />
}<br />
// Convertim pasos amb valor decimal a numero sencer.<br />
/* el paso X es perillos de convertir ja que el valor pot ser superior a 32k i una int no ho aguanta<br />
pasoX=pasoX+0.4;<br />
pasoXX=(int) pasoX;<br />
pasoX=pasoYY;<br />
*/<br />
pasoY=pasoY+0.4;<br />
pasoYY=(int) pasoY;<br />
pasoY=pasoYY;<br />
xy=pasoX/pasoY;<br />
a=0; // provoquem pausa<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
a=1;<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Borramos de nuevo la pantalla y depeendiendo del tipo de programa que queramos ejecutar (memorizado en la variable pp) acabaremos ejecutando las subrutinas correspondientes rutina_video_1_eje(), rutina_video_3_ejes(), rutina_time_lapse() o bién la rutina_joystick(). Una vez ejecutada y finalizada la subrutinas , volverá al menú inicial (el que nos deja elejir el modo de Gigapan o le de Slide_dolly), a excepción de si elejimos el modo joystick que sólo podremos salir de ella forzando un reset a nuestro Arduino.</span></div>
<br />
lcd.clear();<br />
if(pp==1){<br />
rutina_video_1_eje();<br />
}<br />
if(pp==3){<br />
rutina_video_3_ejes();<br />
}<br />
if(pp==0){<br />
rutina_time_lapse();<br />
}<br />
if(pp==4){<br />
rutina_joystick();<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La siguiente subrutina lo único que hace es mostrarnos en la pantalla un mensaje informandonos que se están buscando los limites , empezando primero por el eje X . Para ello va dando impulos en sentido negativo al motor paso a paso hasta que detecta el sensor de origen (limitX) . En el momento que detecte este sensor, el motor avanza 10 pulsos positivos con lo que en principio se espera que el sensor de limite deja de detectar. Una vez tiene el eje X en origen, realizará la misma operación pero en el eje Y siguiendo la misma lógica pero está vez se moverá el motor Y y el límite de posicionamiento vendrá dado por le sensor limitY.</span></div>
<br />
void calibracion_inicial_ejes(){<br />
lcd.setCursor(0,0);<br />
lcd.print("Buscando limites");<br />
lcd.setCursor(0,1);<br />
lcd.print("Eje X");<br />
int a=0;<br />
while(a==0){<br />
if(digitalRead(limitX)==HIGH){ //<br />
a=1;<br />
}<br />
myStepperX.step(-1);<br />
}<br />
delay(300);<br />
myStepperX.step(10); <br />
a=0;<br />
lcd.setCursor(0,1);<br />
lcd.print("Eje Y");<br />
while(a==0){<br />
if(digitalRead(limitY)==HIGH){ //<br />
a=1;<br />
}<br />
myStepperY.step(-1);<br />
}<br />
delay(300);<br />
myStepperY.step(10);<br />
a=0;<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora es el momento de definir el modo de funcionamiento de nuestra slide dolly mediante la subrutina define_modo(). Empezaremos borrando la pantalla e informando de que estamos en el modo de Slide dolly para confirmarlo. Tras unos segundos nos dejará elejir si queremos hacerla funcionar en modo automático o en modo manual (llamado modo Joystick). </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Mediante el uso de los pulsadores UP & DOWN nos desplazaremos entre estas opciones hasta que no pulsemos Select para validar.</span><span style="font-family: Verdana, sans-serif;">La variable pdisplay será la encargada de memorizar la opción elejida en esta parte del programa, pero luego se convierte en variable pp porque se "perdia" el valor mágicamente.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--nju5V1hIfA/U3hf8uq8wFI/AAAAAAAAA_w/T59modERPfc/s1600/FILE0930.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/--nju5V1hIfA/U3hf8uq8wFI/AAAAAAAAA_w/T59modERPfc/s1600/FILE0930.JPG" height="300" width="400" /></a></div>
<br />
void define_modo(){<br />
lcd.clear();<br />
lcd.print("__Slide__dolly__");<br />
delay(3000);<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print(">1. Automatico");<br />
lcd.setCursor(2,1);<br />
lcd.print("2. Joystick");<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZiIdzsGu6_k/U3hgMjMqeFI/AAAAAAAAA_4/Am6t6AxmZGQ/s1600/FILE0931.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZiIdzsGu6_k/U3hgMjMqeFI/AAAAAAAAA_4/Am6t6AxmZGQ/s1600/FILE0931.JPG" height="300" width="400" /></a></div>
<br />
while((analogRead(0)/margen)!=(select/margen)){ // select original era : while(digitalRead(PinSelect)!=HIGH)<br />
delay(100);<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
pdisplay0=4;<br />
lcd.setCursor(1,1);<br />
lcd.print(">");<br />
lcd.setCursor(1,0);<br />
lcd.print(" ");<br />
}<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
pdisplay=0;<br />
lcd.setCursor(1,1);<br />
lcd.print(" ");<br />
lcd.setCursor(1,0);<br />
lcd.print(">");<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Si hemos elejido el modo Joystick como que no hay nada más que programar, se ejecutará directamente su subrutina especifica, la rutina_joystick() de lo contrarrio nos dejará elejir entre realizar un time-lapse o un video, y también lo elejiremos mediante las teclas UP y DOWN , y de nuevo hasta que no pulsemos la tecla Select podremos dudar que es lo que queremos hacer. Se observa un delay(1000) justo después de aparecer el menú en la pantalla, esto lo hago para que no se validen automaticamente todos los menús por error evitando que se seleccionen las opciones sin querer por tener aun pulsados la tecla Select desde nuestra anterior elección del menú previo. </span></div>
<br />
if(pdisplay0>=4){<br />
rutina_joystick();<br />
}<br />
//if (pdisplay0==0){<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print(">1. Time-lapse");<br />
lcd.setCursor(2,1);<br />
lcd.print("2. Continuo");<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-fHOViBMyyVY/U3hgdykQ91I/AAAAAAAABAA/8K9kunMuUNw/s1600/FILE0932.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-fHOViBMyyVY/U3hgdykQ91I/AAAAAAAABAA/8K9kunMuUNw/s1600/FILE0932.JPG" height="300" width="400" /></a></div>
<br />
delay(1000);<br />
while((analogRead(0)/margen)!=(select/margen)){ // select original era : while(digitalRead(PinSelect)!=HIGH)<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
pdisplay=1;<br />
<br />
lcd.setCursor(1,1);<br />
lcd.print(">");<br />
lcd.setCursor(1,0);<br />
lcd.print(" ");<br />
}<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
pdisplay=0;<br />
<br />
lcd.setCursor(1,1);<br />
lcd.print(" ");<br />
lcd.setCursor(1,0);<br />
lcd.print(">");<br />
}<br />
}<br />
Serial.println(pdisplay);<br />
<br />
a=0;<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Si hemos elejido el moto video, nos aparecerá otro menú que servirá para que elijamos si queremos realizar un video con un sólo eje (motor principal de la dolly) o bién deseamos utilizar los 2 ejes. Esta parte del programa es simplemente igual que las dos anteriores comentadas en concepto de programación. </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
if(pdisplay==1){ //elejimos 1 o 2 ejes en modo video<br />
lcd.clear();<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print(">1 = Eje Horizon");<br />
lcd.setCursor(1,1);<br />
lcd.print("2 = Los 2 ejes");<br />
delay(500);<br />
while((analogRead(0)/margen)!=(select/margen)){ // select<br />
delay(100);<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
pdisplay=3;<br />
lcd.setCursor(0,1);<br />
lcd.print(">");<br />
lcd.setCursor(0,0);<br />
lcd.print(" ");<br />
}<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
pdisplay=1;<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
lcd.setCursor(0,0);<br />
lcd.print(">");<br />
}<br />
}<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">A continuació la secuencia de programación de limites de recorrido: Empezamos con una pausa y acto seguido nos muestra en pantalla un mensaje informandonos que elijamos el punto de inicio del eje X. Acto seguido mediante las teclas LEFT y RIGHT si las pulsamos avanzaremos o retrocederemos el equivalente a 10 pasos de nuestro motor paso a paso. </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En caso de que activaramos el sensor de limite, nos aparecerá un mensaje informandonos que estamos en el límite. Podremos mover el carro hasta dónde queramos hasta que no pulsemos la tecla Select, para ello en el inicio de esta subrutina se define el valor de a=0 y para provocar el bucle lo logramos mediante la instrucción while(a==0).</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Otra cosa que no he comentado, es que cuando pulsamos cualquier botón lo que hacemos es leer el valor de la entrada análogica0 y la dividimos del valor margen, este sirve para dar una tolerancia de error, cuanto más grande sea el valor margen , mayor será la tolerancia de nuestro pulsador pero no es conveniente que sea muy grande , no sea que se solapen dos valores muy parecidos y luego nuestro Arduino haga lo primero que le parezca...</span></div>
<br />
void programa_limite_recorrido(){<br />
//a=0;<br />
delay(1000);<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("Elije punto de");<br />
lcd.setCursor(0,1);<br />
lcd.print("inicio del eje X"); //buscar punto INICIO de la dolly eje X<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-dauf7M45gDo/U3hhWnGy3JI/AAAAAAAABAI/IxQm7a8cBzU/s1600/FILE0933.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-dauf7M45gDo/U3hhWnGy3JI/AAAAAAAABAI/IxQm7a8cBzU/s1600/FILE0933.JPG" height="300" width="400" /></a></div>
<br />
delay(200);<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
a=1;<br />
}<br />
delay(15);<br />
if((analogRead(0)/margen)==(right/margen)) { // derecha +X<br />
myStepperX.step(10); <br />
}<br />
if((analogRead(0)/margen)==(left/margen)) { // izquierda -X<br />
for (int i = 0; i<10; i++){<br />
if(digitalRead(limitX)==HIGH){<br />
lcd.setCursor(0,1);<br />
lcd.print("ATENCION LIMITE!");<br />
}else{<br />
myStepperX.step(-1);<br />
}<br />
}<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez hallado el punto de inicio del eje X haremos lo mismo pero para el punto final. La lógica usada será la misma que la utilizada para buscar el punto de inicio pero con una pequeña diferencia: ahora memorizaremos en lal variable pasoX los pasos que realice el motor cuando nosotros lo estamos posicionando. Este valor nos lo irá mostrando continuadamente en la pantalla.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-CJ4zUJwn2c0/U3hh2bpd9oI/AAAAAAAABAQ/tgQbgwHC9do/s1600/FILE0934.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-CJ4zUJwn2c0/U3hh2bpd9oI/AAAAAAAABAQ/tgQbgwHC9do/s1600/FILE0934.JPG" height="300" width="400" /></a></div>
<br />
a=0;<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("Busca punt final");<br />
lcd.setCursor(3,1);<br />
lcd.print("del eje X:"); //buscar el punto FINAL de la dolly eje X<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Jpj63c4AdRo/U3hiNaNCjjI/AAAAAAAABAY/XjTsAYoi0e8/s1600/FILE0935.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Jpj63c4AdRo/U3hiNaNCjjI/AAAAAAAABAY/XjTsAYoi0e8/s1600/FILE0935.JPG" height="300" width="400" /></a></div>
<br />
while(a==0){<br />
if(((analogRead(0)/margen)==(select/margen))&(pasoX!=0)){ <br />
a=1;<br />
}<br />
if((analogRead(0)/margen)==(right/margen)) { // derecha +X<br />
if (pasoX<20000){ <br />
pasoX=pasoX+10;<br />
myStepperX.step(10);<br />
lcd.setCursor(3,1);<br />
lcd.print(" ");<br />
lcd.setCursor(6,1);<br />
lcd.print(pasoX);<br />
lcd.print(" ");<br />
}<br />
}<br />
if((analogRead(0)/margen)==(left/margen)) { // izquierda -X<br />
if(digitalRead(limitX)==HIGH){<br />
lcd.setCursor(0,1);<br />
lcd.print("ATENCION LIMITE!");<br />
}else{<br />
pasoX=pasoX-10; <br />
myStepperX.step(-10);<br />
}<br />
lcd.setCursor(3,1);<br />
lcd.print(" ");<br />
lcd.setCursor(6,1);<br />
lcd.print(pasoX);<br />
lcd.print(" ");<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">A continuación realizaremos lo mismo pero para el eje Y. Empezaremos buscando el punto inicial en pasos de 50 pulsos, este valor lo podeis modificar a vuestro gusto. Y una vez obtenido este, buscaremos elpunto final del eje Y memorizando la posición mediante la variable PasoY.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-_s9WMsyUp5k/U3hicqiLv6I/AAAAAAAABAg/IeQgzht3seQ/s1600/FILE0936.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-_s9WMsyUp5k/U3hicqiLv6I/AAAAAAAABAg/IeQgzht3seQ/s1600/FILE0936.JPG" height="300" width="400" /></a></div>
<br />
if (pdisplay==1){<br />
a=1;<br />
}else{<br />
a=0;<br />
delay(1000);<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("Elije punto de");<br />
lcd.setCursor(0,1);<br />
lcd.print("inicio del eje Y"); //buscar punto INICIO de la dolly eje Y<br />
delay(200);<br />
}<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
a=1;<br />
}<br />
delay(15);<br />
if((analogRead(0)/margen)==(right/margen)) { // derecha +Y<br />
myStepperY.step(5); <br />
}<br />
if((analogRead(0)/margen)==(left/margen)) { // izquierda -Y<br />
myStepperY.step(-5);<br />
}<br />
}<br />
if (pdisplay==1){<br />
a=1;<br />
}else{<br />
a=0; <br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("Busca punt final");<br />
lcd.setCursor(3,1);<br />
lcd.print("del eje Y:"); //buscar el punto FINAL de la dolly eje Y<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_kUj0B8A4vU/U3his0h0JhI/AAAAAAAABAo/0F-cmzBkpp4/s1600/FILE0937.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_kUj0B8A4vU/U3his0h0JhI/AAAAAAAABAo/0F-cmzBkpp4/s1600/FILE0937.JPG" height="300" width="400" /></a></div>
<br />
delay(500);<br />
}<br />
while(a==0){<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Originalmente con la siguiente instrucción forzaba a que el punto final fuera diferente del inicial, simplemente porque cuando luego habia que buscar la proporción de pasosX respecto Y, si este último valor era 0 la división era infinito provocando un error con repercusiones desconocidas. Si quereis modificar esta linea solo teneis que incluir el &(pasoY!=0) y organizar corchetes.</span></div>
<br />
if(((analogRead(0)/margen)==(select/margen))){ //original &(pasoY!=0)<br />
<br />
a=1;<br />
}<br />
delay(15);<br />
if((analogRead(0)/margen)==(right/margen)) { // derecha +X<br />
if (pasoY<3200){ <br />
pasoY=pasoY+5;<br />
myStepperY.step(5);<br />
lcd.setCursor(3,1);<br />
lcd.print(" ");<br />
lcd.setCursor(6,1);<br />
lcd.print(pasoY);<br />
lcd.print(" ");<br />
}<br />
}<br />
if((analogRead(0)/margen)==(left/margen)) { // izquierda -X<br />
pasoY=pasoY-5;<br />
myStepperY.step(-5);<br />
lcd.setCursor(3,1);<br />
lcd.print(" ");<br />
lcd.setCursor(6,1);<br />
lcd.print(pasoY);<br />
lcd.print(" ");<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">A continuación se colocan los motores en su posición de inicio , es tan fácil como forzar el movimiento de cada uno de los dos motores para que actuen los pasos programados anteriormente pero en sentido inverso. Primero empezamos con el motor X y luego con el Y.</span></div>
<br />
// desplazamos hasta el origen eje X<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("Mueve a origen");<br />
lcd.setCursor(5,1);<br />
lcd.print("Eje X");<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Yl4xWk-F8iw/U3hi_O1ugoI/AAAAAAAABAw/JHDuW6hIKv4/s1600/FILE0939.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Yl4xWk-F8iw/U3hi_O1ugoI/AAAAAAAABAw/JHDuW6hIKv4/s1600/FILE0939.JPG" height="300" width="400" /></a></div>
<br />
myStepperX.step(-pasoX);<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una manera muy tonta de tener claro el sentido de trabajo de cada motor es cuestionandonos si el valor de pasos es positivos o negativos. Ahora cuando aun no se ha movido ningun motor es fácil, el problema vendrá luego mas tarde, una vez hechas las proporciones de pasoX/pasoY si ambas son negativas se convierte el resultado positivo todo y aqui es cuando hay que tener una memoria para que en todo momento quede claro el sentido si no queremos enviar la dolly a casa del vecino.</span></div>
<br />
if (pasoX>0){<br />
sentidoX=0;<br />
}else{<br />
sentidoX=1;<br />
}<br />
<br />
lcd.setCursor(5,1);<br />
lcd.print("Eje Y");<br />
myStepperY.step(-pasoY);<br />
if (pasoY>0){<br />
sentidoY=0;<br />
}else{<br />
sentidoY=1;<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En la siguiente subrutina define_fotos() tal y como dice su nombre sirve para que programemos el número de fotos a realizar, en principio ya viene pre-definida como 25 fotos, pero si vais a hacer un time-lapse de varios segundos necesitareis unas cuantas mas. Tened en cuenta que son necesarias 25 imagenes por segundo como mínimo para que nuestro video de time-lapse tenga un refresco de imagen aceptable . En principio está capado a una capacidad de 250 capturas pero si buscais en las siguientes lineas, vereis que es muy fácil modificarlo/eliminar esta opción.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Utilizo la misma lógica de siempre: se declara la variable a=0 y luego hay un while que viene a decir "mientras a sea 0 ves haciendo el bucle" . Para salir del bucle hay que pulsar Select y automaticamente cambiará el valor de a=1 y acto seguido saldremos del bucle.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Dentro del bucle si pulsamos UP incrementamos una foto y si pulsamos DOWN decrementamos una foto.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">También hay unas lineas dónde miramos el valor de fotos (variable shot) que si es superior a un valor quita o pone espacios en blanco en nuestro lcd antes de mostrar el valor, esto lo hago para que quede todo mas pulido, esta es una de las partes más pesadas, hacerlo que quede bonito en nuestra pantalla dentro de las limitadas posibilidades que nos ofrece.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NkyLc5gSOTo/U3hjgtG8aAI/AAAAAAAABA4/xViyPnKVZgM/s1600/FILE0941.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NkyLc5gSOTo/U3hjgtG8aAI/AAAAAAAABA4/xViyPnKVZgM/s1600/FILE0941.JPG" height="300" width="400" /></a></div>
<br />
void define_fotos(){<br />
a=0;<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("Numero de fotos");<br />
lcd.setCursor(4,1);<br />
lcd.print(shot,1);<br />
lcd.setCursor(6,1);<br />
lcd.print(" fotos");<br />
delay(200);<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
a=1;<br />
}<br />
delay(150);<br />
if((analogRead(A0)/margen)==(arriba/margen)) { // arriba<br />
if (shot<250){<br />
shot=shot+1;<br />
lcd.setCursor(3,1);<br />
if (shot<100){<br />
lcd.print(" ");<br />
}<br />
if (shot<10){<br />
lcd.print(" ");<br />
}<br />
lcd.print(shot);<br />
lcd.setCursor(6,1);<br />
lcd.print(" fotos");<br />
}<br />
}<br />
if((analogRead(A0)/margen)==(abajo/margen)) { // abajo<br />
if (shot>1){<br />
shot=shot-1;<br />
lcd.setCursor(3,1);<br />
if (shot<100){<br />
lcd.print(" ");<br />
}<br />
if (shot<10){<br />
lcd.print(" ");<br />
}<br />
lcd.print(shot);<br />
lcd.setCursor(6,1);<br />
lcd.print(" fotos");<br />
}<br />
}<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En la siguiente subrutina define_tiempo() sirve para determinar el tiempo entre fotos de nuestro time-lapse, sigue la misma lógica de la subrutina de define_fotos, pero esta vez la variable a memorizar es segundos_secuencia.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-x4M3VchMLjc/U3hsCc8wjtI/AAAAAAAABBI/0mkdArQ284k/s1600/FILE0942.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-x4M3VchMLjc/U3hsCc8wjtI/AAAAAAAABBI/0mkdArQ284k/s1600/FILE0942.JPG" height="300" width="400" /></a></div>
<br />
void define_tiempo(){<br />
a=0;<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("Define tiempo");<br />
lcd.setCursor(2,1);<br />
lcd.print("entre fotos");<br />
<br />
delay(1000);<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter) <br />
a=1;<br />
}<br />
delay(150);<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
if (segundos_secuencia<250){<br />
segundos_secuencia=segundos_secuencia+1;<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
if(segundos_secuencia<100){<br />
lcd.print(" ");<br />
}<br />
if(segundos_secuencia<10){<br />
lcd.print(" ");<br />
}<br />
lcd.print(segundos_secuencia);<br />
lcd.setCursor(7,1);<br />
lcd.print(" seg. ");<br />
}<br />
}<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
if (segundos_secuencia>1){<br />
segundos_secuencia=segundos_secuencia-1;<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
if(segundos_secuencia<100){<br />
lcd.print(" ");<br />
}<br />
if(segundos_secuencia<10){<br />
lcd.print(" ");<br />
}<br />
lcd.print(segundos_secuencia);<br />
lcd.setCursor(7,1);<br />
lcd.print(" seg. ");<br />
}<br />
}<br />
}<br />
}<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NsqJ3WFu3S4/U3hsQNCw9DI/AAAAAAAABBQ/wlm1t11zsrg/s1600/FILE0943.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NsqJ3WFu3S4/U3hsQNCw9DI/AAAAAAAABBQ/wlm1t11zsrg/s1600/FILE0943.JPG" height="300" width="400" /></a></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En la siguiente subrutina sirve para definir la velocidad de los ejes. Es una función que he probado poco, lo siento, no tengo tanto tiempo como me gustaria! Basicamente sigue la misma lógica que las subrutinas anteriores en cuanto a control de pulsadores y la variable a tratar es velocidadX, mediante el programa múltiplicamos este valor por 2.5, de esta manera si queremos llegar al 100% de velocidad , el valor real será 40.</span></div>
<br />
void define_velocidad(){<br />
a=0;<br />
velocidadX=10;<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("Velocidad Ejes");<br />
lcd.setCursor(5,1);<br />
lcd.print(velocidadX*2.5);<br />
lcd.print(" % ");<br />
delay(500);<br />
while(a==0){<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
a=1;<br />
}<br />
delay(150);<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
if (velocidadX<40){<br />
velocidadX=velocidadX+1;<br />
}<br />
lcd.setCursor(5,1);<br />
lcd.print(velocidadX*2.5);<br />
lcd.print(" % ");<br />
} <br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
if(velocidadX>1){<br />
velocidadX=velocidadX-1;<br />
}<br />
lcd.setCursor(5,1);<br />
lcd.print(velocidadX*2.5);<br />
lcd.print(" % ");<br />
}<br />
}<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-9gk6b1NovEg/U3huozXhfFI/AAAAAAAABBc/NwHkvE8WaJc/s1600/FILE0940.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-9gk6b1NovEg/U3huozXhfFI/AAAAAAAABBc/NwHkvE8WaJc/s1600/FILE0940.JPG" height="300" width="400" /></a></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez confirmada nuestra selección igualamos el valor en las velocidades de ambos ejes y la aplicamos mediante las funciones myStepper?.setSpeed(velocidad)</span></div>
<br />
velocidadY=velocidadX;<br />
myStepperX.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
myStepperY.setSpeed(velocidadY); // definimos velocidad impulsos motor<br />
<br />
}<br />
<br />
A por la rutina de video de 1 eje ! Empezamos haciendo una limpieza de pantalla y nos aparecerá en pantalla un mensaje informandonos que vamos a grabar, y un segundo y medio después se activará la señal de remoto de nuestra cámara. Acto seguido en la pantalla nos mostrará el % de velocidad a que se va a realizar . Si durante la grabación pulsamos UP o DOWN modificaremos esta velocidad.<br />
<br />
void rutina_video_1_eje(){ //rutina video<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("A T E N C I O N");<br />
lcd.setCursor(0,1);<br />
lcd.print("Grabando video");<br />
delay(1500);<br />
digitalWrite(PinShot, HIGH);<br />
delay(1000);<br />
if(pasoX<0){<br />
pasX=-pasoX;<br />
}else{<br />
pasX=pasoX;<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En vez de ejecutar con una sola instrucción el movimiento realizando todos los pasos de golpe, realizamos el movimiento paso a paso y verificamos continuamente que no excedamos de la posición de los micros de seguridad. El programa esta preparado, pero no lo tengo implementado y lógicamente no está probado!</span></div>
<br />
for (int i = 0; i<pasX; i++) {<br />
if(digitalRead(limitX)==HIGH){<br />
lcd.clear(); <br />
lcd.setCursor(0,1);<br />
lcd.print("ATENCION LIMITE");<br />
delay(10000);<br />
i=pasX;<br />
break;<br />
}else{<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Aqui es dónde podemos modificar el valor de velocidad. El hecho de hacer mover el motor paso a paso también sirve para que podamos realizar pequeñas actuaciones como esta , si definieramos todo el movimiento de golpe no podriamos cambiar la velocidad a media trayectoria. Comentar que si entre las instrucciones de movimiento de un paso de motor hasta que se repite si hay muchas instrucciones que aunque sean "tontas" nos frena el programa y podemos provocar que vaya a golpes. Sobretodo instrucciones de visualización en nuestra LCD nos puede provocar este problema. El pobre Arduino le falta velocidad de procesamiento y de tratamiento de datos.</span></div>
<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
if (velocidadX>2 && velocidadX<40){<br />
velocidadX=velocidadX+1;<br />
<br />
myStepperX.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
}<br />
}<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
if (velocidadX>2 && velocidadX<40){<br />
velocidadX=velocidadX-1;<br />
<br />
myStepperX.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
}<br />
}<br />
if (sentidoX==1){<br />
myStepperX.step(-1);<br />
}else{<br />
myStepperX.step(1);<br />
} <br />
}<br />
}<br />
delay(200);<br />
digitalWrite(PinShot, LOW);<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez recorrido el espacio, en nuestra LCD nos confirmará el fín de la grabación y el carro retornará a la posición de inicio.</span></div>
<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("Fin del video");<br />
delay(2000);<br />
lcd.setCursor(0,1);<br />
lcd.print("Retorno a inicio");<br />
myStepperX.setSpeed(10); // definimos velocidad impulsos motor<br />
myStepperX.step(-pasoX);<br />
<br />
lcd.clear();<br />
lcd.setCursor(5,2);<br />
lcd.print("F I N !");<br />
delay(5000);<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Vamos a por el video de 2 ejes, este todo y ser casi igual al de 1 eje da mucha guerra... Arduino SÓLO puede ejecutar una acción a la vez y por lo tanto mientras mueve un motor el otro está quieto, es otra de las limitaciones que tiene y que ya he repetido varias veces. Otra cosa es que lo intentemos engañar con pequeños movimientos entre ambos motores y de sensación de que todo va sincronizado...pero ja! Es más , nosotros estamos utilizando motores paso a paso y confiamos en que no se pierda ningún paso por el camino, lo suyo seria tener un encoder o aunque fuera muy guarro un potenciometro variable para tener medio controlada la posición de nuestro invento...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Previamente a este punto hay una línea dónde dice algo asi: xy=pasoX/pasoY que sirve para buscar una proporción de los pasos que va a dar el eje X respecto el Y. Como que el resultado de xy es un valor entero quiere decir que si multiplico xy*pasoY es posible que no de pasoX, y esto es lo que hacemos en la formula dónde definimos el resto. Este valor serán los pasos "perdidos" del eje X.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Para que me entendais mejor, imaginamos que pasoX=1000, pasoY= 220, cuando hacemos xy=pasoX/pasoY , sería 1000/220 = 4.54, como que xy está definido como una int , es un número entero y va a memorizar con valor 4.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Entonces se moveria 4 pasos durante 220 veces el eje X y a cada paso 4 pasos de X se moveria uno de Y, resultado final = nos faltarian 1000-880 pasos = 120 pasos perdidos.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">¿ Como lo arreglo? calculo el resto = 120 pasos y lo divido de 2. </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Arrancamos el eje X durante la mitad de pasos del resto (60 pasos) y acto seguido hago la secuendica de 220 veces 4 pasos de X por 1 paso de Y (total 880 pasos de X y 220 de Y). Llegados a este punto llevamos 940 pasos de X y 220 de Y . Ya sólo falta mover el eje X durante la mitad del resto (60 pasos) para completar todo el recorrido de X y de Y. Si estos "escalones" no os gustan siempre podeis eliminarlos o editar el video...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">¿Vaya toston no? Pues es lo que hay! Si a alguién se le ocurre una manera mejor que me la explique!</span></div>
<br />
void rutina_video_3_ejes(){ //rutina video 2 ejes<br />
<br />
resto=pasoX-(xy*pasoY);<br />
<br />
lcd.setCursor(0,0);<br />
lcd.print("A T E N C I O N");<br />
lcd.setCursor(0,1);<br />
lcd.print("Grabando video");<br />
delay(1500);<br />
digitalWrite(PinShot, HIGH);<br />
delay(1000);<br />
<br />
<br />
myStepperX.step(resto/2);<br />
<br />
if(pasoX<0){<br />
pasX=-pasoX;<br />
}else{<br />
pasX=pasoX;<br />
}<br />
if(pasoY<0){<br />
pasY=-pasoY;<br />
}else{<br />
pasY=pasoY;<br />
}<br />
if(xy<0){ //linies noves<br />
xy=xy*(-1);<br />
}<br />
// *********************************<br />
<br />
for (int m = 0; m<pasY; m++) {<br />
for (long int n = 0; n<(xy); n++) {<br />
if(digitalRead(limitX)==HIGH){<br />
lcd.clear(); <br />
lcd.setCursor(0,1);<br />
lcd.print("ATENCION LIMITE!");<br />
delay(10000);<br />
n=pasoX;<br />
break;<br />
}else{<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
if (velocidadX>2 && velocidadX<40){<br />
velocidadX=velocidadX-1;<br />
myStepperX.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
myStepperY.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
}<br />
}<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
if (velocidadX>2 && velocidadX<40){<br />
velocidadX=velocidadX+1;<br />
myStepperX.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
myStepperY.setSpeed(velocidadX); // definimos velocidad impulsos motor<br />
}<br />
}<br />
if (sentidoX==1){<br />
myStepperX.step(-1);<br />
}else{<br />
myStepperX.step(1);<br />
} <br />
}<br />
}<br />
if (sentidoY==1){<br />
myStepperY.step(-1);<br />
}else{<br />
myStepperY.step(1);<br />
}<br />
}<br />
<br />
// ***********************************************<br />
<br />
myStepperX.step(resto/2);<br />
<br />
delay(200);<br />
digitalWrite(PinShot, LOW);<br />
lcd.clear();<br />
lcd.setCursor(0,0);<br />
lcd.print("Fin del video");<br />
delay(2000);<br />
<br />
<span style="font-family: Verdana, sans-serif;">Luego después de que se nos muestre el mensaje de "Fín de video" volvemos a inicio y acabamos con nuestra rutina. Lo siento no tengo fotos, mirad el video...</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/IsqUozMUOPQ?feature=player_embedded' frameborder='0'></iframe></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<br />
lcd.setCursor(0,1);<br />
lcd.print("Retorno a inicio");<br />
<br />
myStepperX.step(-pasoX);<br />
<br />
myStepperY.step(-pasoY);<br />
<br />
lcd.clear();<br />
lcd.setCursor(5,1);<br />
lcd.print("F I N !");<br />
delay(10000);<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora es la hora de la rutina time-lapse, xD ! creo que nunca acabaré este post! Es muy parecido en cuanto a funcionamiento al video de 2 ejes pero no se ha implementado la funcion resto ya que es "tonteria" que se mueva un espacio y luego se descuadre . Dónde hay más trabajo es en la visualización de datos en nuestra LCD.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Empezamos creando una rutina que se repetirá tantas veces como numero de fotos a realizar. Actualizamos valores en pantalla y realizamos una foto mientras el gif cierra el diafragma. </span></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-AZRGiXJuVTo/U3h60Ehy6wI/AAAAAAAABBo/wN5ZmqS9DSI/s1600/FILE0989.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-AZRGiXJuVTo/U3h60Ehy6wI/AAAAAAAABBo/wN5ZmqS9DSI/s1600/FILE0989.JPG" height="300" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
void rutina_time_lapse(){ //rutina time-lapse<br />
for(int i = 1; i< shot; i++){ <br />
//logo0();<br />
logo2();<br />
lcd.setCursor(0,0);<br />
lcd.print("s:");<br />
lcd.print(i);<br />
lcd.setCursor(7,1);<br />
lcd.print(i*100/shot);<br />
lcd.print("%");<br />
lcd.setCursor(1,1);<br />
lcd.print("F O T O ! ");<br />
digitalWrite(PinShot, HIGH);<br />
logo2();<br />
delay(300);<br />
digitalWrite(PinShot, LOW);<br />
delay(300);<br />
<br />
logo3();<br />
lcd.setCursor(1,1);<br />
lcd.print("M O V E ! ");<br />
if(pasoX<0){<br />
pasX=-pasoX;<br />
}else{<br />
pasX=pasoX;<br />
}<br />
if(pasoY<0){<br />
pasY=-pasoY;<br />
}else{<br />
pasY=pasoY;<br />
}<br />
<br />
<span style="font-family: Verdana, sans-serif; text-align: justify;">Acto seguido y tras un pequeño retardo de 300 mS se mueve la dolly paso a paso en el eje X verificando que no exista contacto con el sensor de limite del ejeX, luego moverá el ejeY.</span><br />
<span style="font-family: Verdana, sans-serif; text-align: justify;"><br /></span>
for (int i = 0; i<pasX; i++) {<br />
if(digitalRead(limitX)==HIGH){<br />
lcd.setCursor(0,1);<br />
lcd.clear();<br />
lcd.print("ATENCION LIMITE!");<br />
delay(10000);<br />
i=pasX;<br />
break;<br />
}else{ <br />
if (sentidoX==1){<br />
myStepperX.step(-1);<br />
}else{<br />
myStepperX.step(1);<br />
}<br />
}<br />
}<br />
for (int i = 0; i<pasY; i++) {<br />
if (sentidoY==1){<br />
myStepperY.step(-1);<br />
}else{<br />
myStepperY.step(1);<br />
}<br />
}<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
lcd.setCursor(7,1);<br />
lcd.print(i*100/shot);<br />
lcd.print("%");<br />
<br />
posicion_actual_X=(posicion_actual_X+pasoX);<br />
posicion_actual_Y=(posicion_actual_Y+pasoY);<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Mientras está efectuando el retardo entre fotos podemos incrementar este retardo mediante las teclas UP y DOWN, si pulsais UP al incrementar el valor os va a parecer que no haceis nada, pero a cada decima de segundo le estais incrementando una más , y os dareis cuenta en la siguiente "pausa". Si por el contrario pulsais DOWN decrementais este valor</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Si por el contrario pulsais SELECT provocaremos una pausa.</span></div>
<br />
for (int j=0; j<(segundos_secuencia*10); j++){ <br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba<br />
segundos_secuencia=segundos_secuencia+0.1;<br />
}<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
segundos_secuencia=segundos_secuencia-0.1;<br />
}<br />
delay (100);<br />
lcd.setCursor(0,1);<br />
tiempo_reloj=j*0.1;<br />
if ((segundos_secuencia-tiempo_reloj)<10){<br />
lcd.print(" ");<br />
}<br />
lcd.print(segundos_secuencia-tiempo_reloj);<br />
lcd.setCursor(4,1);<br />
lcd.print(char(34));<br />
lcd.print(" ");<br />
lcd.setCursor(6,0);<br />
lcd.print("X:");<br />
lcd.print(posicion_actual_X,0);<br />
tempi=i;<br />
peticiopausadolly(); <br />
/*<br />
lcd.setCursor(6,2);<br />
lcd.print("Y:");<br />
lcd.print(posicion_actual_Y,0);<br />
*/ <br />
} <br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez realizadas todos los movimientos nos faltará la última foto para completar, y a continuación ya nos aparecerá el mensaje de MotionLapse completo! Momento en que la dolly retrocederá a su punto de origen.</span></div>
<br />
logo2();<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
digitalWrite(PinShot, HIGH);<br />
logo3();<br />
delay(500);<br />
digitalWrite(PinShot, LOW);<br />
delay(100);<br />
lcd.clear();<br />
logo2();<br />
lcd.setCursor(0,0);<br />
lcd.print("MotionLapse");<br />
lcd.setCursor(0,1);<br />
lcd.print(" completo!");<br />
<br />
myStepperX.step(-posicion_actual_X);<br />
myStepperY.step(-posicion_actual_Y);<br />
delay(5000);<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La subrutina peticiopausadolly() preguntará diez veces si está el pulsador de SELECT apretado, si sólo pusieramos una, se lo pasaria por el forro.. aqui si que corre el Arduino! Si detecta que esta pulsado entraremos en modo pausa y no saldremos hasta que pulsemos la tecla DOWN, momento en el cual actualizaremos datos de la pantalla y continuaremos (saldremos de la subrutina)</span></div>
<br />
void peticiopausadolly(){<br />
for (int k=0; k<10; k++){ //prova pausa<br />
if((analogRead(0)/margen)==(select/margen)){ // tecla SELECT si apretem provoquem una pausa fins que no apretem ENTER <br />
lcd.clear();<br />
lcd.setCursor(2,0);<br />
lcd.print("P a u s a ! ");<br />
lcd.setCursor(0,1);<br />
lcd.print("[DOWN] = reStart");<br />
delay(1000); //abans no hi era i em rearrancaba<br />
pause=2;<br />
while(pause>1){<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo<br />
pause=0;<br />
lcd.clear();<br />
logo2();<br />
lcd.setCursor(0,0);<br />
lcd.print("s:");<br />
lcd.print(tempi);<br />
lcd.setCursor(7,1);<br />
lcd.print(tempi*100/shot);<br />
lcd.print("%");<br />
}<br />
}<br />
}<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La subrutina joystick nos servirá para mover manualmente nuestra dolly/robot mediante los pulsadores UP, DOWN, LEFT y RIGHT , y realizar capturas cada vez que pulsemos el botón SELECT.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Para salir de esta subrutina hay que forzar un reset a nuestro Arduino.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Creo que si habeis entendido el resto de programa, aqui ya no hace falta ninguna explicación mas, simplemente es mas de lo mismo.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-glePVeRcIe4/U3h9nYlcQ2I/AAAAAAAABB0/itbDix-0jvo/s1600/FILE0992.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-glePVeRcIe4/U3h9nYlcQ2I/AAAAAAAABB0/itbDix-0jvo/s1600/FILE0992.JPG" height="300" width="400" /></a></div>
<br />
void rutina_joystick(){<br />
a=0;<br />
while(a==0){<br />
myStepperX.setSpeed(3); // definimos velocidad impulsos motor<br />
myStepperY.setSpeed(3); // definimos velocidad impulsos motor<br />
lcd.clear();<br />
lcd.setCursor(1,0);<br />
lcd.print("MODO JOYSTICK");<br />
delay(500);<br />
<br />
while(pdisplay!=99){<br />
if((analogRead(0)/margen)==(right/margen)){ //derecha +X<br />
myStepperX.step(5);<br />
pasoX=pasoX+1;<br />
}<br />
if((analogRead(0)/margen)==(left/margen)){ //izquierda -X<br />
myStepperX.step(-5);<br />
pasoX=pasoX-1;<br />
}<br />
<br />
if((analogRead(0)/margen)==(arriba/margen)){ //arriba +Y <br />
myStepperY.step(5); <br />
pasoY=pasoY+1;<br />
}<br />
<br />
if((analogRead(0)/margen)==(abajo/margen)){ //abajo -Y<br />
myStepperY.step(-5);<br />
pasoY=pasoY-1;<br />
}<br />
<br />
if((analogRead(0)/margen)==(select/margen)){ //enter)<br />
digitalWrite(PinShot, HIGH);<br />
lcd.setCursor(0,1);<br />
lcd.print(" F O T O !");<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-9t1jPCmoBmU/U3h-Hn7CwHI/AAAAAAAABB8/ETUBUxozvOY/s1600/FILE0993.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-9t1jPCmoBmU/U3h-Hn7CwHI/AAAAAAAABB8/ETUBUxozvOY/s1600/FILE0993.JPG" height="300" width="400" /></a></div>
<br />
delay(500);<br />
digitalWrite(PinShot, LOW);<br />
lcd.setCursor(0,1);<br />
lcd.print(" ");<br />
delay(500);<br />
}<br />
lcd.setCursor(1,1);<br />
lcd.print("X: ");<br />
lcd.print(pasoX);<br />
lcd.print(" ");<br />
lcd.setCursor(9,1);<br />
lcd.print("Y: ");<br />
lcd.print(pasoY);<br />
lcd.print(" ");<br />
}<br />
}<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Finalmente implementé la subrutina reset para poner todos los registros de valores a 0 para que una vez realizadas cualquier secuencia y fueramos a hacer otra no aparecieran movimientos ilógicos. Simplemente hay una re-definición de los valores de todas las variables.</span></div>
<div style="text-align: justify;">
<br /></div>
void reset(){<br />
progreso=0;<br />
pasoX=0;<br />
pasoY=0;<br />
xact=0; // º actual eje X<br />
yact=0; // º actual eje Y<br />
xmax=0; // º posición máxima eje X<br />
xmin=0; // º posición mínima eje X<br />
ymax=0; // º posición máxima eje Y<br />
ymin=0; // º posición mínima eje Y<br />
xtemp=0;<br />
ytemp=0;<br />
nshot=0;<br />
columnasX=0; // número de filas eje X >> (xmax-xmin)/pasoX<br />
columnasXX=0;<br />
filasY=0; // número de columnas eje Y >> (ymax-ymin)/pasoY<br />
filasYY=0;<br />
previsionShot=0; // prevision número shots columnasX * filasY<br />
segundos=0 ;<br />
minutos=0 ;<br />
horas=0 ;<br />
pause=0;<br />
pdisplay=0;<br />
pdisplay0=0;<br />
valorTempX=0;<br />
valorTempY=0;<br />
progreso=1;<br />
solape=0.20;<br />
retardo=0;<br />
origen=0;<br />
tempj=0;<br />
tempi=0;<br />
a=0;<br />
sentidoX=0;<br />
sentidoY=0;<br />
shot=25;<br />
pasoXX=0; // valor temporal dolly eje X<br />
pasoYY=0; // valor temporal dolly eje Y<br />
pasX=0;<br />
pasY=0;<br />
xy=0;<br />
resto=0;<br />
segundos_secuencia=3;<br />
posicion_actual_X=0;<br />
posicion_actual_Y=0;<br />
velocidadX=0;<br />
velocidadY=0;<br />
tiempo_reloj=0;<br />
espai=0;<br />
paso=0;<br />
menu=2;<br />
menu0=0;<br />
modenight=2;<br />
factor=1.5; // en su defecto : FF = 1, Nikon DX=1.5 , Canon DX=1.6 , Olympus= 2<br />
focal = 200;<br />
<br />
}<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y se acabó por hoy ! Reconozco que hay varios puntos a mejorar, se aceptan ayudas jiji! Y no sé cuantos post tengo pendientes de publicar...pero es que me gusta compartirlos pero faltan horas!</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Si quereis todo el programa completo, no dudeis en escribirme.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Saludos!</span></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-82860083291079430622014-05-11T10:42:00.001-07:002014-05-11T10:43:27.135-07:00Lo que dura dura (Batería)<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Utilizo una Nikon d5200 para realizar mis inventos, es mi cámara de batalla con la que realizo las Gigafotografías panorámicas. Esta cámara va equipada con una bateria EN-EL14 que subministra unos 7.4 voltios y un puñadito de miliAmperios suficientes para realizar unas teóricas 600 capturasas, pero todo depende de si utilizamos mucho la pantalla, el estabilizador, el auto-focus, el flash... por lo que esas 600 teóricas tomas son muy relativas.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Yo he logrado realizar algo más de 800 capturas trabajando con enfoque manual , y eliminando por completo todo el tema pre-visualizaciones y evitando al máximo esos consumos citados.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">A veces uno sale de casa con las baterías que están en principio a tope pero por lo que sea no lo están, o bién simplemente realizas unas tomas previas, previsualizas , juegas con los menús y luego a fotografiar en serio, resumen que ya no están al 100%.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En los dos últimos meses me he encontrado dos veces a 3/4 partes de una Gigapanorámica que me quedo sin batería y en mi último robot para cambiar la misma debo desmontar la cámara. Si debo aflojar el tornillo que fija la cámara hay un riesgo muuuuuy grande de que pierda un poco la posición, lo suficiente para que luego el acoplamiento no sea correcto a la hora de procesarlas. También puede pasar que con esos minutos "perdidos" se muevan las nuves o algun elemento móvil. Tenia la opción de hacer un agujero en la base dónde se aploma la cámara para poder cambiar la batería en cualquier momento, pero ... ¿no será más práctico olvidarse de la batería?</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Es por ello que empecé a investigar por el Google ya que sabia que estas cámaras son un poco pejigeras con las baterías y si no le pones una "codificada" se bloquea la cámara.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cEBKbQtRdRk/U2-qbzdAKDI/AAAAAAAAA9Y/rE2SHWXodhg/s1600/error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-cEBKbQtRdRk/U2-qbzdAKDI/AAAAAAAAA9Y/rE2SHWXodhg/s1600/error.jpg" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Nota> Si utilizais un grip para alimentar la cámara mientras una de las dos baterias sean "codificadas" no hay problemas de funcionamiento. El hecho de "codificar" basicamente consiste en la existencia de una pequeña comunicación bateria<=>cámara tal y como explican en el siguiente <a href="https://nikonhacker.com/viewtopic.php?t=616" target="_blank">post de NikonHacker</a>.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Tras ver esta información decidí jugarmela, entendiendo que aparte de la electrónica hay una batería pura y dura y esta es la parte de que yo quería prescindir por lo que cojí una batería clónica (codificada) y haciendo un poco de palanca con un cuchillo de cocina puntiagudo fuí abriendola poco a poco hasta encontrarme con las tripas como se dice bulgarmente.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-XSR34GCvuik/U2-sqBhIO2I/AAAAAAAAA9s/gSshPQ9GXp4/s1600/CIMG0717.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-XSR34GCvuik/U2-sqBhIO2I/AAAAAAAAA9s/gSshPQ9GXp4/s1600/CIMG0717.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Tal y como vemos se trata de dos baterias de 3.7V seriadas lo que dan un voltage de 7.4v. Lo curioso es que sale un conductor en el punto de union de ambas por lo que a nuestra placa electrónica también tendrá una señal de 3.7v que deduzco que será usada para hacer trabajar la lógica de la comunicación a 3.3v . </span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-01M4WRRSOSs/U2-sqYSyNUI/AAAAAAAAA9w/mrAE0u7c73g/s1600/CIMG0723.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-01M4WRRSOSs/U2-sqYSyNUI/AAAAAAAAA9w/mrAE0u7c73g/s1600/CIMG0723.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Mediante el uso del voltimetro confirmo los voltajes y polaridad aunque en la propia placa viene marcado como +B y -B . Una vez todo claro y con el uso de unas alicates de corte rompo los tres conductores para liberar la batería de la electrónica.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-V7vIrWKwczg/U2-uC7CGDyI/AAAAAAAAA-E/ifZyxf5DjQo/s1600/DSC_0585.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-V7vIrWKwczg/U2-uC7CGDyI/AAAAAAAAA-E/ifZyxf5DjQo/s1600/DSC_0585.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora es cuando cojo un step-down de los que hay que comprar en eBay pues en las tiendas de electrónica de este pais no saben ni lo que es! Se trata de un regulador de voltaje altamente eficiente pues no pierde energía como los 78xx ya que no disipa apenas calor. Lo conecto a una fuente de alimentación externa para regular el voltaje de sálida al mismo valor que me dá cuando conecto el voltímetro a los bornes positivo y negativo de la batería original (en mi caso unos 7.8v marca el display, pero vosotros haced las pruebas correspondientes, yo me la juego con mis equipos, y aquí cada uno que sea consciente de lo que hace).</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Como que en el sistema original habia una toma de tensión que tenia la mitad del voltaje, decido aplicar la ley de ohm y hacer un divisor de tensión, para ello usaremos dos resistencias, las dos que encontré primero fueron de 10 k y lo conectaremos tal y como está el siguiente esquema:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-nc6kwjfYc5k/U2-vp-atctI/AAAAAAAAA-Q/GcgIuEPJ69Y/s1600/Sin+ti%CC%81tulo-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-nc6kwjfYc5k/U2-vp-atctI/AAAAAAAAA-Q/GcgIuEPJ69Y/s1600/Sin+ti%CC%81tulo-3.jpg" height="270" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Soldamos los cables a la sálida de nuestro step down al igual que las dos resistencias unidas en su extremo entre si. En este punto es dónde obtendremos la mitad del voltaje.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-axsyDlF8V9c/U2-wWwjvBRI/AAAAAAAAA-g/fgGcMXsswgY/s1600/DSC_0582.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-axsyDlF8V9c/U2-wWwjvBRI/AAAAAAAAA-g/fgGcMXsswgY/s1600/DSC_0582.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez comprobado que los voltajes sean apropiados sólo queda soldar estos tres cables a la placa electrónica de nuestra batería.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-tqOzqAVLC7g/U2-wEbxVcXI/AAAAAAAAA-Y/kl2IGhOvYW0/s1600/DSC_0580.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-tqOzqAVLC7g/U2-wEbxVcXI/AAAAAAAAA-Y/kl2IGhOvYW0/s1600/DSC_0580.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora haremos un pequeño agujero a la carcasa de nuestra antigua batería para poder sacar el cable. Yo he utilizado un cable de portero automático de 3 x 0.5mm</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-FaEZ9-zMUwg/U2-w_FHwaXI/AAAAAAAAA-s/vYAodf7yYPM/s1600/DSC_0577.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-FaEZ9-zMUwg/U2-w_FHwaXI/AAAAAAAAA-s/vYAodf7yYPM/s1600/DSC_0577.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ya sólo falta ensamblar y probar. Tal y como veis en la siguiente foto aparecen unos terminales en la bateria marcados como T y D que son los encargados de la comunicación.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-pafQOW0FviA/U2-xesz16bI/AAAAAAAAA-0/m2SbWWjySI0/s1600/DSC_0587.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-pafQOW0FviA/U2-xesz16bI/AAAAAAAAA-0/m2SbWWjySI0/s1600/DSC_0587.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Finalmente os dejo un pequeño video demostrativo, grabado como he podido pues me faltaban manos jiji! . Yo aun no he tenido la posibilidad de hacer una prueba de campo con centenares de fotografías pero estoy convencido que funcionará.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/vbL8XlzI8rw?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Como anécdota deciros que a mi me falló la primera vez y no entendía el porqué, lo más preocupante pasaba por pensar si habría frito la cámara pero tras colocar una batería buena observé que funcionaba bién. Luego con paciencia y con la ayuda del téster fuí analizando hasta encontrar que me fallaba la pista del negativo por lo que acabé realizando un puente (cablecito amarillo) casi directo tal y como veréis en la siguiente foto.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-RB7Hd6p9biI/U2-zGLvFTxI/AAAAAAAAA_A/YssBQIFvTes/s1600/DSC_0583.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-RB7Hd6p9biI/U2-zGLvFTxI/AAAAAAAAA_A/YssBQIFvTes/s1600/DSC_0583.JPG" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Deseo que os guste y os sirva de algo. </span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Saludos y DIY !</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com1tag:blogger.com,1999:blog-2463929896161090560.post-32110132723161342382014-05-02T10:00:00.001-07:002014-05-02T10:00:35.365-07:00Robot panorámico XS (El programa de Arduino 1 de 2)<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Otra vez de nuevo por aqui...pasando el rato...</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Hoy voy a explicar un poco a grandes pasos el programa de Arduino que gestiona el robot panoramico XS.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Como que algunos estais provando de construiros uno, mostraré la versión que funciona a traves de la LCD shield de 2x16 caracteres, de esta manera ya tendreis pulsadores y pantalla integrados.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Antes de nada, prepararos con el tostón jiji, son poco menos de 1700 lineas a comentar. Obviamente quién lo quiera me lo puede pedir, o podeis ir haciendo copiar+pegar...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Este programa está basado en mi primer robot panorámico al cual se le han ido haciendo mejoras, pero una de las caracteristicas de este programa es que tiene la virtud de servir para dos aplicaciones : Hacer fotografias de alta resolución y gestionar una slide dolly. Al fín y al cabo el hardware es el mismo y el control va hacia dos motores en ambos casos (si en la slide dolly sólo quereis usar uno no pasa nada, pero deberiais conectarlo en el eje X). En mi caso mediante unos conectores DB-9 conecto los motores que van a la dolly o hacia el robot.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Si no recuerdo mal, en el post en que explicaba el programa de mi robot original está mejor comentado el tema de variables de la función gigapan.</span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Pero...vamos al grano! Una justa explicación del programa de Arduino.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Empezamos con una pequeña descripción del programa:</span><br />
<br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">/*</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> GigaRobot_XS based on GigapanRobot 1.8beta2</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> Photo Robot 2x L298N + Nema 17</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> language: Wiring/Arduino</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> This program drives two bipolar stepper motor.</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> Photo-shots signals it's actuated by relay --</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> Movement manual motor by array switchs of keypad</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> Created 28 Dec. 2012</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> Last updated 22 Feb. 2014</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> by XavierGP</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> */</span><br />
<span style="font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Incluimos las tres librerias que nos haran falta, a destacar la <Stepper2.h> que es una modificación casera para trabajar con medios pasos. Si alguién la necesita que la pida! Si en cambio quereis usar la libreria <Stepper.h> que viene instalada por defecto en vuestro software de arduino también debereis modificar las variables motorStepsX y motorStepsY que debereis poner el numero de pasos del motor. En mi caso he puesto 400 en vez de los 200 típicos de un motor NEMA-17.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#include <Stepper2.h> // incluimos la Stepper library</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#include <LiquidCrystal.h> // incluimos la LiquidCrystal LCD library</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#include <Wire.h> // Comes with Arduino IDE</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span><span style="font-family: Verdana, sans-serif;">
Continuamos definiendo las variables, algunas de ellas están comentadas entre //</span><span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define _360div2xPI 57.29577951</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define motorStepsX 400 // Pasos motor X 360º/1.8º com que treballo en llibreria de 1/2 pas multiplico per 2</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define motorStepsY 400 // Pasos motor Y 360º/1.8º </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define pulsosvueltaejex 2075 // 200impulsos x reduccion mecanica 200*5.1*2</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define pulsosvueltaejey 2075 // 200impulsos x reduccion mecanica</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float impX=pulsosvueltaejex/360; // número de impulsos que corresponden a 1º del eje X </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float impY=pulsosvueltaejey/360; // número de impulsos que corresponden a 1º del eje Y </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pasoX; // pasos motor entre capturas eje X </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pasoY; // pasos motor entre capturas eje Y </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float xact; // º actual eje X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float yact; // º actual eje Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float xmax; // º posición máxima eje X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float xmin; // º posición mínima eje X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float ymax; // º posición máxima eje Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float ymin; // º posición mínima eje Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int xtemp;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int ytemp;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int nshot;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int columnasX; // número de filas eje X >> (xmax-xmin)/pasoX</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int columnasXX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int filasY; // número de columnas eje Y >> (ymax-ymin)/pasoY</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int filasYY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int previsionShot; // prevision número shots columnasX * filasY</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int segundos ;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int minutos ;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int horas ;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pause;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pdisplay;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pdisplay0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float temperaturaX; // variable to store the value of radiator</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float temperaturaY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float voltage; // variable to store the voltage battery supply</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float valorTempX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float valorTempY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int progreso;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float solape=0.20;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float retardo;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int origen;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int tempj;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int tempi;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int a;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int sentidoX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int sentidoY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int shot=25;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float pasoXX; // valor temporal dolly eje X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float pasoYY; // valor temporal dolly eje Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pasX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int pasY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">long int xy;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">long int resto;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float segundos_secuencia=3;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float posicion_actual_X;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float posicion_actual_Y;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int velocidadX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int velocidadY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float tiempo_reloj;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int espai;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora definimos los pins: En nuestro caso el PinFan corresponde a la salida dónde deberiamos conectar un relé que accionaria el ventilador en caso de exceso de temperatura en los drivers (es una cosa opcional pero recomendable). El PinShot es la salida a la cual conectariamos un relé, optoacoplador o transistor para accionar el comandamiento remoto de nuestra cámara.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define PinFan 24</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define PinShot 25</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido es cuando introducimos los valores obtenidos al pulsar las teclas de la shield LCD (ver más info en el post anterior dónde se explica cómo obtener dichos valores). Como "extra" hay la variable margen que es una tolerancia que se le aplica al valor para que no sea tan crítico. Cuanto más grande más tolerancia pero luego puede existir "solapes" entre valores de teclas y que no nos responda correctamente al pulsar los pulsadores.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define abajo 306 //definimos valores teclas 255</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define arriba 131 //99 // 132</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define left 480 // 407 </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define right 0</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define select 721 // 636</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define margen 50 //abans era 30</span><br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora unas cuantas variables que serviran para optimizar los movimientos de nuestro robot teniendo pequeños detalles fotograficos.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float d1; // distancia 1 sensor CMOS (ancho)</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float d2; // distancia 2 sensor CMOS (alto) </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float diagonal_sensor;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float grados_diagonal;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float grados_horizontales;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float grados_verticales;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float factor=1.5; // en su defecto : FF = 1, Nikon DX=1.5 , Canon DX=1.6 , Olympus= 2 </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">float focal = 200; </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int paso;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int menu=2;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int menu0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">int modenight=2;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Aunque no lo tengo montado, el programa está preparado para montar dos sensores de origen en nuestra dolly , para que cuando arranque antes de nada vaya a un punto de inicio limite y podamos estar seguros de que no se nos va a perder el carro...</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define limitX 39 // pin entrada sensor origen X </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">#define limitY 49 // pin entrada sensor origen Y </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Finalmente todas las variables con el nombre logoxx son la definicion de caracteres especiales encargados de dar la forma de camara fotográfica haciendo fotos cuando estamos en modo time-lapse.</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1a[8] = {B01111, B00110, B01111, B11111, B11111, B11111, B11110, B11110};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1d[8] = {B00000, B00000, B11110, B11111, B11111, B11111, B11111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1e[8] = {B11110, B11110, B11110, B11111, B11111, B11111, B11111, B01111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1h[8] = {B01111, B01111, B01111, B11111, B11111, B11111, B11111, B11110};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Aqui definimeros las funciones correspondientes a los motores.En este caso el motorX lo estamos definiendo en que utilizaremos las salidas 36, 38, 40 y 42 de nuestro arduino, mientras que en el caso del motorY seran las 46, 48, 50 y 52</span></div>
.<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">Stepper2 myStepperX(motorStepsX, 36, 38, 40, 42); // initialize the library motor X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">Stepper2 myStepperY(motorStepsY, 46, 48, 50, 52); // initialize the library motor Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">También definimos los pins que corresponden a las salidas que van al LCD. Si quisieramos utilizar un LCD via i2C la cosa cambia y habria que redefinir unas algunas cosas que no voy a explicar ahora para no hacer un tostón de post.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // definimos los pins utilizados para la comunicacion con la pantalla LCD</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Luego es cuando establecemos los pins como entradas o salidas</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void setup() {</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">Serial.begin(9600);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.begin(16, 2);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pinMode(PinShot, OUTPUT); // Output digital shot</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pinMode(PinFan, OUTPUT); // Output digital fan</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pinMode(PinSelect, INPUT);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinShot, LOW);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinFan,LOW);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pinMode(limitX, INPUT);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pinMode(limitY, INPUT);</span><br />
<br />
<span style="font-family: Verdana, sans-serif;">Generamos los caracteres que nos compondrá la imagen de camara fotografica y salimos del void setup , esta función sólo será ejecutada una vez en todo el programa, a diferencia del void loop que se repite infinitamente.</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(1, logo1a);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(4, logo1d);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(5, logo1e);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(8, logo1h);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Verdana, sans-serif;"><span style="font-size: x-small;"><br /></span>
Empezamos definiendo la velocidad de los motores X e Y. Y acto seguido llamamos a la subrutina presentacioninicio() que es la encargada de darnos la bienvenida.</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void loop(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperX.setSpeed(5); // set the motor X speed </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperY.setSpeed(8); // set the motor Y speed </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">presentacioninicio();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">progreso=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">A continuación elejimos nuestro modo de trabajo , ya si queremos realizar una gigafoto o bién un time-lapse , mejor dicho motion-lapse pues nuestra dolly se va a mover! Dependiendo de nuestra elección se ejecutará la subrutina gigapan() o slidedolly() y una vez terminen su ciclo se realizará un borrado de todas las variables mediante la subrutina reset() . Estas subrutinas ya las explicaré cuando llegen. Llegado a este punto os habreis dado cuenta que no explico línea a línea sinó esto daria para escribir una novela...</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[UP]=Slide Dolly");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[DOWN] = Gigapan");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(progreso!=1){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(150);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">slide_dolly();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">reset();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">gigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">reset();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-_qYBJ4Vs6cc/U2NvbQCAJDI/AAAAAAAAA44/Le2pwCvgbGI/s1600/FILE0929.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-_qYBJ4Vs6cc/U2NvbQCAJDI/AAAAAAAAA44/Le2pwCvgbGI/s1600/FILE0929.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora toca comentar la subrutina presentacioninicio() : Tras mostrarse un "Hola XavierGP!" ,despues de un borrado de pantalla y nos muestra el nombre del proyecto mientras aparece una camara fotografica haciendo dos fotos. La subrutina dónde se almacenan / generan los caracteres especiales del "gif" se llaman logo2() y logo3()</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-O6wuTOiUBXE/U2Nv8Pd1USI/AAAAAAAAA5E/RdbUGCrs4m0/s1600/FILE0927.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-O6wuTOiUBXE/U2Nv8Pd1USI/AAAAAAAAA5E/RdbUGCrs4m0/s1600/FILE0927.JPG" height="300" width="400" /></a></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void presentacioninicio(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Hola XavierGP!");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(3000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Panorama");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Robot");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">logo3();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(800);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">logo2();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(400);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">logo3();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(7,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("XS");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(800);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">logo2();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(400);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">logo3();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(3000); // fin GIF</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-feqJMWCfF0k/U2Nv7VkkWhI/AAAAAAAAA5I/miftV-GhCCo/s1600/FILE0928.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-feqJMWCfF0k/U2Nv7VkkWhI/AAAAAAAAA5I/miftV-GhCCo/s1600/FILE0928.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En la subrutina logo2() y logo3() generamos los caracteres, de la siguiente manera: cada caracter sabemos que está compuesto por 8 lineas de 5 pixeles cada una. Cuando el valor es 0 el pixel está apagado mientras que cuando tiene valor 1 está encendido.</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void logo2(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1b[8] = {B00000, B00111, B11100, B10001, B00111, B01111, B01111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1c[8] = {B00000, B11100, B00111, B10001, B11100, B11110, B11110, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1f[8] = {B11110, B11111, B01111, B01111, B00111, B10001, B11100, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1g[8] = {B01111, B11111, B11111, B11110, B11100, B10001, B00111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1d[8] = {B00000, B00000, B11110, B11111, B11111, B11111, B11111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(2, logo1b);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(3, logo1c);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(6, logo1f);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(7, logo1g);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(4, logo1d);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(12,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(13,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(2);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(14,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(3);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(15,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(4);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(12,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(5);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(13,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(6);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(14,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(7);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(15,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(8);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void logo3(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1b[8] = {B00000, B00111, B11100, B10001, B00110, B01100, B01000, B10000};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1c[8] = {B00000, B11100, B00111, B10001, B01100, B00110, B00010, B00001};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1f[8] = {B10000, B10000, B01000, B01100, B00110, B10001, B11100, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1g[8] = {B00001, B00001, B00011, B00110, B01100, B10001, B00111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">byte logo1d[8] = {B00000, B00000, B11110, B11111, B11111, B11111, B11111, B11111};</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(2, logo1b);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(3, logo1c);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(6, logo1f);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(7, logo1g);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.createChar(4, logo1d);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(12,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(13,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(2);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(14,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(3);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(15,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(4);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(12,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(5);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(13,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(6);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(14,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(7);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(15,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.write(8);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Ahora en la subrutina gigapan() es dónde en realidad empieza lo divertido!</span></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Primero de todo llamamos a la subrutina defineparametro() que explicaré más adelante (se definen los parametros fotograficos tales como tipo de camara, zoom a utilizar y solape entre capturas).</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido nos pide que busquemos el punto de inicio, llamando a la subrutina buscaorigen() , este punto siempre deve ser la esuina inferior izquierda de nuestra foto panorámica. Seguidamente nos pedirá que busquemos el punto final (esquina superior derecha).</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Una vez tenemos confirmados estos puntos nos servirá para calcular tanto el numero de filas y columnas , y multiplicando entre ellas obtenemos la previsión de capturas</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OxQbx6FAUZE/U2NwgONabCI/AAAAAAAAA5Q/FKZAnKF-i2Y/s1600/FILE0958.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-OxQbx6FAUZE/U2NwgONabCI/AAAAAAAAA5Q/FKZAnKF-i2Y/s1600/FILE0958.JPG" height="300" width="400" /></a></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void gigapan(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">defineparametro();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Define origen");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("mediante flechas");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay (3000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">buscaorigen();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Define final");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("mediante flechas");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay (3000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">buscafinal();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=-xmin;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=-ymin;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">columnasX=((xmax-xmin)/pasoX)+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">columnasXX=columnasX;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">filasY=((ymax-ymin)/pasoY)+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">filasYY=filasY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">previsionShot=</span><span style="font-family: Georgia, 'Times New Roman', serif; font-size: x-small;">columnasX*filasY;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-tcknKF5LtaQ/U2NwyDlOzZI/AAAAAAAAA5Y/Iw0U0LXd624/s1600/FILE0962.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-tcknKF5LtaQ/U2NwyDlOzZI/AAAAAAAAA5Y/Iw0U0LXd624/s1600/FILE0962.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Es hora de calcular el tiempo necesario en segundos para realizar el proyecto, ello dependerá de si hemos elejido la opción de retardo o no.</span></div>
<br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (retardo>1000){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">segundos=(previsionShot*((retardo+500)/1000))+((filasY-1)*pasoY*1.3)+((columnasX-1)*pasoX*1.3)+(previsionShot*0.6); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}else{</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">segundos=(previsionShot*retardo/1000)+((filasY-1)*pasoY*1.2)+((columnasX-1)*pasoX*1.2)+(previsionShot*0.6); // (previsionShot*retardo/1000)+(0.5*(filasY-1))+(0.7*(filasY*pasoY-1))+(0.7*(columnasX*pasoX-1)) </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Luego el robot se irá a la posición inicio del eje X. Si hemos elejido modo noche el robot no descenderá en su eje Y ya que en vez de empezar las capturas de abajo a arriba lo hará luego de arriba a abajo. Esta función está pensada para aprovechar la "hora azul" que no dura una hora y somos nosotros los que decidimos cuando empezamos a fotografiar el cielo.</span></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-m3MR9Wh6UMk/U2NxFp0o9bI/AAAAAAAAA5g/cOv7ehO-vNk/s1600/FILE0964.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-m3MR9Wh6UMk/U2NxFp0o9bI/AAAAAAAAA5g/cOv7ehO-vNk/s1600/FILE0964.JPG" height="300" width="400" /></a></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Moviendo hacia");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("posicion inicio");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperX.step(-(columnasX-1)*pasoX); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(modenight==0){ // bajamos el carro si trabajamos en modo clasico</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperY.step(-(filasY-1)*pasoY); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Es hora de mostrar los datos previstos de nuestro proyecto, es decir, las filas, columnas, numero de fotos, grados en vertical y horizontal , la duración prevista en tiempo y la dimensión de nuestra fotografia resultante en megapixeles.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-MvtfOosrHsw/U2NxUg-6EKI/AAAAAAAAA5o/1yfigPhQ80Y/s1600/FILE0965.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-MvtfOosrHsw/U2NxUg-6EKI/AAAAAAAAA5o/1yfigPhQ80Y/s1600/FILE0965.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Home position !");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Datos proyecto:");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(previsionShot);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" capturas:"); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print((-xmin+xmax)/impX/1.17,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("H // ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print((-ymin+ymax)/impY/1.17,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("V");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(columnasX);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("filas / ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(filasY);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("columnas");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay (4500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> </span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Bg-rMVPr0HI/U2NylD2v06I/AAAAAAAAA50/NS_vbhfrIXc/s1600/FILE0966.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Bg-rMVPr0HI/U2NylD2v06I/AAAAAAAAA50/NS_vbhfrIXc/s1600/FILE0966.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Para convertir los segundos a horas y minutos utilizaremos la funcion conversiotiempo() y a continuación está todo a punto para empezar, sólo falta pulsar [SELECT]</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> </span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><a href="http://3.bp.blogspot.com/-2j7lfg9KJHI/U2NzF8-iKdI/AAAAAAAAA6I/i3WsyfmqBbg/s1600/FILE0970.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-2j7lfg9KJHI/U2NzF8-iKdI/AAAAAAAAA6I/i3WsyfmqBbg/s1600/FILE0970.JPG" height="300" width="400" /></a></span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">conversiontiempo();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] para");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("iniciar y pausar");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] = start");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pause=1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(pause!=0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(select/margen)){ //enter)</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pause=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xmax=xmax-xmin;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ymax=ymax-ymin;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xmin=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ymin=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=0;</span><br />
<br />
<div style="font-family: Georgia, 'Times New Roman', serif; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En el caso que trabajemos en modo noche , invertimos el sentido de giro del motor del eje Y, para ello invertimos el signo del valor de PasoY (pasos a efectuar por el motor del eje Y entre filas). Acto seguido empieza la rutina:</span></div>
<div style="font-family: Georgia, 'Times New Roman', serif; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Mostrar pantalla (pantallaGigapan())</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Petición de pausa siempre y cuando no sea la primera toma (como que para arrancar la secuencia es el mismo pulsador que para pausar se generaba la pausa automáticamente al iniciar el ciclo)</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Esperamos un segundo</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Chequeamos temperatura en los drivers (si es necesario arrancará o se parará el ventilador)</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Analizamos si el retardo es superior a 1" por lo que si es asi le aplicaremos un retardo "extra" de medio segundo antes de disparar la foto</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Volveremos a pedir petición de pausa (este paso se repetirá continuadamente, es la única manera de poder pausar en cualquier momento)</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Realizamos una captura</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Actualizamos datos en la pantalla</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Esperamos medio segundo aparte del retardo seleccionado</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">* Desplazamos el motor horizontal X hasta la siguiente captura, hasta llegar al limite de capturas horizontales , momento en que retrocederá el robot hasta el punto inicial del eje X mientras nos muestra en pantalla la temperatura y voltaje. Una vez llegada a la posición inicial será momento de mover el motor del eje Y hasta la siguiente fila, y luego volvemos a iniciar todo el ciclo hasta llegar a la última posición en que nos mostrará el mensaje de "Panorámica completa!".</span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (modenight==1) { // si trabajamos en modo night invertimos el sentido de paso del eje Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pasoY=pasoY*(-1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallaGigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">for(int i=0; i<filasY; i++){ // empieza secuencia panoramica </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (nshot!=0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> peticiopausa();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(1000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">for(int j=0; j<(columnasX-1); j++){ //columnasX</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">peticiopausa();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">analisisTemperatura();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">tempi=i+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">tempj=j+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(retardo>1000){ //per compensar modo night</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">peticiopausa();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinShot, HIGH);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">nshot=nshot++;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallaGigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinShot, LOW);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">peticiopausa(); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500+retardo); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(j!=(columnasX+0)){ </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperX.step(pasoX);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=xact+(pasoX);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">tempj=j+2;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallaGigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">tempj=j+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">nshot=nshot++;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinShot, HIGH);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">tempj=tempj+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallaGigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">digitalWrite(PinShot, LOW);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(500+retardo);</span><br />
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallatemperatura();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperX.step((-(columnasXX)+1)*pasoX); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(i!=filasY-1){myStepperY.step(pasoY);} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=yact+(pasoY);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(1000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Panoramica");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(6,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("completa !");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(modenight==0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperY.step((-filasYY+1)*pasoY);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(5000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-KdeLbzSBWb8/U2O6mjmAUUI/AAAAAAAAA6g/J0fkN410tGE/s1600/FILE0971.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-KdeLbzSBWb8/U2O6mjmAUUI/AAAAAAAAA6g/J0fkN410tGE/s1600/FILE0971.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y una vez llegemos al final de las capturas es cuando aparecerá el mensaje de Panorámica completa!</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-aWZ6HwRn73w/U2O6-_BSCfI/AAAAAAAAA6o/jz0OWphJ2OI/s1600/FILE0974.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-aWZ6HwRn73w/U2O6-_BSCfI/AAAAAAAAA6o/jz0OWphJ2OI/s1600/FILE0974.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">En la siguiente subrutina sirve para definir los parametros de la cámara y el solape entre imagenes. No todas las camaras tienen el mismo tamaño del sensor, y ese tamaño nos influye en el factor recorte resspecto el formato de 35mm hoy en dia llamado con el nombre de Full Frame. En principio podemos determinar que tipo de camara reflex vamos a usar (está pensado para las marcas más populares, pero es muy fácil incluir otras).</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-smrO2KVdoik/U2O8JLUl9cI/AAAAAAAAA6w/kaLkQC9La3s/s1600/FILE0949.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-smrO2KVdoik/U2O8JLUl9cI/AAAAAAAAA6w/kaLkQC9La3s/s1600/FILE0949.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void defineparametro(){ // rutina definimos tipo de camara y focal</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Formato d camara");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(2, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[UP] & [DOWN]");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(300);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">menu=menu+1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu>=4){menu=4;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">menu=menu-1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu<=1){menu=1;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu==1){ // FF</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Full Frame 35mm.");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d1=35.8; //canon 5d</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d2=23.9; //canon 5d</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">factor=1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">diagonal_sensor=43.0447441623248;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu==2){ // Nikon DX</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" Nikon DX 1.5x ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">factor=1.5;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d1=23.5; // distancia 1 sensor CMOS (ancho) Valor de la Nikon d5200 !</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d2=15.6; // distancia 2 sensor CMOS (alto) Valor de la Nikon d5200 !</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">diagonal_sensor=28.2899275361390772;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu==3){ // Canon DX</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" Canon DX 1.6x ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">factor=1.6;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d1=22.2; // eos1000d</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d2=14.8; // eos1000d</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">diagonal_sensor=26.68107943843352;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(menu==4){ // Olympus 4/3</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" Olympus 4/3 2x ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">factor=2;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d1=17.3; // e-520</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">d2=13.0; // e-520</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">diagonal_sensor=21.6400092421422;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Debido a que tenia problemas con las fórmulas y me hacia cosas raras, decidí implementar directamente la medida del sensor en diagonal en vez de hacer la hipotenusa de los dos lados, de esa manera ahorraba algunas lineas pero los problemas aparecidos no compensaban...</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido definimos la focal que vamos a usar en la cámara, para ello nos fijaremos o bién en los datos exif o en el zoom , pero nunca deberemos aplicar el factor recorte ocasionado por el tamaño del sensor ya que el propio Arduino ya se encargará de aplicarlo a la hora de mostrarnos la focal equivalente. Dependiendo de nuestra focal a la hora de propgramar veremos que los pasos empiezan de milimetro en milimetro y a medida que vamos subiendo de zoom también augmenta este escalonado. Es poco útil subir con pasos pequeños cuando las focales ya pasan de los 100 mm. !</span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Obviamente estos valores introducidos son cruciales para optimizar las tomas.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-AIJdu-n1T3Q/U2O9kPZULSI/AAAAAAAAA68/NGMb864V5hc/s1600/FILE0950.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-AIJdu-n1T3Q/U2O9kPZULSI/AAAAAAAAA68/NGMb864V5hc/s1600/FILE0950.JPG" height="300" width="400" /></a></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear(); // rutina definimos focal</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Longitud focal:");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[UP] & [DOWN]");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (focal<100){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">paso=1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(75);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (focal>=100){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">paso=25;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(120);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (focal>399){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">paso=50;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(150);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">focal=focal+(paso);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(focal>1){focal=focal-(paso);}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(5,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (focal<100){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (focal<10){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(focal,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(9,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("mm.");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido es hora de definir el sopale, yo siempre suelo usar un 20% aunque desde foros y expertos dicen que ideal un 25-33%. Os puedo asegurar que nunca he tenido problemas, pero todo depende de la mecánica de vuestro robot... Por ejemplo cuando disparamos a 200mm equivale a unos 8º de visión, y nuestro solape andará un poco por encima del 1.5º, si tenemos un juego superior a ese 1.5º el resultado puede ser un autentico desastre. Mediante software se han marcado unos limites entre 1-50% aunque creo que debería de "caparlo" mas que luego cuando la gente pone valores anormales y no sale la panorámica. </span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Obviamente si vamos cortos de memoria o de bateria siempre seria mejor reducir el solape, pero cada uno mismo con su mecanismo!</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ijfACauCoq8/U2O_lItPStI/AAAAAAAAA7I/EBGk5Ut0-xg/s1600/FILE0953.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ijfACauCoq8/U2O_lItPStI/AAAAAAAAA7I/EBGk5Ut0-xg/s1600/FILE0953.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear(); // rutina definimos solape</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" Define solape: ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[UP] & [DOWN]");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(150);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(solape<=0.49){solape=solape+0.01;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(solape>=0.1){solape=solape-0.01;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(5, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(solape*100,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" % ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido nos pide si queremos hacer una foto clasica o bién modo noche, en realidad la diferencia radica en que en el modo clasico empieza desde abajo y va subiendo filas mientras que en el modo noche empieza desde arriba y va bajando , ideal para tomas en hora azul explicada anteriormente.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/--Q9zYYU4cdg/U2PBC650UmI/AAAAAAAAA7U/wlvi5DV-Lbs/s1600/FILE0954.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/--Q9zYYU4cdg/U2PBC650UmI/AAAAAAAAA7U/wlvi5DV-Lbs/s1600/FILE0954.JPG" height="300" width="400" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Modo secuencia");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[UP] = Clasico");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[DOWN] = Noche");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(modenight==2){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(150);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">modenight=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">modenight=1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Finalmente nos deja elejir un retardo, este sirve para generar una pausa después de dar señal de foto, ideal para fotos de larga exposición , de esta manera evitaremos que salga movida. En teoria debería ir bién pero siendo sincero, aun no he hecho ninguna nocturna...de cara al verano con los mosquitos...ya falta menos !</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear(); // rutina definimos retardo (modo noche)</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Define retardo ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("larga exposicion");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" [UP] & [DOWN] ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[SELECT] valida");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Define retardo:");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(100);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(arriba/margen)){ //arriba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(retardo<=9800){retardo=retardo+100;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(retardo>=100){retardo=retardo-100;}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(retardo/1000,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" seg. ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Aqui es cuando se calculan los pasos que deberan dar nuestros motores en función de los datos que le hemos definido y a continuación nos indicará nuestra focal equivalente que no deja de ser el zoom por el factor recorte del objetivo.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-CYBhxCKd4XI/U2PCWIQQggI/AAAAAAAAA7g/9uM0nekbeg8/s1600/FILE0957.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-CYBhxCKd4XI/U2PCWIQQggI/AAAAAAAAA7g/9uM0nekbeg8/s1600/FILE0957.JPG" height="300" width="400" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">// diagonal_sensor=sqrt((d1*d1)+(d2*d2));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">focal=focal*factor;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">grados_diagonal=2* (atan(diagonal_sensor/(2*focal))*_360div2xPI); // 2*focal*factor...</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">grados_horizontales=factor*(grados_diagonal*d1/diagonal_sensor)*(1-solape); //originalment 2* (atan(diagonal_sensor/(2*focal*factor))*_360div2xPI);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">grados_verticales =factor*(grados_diagonal*d2/diagonal_sensor)*(1-solape); //originalment grados_horizontales * d2 / d1</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pasoX=(pulsosvueltaejex*(grados_horizontales/360));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pasoY=(pulsosvueltaejey*(grados_verticales/360));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print ("Focal equivalente");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(4, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(focal,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" mm.");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(2000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido toca explicar la subrutina de busqueda de origen que es muy simple. Esta llama a la subrutina movimiento que es la encargada de habilitar el movimiento mediante los pulsadores UP/DWN/LFT/RGT y una vez pulsamos sobre SELECT valida los datos.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La busqueda de posición final es igual que la de origen, lo único que se memorizan las posiciones actuales en memorias diferentes y una vez generada el resto es cuando en realidad se determina los grados que van a acaparar nuestra fotografia resultante.</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KbN0iycRVdI/U2PDoU0MpCI/AAAAAAAAA7o/uMOkIhD92vA/s1600/FILE0958.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-KbN0iycRVdI/U2PDoU0MpCI/AAAAAAAAA7o/uMOkIhD92vA/s1600/FILE0958.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void buscaorigen(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">movimiento();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=0; </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=0; </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xtemp=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ytemp=0; </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xmin=xact; </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ymin=yact;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Posicion inicio");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("- CONFIRMADA -");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">origen=1;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(3500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-uXeAeNezUNA/U2PD1zppn4I/AAAAAAAAA7w/PJG0M2xG17o/s1600/FILE0960.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-uXeAeNezUNA/U2PD1zppn4I/AAAAAAAAA7w/PJG0M2xG17o/s1600/FILE0960.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void buscafinal(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while((analogRead(0)/margen)!=(select/margen)){ //enter</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">movimiento();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xmax=xact;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ymax=yact;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Posicion final");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(1, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("- CONFIRMADA - ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(3500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> </span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-vhmC9xTx290/U2PEHVim2ZI/AAAAAAAAA74/QBkyNZRdFLA/s1600/FILE0961.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-vhmC9xTx290/U2PEHVim2ZI/AAAAAAAAA74/QBkyNZRdFLA/s1600/FILE0961.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Vamos a por la subrutina movimiento(), antes de nada ejecuta la subrutina de analisisTemperatura() para comprobar que no exista mucha temperatura en los drivers de potencia, y acto seguido mediante los pulsadores nos deja hacer movimientos memorizandolos en las variables xact e yact (de actual). Luego más tarde actualiza los datos en la pantalla.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">El programa es una simplificación del que yo uso con el LCD de 4 x 20 caracteres, en cambio con este LCD estamos más limitados. En mi caso si determina que estamos haciendo movimientos referidos al punto final también nos mostrará el número previsto de tomas a realizar, eso es útil para nuestra información, yo por ejemplo sé que en la Nikon D5200 puedo hacer poco mas de 800 fotos con una bateria cuando trabaja con el robot panorámico (estabilizador y lcd apagada! ). También el programa nos fuerza a que la posición final siempre sea en sentido más hacia la derecha y mas hacia arriba. Lo siento pero el software de edición de Gigapan's que uso (AutoPanoGiga) sólo contempla 4 modos de reconocimiento y y creo que siempre son de izquierda a derecha...</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void movimiento(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">analisisTemperatura();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(A0)/margen)==(right/margen)) {xact=xact+(pasoX);} // derecha +X </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(A0)/margen)==(arriba/margen)){yact=yact+(pasoY);} // arriba +Y</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(A0)/margen)==(left/margen)) { // izquierda -X</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (origen==1 && xact>=pasoX){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=xact-(pasoX);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (origen==0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xact=xact-(pasoX);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(A0)/margen)==(abajo/margen)) { // abajo -Y </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (origen==1 && yact>=pasoY){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=yact-(pasoY);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (origen==0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">yact=yact-(pasoY);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">} </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"> </span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HIjWzwaCAmU/U2PGNuRM5nI/AAAAAAAAA8E/eA1F2RzGwDw/s1600/FILE0962.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-HIjWzwaCAmU/U2PGNuRM5nI/AAAAAAAAA8E/eA1F2RzGwDw/s1600/FILE0962.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Pos X: Pos Y:");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(xact/impX/1.17,1); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(10, 1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(yact/impY/1.17,1); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">/*lcd.setCursor(4,2);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print((xact/pasoX)+origen,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(14,2);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print((yact/pasoY)+origen,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (origen!=0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,3);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Numero de fotos: ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(((xact/pasoX)+1)*((yact/pasoY)+1),0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">*/</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Acto seguido los motores se mueven si han determinado alguna variación en los valores actuales respecto los temporales (antigua lectura)</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperX.step(xact-xtemp);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">xtemp=xact;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">myStepperY.step(yact-ytemp);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">ytemp=yact;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(20);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La siguiente subrutina es la que nos servirá para convertir los segundos a horas, minutos y segundos de una manera un poco "bruta" pero efectiva y acto seguido nos informará de lo mismo.</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void conversiontiempo(){ // convertimos tiempo necesario en realizar proyecto </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(segundos>=3600){ </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">horas = horas++;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">segundos = segundos - 3600;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(segundos>=60){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">minutos = minutos++;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">segundos = segundos - 60;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Tamano previsto");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Previamente nos dirá el tamaño previsto, yo lo tengo configurado para mi Nikon d5200, habria que modificar el 24.2 de la siguiente linea por los megapixeles de vuestra cámara.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-0Q8ByWlgRpg/U2PIRGtuA9I/AAAAAAAAA8Y/EDLJMgRdByE/s1600/FILE0967.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-0Q8ByWlgRpg/U2PIRGtuA9I/AAAAAAAAA8Y/EDLJMgRdByE/s1600/FILE0967.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print((((xmax/pasoX)+1)*((ymax/pasoY)+1)*24.2*(1-solape)));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">Serial.println(((xmax/pasoX)+1)*((ymax/pasoY)+1));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Mb.");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(3500);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Y acto seguido la duración:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-J_UK6xXq27c/U2PIRwu4BNI/AAAAAAAAA8k/bUsgjHm6kU0/s1600/FILE0968.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-J_UK6xXq27c/U2PIRwu4BNI/AAAAAAAAA8k/bUsgjHm6kU0/s1600/FILE0968.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Duracion prevista");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(horas);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("hr ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (minutos<10){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("0");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(minutos);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("min ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if (segundos<10){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("0");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(segundos);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("seg");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(5000);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Venga, que ya falta menos para llegar al fín de la primera parte del tostón... Ahora viene la subrutina pantallaGigapan() que es dónde se ejecutan las instrucciones para mostrar en el LCD la posición actual.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-aymzlikLeoQ/U2PKDglzIXI/AAAAAAAAA8s/QC4QQ3d782Y/s1600/FILE0971.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-aymzlikLeoQ/U2PKDglzIXI/AAAAAAAAA8s/QC4QQ3d782Y/s1600/FILE0971.JPG" height="300" width="400" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void pantallaGigapan(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">// lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">progreso=((nshot*100)/(previsionShot));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(progreso);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("%");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(6,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("X: Y:");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(nshot);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("s");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(6,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(tempj);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(12,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(tempi);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">/*</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(7,3);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(xact/5.85,1); // possar /5</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(13,3);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(modenight==0){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(yact/5.85,1); // possar /5</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">else{</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(-yact/5.85,1); // possar /5</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">*/</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y ahora la visualización de la pantalla de temperatura que se ejecuta cuando retrocede el robot al final de cada fila.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">No hay mucho que explicar pues son simples de programar, pero si quieres que quede bonito hay que acabar modificando la posición de los caracteres seguro con la pega que hay que probar y probar. No le hagais mucho caso a los valores mostrados en la siguiente foto , estaba todas estas entradas desconectadas. Si vais a usar la LCD shield tocará modificar el pineado de el voltimetro y del sensor de temperatura, o bién hacer alguna ñapa en la shield conectado como se pueda...</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ykOk0E9HAk8/U2PLUu3oorI/AAAAAAAAA80/KJJIe8RZ08g/s1600/FILE0972.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ykOk0E9HAk8/U2PLUu3oorI/AAAAAAAAA80/KJJIe8RZ08g/s1600/FILE0972.JPG" height="240" width="320" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void pantallatemperatura(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">analisisTemperatura();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Voltage: ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">voltage=analogRead(A5)*1.212;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(voltage/100); </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(" v.");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("Temp.: ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(valorTempX,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print(char(223));</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("C");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">La subrutina peticiopausa() se caracteriza por pedir 10 veces seguidas si está el pulsador SELECT activado, ¿por qué diez veces? Pues porque con una simple NUNCA se enteraba y pasaba de largo. Si detecta que está pulsado se activa una Pausa y hasta que no pulsemos la tecla DOWN no continuará. Acto seguido llama a la subrutina de la pantallaGigapan para actualizar y seguir con el ciclo.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-y6csebS4KQI/U2PMcdIHXGI/AAAAAAAAA88/BgJGinyREpQ/s1600/FILE0973.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-y6csebS4KQI/U2PMcdIHXGI/AAAAAAAAA88/BgJGinyREpQ/s1600/FILE0973.JPG" height="300" width="400" /></a></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void peticiopausa(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">for (int k=0; k<10; k++){ //prova pausa</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(select/margen)){ // tecla SELECT si apretem provoquem una pausa fins que no apretem ENTER </span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(2,0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("P a u s a ! ");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.setCursor(0,1);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.print("[DOWN] = reStart");</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">delay(1000); //abans no hi era i em rearrancaba</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pause=2;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">while(pause>1){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if((analogRead(0)/margen)==(abajo/margen)){ //abajo</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pause=0;</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">lcd.clear();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">pantallaGigapan();</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Georgia, Times New Roman, serif;"><span style="font-family: Verdana, sans-serif;">Finalmente la subrutina de analisis de temperatura está pensada para usar dos sensores de temperatura aunque en la pantalla lcd sólo os marcará el del driver X . En este caso si detecta que que la temperatura excede en cualquiera de ellos de 33ºC arranca el ventilador dando señal al PinFan y este sólo se parará cuando la temperatura en ambos drivers sea inferior a 29ºC.</span></span></div>
<br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void analisisTemperatura(){</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">temperaturaX=analogRead(A6); // comprobamos temperaturaX en disipador LM35DT</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">temperaturaY=analogRead(A7); // comprobamos temperaturaY en disipador LM35DT</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">valorTempX = ((5.0 * temperaturaX * 100 )/1024.0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">valorTempY = ((5.0 * temperaturaY * 100 )/1024.0);</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(valorTempX<29 && valorTempY<29){digitalWrite(PinFan,LOW);} // deshabilita tensión en ventilador - energy saving - si temperatura < 29ºC</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">if(valorTempX>33 </span><span style="font-family: Georgia, 'Times New Roman', serif; font-size: x-small;">||</span><span style="font-family: Georgia, 'Times New Roman', serif; font-size: x-small;"> valorTempY>33){digitalWrite(PinFan, HIGH);} // habilita tensión en ventilador si temperatura > 33ºC</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">}</span><br />
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;">void slide_dolly(){</span><br />
<br />
<br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Y por hoy esto es todo! Aqui es dónde empieza las funciones de la slide dolly.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Os dejo un video para que veais el comportamiendo de los menus. Las imégenes también tienen un efecto barril provocadas por la camara deportiva AEE SD19 , pero más vale esto que nada no?</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/IsqUozMUOPQ?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Saludos!</span></div>
<span style="font-family: Georgia, Times New Roman, serif; font-size: x-small;"><br /></span>XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com3tag:blogger.com,1999:blog-2463929896161090560.post-78158727785356851262014-04-20T10:21:00.001-07:002014-04-20T10:23:23.997-07:00Robot panorámico XS (la electrónica)<div style="text-align: justify;">
Por si alguién quiere montarse uno, os dejo un poco de información referente al conexionado de los diferentes elementos. En alguna otra ocasión ya sugerí que es recomendable tener ciertos conocimientos básicos de electrónica y programación del Arduino, más que nada que en google se puede encontrar información pero cuando surgen problemas especificos es cuando uno tiene que auto-espavilarse como pueda. Yo siempre he intentado ayudar, pero no dispongo de todo el tiempo del mundo para hacerlo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En mi caso utilizo una pantalla LCD de 4 lineas x 20 caracteres y un joystick sacado de un nunchuck de la wii , como que estos dos componentes son un poco usuales , os voy a describir a continuación como hacer funcionar el robot con una shield de pantalla LCD de 2x16 caracteres con pulsadores como la de la siguinete captura:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-CeoQ3s8ef5c/U1OdTgKVLCI/AAAAAAAAA24/JgFhzZvUlRQ/s1600/lcd2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-CeoQ3s8ef5c/U1OdTgKVLCI/AAAAAAAAA24/JgFhzZvUlRQ/s1600/lcd2.jpg" height="310" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Usando una shield como esta reduciremos cableado y posibles errores de conexionado. Como pega, no es lo mismo tener una pantalla de 32 (2x16) caracteres que una de 80 (4x20) y eso se ve reflejado a la hora de darle un aspecto más bonito a la aplicación o un muestreo extra de información que siempre es mejor.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Y obviamente si vamos a utilizar esta pantalla habrá que usar un programa en concreto, mientras que en la de 4x20 caracteres hay que "reformarlo" en gran parte, debido entre otras cosas que se comunica sólo mediante 4 cables mediante el bus I2C (positivo, negativo, SDA y SCL) y que al no tener pulsadores incorporados hay que cablearlo aparte definiendo nuevas entradas.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Pg6vEmdYeUQ/U1Pua7rLZEI/AAAAAAAAA3I/-i1FuHsY6p4/s1600/lcd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Pg6vEmdYeUQ/U1Pua7rLZEI/AAAAAAAAA3I/-i1FuHsY6p4/s1600/lcd.jpg" height="223" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una de las ventajas del LCD shield es que incorpora de serie varios botones (UP, DOWN, LEFT, RIGHT y SELECT) , todos ellos van dirigidos hacia la entrada análogica 0 de nuestro Arduino. Por cierto alguien se preguntará porque un MEGA y no un UNO. El problema es que el UNO tiene una capacidad de memoria de 32 kB y el programa que vamos a utilizar ronda los 31 kB. Otro de los problemas es que al utilizar la shield LCD y "montarla" justo encima hay que empezar a hacer "guarrerias" para conectar los cables que van hacia los drivers de potencia etc...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A lo que iva...todo y vivir en un mundo digital lleno de ceros y unos, es muy bonito usar las entradas analógicas que nos brinda el Arduino. Mediante un voltage de referencia de +5v que podemos aplicar a dichas entradas podemos tratarlas luego internamente de varias maneras generando una entrada multiplexada y ahorrandonos entradas.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si le aplicamos a una entrada análogica 0 v obtendremos un valor de gestión de valor 0, mientras que si aplicamos 5v en la entrada obtendremos un valor de gestión de 1023. Es decir tenemos una resolución de 1024 con el que podemos jugar...Ahora bién, y electricamente como podemos aplicar un valor variable mediante pulsadores? Muy fácil ! con el uso de resistencias tal y como se muestra en el siguiente esquema:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-QjmqjT7NgJs/U1Pw4BLm6lI/AAAAAAAAA3U/lUoqyToM2h4/s1600/arduino-lcd-keyboard-shield-5-500x500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-QjmqjT7NgJs/U1Pw4BLm6lI/AAAAAAAAA3U/lUoqyToM2h4/s1600/arduino-lcd-keyboard-shield-5-500x500.jpg" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Estas resistencias ya están montadas en nuestra shield, por lo que no deberemos preocuparnos. Por ejemplo si pulsaramos sobre el pulsador RIGHT provovariamos que en la entrada AD0 un voltaje de 0v, mientras que si pulsaramos sobre UP deberiamos calcular el divisor de tensión generado por las resistencias R2 y R3. A efectos practicos no nos interesa en concreto el valor recibido a la entrada AD0, pues nosotros vamos a tratar con el valor de gestión que reciba nuestro Arduino. Y que valor es este? Os propongo que utiliceis el siguiente sketch para ver como se comportan los pulsadores en vuestro caso:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/*</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Test LCD shield</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">by XavierGP</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">*/</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#include <LiquidCrystal.h> // incluimos la LiquidCrystal LCD library</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">int valor; // variable recibida en el keypad</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // define los pins del LCD</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">void setup() { </span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">lcd.begin(16, 2);</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">lcd.print(" Hola XavierGP !");</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">delay(2500);</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">void loop(){</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">valor=analogRead(0);</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">if(valor<1020){</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">lcd.clear();</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">lcd.print(valor);</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">delay(350); </span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez cargado este sketch y con la shield LCD montada encima el Arduino observaremos como cambian los valores dependiendo del pulsador que estamos apretando. Estos valores nos serán necesarios a la hora de realizar ajustes en nuestro programa. No todas las shields proporcionan el mismo valor por lo que quizás sea necesario corregirlos. Os enseño unas muestras entre dos shields en principio iguales pero a la realidad los valores cambian:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-4ynJqAPeE78/U1P0TqjkCII/AAAAAAAAA3g/ke3_ksl5xZU/s1600/lcd+test.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-4ynJqAPeE78/U1P0TqjkCII/AAAAAAAAA3g/ke3_ksl5xZU/s1600/lcd+test.jpg" height="116" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente os adjunto el circuito eléctrico básico para que funcione el robot:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-TzchIPeZbZg/U1P05LAxmnI/AAAAAAAAA3o/VuzGNV0mA20/s1600/robotxs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-TzchIPeZbZg/U1P05LAxmnI/AAAAAAAAA3o/VuzGNV0mA20/s1600/robotxs.jpg" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Empezando por la parte inferior izquierda encontramos una batería típica de 12v / 7Ah. de la cual salen dos pares de cables, unos de ellos se van directamente hacia la alimentación del Arduino (hay que comprar el jack adecuado! En el centro de este soldaremos el positivo mientras que el negativo va en el lado exterior del mismo). El propio arduino dispone de un regulador/estabilizador incorporado pero no estaria de más ponerle algun tipo de proteción intermedia...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
El otro par de cables van hacia un step-down (regulador de voltage) en el que obtengo una tensión de salida constante de 5v y hasta 10Amperios de intensidad entre el cable amarillo y cualquiera de los negros. Estos 5v los utilizaremos para alimentar los motores(al menos con los motores que yo utilizo!, si montais otros motores quizas haya que cambiar el step down por un regulador de voltage) que seran gestionados por los drivers L298N. El driver se comportará como un amplificador de potencia ya que la intensidad que nos ofrece el arduino en sus salidas es muy pequeña para alimentar a los motores.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Luego tenemos dos grupos de 4 cables que van de las sálidas 36, 38, 40 y 42 , y 46, 48, 50 y 52 que van hacia las entradas de pilotaje de los drivers IN1, IN2, IN3 e IN4 . Cada grupo de 4 conductores van hacia cada uno de los dos drivers. Es recomendable seguir bién el orden. Podeis leer posts antiguos sobre motores paso a paso para entender como funcionan estos...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
A las 4 salidas del driver conectaremos nuestros motores paso a paso.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Luego nos toca conectar el relé en la sálida 25 de nuestro arduino , y el otro borne del relé a GND. En este esquema no está marcado correctamente para no liar más entre los diferentes conductores, pero debajo de los PINS 52 y 53 tenemos dos pins de GND. Y para vuestra información encima de los PINS22 y 23 tenemos dos pins que nos ofrecen 5v continuadamante.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vUeqMC49dR0/U1P4fUJONcI/AAAAAAAAA30/XT9PkGwP29s/s1600/arduinomega.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-vUeqMC49dR0/U1P4fUJONcI/AAAAAAAAA30/XT9PkGwP29s/s1600/arduinomega.jpg" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
Un detalle "tonto" pero necesario es la colocación de un diodo en paralelo a la bobina del relé para eliminar la corriente generada al desactivar el relé, protegiendonos nuestra salida del arduino.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Este relé es el encargado de activar el contacto remoto de nuestra camara.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente y como "accesorios" extras tengo montado unos sensores de temperatura tipo LM35 que a su vez gestionan el funcionamiento de otro relé que activa/desactiva el ventilador de refrigeración del sistema. En este caso la lectura la realizo en la entrada análogica A6 y la salida va al PIN 24. Sólo como curiosidad , en mi robot XS con pantalla más grande gestiono las temperaturas de los dos drivers por lo que utilizo dos LM35 , uno va a la entrada A6 y el otro a la A7, pero sigue existiendo sólo un ventilador que enfria a los dos.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Os dejo un ejemplo del conexionado del mismo, con la diferencia que aqui está conectado en el borne A5 en vez del A6. Podeis encontrar infinidad de información en Google sobre circuitos con el LM35.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-tnummtQnL1k/U1P8iDc3-1I/AAAAAAAAA4A/hObldZB5kaA/s1600/Arduino-lm35.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-tnummtQnL1k/U1P8iDc3-1I/AAAAAAAAA4A/hObldZB5kaA/s1600/Arduino-lm35.jpg" height="260" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Y otra "mariconada" más es un divisor de tensión que sirve para informarme del voltage de la bateria. Esta información es ofrecida cuando el robot retorna a la posición de inicio de cada linea, pero a efectos prácticos si no lo tenemos habilitado el programa en si cumple con su proposito. Esto lo gestiono a través de la entrada análogica A5, siguiendo el siguiente principio de circuito:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ze5rmdDlCOA/U1P_6yOl4KI/AAAAAAAAA4U/6RRTJy13qXU/s1600/v-ar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ze5rmdDlCOA/U1P_6yOl4KI/AAAAAAAAA4U/6RRTJy13qXU/s1600/v-ar.jpg" height="193" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente os adjunto una vista de como lo tengo yo montado , pero cuidadín , repito, yo no utilizo la SHIELD LCD !</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-dx82ZX5EtNc/U1QBHTzlQjI/AAAAAAAAA4o/XM_QGQuFVsY/s1600/2014-03-12+08.33.51.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-dx82ZX5EtNc/U1QBHTzlQjI/AAAAAAAAA4o/XM_QGQuFVsY/s1600/2014-03-12+08.33.51.jpg" height="266" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si lo conectáis todo igual , y utilizais los mismos motores (ver post de lista de la compra de materiales) , tan sólo faltará casi cargar el programa, pero esto será para otro dia.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Saludos y DIY! </div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com1tag:blogger.com,1999:blog-2463929896161090560.post-66374716805924605212014-03-19T11:36:00.001-07:002014-03-19T11:36:23.692-07:00De pruebas con el robot panorámico XS<div style="text-align: justify;">
Los dias pasaban, y muy a mi pesar no tenia momentos para probar mi nuevo robot panorámico. Entre semana no dispongo actualmente de mucho tiempo libre por lo que siempre toca esperar al fin de semana.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Entre semana voy "corrigiendo" errores de programación y dejando que la visualización en la pantalla sea agradable.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El programa del robot tiene la misma base que en mis otros dos robots panorámicos, pero esta vez le he hecho unas cuantas mejoras:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Cuando arranca , puedo elejir entre modo Gigapan o modo time-lapse. Aprovechando que tengo dos salidas con unos conectores tipo DB-9 puedo o bién conectar mi slide dolly (actualmente de un sólo eje) o bién dejar las conexiones para el robot panorámico, con esto gano que con un sólo control lo aprovecho para más cosas, total, la electrónica es la misma!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Si elijo el modo Gigapan puedo elejir el tipo de formato de camara que voy a usar (Full Frame, Nikon DX, Canon DX u Olympus 4/3). Acto seguido puedo elejir el zoom al que quiero trabajar . Con estas dos variables, el Arduino calcula ya el angulo que le corresponde . Finalmente nos deja elejir el solape entre fotos (ideal que no sea inferior al 20%) y con todo esto ya calcula los pasos a realizar entre fotos en los dos ejes. En este punto nada de nuevo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Acto seguido , pide si quiero trabajar en modo normal o en modo noche: La diferencia radica en que en el modo normal empieza a hacer las fotos de izquierda a derecha y al final de la linea retrocede el cabezal y sube hacia arriba un fotograma, y asi sucesivamente. Mientras que en el modo noche funciona de izquierda a derecha pero de arriba hacia abajo, con esto quiero conseguir poder fotografiar gigapanes en la hora azul, pero esto ya veremos si lo consigo...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Finalmente nos pide si queremos implementar un retardo entre fotos. Esto creo que puede ser muy útil sobretodo cuando hacemos fotos de larga exposición. Debido que el arduino no se entera si ha terminado de realizar una foto o no y se va despues de unos 500 mS, he decidido implementar esta función programable.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Acto seguido empieza a realizar la rutina hasta llegar a su fín, momento en que el cabezal vuelve a posición origen y reinicia el programa de nuevo por si queremos realizar otra captura. En versiones anteriores se quedaba en el loop haciendo una secuencia sin fín dejando bloqueado el sistema completamente. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Y si lo veis ? aqui un video </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nota> Cuando retrocede el cabezal muestra la temperatura de los dos drivers L298N y el voltaje de la bateria, este último valor es erroneo porque falta parte de la electrónica, por eso que marca 2v. en vez de unos 12-14v</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pues bién, este sábado pasado intenté realizar una foto de la Plana de l'Om de Manresa, decidí ir a primera hora de la tarde (aun no eran ni las 3!) y ya me encontré mucha gente (vamos mal...). Empiezo a montar los cacharros y ....</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Primer problema: necesito inclinar mucho la camara hacia arriba para que me aparezca completamente el edificio de Can Jorba y el robot no me deja debido a un tope de seguridad que monté. No llevo las llaves allen encima. Intento retroceder el tripode con el robot pero aun me falta angulo, pero ya que estoy decido seguir con la prueba.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Programo limites , le doy al enter y oigo un sólo click, se mueven los motores pero no se oyen mas clicks... si apago la camara y la vuelvo a encender y sólo hace una foto. Empiezo a mirar configuraciones de disparo remoto y está en principio todo bién...WTF !</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para rematar viene un personaje diciendome "me interesa el sitio y me interesas tu..." lo que me faltaba para ponerme más en tensión, una plaza llena de imigrantes y me aparece este de la nada diciendome estas cosas tan bonitas... en 4 minutos logré que se fuera a calentar la cabeza a otra gente.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Desmonté los cacharros y de vuelta a casa...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Empiezo a realizar pruebas y me funciona ahora todo bién ! Su pu...a madre! </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Fijo la camara al cabezal metálico y vuelve a fallar, momento en que voy moviendo el cable del disparo remoto a ver si "suena la flauta".</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Al cabo de unos minutos sonó! el problema es la fijación de la camara al cabezal mediante el tornillo metálico que no se por qué narices (ya que se tratan de baterias totalmente independientes) que me bloqueavan el obturador.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Y9wCy8uQJUk/Uynhi_8l_2I/AAAAAAAAA2Q/r1VOgrSbvZI/s1600/2014-03-19+19.09.21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Y9wCy8uQJUk/Uynhi_8l_2I/AAAAAAAAA2Q/r1VOgrSbvZI/s1600/2014-03-19+19.09.21.jpg" height="213" width="320" /></a></div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Quito la camara del robot, la dejo encima de la mesa y cojo un trozo de cable , en un extremo al tornillo de 1/4 de fijación de la camara y en el otro al aire, la cosa funciona, toco a la estructura del robot y voilá ya tenemos el fallo!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
(después de 4 dias aun no he encontrado un sistema de fijación que me convenza...)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Acto seguido pongo un poco de cinta aislante para "aislar" el robot de la camara y pataaaaaán ! ya funciona. </div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--DT73Jj0Eik/UynhaoaKcPI/AAAAAAAAA2E/K93ea-WFNJA/s1600/2014-03-19+19.09.31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/--DT73Jj0Eik/UynhaoaKcPI/AAAAAAAAA2E/K93ea-WFNJA/s1600/2014-03-19+19.09.31.jpg" height="213" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
Cargo los trastos de nuevo al coche y a probar de nuevo. Esta vez me desplazo hasta el pont vell de Manresa , lugar dónde se puede fotografiar la catedral de la Seu y La Cova. Lo preparo todo y a la primera.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-B-6eef_lt7U/Uynh2-WDwmI/AAAAAAAAA2U/WrKkDtyBT9I/s1600/2014-03-15+17.15.07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-B-6eef_lt7U/Uynh2-WDwmI/AAAAAAAAA2U/WrKkDtyBT9I/s1600/2014-03-15+17.15.07.jpg" height="213" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Un par de videos del momento...</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/SMfHu5A3hVs?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://i1.ytimg.com/vi/zFw5J_L6E8g/0.jpg" height="266" width="320"><param name="movie" value="https://www.youtube.com/v/zFw5J_L6E8g?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/zFw5J_L6E8g?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Tras 576 capturas ( 32 columnas x 18 filas ), una cada poco mas de 3 segundos es hora de volver a casa, convertir los RAW's a JPEG (aproximadamente una hora y media) y ensamblarlos en el AutoPano Giga, hasta obtener al cabo de unas 7 horas un archivo en formato PSB/PSD manipulable con el Photoshop . </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-F05ixLfwfjA/Uyne6Tim79I/AAAAAAAAA1o/hgGN6XLgaP4/s1600/Captura+de+pantalla+2014-03-15+a+las+22.37.00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-F05ixLfwfjA/Uyne6Tim79I/AAAAAAAAA1o/hgGN6XLgaP4/s1600/Captura+de+pantalla+2014-03-15+a+las+22.37.00.png" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez creado este archivo de unos 80GB de peso, sólo tengo que esperar algo mas de media hora para que se me carge en mi iMac 3.6GHz con 16GB de ram... (cuando le doy a grabar aproximadamente una hora y media), y las manipulaciones para borrar matriculas y pequeñas correcciones son muy lentas y con mucho riesgo de que "pete" todo...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Luego fué momento de colgarla en el servidor de Gigapan para que tod@s podamos disfrutar. Esta vez tardo 66056 segundos (poco mas de 18 horas) para subirla a la red la gigapan de 10.31 GPx.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/--SMqTVMYL4E/UynfhSpMtiI/AAAAAAAAA1w/ZURKgRGG2bg/s1600/Captura+de+pantalla+2014-03-18+a+las+18.52.01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/--SMqTVMYL4E/UynfhSpMtiI/AAAAAAAAA1w/ZURKgRGG2bg/s1600/Captura+de+pantalla+2014-03-18+a+las+18.52.01.png" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Deseo que os guste, y que os animeis a hacer vuestras panorámicas.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-rC6o05AHTus/UyngdduqpNI/AAAAAAAAA18/cgVNsgdTrpU/s1600/Captura+de+pantalla+2014-03-19+a+las+19.21.10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-rC6o05AHTus/UyngdduqpNI/AAAAAAAAA18/cgVNsgdTrpU/s1600/Captura+de+pantalla+2014-03-19+a+las+19.21.10.png" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si la quereis ver en grande...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.gigapan.com/gigapans/151600"><span class="Apple-style-span" style="font-size: x-large;">http://www.gigapan.com/gigapans/151600</span></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Por cierto, hoy en twitter he leido un post sobre un suizo que hace Gigafotos macros...os dejo el <a href="http://vimeo.com/89224670" target="_blank">enlace </a>para que le deis un poco a la cabeza. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si a alguién le sobra un robot de 6 ejes que me lo diga. Mas info en la web de <a href="http://www.robophot.com/" target="_blank">Robophot</a>. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Saludos!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com3tag:blogger.com,1999:blog-2463929896161090560.post-88788030459525686652014-03-12T13:54:00.001-07:002014-03-12T13:54:38.786-07:00Robot Panoramico XS (diseño mecánico)<div style="text-align: justify;">
Todo empezó un 10 de enero con unos retales de cartón de la caja de cereales, un metro, un boli y poca cosa mas para realizar un esbozo de lo que seria mi nuevo robot panoramico XS.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-RKRnUrNOWP8/Ux9gq9HQ0VI/AAAAAAAAAyw/AWKyy8QHY9Y/s1600/IMAG0687.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-RKRnUrNOWP8/Ux9gq9HQ0VI/AAAAAAAAAyw/AWKyy8QHY9Y/s1600/IMAG0687.jpg" height="213" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Queria hacerlo lo mas pequeño posible por lo que tocaria estrujarse la cabeza en cuanto a materiales y diseño. También tocó investigar con el Sr. Google. Este robot se "parecería" al <a href="http://www.gigapan.com/cms/shop/epic-pro" target="_blank">EPIC Pro</a> pero gestionado por Arduino.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
La primera medida seria el ancho del robot, por lo que coji la camara de batalla (la Nikon d5200) y medí la distancia que hay entre el centro de la rosca de 1/4" de fijación que hay en la parte inferior y el extremo de la camara más lejano en su plano horizontal <b>(distancia d1)</b>. Esta seria la distancia a multiplicar por dos que me marcaria la mínima anchura. El punto dónde esta fijada la rosca tiene que estar en línea con el eje de rotación horizontal.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-sfOJDzdvf5o/Ux9cfil46KI/AAAAAAAAAyY/gIk5I8y5Yu4/s1600/distancias_d5200.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-sfOJDzdvf5o/Ux9cfil46KI/AAAAAAAAAyY/gIk5I8y5Yu4/s1600/distancias_d5200.jpg" height="285" width="400" /></a></div>
<br />
<br />
<div style="text-align: justify;">
También busqué la distancia que hay desde la base de la cámara hasta el centro del sensor de la misma, esta <b>distancia d2</b> corresponderá con el eje de rotación vertical.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Finalmente hay otra distancia que la determiné un poco a lo loco: la profuncidad a la que deberia colocar la camara para que quedase el punto nodal bién centrado. Si soys nuevos en este blog, buscar en post anteriores el tema del punto nodal. Yo lo dejé a la misma <b>distancia d3</b> del anillo de enfoque del Nikkor 18+200 acoplado al cuerpo.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-PUCPlhXAXSo/Ux9fP2OpJ5I/AAAAAAAAAyk/xd6-NYjiIgQ/s1600/d5200.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-PUCPlhXAXSo/Ux9fP2OpJ5I/AAAAAAAAAyk/xd6-NYjiIgQ/s1600/d5200.jpg" height="266" width="400" /></a></div>
<br />
<br />
Ya tenia tres medidas claras, y un diseño del balancín.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-fbI5nVPVvM4/Ux9hGBq6tzI/AAAAAAAAAy4/2dwm3phPGy0/s1600/IMAG0686.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-fbI5nVPVvM4/Ux9hGBq6tzI/AAAAAAAAAy4/2dwm3phPGy0/s1600/IMAG0686.jpg" height="213" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Siguiendo en la soportación del balancín sólo faltaba determinar la altura del eje de rotación, cuanto más arriba mejor, pero eso va en contra de optimizar el tamaño. Mediante los cartones iva proyectando como quedaria todo y calculando las posibilidades. Acabé determinando una altura del eje de rotación a unos 200 mm de la base con lo que conseguiria en el peor de los casos unos 45º de inclinación verticales que deberian servir para la mayoria de los proyectos fotográficos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora queria hacer que basculara todo al estilo balancín desde el eje de rotación vertical, por lo que tenia claro que la anchura de la soportación del balancín sería algun centimetro mas de ancho, por lo que ya tendria otra cota: el ancho teorico del robot, y ya puestos si el robot tiene que girar, esta cota también deberia ser el largo del mismo. Lo friki-ideal sería una caja redonda para ganar unos grados, pero a dia de hoy aun no existen pantallas del tipo oLed que pudiera acoplar en el Arduino, por lo que pasemos a la opción basica: caja cuadrada!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Llegado este punto empecé a buscar cajas metalicas...que odisea! en las tiendas de electrónica de mi ciudad no me convencian las que tenian. De vuelta a casa y a googlear hasta encontrar cajas eléctricas por lo que luego se me pasó por la cabeza en ir a una tienda de material eléctrico pensando encontrar una caja de mi gusto cuando faltaban pocos minutos para que cerraran la misma un sábado al mediodia. Después de plantear mis exigencias al vendedor y enseñarme varios catalogos (dónde este un catalogo en papel que se quiten los buscadores de internet!) me dijo "calla...tengo el catalogo de <a href="http://es.rs-online.com/web/" target="_blank">RS</a>!" , este me suena muuucho. Alli busquemos la caja y me apunté la referencia para luego buscarla ya filtrada en su web, y así es como elejí la caja.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la misma web de RS-amidata pude descargar los planos mecánicos, parecia bonita, de fundición de aluminio por lo que seria fácil de mecanizar. La busco y la encuentro por eBay, ya sólo faltaba esperar. Seria una Hammond 1590HFB (en la siguiente foto aparece un poco "distorsionada" ya que es cuadrada en dos de sus ejes).</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-1_Z6XJ0_J9c/Ux9jT8C0z_I/AAAAAAAAAzQ/qp_gkUqWsh0/s1600/p-h1590bbbk.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-1_Z6XJ0_J9c/Ux9jT8C0z_I/AAAAAAAAAzQ/qp_gkUqWsh0/s1600/p-h1590bbbk.jpg" height="276" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Como que me habia lanzado , también adquirí gran parte del material restante y tras unos dias de "paro" esperando la caja fuí mecanizando el balancín.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez llegó la caja y los rodamientos de bolas ya podia empezar a agujerear. Para hacer estos agujeros utilicé una broca piramidal adquirida también en eBay.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-zwWfNgZ2wAk/Ux9iDxEMCdI/AAAAAAAAAzE/atu8g8U79To/s1600/broca.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-zwWfNgZ2wAk/Ux9iDxEMCdI/AAAAAAAAAzE/atu8g8U79To/s1600/broca.jpg" height="206" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Con estas brocas es dificil provocar enganchadas , cosa que con las brocas típicas cuando hacemos agujeros en planchas con poco espesor es muy fácil que se nos enganchen los labios de esta y nos provoque unos agujeros que no sean redondos (y cuando lo haces encima del marmol de la cocina aun mas!).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Primero llegaron los rodamientos de bola, muy utiles para no cargar el peso y fricción de todo el mecanismo sobre el motor. Tras marcar el centro de la caja y realizar una circunferencia con centro a este punto ya podia empezar a agujererar la caja para colocar a estos.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-vxnU6lQJJys/Ux945uf-_0I/AAAAAAAAAzg/k_8uVXiSrEg/s1600/IMAG0710.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-vxnU6lQJJys/Ux945uf-_0I/AAAAAAAAAzg/k_8uVXiSrEg/s1600/IMAG0710.jpg" height="213" width="320" /></a></div>
<br />
En la siguiente imagen se observa el "colador" , la caja con su infinidad de agujeros.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-kKaVA05Po08/Ux95f15vb7I/AAAAAAAAAzo/YW7cs-WQKTA/s1600/IMAG0732.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-kKaVA05Po08/Ux95f15vb7I/AAAAAAAAAzo/YW7cs-WQKTA/s1600/IMAG0732.jpg" height="213" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Luego llegó un motor que tenia que servir para hacer la rotación horizontal pero tras agujerear la caja y empezar a hacer pruebas me di cuenta que no tendria fuerza suficiente, por lo que deberia pasar a buscar otro motor...problemón !</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-HvJHjryit7k/Ux96H9kJ6sI/AAAAAAAAAz0/0pNr6aE6uXs/s1600/164.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-HvJHjryit7k/Ux96H9kJ6sI/AAAAAAAAAz0/0pNr6aE6uXs/s1600/164.jpg" height="245" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Los motores NEMA-17 suelen medir unos 42 mm de alto, y la caja tiene una altura de unos 60 mm. Habia espacio suficiente para alojarlo, lástima que yo queria un motor con reductora. Despues de buscar en stepperonline y varias webs semejantes me encontré que ninguno de ellospodia alojarlos por su altura, hasta que un dia acabé encontrando unos que me entrarian (ver el post anterior de la lista de la compra).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Luego llegó la pantalla...más bricolaje! esta vez con la caladora y con la ayuda de mi madre! La pantalla hacia la misma altura que el interior de la caja. Poco a poco , agujereando todo y quedando bastante compacto.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-mFpmEzZRQmM/Ux97Y9Z1N7I/AAAAAAAAA0E/R7F6197UW8E/s1600/IMAG0721.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-mFpmEzZRQmM/Ux97Y9Z1N7I/AAAAAAAAA0E/R7F6197UW8E/s1600/IMAG0721.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Llegados este punto tuve que cargarme con un "disco" (la mola) el nervio central que hay en la mitad de cada costado en su interior ya que molestaba a la hora de colocar la pantalla . Por cierto , la pantalla hace la misma altura que el interior de la caja. Hay que calcular bien para que nos quede bien centrada.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-e_htlghLtZo/Ux97YyTYJvI/AAAAAAAAA0A/zo8RNUHeXC0/s1600/IMAG0733.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-e_htlghLtZo/Ux97YyTYJvI/AAAAAAAAA0A/zo8RNUHeXC0/s1600/IMAG0733.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
En el lateral un par de agujeros mas para colocar los conectores tipo DB-9 (los míticos del puerto série).</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cdGdtVbASb0/Ux980n66QyI/AAAAAAAAA0c/dMB-jtjCB_A/s1600/IMAG0734-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-cdGdtVbASb0/Ux980n66QyI/AAAAAAAAA0c/dMB-jtjCB_A/s1600/IMAG0734-1.jpg" height="213" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Luego fué hora de fijar el resto de componentes electronicos , y de hacer un agujero para que saliera la cabeza del Joystick, este lo desmonté de un nunchuck de la wii que no utilizaba, al fín y al cabo es un doble potenciometro de 10Kohms.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-KKJuzgCyDps/Ux971xYTpJI/AAAAAAAAA0Q/_uwMztLZh5c/s1600/IMAG0706.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-KKJuzgCyDps/Ux971xYTpJI/AAAAAAAAA0Q/_uwMztLZh5c/s1600/IMAG0706.jpg" height="213" width="320" /></a></div>
<br />
Otro agujero mas para el pulsador , y otros mas y la base-caja ya estaba mecanicamente lista.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-JfRcxwrf9FM/Ux99Xte9cxI/AAAAAAAAA0k/mA3cENBVgiI/s1600/IMAG0740.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-JfRcxwrf9FM/Ux99Xte9cxI/AAAAAAAAA0k/mA3cENBVgiI/s1600/IMAG0740.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ya sólo quedaba fijar los componentes electrónicos.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GS7k5IWZR98/Ux9_Gu-gwAI/AAAAAAAAA0w/XgFyTOjWhZI/s1600/IMAG0736.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-GS7k5IWZR98/Ux9_Gu-gwAI/AAAAAAAAA0w/XgFyTOjWhZI/s1600/IMAG0736.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Mecanicamente sólo faltaba hacer la soportación del balancín que seria igual de ancho que la caja , creo que viendo alguna imagen será más fácil que no explicarlo.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-LS_SyPE5CPg/UyDII0J90wI/AAAAAAAAA1A/VzsgdXd8L-c/s1600/2014-03-12+08.32.39.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-LS_SyPE5CPg/UyDII0J90wI/AAAAAAAAA1A/VzsgdXd8L-c/s1600/2014-03-12+08.32.39.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En el balancín , al igual que el soporte, tienen unos agujeros de 8mm. que es realmente el eje de rotación. En el lado del motor, hay un tornillo de M8 fijado al balancín bien estampado de manera que si en el extremo del tornillo lo movemos, también levantamos el balancín. En el otro lado del balancín el eje es un simple tornillo pasante que hace la funcion de guia. Lo ideal seria poner unos rodamientos en los ejes del soporte de balancín pero por temas de medidas acabé montando unos pasamuros de fontaneria de latón asi ganaba rigídez y precisión. Al ser de latón se pueden gastar con facilidad debido al rozamiento, pero creo que va a durar una buena temporada, y cuando den problemas, se va a por otros a la tienda de fontaneria!</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez tenia la soportación del balancín realizada y tras sus dobles a 90º y haber pasado la caladora para "regatear" algo de peso y darle un poco de forma más bonita fué la hora de adaptar el otro motor encargado del movimiento vertical del balancín. Para realizar la transmisión utilizaría una correa tipo GT2 (las que usan en las impresoras Prusa 3-D) , y unas poleas de 36 dientes serán las encargadas de transmitir el movimiento. Como que los ejes del motor son de 8mm al igual que el eje de rotación vertical (tornillos de M8) , las poleas tienen que ser con un diametro interior de 8.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-klaeepNjufw/UyDIX_YD9qI/AAAAAAAAA1I/5s-axqEZ1lw/s1600/2014-03-12+08.30.05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-klaeepNjufw/UyDIX_YD9qI/AAAAAAAAA1I/5s-axqEZ1lw/s1600/2014-03-12+08.30.05.jpg" height="320" width="213" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
La correa venia abierta, con una longitud de 2 metros y yo apenas necesitaba 300mm. Siempre hay la opción de comprarla cerrada y evitarnos algun problema, pero salia mucho mas cara. Yo opté por recortarla y cerrarla mediante el amigo loctite invertiendo un trozo de correa de unos 5 cms. De momento aguanta...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Finalmente habia que montar un soporte para fijar el soporte del balancín al eje del motor horizontal. Este puede ser un "redondo" al que deberiamos montar un sistema roscado a ser preferible que atacara sobre el eje del motor.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-66UVqgBNX3U/UyDI4VwqrsI/AAAAAAAAA1Q/BkJDmdfwg-U/s1600/2014-03-12+08.31.34.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-66UVqgBNX3U/UyDI4VwqrsI/AAAAAAAAA1Q/BkJDmdfwg-U/s1600/2014-03-12+08.31.34.jpg" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Una vez llegado a este punto, ya sólo faltaba soldar y programar, pero para ello intentaré otro dia realizar el esquema simple...eso sí , me repito: esto no es un tutorial paso a paso, podeis "copiar" pero el ingenio de cada uno hará que quede y funcione vuestro invento mejor o más bonito.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-1Ehex6nt-G0/UyDJBGzHuEI/AAAAAAAAA1Y/WCXc_DqPvYE/s1600/2014-03-12+08.32.05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-1Ehex6nt-G0/UyDJBGzHuEI/AAAAAAAAA1Y/WCXc_DqPvYE/s1600/2014-03-12+08.32.05.jpg" height="320" width="213" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
DIY !</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com1tag:blogger.com,1999:blog-2463929896161090560.post-82675014864437077782014-03-03T13:26:00.001-08:002014-03-03T13:26:29.363-08:00Robot panorámico XS (la lista de la compra)<div style="text-align: justify;">
Muchas veces me da pereza transportar mi robot panorámico hasta según que paraje posiblemente porque junto a el hay que transportar las baterías, la cámara, el objetivo y un sinfín de cosas mas. Tampoco creo necesario contratar un sherpa!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
A raíz de aquí me empecé a plantear la construcción de un robot más pequeño y ligero con la finalidad de poder realizar fotografías panorámicas automáticamente utilizando un zoom estandard , en mi caso la intención inicial es usar un Nikkor 18-200mm unido a la Nikon D5200. Como que no tiene nada que ver con el otro objetivo que utilizo para hacer Gigapan's (el Sigma 150-500 + teleconversor 1.4x), acaba produciéndose que el numero de fotos para realizar la toma se reduce considerablemente, el peso del objetivo y finalmente la resolución conseguida será muy inferior pero no debería tener desperdicio frente a una panorámica normal. De aqui viene su etiqueta XS.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para ello y basándome en mis anteriores experiencias empecé con unos bocetos para ir preparando el tema. Hoy de momento dejo la lista de la compra por si alguien se anima a fabricarse uno. Deciros que no sale "regalao" y si contamos las horas dedicadas más vale que os compréis uno nuevo. Si sois amantes de la electrónica , arduino y un poco manitas os lo podréis hacer con algunas pequeñas dificultades.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Antes de comprar nada , mirad la evolución de todo el proyecto en siguientes posts para ver si estais capacitados para realizarlo sin tener grandes dificultades. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Plancha de 1-1.5 mm : Aproximadamente necesitamos dos retales cuya area será de aproximadamente 800 x 200 mm. Lo más complicado es doblarla.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Caja metálica . Yo he utilizado la Hammond 1590FBK que es la misma de la foto pero pintada de negro . Es de fundición de aluminio por lo que es fácil trabajar con ella. Os dejo un plano muy útil en formato <a href="http://www.hammondmfg.com/pdf/1590F.pdf" target="_blank">PDF</a>. Creo recordar que en <a href="http://es.rs-online.com/web/" target="_blank" wrc_done="true">RS-amidata</a><span class="wrc_icon wrc0" rating="{"icon":"grey0-16.png","rating":0,"weight":0,"flags":{"shopping":null,"social":null,"news":null,"it":null,"corporate":null,"pornography":null,"violence":null,"gambling":null,"drugs":null,"illegal":null}}"></span> estaba disponible , aunque yo la acabé comprando por <a href="http://www.ebay.it/itm/Hammond-1590FBK-diecast-enclosure-box-satin-BLACK-contenitore-alluminio-1pc-/261337695887?ssPageName=ADME:X:AAQ:IT:1123" target="_blank">eBay</a> a Italia por unos 30 euros.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-2vhzCrOT8RQ/UxMMeskKmqI/AAAAAAAAAww/ARqXBLrQeD4/s1600/1590.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-2vhzCrOT8RQ/UxMMeskKmqI/AAAAAAAAAww/ARqXBLrQeD4/s1600/1590.jpg" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
* Dos motores tipo NEMA-17 con reductor. Cuidadín que me costó mucho dar con ellos! El problema es la altura de la caja que hay que buscar un motor que sea bajito, a mi me sobran pocos milímetros! Yo utilicé unos <a href="http://www.kysanelectronics.com/Products/Detail.php?recordID=8318" target="_blank">Kysan 1040222</a> comprados por eBay . Os dejo el <a href="http://www.ebay.com/itm/3DMakerWorld-Geared-NEMA-17-Stepper-Motor-Gear-ratio-5-1-Torque-9-Kg-cm-/181316613727?ssPageName=ADME:L:OC:ES:3160" target="_blank">link actua</a>l. Otra opción que podéis hacer es buscarlos a través del fabricante en la siguiente web de Kysan. También el <a href="http://www.kysanelectronics.com/graphics/1040222.pdf" target="_blank">plano</a> del motor en PDF. Si soys nuevos comprando este tipo de motores os recomiendo que leais otros posts o otras webs para que luego no tengais problemas de voltajes...Comprado en <a href="http://www.ebay.com/itm/3DMakerWorld-Geared-NEMA-17-Stepper-Motor-Gear-ratio-5-1-Torque-9-Kg-cm-/171215333760?ssPageName=ADME:X:AAQ:US:1123" target="_blank">eBay</a> por unos 50 euros cada motor.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-a0Bp5a28_SY/UxMPkzJ03gI/AAAAAAAAAw8/c04EZU3jOdE/s1600/motor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-a0Bp5a28_SY/UxMPkzJ03gI/AAAAAAAAAw8/c04EZU3jOdE/s1600/motor.jpg" height="256" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
* Un arduino MEGA, con el UNO nos quedamos justos de salidas y de memoria. El programa actual me ocupa unos 26 kb, y el UNO soporta unos 32 kb. En cuanto a salidas, necesitamos al menos 8 salidas hacia los drivers de motores y como mínimo una para el disparo remoto de la camara. También podemos utilizar un ChipKit , pero luego tendremos que tener en cuenta que las salidas son a 3.3 v en vez de los 5v. proporcionados por el Arduino clásico. Comprado un clon por menos de 15 euros en <a href="http://www.ebay.com/itm/New-MEGA-2560-R3-ATmega-2560-ATmega-16U2-Board-For-ARDUINOs-IDE-/131094703921?ssPageName=ADME:X:AAQ:US:1123" target="_blank">eBay</a>.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WMWj6b7c6cY/UxToW0-Ni7I/AAAAAAAAAxM/xqHMmAmXY5o/s1600/mega.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-WMWj6b7c6cY/UxToW0-Ni7I/AAAAAAAAAxM/xqHMmAmXY5o/s1600/mega.jpg" height="155" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
* Una pantalla LCD i2c de 20x4 caracteres que entra justa en la altura de la caja. Cuanto más grande...más información que podremos mostrar. Si no la teneis tipo i2c necesitareis más salidas libres en vuestro Arduino. Unos 11 euros en <a href="http://www.ebay.com/itm/New-Blue-IIC-I2C-TWI-2004-20x4-Serial-LCD-Module-Display-Arduino-compatible-/261137500972?ssPageName=ADME:L:OU:ES:3160" target="_blank">eBay</a>.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VQ8ZkQpCQ1A/UxTuHTSh3sI/AAAAAAAAAx4/Fx5Z_ZQOYSU/s1600/lcd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-VQ8ZkQpCQ1A/UxTuHTSh3sI/AAAAAAAAAx4/Fx5Z_ZQOYSU/s1600/lcd.jpg" height="223" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
* Dos drivers L298N , en <a href="http://www.ebay.com/itm/L298N-Stepper-Motor-Driver-Controller-Board-DC-Motor-Driver-Chip-S9-/310795441230?ssPageName=ADME:L:OC:ES:3160" target="_blank">eBay</a> tienen un coste de unos 3 euros la unidad si vienen de Oriente.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-20XQE5S-Q_Q/UxTqAytx0eI/AAAAAAAAAxY/fL3jSEWI33M/s1600/driver.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-20XQE5S-Q_Q/UxTqAytx0eI/AAAAAAAAAxY/fL3jSEWI33M/s1600/driver.jpg" height="320" width="320" /></a></div>
<br />
* Step down con entrada 12/24v y salida 5v 10A , otros 5 euros en <a href="http://www.ebay.com/itm/DC-DC-Converter-Step-Down-Buck-12V-24V-to-5V-10A-50W-Car-Power-Adapter-E0Xc-/400543958740?pt=LH_DefaultDomain_0&var=&hash=item5d4247c6d4" target="_blank">eBay</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-q33fX5uMOxI/UxTuz0OO95I/AAAAAAAAAyA/33NKlj5tUc8/s1600/step.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-q33fX5uMOxI/UxTuz0OO95I/AAAAAAAAAyA/33NKlj5tUc8/s1600/step.jpg" height="320" width="320" /></a></div>
<br />
* Dos metros de correa tipo GT2 y dos poleas de 36 dientes por menos de 14 euros en <a href="http://www.ebay.com/itm/RepRap-2x-GT2-36T-8mm-Bore-Pulleys-2M-Timing-Belt-Set-for-3D-printer-Ultimaker-/121210468029?" target="_blank">RepRap</a>. Son las que usa la gente para hacer sus impresoras tipo Prusa-3D.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-LZ2yb-iIZfI/UxTr3JIsdeI/AAAAAAAAAxk/NRMf-YxNC0E/s1600/correa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-LZ2yb-iIZfI/UxTr3JIsdeI/AAAAAAAAAxk/NRMf-YxNC0E/s1600/correa.jpg" height="320" width="320" /></a></div>
<br />
<br />
<div style="text-align: justify;">
* Bolas rodamiento , que aproximadamente salen a 1 euro el rodamiento sobre el cual se deslizará la mesa sin hacer sufrir el motor y evitando de poner unos cojinetes/rodamientos enormes. Como el resto...comprado en <a href="http://www.ebay.com/itm/10Pcs-Dia-8mm-Ball-Metal-Transfer-Bearing-Unit-Conveyor-Roller-CY-8H-/400560659579?ssPageName=ADME:L:OU:ES:3160" target="_blank">eBay</a>, para variar! Otros 10 euros menos en nuestro bolsillo.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-3T1IXnMeCuk/UxTs-8qeZDI/AAAAAAAAAxs/yo056RMNkPg/s1600/rodamiento.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-3T1IXnMeCuk/UxTs-8qeZDI/AAAAAAAAAxs/yo056RMNkPg/s1600/rodamiento.jpg" height="246" width="320" /></a></div>
<br />
<br />
<div style="text-align: justify;">
Y luego un sinfín de pequeño material como pilaretes, tornillos de M3. un pulsador, un "joystick" sacado de un nunchuck de una wii...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ya llevamos unos doscientos euros invertidos soló en eBay y un mes de espera en recibir estos componentes fotografiados.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como herramientas : un taladro, la caladora, juego de brocas (yo utilizo unas piramidales que van muy bién con el aluminio de la caja para hacer agujeros grandes). Con la plancha ya es más peligroso, os lo digo por experiencia.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
También necesitariamos un buen lugar para hacer bricolage, yo lo hago como puedo, pero ojalá tuviera un sitio como Dios manda y no como muchas veces agujereando en el suelo de la cocina...jiji.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En siguientes posts lo dedicaré a explicar pequeños detalles de la construcción mecánica y luego la parte de electrónica, pero en ningun caso será un tutorial paso a paso.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como dijo alguien: "Si tu sueñas que puedes hacerlo, es que tu puedes". </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
DIY ! Do-It-Yourselve!</div>
<br />
<br />
<div id="wrchoverdiv" style="display: none;">
<div id="wrccontainer">
<div id="wrcheader">
<div id="wrctitle">
WebRep</div>
</div>
<div class="wrchorizontal">
</div>
<div id="wrccurrentvote">
currentVote</div>
<div class="wrchorizontal">
</div>
<div id="wrcrating">
</div>
<div id="wrcratingtext">
noRating</div>
<div id="wrcweighttext">
noWeight</div>
<div id="wrcflags">
<div class="wrcicon" id="wrcicon_shopping">
</div>
<div class="wrcicon" id="wrcicon_social">
</div>
<div class="wrcicon" id="wrcicon_news">
</div>
<div class="wrcicon" id="wrcicon_it">
</div>
<div class="wrcicon" id="wrcicon_corporate">
</div>
<div class="wrcicon" id="wrcicon_pornography">
</div>
<div class="wrcicon" id="wrcicon_violence">
</div>
<div class="wrcicon" id="wrcicon_gambling">
</div>
<div class="wrcicon" id="wrcicon_drugs">
</div>
<div class="wrcicon" id="wrcicon_illegal">
</div>
</div>
<div class="wrchorizontal">
</div>
</div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com2tag:blogger.com,1999:blog-2463929896161090560.post-66027532965965932862014-02-20T23:12:00.000-08:002014-02-21T09:44:23.896-08:00Pruebas con motores paso a paso (III)<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;">Cuando adquirimos un motor del tipo paso a paso tiene una serie de </span><span style="font-family: arial, sans-serif;">características :</span></span></span><br />
<span style="background-color: black;"><span style="color: white;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-IOrQOOUi5d0/UwUiXIEkXBI/AAAAAAAAAtY/sQEvh2BE1E8/s1600/caracteristicas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-IOrQOOUi5d0/UwUiXIEkXBI/AAAAAAAAAtY/sQEvh2BE1E8/s1600/caracteristicas.jpg" height="313" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="background-color: black;"><span style="color: white;"><br style="font-family: arial, sans-serif;" /></span></span>
<br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;">* Voltaje de alimentación de las bobinas.En mi experiencia , a veces me he </span><span style="background-color: black; font-family: arial, sans-serif;">vuelto loco si viene expresado en voltaje de la bobina . Hay que tener en</span><span style="background-color: black; font-family: arial, sans-serif;">cuenta que el driver muchas veces lo que nos hace es dividir esta tensión y </span><span style="background-color: black; font-family: arial, sans-serif;">aplica +V/2 a una salida de bobina , mientras que en la otra aplica -V/2. Total, que la tension entre los dos bornes del bobinado es V, entonces cuando compro el motor , la característica que me dice el datasheet es tensión por fase , como yo utilizo fuentes de alimentación de unos 5v , elijo motores que tengan una tensión por fase cercana a 2.5v o algo superior.</span></span></span></div>
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;"><br /></span></span></span></div>
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"></span></span></span><br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><span style="background-color: black;">* Intensidad maxima de las bobinas. Es otro factor a tener en cuenta, ya que el driver tiene que estar preparado para aguantar esta intensidad. </span></span></span></span></div>
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;">
</span></span></span>
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><span style="background-color: black;"><br /></span></span></span></span></div>
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;">
</span></span></span><br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;">* Pasos del motor (por ejemplo 200). Este número representa el número de </span><span style="background-color: black; font-family: arial, sans-serif;">impulsos que hay que inyectarle para que de una vuelta entera. Con esto </span><span style="background-color: black; font-family: arial, sans-serif;">tenemos una resolución de 360º/200 impulsos que es lo mismo que 1.8 </span><span style="background-color: black; font-family: arial, sans-serif;">º/impulso.</span></span></span></div>
<span style="background-color: black;"><span style="color: white;"><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">Hoy voy a comentar el tema micropasos que es una manera de ganar resolución </span><span style="font-family: arial, sans-serif;">de giro del motor pero en su contra perdemos fuerza en el mismo, como </span><span style="font-family: arial, sans-serif;">siempre, hay que buscar el equilibrio y las necesidades.</span><br style="font-family: arial, sans-serif;" /><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">Un motor paso a paso estandard se descompone en 4 movimientos tal y como vimos en los anteriores posts.</span><br style="font-family: arial, sans-serif;" /><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">1010 HIGH LOW HIGH LOW</span><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">0110 LOW HIGH HIGH LOW</span><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">0101 LOW HIGH LOW HIGH</span><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">1001 HIGH LOW LOW HIGH</span></span></span><br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;">Esta rutina se repite hasta 50 veces en un motor de 200 pasos hasta </span><span style="background-color: black; font-family: arial, sans-serif;">completar toda la vuelta.</span></span></span></div>
<span style="background-color: black;"><span style="color: white;"><br style="font-family: arial, sans-serif;" /></span></span>
<br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;">Como que se trata de salidas digitales que gestionamos por defecto en </span><span style="background-color: black; font-family: arial, sans-serif;">nuestro Arduino a través de la libreria Stepper, si modificamos esta </span><span style="background-color: black; font-family: arial, sans-serif;">podremos cambiar el comportamiento de nuestro motor.</span></span></span></div>
<span style="background-color: black;"><span style="color: white;">
</span></span>
<span style="background-color: black;"><span style="color: white;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-AhPkpAmFGWk/UwZdXaCTE8I/AAAAAAAAAuk/ARyOXHnj2-g/s1600/tabla.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-AhPkpAmFGWk/UwZdXaCTE8I/AAAAAAAAAuk/ARyOXHnj2-g/s1600/tabla.bmp" height="108" width="640" /></a></div>
<span style="background-color: black;"><span style="color: white;"><br style="font-family: arial, sans-serif;" /><br style="font-family: arial, sans-serif;" /><span style="font-family: arial, sans-serif;">Por ejemplo podemos crear los medios pasos siguiendo la siguiente lógica:</span></span></span><br />
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><br /></span></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-oNar6Qkixsg/UwZdgeEMyZI/AAAAAAAAAu0/J6Igs1tvIYA/s1600/tabla_medio_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-oNar6Qkixsg/UwZdgeEMyZI/AAAAAAAAAu0/J6Igs1tvIYA/s1600/tabla_medio_paso.bmp" height="126" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="background-color: black; color: white; font-family: Arial, Helvetica, sans-serif;">Si utilizamos salidas digitales podremos obtener el siguiente trazo (tendremos unos cambios de torque muy bestias (+41%) cuando utilizemos las dos bobinas a la vez :</span></div>
<span style="color: white; font-family: arial, sans-serif;"><br /></span><span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"></span></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><a href="http://2.bp.blogspot.com/-nWgdKx-Etkc/UwZdTzYPotI/AAAAAAAAAuM/FlcuzAj2XmM/s1600/Medio_paso_digital.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-nWgdKx-Etkc/UwZdTzYPotI/AAAAAAAAAuM/FlcuzAj2XmM/s1600/Medio_paso_digital.bmp" height="320" width="310" /></a></span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black;"><span style="color: white;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="background-color: black;"><span style="color: white; font-family: Arial, Helvetica, sans-serif;">Mientras que si nos tiramos por las salidas analógicas podemos obtener una esfera en su posicionamiento obteniendo un torque más regular:</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><br /></span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black;"><span style="color: white;"><span style="font-family: arial, sans-serif;"><a href="http://3.bp.blogspot.com/-VJvGQs-3wmo/UwZdSWAHHkI/AAAAAAAAAt8/hpqXK72UGkw/s1600/Medio_paso_pwm.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-VJvGQs-3wmo/UwZdSWAHHkI/AAAAAAAAAt8/hpqXK72UGkw/s1600/Medio_paso_pwm.bmp" height="320" width="310" /></a></span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="background-color: black;"><span style="color: white;"><br style="font-family: arial, sans-serif;" /></span></span>
<br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><span style="background-color: black; font-family: arial, sans-serif;">Cambiando la libreria lograriamos convertir nuestro motor en 400 pasos y </span><span style="background-color: black; font-family: arial, sans-serif;">una resolución de </span><span style="background-color: black; font-family: Arial, Helvetica, sans-serif;">0.9º. Para ello tendremos que editar el archivo Stepper.cpp en la linea dónde dice</span></span></span></div>
<br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: #fff2cc; font-family: Arial, Helvetica, sans-serif;">stepMotor(this->step_number % 4);</span><span style="color: white; font-family: Arial, Helvetica, sans-serif;"> hay que sustituirlo por </span><span style="color: #fff2cc; font-family: Arial, Helvetica, sans-serif;">stepMotor(this->step_number % 8); </span><span style="color: white; font-family: Arial, Helvetica, sans-serif;">dónde este 8 significa el numero de "movimientos" posibles. Finalmente también hay que modificar la parte final de la libreria, en este caso debería cambiar en el caso de utilizar salidas digitales :</span></span></div>
<br />
<span style="background-color: black;"><span style="color: white;"> </span></span><br />
<span style="background-color: black;"><span style="color: white;"> </span><span style="color: #f9cb9c;">case 0: // 1000</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, HIGH); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 1: // 1010</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, HIGH); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 2: // 0010</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 3: // 0110</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 4: //0100</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 5: //0101</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 6: //0001</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, LOW); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> case 7: //1001</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_1, HIGH); </span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_2, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_3, LOW);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> digitalWrite(motor_pin_4, HIGH);</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"> break;</span></span><br />
<span style="background-color: black;"><span style="color: #f9cb9c;"><br /></span></span>
<br />
<div style="text-align: justify;">
<span style="background-color: black;"><span style="color: #f9cb9c;"><span style="background-color: black; color: white; font-family: Arial, Helvetica, sans-serif;">En caso de querlo hacer con salidas analogicas , se deberia usar siguiendo instrucciones del siguiente tipo:</span></span></span></div>
<br />
<span style="background-color: black;"><span style="color: #f9cb9c;"><br /></span></span>
<span style="background-color: black; color: white;"></span><br />
<span style="background-color: black; color: white;">case 0: // </span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_1, 0); </span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_2, 0);</span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_3, 255);</span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_4, 0);</span><br />
<span style="background-color: black; color: white;"> break;</span><br />
<span style="background-color: black; color: white;"> case 1: // </span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_1, 180); </span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_2, 0);</span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_3, 180);</span><br />
<span style="background-color: black; color: white;"> analogWrite(motor_pin_4, 0); </span><br />
<span style="background-color: black; color: white;"> break; </span><br />
<br />
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color: white;"><span style="background-color: black;">Y en nuestro programa de Arduino también deberemos modificar la linea dónde le definimos el número de pasos de nuestro motor (por ejemplo</span><span style="background-color: black;">: </span></span><span style="background-color: black; color: #f9cb9c;">#define motorSteps 800</span><span style="background-color: black; color: white;"> )</span></span></div>
</div>
<br />
<div style="text-align: justify;">
<span style="color: white; font-family: arial, sans-serif;"><br /></span></div>
<span style="font-family: arial, sans-serif;"></span><br />
<div style="text-align: justify;">
<span style="font-family: arial, sans-serif;"><span style="font-family: arial, sans-serif;"><span style="background-color: black;"><span style="color: white;">Y a partir de aqui tenemos otra opción que es generar los micropasos, es </span></span></span><span style="background-color: black; color: white; font-family: arial, sans-serif;">decir 1/4 , 1/8, 1/16 , 1/32 de paso, para ello hay que modificar la </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">libreria también. Llegados a este punto de resolución deberemos usar </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">salidas analogicas en vez de digitales, para ello lo haremos con las </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">marcadas como PWM (en realidad no dan una salida constante pero si una </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">tensión media). Recomendable una lectura sobre como funcionan las señales</span><span style="background-color: black; font-family: arial, sans-serif;"> </span><span style="background-color: black; font-family: arial, sans-serif;"><span style="color: #d9ead3;"><a href="http://arduino.cc/es/Tutorial/PWM#.Uwb7JBbEJhA" target="_blank">PWM</a></span></span><span style="background-color: black; color: white; font-family: arial, sans-serif;">. </span></span></div>
<span style="font-family: arial, sans-serif;">
</span>
<div>
<span style="color: white;"><br /></span></div>
<div>
<div style="text-align: justify;">
<span style="color: white;"><span style="background-color: black;"><span style="font-family: Arial, Helvetica, sans-serif;">De momento tendremos de sustituir las expresiones digitalWrite por analogWrite y en vez de dar un valor alto o bajo (HIGH o LOW) pasará a ser un valor entre 0 y 254 que es el rango en que trabaja nuestro pequeño arduino.</span></span></span></div>
<span style="color: white;"><span style="background-color: black;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></span>
<span style="background-color: black; color: white; font-family: arial, sans-serif;">Para ello podriamos utilizar las siguientes tablas:</span><br />
<br style="font-family: arial, sans-serif;" />
<div style="text-align: justify;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;">Estas tablas basicamente resultan de dividir en fracciones la columna grados por 4 veces la inversa del numero de micropasos (en este caso 4 x inversa de 1/4 = 16 movimientos electricos). Entonces dividimos los 360º de una vuelta en 16 y nos da la columna GRADOS. A continuación aplicamos el Sinus y el Cosinus (columnas SIN y COS), este par de valores oscilan entre -1 y 1 y como que nosotros trabajamos con salidas analógicas que van de 0 a 255 lo único que hacemos es multiplicar el valor por 255. Finalmente nos vamos a las 4 columnas de sálidas PWM. En las dos primeras va el valor del sinus. Si es un valor positivo va a la primera columna, mientras que si es negativo lo pondremos en la segunda columna pero siempre en valor absoluto (sígno siempre positivo , nunca negativo - Como el Van Gal!-). Las columnas tercera y cuarta es lo mismo pero con los valores de Cosinus.</span></div>
<div style="text-align: justify;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;">He aquí las tablas para </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">1/4 de paso (800 impulsos/vuelta y resolución de 0.45º).</span></div>
<span style="color: white; font-family: arial, sans-serif;"><br /></span><span style="background-color: black; color: white; font-family: arial, sans-serif;"></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><a href="http://4.bp.blogspot.com/-mScoIBKLqTA/UwZdclse1KI/AAAAAAAAAus/2l3W-prFNUQ/s1600/tabla_cuarto_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-mScoIBKLqTA/UwZdclse1KI/AAAAAAAAAus/2l3W-prFNUQ/s1600/tabla_cuarto_paso.bmp" height="137" width="320" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><a href="http://1.bp.blogspot.com/-BWBAJOWYqxI/UwZdTQ9FLjI/AAAAAAAAAuI/Fkcdr69VY30/s1600/cuarto_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-BWBAJOWYqxI/UwZdTQ9FLjI/AAAAAAAAAuI/Fkcdr69VY30/s1600/cuarto_paso.bmp" height="225" width="320" /></a></span></div>
<br />
<br style="font-family: arial, sans-serif;" />
<div style="text-align: justify;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;">1/8 de paso (1600 impulsos/vuelta y resolución de 0.225º). Esta por ejemplo </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">la tengo yo modificada para trabajar con drivers de 4 entradas. Si alguién </span><span style="background-color: black; color: white; font-family: arial, sans-serif;">la quiere que contacte conmigo.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><a href="http://3.bp.blogspot.com/-xr92PRI1-zA/UwZdobHr11I/AAAAAAAAAvM/wGWq3oEZ0TI/s1600/tabla_octavo_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xr92PRI1-zA/UwZdobHr11I/AAAAAAAAAvM/wGWq3oEZ0TI/s1600/tabla_octavo_paso.bmp" height="258" width="320" /></a></span></div>
<br />
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-L6UYkHKZhKY/UwZdXRnX1gI/AAAAAAAAAug/Yc5HlBm30NM/s1600/octavo_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-L6UYkHKZhKY/UwZdXRnX1gI/AAAAAAAAAug/Yc5HlBm30NM/s1600/octavo_paso.bmp" height="223" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Os dejo el código enterito de la libreria (no os rayeis! hay que acabarlo de pulir , y también renombrar el archivo .h )</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Based on Stepper.cpp - - Stepper library for Wiring/Arduino - Version 0.4</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Original library (0.1) by Tom Igoe.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Two-wire modifications (0.2) by Sebastian Gassner</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Combination version (0.3) by Tom Igoe and David Mellis</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Drives a unipolar or bipolar stepper motor using 4 wires</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> When wiring multiple stepper motors to a microcontroller,</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> you quickly run out of output pins, with each motor requiring 4 connections. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> A slightly modified circuit around a Darlington transistor array or an L293 H-bridge</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> connects to only 2 microcontroler pins, inverts the signals received,</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> and delivers the 4 (2 plus 2 inverted ones) output signals required</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> for driving a stepper motor.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> */</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">#include "Arduino.h"</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">#include "Stepper3.h"</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> * constructor for four-pin version</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> * Sets which wires should control the motor.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> */</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">Stepper3::Stepper3(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">{</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_number = 0; // which step the motor is on</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->speed = 0; // the motor speed, in revolutions per minute</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->direction = 0; // motor direction</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->last_step_time = 0; // time stamp in ms of the last step taken</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->number_of_steps = number_of_steps; // total number of steps for this motor</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->valorPWM = valorPWM; // NEW ********</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // Arduino pins for the motor control connection:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->motor_pin_1 = motor_pin_1;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->motor_pin_2 = motor_pin_2;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->motor_pin_3 = motor_pin_3;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->motor_pin_4 = motor_pin_4;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // setup the pins on the microcontroller:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> pinMode(this->motor_pin_1, OUTPUT);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> pinMode(this->motor_pin_2, OUTPUT);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> pinMode(this->motor_pin_3, OUTPUT);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> pinMode(this->motor_pin_4, OUTPUT);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // pin_count is used by the stepMotor() method: </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->pin_count = 4; </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Sets the speed in revs per minute</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">*/</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">void Stepper3::setSpeed(long whatSpeed)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">{</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> Moves the motor steps_to_move steps. If the number is negative, </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> the motor moves in the reverse direction.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> */</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">void Stepper3::step(int steps_to_move)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">{ </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> int steps_left = abs(steps_to_move); // how many steps to take</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // determine direction based on whether steps_to_mode is + or -:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (steps_to_move > 0) {this->direction = 1;}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (steps_to_move < 0) {this->direction = 0;}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // decrement the number of steps, moving one step each time:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> while(steps_left > 0) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // move only if the appropriate delay has passed:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (millis() - this->last_step_time >= this->step_delay) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // get the timeStamp of when you stepped:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->last_step_time = millis();</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // increment or decrement the step number,</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // depending on direction:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (this->direction == 1) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_number++;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (this->step_number == this->number_of_steps) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_number = 0;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> } </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> else { </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (this->step_number == 0) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_number = this->number_of_steps;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> this->step_number--;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // decrement the steps left:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> steps_left--;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> // step the motor to step number 0, 1, 2, or 3:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> stepMotor(this->step_number % 32);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> * Moves the motor forward or backwards.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> */</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">void Stepper3::stepMotor(int thisStep)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">{</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> if (this->pin_count == 4) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> switch (thisStep) {</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">case 0: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 255);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 1: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 2: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 98); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 3: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 142); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 4: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 180); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 180);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 5: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 212); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 142);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 6: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 236); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 7: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 250); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 8: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 255); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 9: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 250); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 10: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 236); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 11: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 212); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 142); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 12: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 180); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 180);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 13: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 142); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 14: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 98); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 15: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 50); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 16: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 255);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 17: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 18: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 19: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 142);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 20: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 180);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 180); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 21: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 142);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 22: // </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 23: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 50); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 24: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 255);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 25: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 26: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 27: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 142);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 28: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 180);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 180);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 29: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 142);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 212);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 30: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 98);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 236);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> case 31: //</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_1, 0); </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_2, 50);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_3, 250);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> analogWrite(motor_pin_4, 0);</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> break;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> } </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> }</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">}</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">/*</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> version() returns the version of the library:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">*/</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">int Stepper3::version(void)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">{</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;"> return 4;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #fff2cc;">}</span></div>
<div style="text-align: left;">
<br /></div>
<br />
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span>
<br />
<span style="background-color: black; color: white; font-family: arial, sans-serif;">1/16 de paso (3200 impulso/vuelta y resolución de 0.1125º)</span><br />
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-K0SoYMzhsa0/UwZdpFZhjrI/AAAAAAAAAvY/Nqn7JF-93uI/s1600/tabla_dicieseis_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-K0SoYMzhsa0/UwZdpFZhjrI/AAAAAAAAAvY/Nqn7JF-93uI/s1600/tabla_dicieseis_paso.bmp" height="640" width="408" /></a></div>
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span>
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-H68qMkBQcPc/UwZdUnleeqI/AAAAAAAAAuU/0DXzioKKggc/s1600/dicieseis_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-H68qMkBQcPc/UwZdUnleeqI/AAAAAAAAAuU/0DXzioKKggc/s1600/dicieseis_paso.bmp" height="222" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Y finalmente 1/32 pasos:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-VC0MmsqiOYI/UwZduhIyiII/AAAAAAAAAvo/yaGGGZ8vN6Y/s1600/tabla_32_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-VC0MmsqiOYI/UwZduhIyiII/AAAAAAAAAvo/yaGGGZ8vN6Y/s1600/tabla_32_paso.bmp" height="640" width="208" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-U5ivxAL4Yrk/UwZdRP-yFkI/AAAAAAAAAt0/XdNTE7bAnHE/s1600/32_paso.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-U5ivxAL4Yrk/UwZdRP-yFkI/AAAAAAAAAt0/XdNTE7bAnHE/s1600/32_paso.bmp" height="222" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Mi experiencia con motores tipo NEMA-17 es que pierden mucha fuerza (ya de por si son pequeñitos) cuando trabajamos con micropasos, pero puede ser una buena solución en algunos casos.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Para vuestra curiosidad os informo que hay unos drivers <a href="https://www.sparkfun.com/products/11876" target="_blank">"Big Easy Driver" de SparkFun</a> que haciendo unos simples puentes ya podemos seleccionar si queremos trabajar con micropasos y os evitais la currada de modificar la libreria... Eso si, estos drivers no funcionan con las mismas ordenes utilizadas hasta ahora tipo <span style="color: #fce5cd;">MyStepper Stepper (200);</span> es otro cantar, pero si buscais informacion en san Google la encontrareis.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-PxsThLNiC-s/UweQEo5UXdI/AAAAAAAAAwg/_ENz5Hty-ek/s1600/sparkfun.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-PxsThLNiC-s/UweQEo5UXdI/AAAAAAAAAwg/_ENz5Hty-ek/s1600/sparkfun.jpg" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Con estos tres posts espero que entendais como funciona un motor paso a paso para que lo podais implementar en vuestros inventos fotográficos.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="background-color: black; color: white; font-family: arial, sans-serif;"><br /></span></div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-7457224043972387492014-02-01T10:57:00.001-08:002014-02-01T23:37:51.097-08:00Pruebas con motores paso a paso (II)<div style="text-align: justify;">
Seguimos batallando con el arduino y los motores paso a paso.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Tal y como vemos en la siguiente imagen aparece una estrella de los vientos junto a 4 bobinas. De todos es sabido y experimentado en nuestra infancia el efecto electroimán : cuando hacemos pasar una corriente por un bobinado (en nuestro caso el estator del motor) se ejerce un campo magnético y este es capaz de hacer mover elementos conductores (en nuestro caso el rotor del motor).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Logicamente si queremos que este movimiento se convierta en circular , necesitaremos como mínimo dos bobinados y eso es lo que realmente tenemos en nuestros motores paso a paso.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la siguiente imagen nos aparecen 4 bobinados y creo que es una de las maneras fácil de entender un poco como funciona.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la realidad los bobinados A y C están unidos al igual que B y D. Y también en un motor de 200 pasos deberia haber un total de 200 bobinas unidas en dos grupos de 100 + 100 distribuidas alternativamente .</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Tal y como dijimos el Arduino envia una serie de impulsos hacia el driver. Y este driver es el que convierte los impulsos en "potencia".</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-IX79WRyIY1E/UuuFIqHte-I/AAAAAAAAAso/j1y4MeESFhY/s1600/bobinados+copia.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-IX79WRyIY1E/UuuFIqHte-I/AAAAAAAAAso/j1y4MeESFhY/s1600/bobinados+copia.jpg" height="320" width="289" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En principio la libreria<b> Stepper</b> de arduino convierte nuestra instrucción de movimiento del motor en impulsos. Es decir cuando nosotros escribimos <b>myStepper.step(numero_de_impulsos); </b>lo que en realidad le estamos diciendo es que realice el numero_de_impulsos y los distribuye en 4 movimientos o ciclos repetitivos y luego activando las salidas correspondientes.</div>
<div class="separator" style="clear: both; text-align: justify;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>Imaginemos que decimos </b>myStepper.step(1); al tratarse del primer movimiento se genera un pulso y empieza a contar desde la tabla la primera columna, es decir estamos en el movimiento 1. Se activan las bobinas A (roja) y la Bobina C(verde). Nuestro rotor se debería posicionar entre A y C es decir rumbo Norte.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si a continuación escribo<b> myStepper.step(2);</b> generaria dos impulsos por lo que se me ejecutaria el movimiento 2 y luego el 3 (nuestro arduino sabe en que posición de movimiento se quedó la última vez) . Primero activariamos las bobinas C y B y a continuación la B y D. (giro hacia el Este y luego hacia el Sur)</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si acto seguido ejecutamos la instrucción <b>myStepper.step(3);</b> quiere decir que queremos dar 3 impulsos más . Ahora aqui el "arduino" sabe en que punto estamos de nuestro orden y ejecutará el movimiento 4 y luego saltará al 1 y al 2, pues se repiten los ordenes ciclícamente. (movimiento hacia el oeste, norte y este)</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si todo esto lo traspasamos a los 200 "bobinados" obtenemos un movimiento bastante controlado.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Si queremos mover en el otro sentido, sólo hay que interponer el signo negativo antes del número de pulsos y lo que hará el arduino invertir el orden de pulsos . Imaginamos que estamos en el movimiento 3, pues saltaria al movimiento 2 y luego al 1. La instrucción seria <b>myStepper.step(-200); </b>para dar una vuelta entera.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora que sabemos un poco más de como se mueven los motores es hora de testear si estos pulsos de nuestro arduino se "pierden" por el camino y no llegan a las bobinas de nuestro motor.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para ello nos fijaremos en el siguiente esquema:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ixxrWzjlY2s/UuuF6gqLaSI/AAAAAAAAAsw/Gc3gZHjp1hY/s1600/test_driver.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ixxrWzjlY2s/UuuF6gqLaSI/AAAAAAAAAsw/Gc3gZHjp1hY/s1600/test_driver.jpg" height="355" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Una vez tengamos cableado igual nuestro circuito, cargaremos en nuestro arduino el siguiente sketch:</div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">#include <Stepper.h> // incluimos la Stepper library</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">#define motorStepsX 200 // Pasos motor 360º/1.8º</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">Stepper myStepperX(motorStepsX, 8, 9, 10, 11); </span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">void setup() {</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">myStepperX.setSpeed(20); </span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">}</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">void loop(){</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">myStepperX.step(1); </span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">delay(30000);</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b><span style="background-color: black; color: white;">}</span></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<b style="background-color: black;"><br /></b></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Este sketch va generando impulsos hacia el motor cada 30 segundos , por lo que deberemos ir a la idea, pues continuamente irá cambiando del movimiento 1 , al 2, luego 3, i finalmente el 4. Seguidamente volverá a iniciar el ciclo y asi sucesivamente. Por cierto a mi haciendo todas las pruebas siempre me ha arrancado con el movimiento 2.</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Cojeremos nuestro múltimetro y lo pondremos para medir tensión VDC. El borne negativo del tester lo colocaremos al GND del arduino durante todo momento.</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Mediante el otro terminal del multimetro podemos probar si se cumple el orden de la tabla anterior (es posible que cuando empecemos con nuestras mediciones ya estemos en el paso 1)</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Pondremos la punta del tester en el PIN8 del arduino i verificaremos que hay 5 voltios. Luego verificaremos que exista también en IN1 del driver (5v), i finalmente en OUT 1 deberia existir aproximadamente la mitad de voltaje aplicado a VCC (alimentación del motor, imaginemos que lo alimentamos a 12v) al que deberiamos restar la caida de tensión de los diodos (puede ser hasta 0,7v), por lo que deberiamos encontrar como máximo 6V, pero tranquilamente podrian ser 5.3 voltios. Si miramos en OUT2 deberiamos encontrar la misma tensión pero en negativo, es decir entre -6v i -5.3v . Luego la tensión entre OUT1 y OUT2 será VCC menos dos caidas de tensión del diodo.</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Si estuvieramos en el movimiento 1 nos pasaria lo mismo en el PIN10 (5v) , IN3(5v) i en OUT3 (6v / 5.3v) , mientras que en OUT4 (-5.3v / -6v) </span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">El resto de PINs (9 y 11) , IN2 e IN4 deberian marcar 0 v.</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">Todo esto con suficiente nervio pues en 30 segundos cambia al siguinete movimiento:</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">En el movimiento 2, que deberiamos tener lo siguiente:</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">PIN9 y PIN10 = 5v</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">PIN8 y PIN11 = 0v</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">IN2 y IN3 = 5v</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">IN1 y IN4 = 0v</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">OUT 2 y OUT 3 = Vcc-diodo (5.3-6v)</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;">OUT 1 y OUT 4 = -Vcc+diodo (-5.3 -6v)</span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="font-family: verdana, sans-serif; font-size: 13px; text-align: -webkit-auto;">
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">En el movimiento 3, que deberiamos tener lo siguiente:</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">PIN9 y PIN11 = 5v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">PIN8 y PIN10 = 0v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">IN2 y IN4 = 5v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">IN1 y IN3 = 0v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">OUT 2 y OUT 4 = Vcc-diodo (5.3-6v)</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">OUT 1 y OUT 3 = -Vcc+diodo (-5.3 -6v)</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default">
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">En el movimiento 4, que deberiamos tener lo siguiente:</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">PIN8 y PIN11 = 5v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">PIN9 y PIN10 = 0v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">IN1 y IN4 = 5v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">IN2 y IN3 = 0v</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">OUT 1 y OUT 4 = Vcc-diodo (5.3-6v)</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">OUT 2 y OUT 3 = -Vcc+diodo (-5.3 -6v)</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black;"><span style="color: white;"><br />
Os dejo un video a ver si se entiende mejor...</span></span><br />
<span style="background-color: black;"><span style="color: white;"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: black; color: white;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/D9nRKN4YIl0?feature=player_embedded' frameborder='0'></iframe></span></div>
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">Si todo la secuencia es correcta, el motor deberia funcionar siempre y cuando la tensión de alimentación VCC y la posible potencia demandada a nuestra fuente de alimentación sea suficiente.</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">Si la secuencia no es correcta hay que verificar las señales entre Arduino y el driver que posiblemente esten mal, o bién el driver está en mal estado.</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">Finalmente me gustaria comentar que modificando ligeramente la libreria Stepper podemos conseguir más resolución en nuestros motores, consiguiendo por ejemplo medios pasos con lo que luego nuestro motor deberia dar 400 pasos para generar una vuelta entera, y seria capaz de parar en sitios intermedios (NE, SE, SO, y NO) pero en su contra perderiamos torque .</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">Si alguien le interesa la libreria modificada para medios pasos me la puede pedir.</span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;">También comentar que hay la opción de hacer 1/4 de paso, 1/8 y hasta 1/16 de paso , estos son llamados micropasos. Si quisieramos utilizar estas resoluciones en este tipo de driver deberiamos usar salidas PWM en nuestro arduino y la libreria se empieza a complicar y por mi experiencia es que con el Arduino le falta "velocidad" de procesador para lograr un movimiento suave y uniforme. Hay otros drivers que ya vienen preparados y con unos simples puentes se puede cambiar la resolución. </span></div>
<div class="gmail_default" style="text-align: justify;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="gmail_default" style="text-align: justify;">
<br /></div>
</div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com0tag:blogger.com,1999:blog-2463929896161090560.post-6128996973800742882014-01-29T01:42:00.000-08:002014-01-29T01:42:19.562-08:00Pruebas con motores Paso a paso (I)<div style="text-align: justify;">
Todo y que este blog no va encaminado a ser un tutorial de arduino , he considerado , que al hablar de robots panorámicos creados mediante este hardware y ante las varias dudas que se generan, he preferido crear algun post para que la gente que quiera experimentar pueda beneficiarse de mis experiencias.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para ello, y antes de nada explicar que un motor paso a paso (stepper) viene a ser como un motor de corriente continua pero en vez de con un solo bobinado tiene dos. Estos estan distribuidos alternativamente de tal manera que provoca que se generen varios sub-bobinados o electroimanes con lo que conseguimos un "mini-control" de posicionamiento del mismo , obviamente si no hay un encoder no podemos asegurar realmente la posición del mismo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la <a href="http://es.wikipedia.org/wiki/Motor_paso_a_paso" target="_blank">WikiPedia</a> podeis encontrar muchos artículos sobre el funcionamiento del mismo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cuando adquirimos un motor Paso a Paso (de aqui en adelante PAP), hay varias características técnicas a tener en cuenta, tales como el voltaje de funcionamiento, el numero de pulsos por vuelta (yo utilizo normalmente unos que tienen una resolución de 1.8º por impulso, es decir 200 impulsos cada vuelta entera) y también otra característica es la fuerza del mismo (torque) que será para que nos entendamos la fuerza máxima que nos puede ejercer el motor.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como que tampoco es cuestión de escribir un máster, yo os comentaré los que utilizo, unos NEMA-17 que funcionan a 5VDC. Dentro del mundo "NEMA" existen varios tamaños 11,14,17,23... y varios voltajes. Hay que tener cuidado a la hora de adquirirlos pues almenos en los que yo tengo en ninguno de ellos viene identificado ninguna de esas tres características.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-X8XqxP7b5CI/UujJSDDOvvI/AAAAAAAAAr4/Db58qzITN_g/s1600/pasoapaso.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-X8XqxP7b5CI/UujJSDDOvvI/AAAAAAAAAr4/Db58qzITN_g/s1600/pasoapaso.jpg" height="200" width="200" /></a><a href="http://1.bp.blogspot.com/-T3en1teakkU/UujH2IWQtHI/AAAAAAAAArk/8MoWjubIBFg/s1600/nema-17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-T3en1teakkU/UujH2IWQtHI/AAAAAAAAArk/8MoWjubIBFg/s1600/nema-17.jpg" height="214" width="320" /></a></div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Al tratarse de pequeñas bobinas que ejercen la función de electroimanes la tensión de alimentación no debería ser critica, y siguiendo la lógica de un electroimán: a más voltaje, más fuerza = más torque, pero eso tampoco quiere decir que le podamos aplicar 25kV a los bobinados por lo que deberemos leer su datasheet, de lo contrario dañariamos el aislamiento del bobinado y acabaría este en la chatarra despues de las señales de humo. Si no lo tenemos es tan fácil como pedirle las características al comprador o buscar desde Google: "datasheet Nema-17" por ejemplo.</div>
<div style="text-align: justify;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Cxg6TD_l5Fs/UujJhYZeW6I/AAAAAAAAAsA/Azr3AUfl-Qs/s1600/despiece.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Cxg6TD_l5Fs/UujJhYZeW6I/AAAAAAAAAsA/Azr3AUfl-Qs/s1600/despiece.jpg" height="240" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
En todo motor PAP hay como mínimo 4 cables que corresponden a 2 bobinados, y lo que necesitamos es ir generando una serie de impulsos para accionar el motor. Los impulsos los generaremos mediante un hardware tipo Arduino (el ChipKit también funciona) pero este sólo es capaz de generar los impulsos pero no da "potencia" al motor, por lo que necesitaremos un driver.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Llegados a este punto tenemos tres elementos necesarios para mover el motor:</div>
<div style="text-align: justify;">
* Generador de pulsos (Arduino)</div>
<div style="text-align: justify;">
* Conversor de pulsos a potencia entregada (driver)</div>
<div style="text-align: justify;">
* Motor PAP</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* Empezamos por el motor:</div>
<div style="text-align: justify;">
Hay que determinar los dos bobinados entre los 4 cables: Podemos usar o bién un multimetro (también llamado vulgarmente "téster") en modo resistencia o hacerlo sin él. Si lo hacemos con un tester deberemos elejir un cable y conectar hacia el téster, mientras que con la otra punta del tester buscaremos entre los otros 3 cables cual es el que da algo de resistencia, y sólo puede ser uno. Ya tenemos un bobinado! Ahora nos quedan dos cables sueltos que deberían corresponder al otro bobinado: miraremos si realmente también tenemos la misma resistencia entre ellos. En mi caso un bobinado corresponde a los cables rojo-azul y el otro al negro-verde.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Otra manera de hacerlo es sin el multímetro. Cogemos un cable al azar y lo unimos por la punta conductora con otro cable mientras intentamos girar el motor: Si cuando unimos los cables el motor se frena quiere decir que ambos cables pertenecen al mismo bobeando, sino se frena el motor hay que ir probando con el resto hasta conseguir determinar los dos bobinados.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Hay motores que tienen 6 cables, en este caso es lo mismo que en el de 4 cables pero los dos restantes van conectados a mediobobinado por lo que al menos con los drivers que yo utilizo no sirven de nada. Para determinar cuales cables deberiamos utilizar hay que usar la opción del múltimetro , pero con la diferencia que nos encontraremos con dos conductores que marquen resistencia, uno de ellos será la mitad del otro, es decir si entre un cable y otro marca un ohmio y con otro marca dos, deberemos elejir los cables que marcan dos ohmios y prescindir de los cables de bobinado intermedio.</div>
<div style="text-align: justify;">
<br />
<br /></div>
<div style="text-align: justify;">
También hay con 5 cables, que viene a ser como el de 6 pero con la diferencia que tienen los dos cables que vienen del mediobobinado unidos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_BIWMeL6Kck/UujJIxvJS4I/AAAAAAAAArw/yXdD_Rc7q5E/s1600/bobinats.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_BIWMeL6Kck/UujJIxvJS4I/AAAAAAAAArw/yXdD_Rc7q5E/s1600/bobinats.jpg" height="135" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como curiosidad: Si unimos los 4 conductores entre si el motor se quedará aun más frenado. Según me comentó Esteve si cogiéramos una llave dinamométrica e intentáramos hacer mover el eje del motor podríamos encontrar cual es el torque real de nuestro motor.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
* El driver:</div>
<div style="text-align: justify;">
La función del driver es de convertir los pulsos provenientes en nuestro caso del Arduino a tensiones con más "potencia".</div>
<div style="text-align: justify;">
En principio el Arduino genera pulsos de unos 5VDC pero sin intensidad, por lo que si aplicaramos directamente el motor (siempre y cuando funcionara este a 5 voltios!) no se movería.<br />
<br /></div>
<div style="text-align: justify;">
El driver viene a ser como unos transistores que activan / desactivan la potencia que va hacia los motores. Es como si fueran los interruptores de la luz activados remotamente. Por estos "interruptores" pasa la energia necesaria para hacer mover el motor aunque este funcione a 24voltios.<br />
<br /></div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-caafNfpKvQg/UujGd1zXawI/AAAAAAAAArc/FSuSTrnbqBY/s1600/l298n_esquema.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-caafNfpKvQg/UujGd1zXawI/AAAAAAAAArc/FSuSTrnbqBY/s1600/l298n_esquema.gif" height="165" width="400" /></a></div>
<br /></div>
<div style="text-align: justify;">
Cuando arduino genera un impulso, acaba excitando el transistor mediante un voltaje de 5 voltios y este transistor cierra el contacto eléctrico dejando pasar por su contacto el voltaje necesario para mover el motor.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
La gracia de todo esto es que en realidad son 4 circuitos y que tiene una alta velocidad de conmutación: para que nos entendamos si un motor es capaz de girar una vuelta por segundo en un motor de 200 iml/vuelta significa que ha conmutado doscientas veces los transistores en un segundo. Obviamente esto es imposible hacerlo mediante interruptores o relés pues el tiempo de accionamiento lo superaría con creces.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Yo hasta el momento he estado utilizando drivers con el semiconductor <a href="http://www.datasheetcatalog.com/datasheets_pdf/L/2/9/8/L298N.shtml" target="_blank">L298N</a> . Si buscais por eBay encontrareis varios modelos ya a punto de conectar y probar. Obviamente el L298N es el componente principal pero también son de gran importancia los diodos y el resto de componentes.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El tipo de driver que utilizo tiene varias conexiones y jumps , pero no tienen ningún misterio a la hora de conectarlo.</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-tfo7V8nn2e8/UujGGhjcGkI/AAAAAAAAArU/5-yUygfkIys/s1600/l298n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-tfo7V8nn2e8/UujGGhjcGkI/AAAAAAAAArU/5-yUygfkIys/s1600/l298n.jpg" height="254" width="320" /></a></div>
<br /></div>
<div style="text-align: justify;">
Mirandolo de frente y con el disipador de aluminio en la parte superior encontramos unos borneros dobles en los laterales . A cada uno de estos borneros deberemos conectar los cables de los dos bobinados que encontremos anteriormente. Tanto dá si lo conectamos en el lado derecho como en el izquierdo y tanto da si cruzamos los cables entre si (del mismo par) a la hora de conectarlos a cada uno de los dos borneros, lo único e importante es que cada par de borneros corresponda con cada par de bobinados. El único problema es que más tarde nos gire en un sentido y nosotros queriamos que girara en otro, pero seria tan fácil como cambiarlo desde software (en el programa de arduino), o bien intercambiando los cables que van desde arduino al driver (por ejemplo intercambiando a la entrada del driver o a la salida del arduino -sólo en un sitio- los cables rosa y gris o el otro par) o bien intercambiando los cables de un bobinado a la salida del driver (es decir, en nuestro caso intercambiando el cable rojo por el azul o el verde por el negro).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Luego tenemos 4 cables que salen de las salidas del Arduino, en este caso a las salidas 8, 9, 10 y 11 que deberemos conectarlas en el mismo orden a IN1, IN2, IN3 e IN4 en el driver. Como siempre, es importante mantener el orden, como mínimo respetar los pares (la salida 8 y 9 puede ir a IN1 e IN2, tanto da el orden o si se cruzan entre ellos. También pueden ir a IN3 e IN4 , pero lo que NO debemos hacer es conectarlo a IN2 e IN3, porque luego es cuando hay que modificar el orden en las instrucciones de arduino y si tenemos algun problema la "lógica" se complica sin ninguna necesidad).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora tenemos 2 jumps encargados de habilitar un bobinado o el otro marcados como ENA y ENB (de enable A y enable B - traducido al español habilitar salidas A, habilitar salidas B-) . Estos jumps deberan quedar siempre conectados haciendo el respectivo puente.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Finalmente nos queda un último triple bornero, al cual viene serigrafiado como VCC, GND y 5V. Aqui deberemos conectar los 5V a la salida 5V del arduino, y los bornes VCC y GND hacia la fuente de alimentación necesaria para alimentar el motor (en mi caso también es de 5voltios, pero NO se debe cojer del pin del Arduino pues este no tiene energia suficiente para alimentar motores!). En este caso el VCC es el borne positivo mientras que el GND el negativo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Finalmente uniremos las masas, el GND ground, o el negativo entre el driver y el arduino para mantenerlo todo a la misma diferencia de potencial de referencia.</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0YCKl7QqRz0/UujMb7NoEiI/AAAAAAAAAsM/McESzuw0PX0/s1600/esquema+basico.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-0YCKl7QqRz0/UujMb7NoEiI/AAAAAAAAAsM/McESzuw0PX0/s1600/esquema+basico.jpg" height="332" width="400" /></a></div>
</div>
<div style="text-align: justify;">
Ya lo tenemos casi todo conectado! Aprovecho para deciros que NUNCA alimenteis a la vez el Arduino por el jack y por el USB a la vez...yo almenos no me fio ni un pelo...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora nos tocaria cargar el programa en el Arduino. Es muy simple:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<b>#include <Stepper.h> // incluimos la Stepper library</b><br />
<b>#define motorStepsX 200 // Pasos motor X 360º/1.8º</b><br />
<b>Stepper myStepperX(motorStepsX, 8, 9, 10, 11); </b><br />
<b>void setup() {</b><br />
<b>myStepperX.setSpeed(20); // ajuste velocidad del motor</b><br />
<b>}</b><br />
<b>void loop(){</b><br />
<b>myStepperX.step(motorStepsX*5); </b><br />
<b>delay(1500);</b><br />
<b>myStepperX.step(-motorStepsX*5); </b><br />
<b>delay(1500);</b><br />
<div>
<br /></div>
<div>
Este programa lo unico que hace es dar 5 vueltas en un sentido, se espera 1,5 segundos y da 5 vueltas en sentido contrario. Vuelve a provocar una pausa de 1.5 segundos y asi repetidamente.</div>
<div>
<br /></div>
<div>
Por defecto el numero de impulsos por vuelta está definido con un valor de 200 impulsos vuelta, si teneis un motor de 64 impulsos vuelta deberéis cambiar el valor 200 por 64 en la linea <b>#define motorStepsX 200 </b></div>
<div>
<b><br /></b></div>
<div>
Si quereis utilizar otros pins, debeis cambiar en la linea <b>Stepper myStepperX(motorStepsX, 8, 9, 10, 11); </b> los números 8, 9, 10 y 11 por los pins que querais usar (preferiblemente en orden!)</div>
<div>
<br /></div>
<div>
Si quereis modificar la velocidad, hay que cambiar el valor <b>20</b> por otro en la linea <b>myStepperX.setSpeed(20);</b></div>
<div>
<br /></div>
<div>
Si quereis modificar el numero de vueltas que gira, hay que cambiar el valor <b>5</b> en las lineas <b>myStepperX.step(motorStepsX*5);</b> y <b>myStepperX.step(-motorStepsX*5);</b> Si os fijais la unica diferencia entre ambas es el signo negativo que es lo que nos hace invertir el sentido del motor.</div>
<div>
<br /></div>
<div>
Con todo esto ya tendremos el test motor , si funciona: enhorabuena, de lo contrario hay que ir descartando cosas:</div>
<div>
<br /></div>
<div>
* ¿ la tensión de alimentación de los motores es correcta ?</div>
<div>
* ¿ están unidas las masas GND entre arduino y el driver ?</div>
<div>
* ¿ están bien conectados los motores ? ¿ Corresponden cada par de bobinados a cada una de las salidas del driver?</div>
<div>
* ¿ están habilitadas las dos salidas del driver (Enable A y Enable B) ?</div>
<div>
* ¿ está el interruptor SW1 del driver en modo funcionamiento ? (este interruptor no está en todos los drivers!)</div>
<div>
* ¿ está conectada la señal +5 Voltios entre arduino y driver?</div>
<div>
* ¿ Has cargado el programa ? (deberias ver debajo del software un mensaje de Transferencia completa)</div>
<div>
<br /></div>
<div>
Si todas las respuestas es que SI, hay que pasar al plan B: testeo funcionamiento, pero este post lo dejamos para otro día.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div id="wrchoverdiv" style="display: none;">
<div id="wrccontainer">
<div id="wrcheader">
<div id="wrctitle">
WebRep</div>
</div>
<div class="wrchorizontal">
</div>
<div id="wrccurrentvote">
currentVote</div>
<div class="wrchorizontal">
</div>
<div id="wrcrating">
</div>
<div id="wrcratingtext">
noRating</div>
<div id="wrcweighttext">
noWeight</div>
<div id="wrcflags">
<div class="wrcicon" id="wrcicon_shopping">
</div>
<div class="wrcicon" id="wrcicon_social">
</div>
<div class="wrcicon" id="wrcicon_news">
</div>
<div class="wrcicon" id="wrcicon_it">
</div>
<div class="wrcicon" id="wrcicon_corporate">
</div>
<div class="wrcicon" id="wrcicon_pornography">
</div>
<div class="wrcicon" id="wrcicon_violence">
</div>
<div class="wrcicon" id="wrcicon_gambling">
</div>
<div class="wrcicon" id="wrcicon_drugs">
</div>
<div class="wrcicon" id="wrcicon_illegal">
</div>
</div>
<div class="wrchorizontal">
</div>
</div>
</div>
XavierGPhttp://www.blogger.com/profile/14407112190994290391noreply@blogger.com2