lunes, 19 de diciembre de 2011

Segundas pruebas (mecánica-2)

Después de varias semanas sin sacar la cabeza por aquí , hoy me he decidido postear en vez de cacharrear.

Eje vertical > Acabé montando una reducción intermedia con engranajes de nylon+resina. Ahora entre otras cosas he ganado en precisión, suavidad y reducción del ruido.
Para ello tuve que ensamblar los dos engranajes uno dentro del otro (uno de 58z y el otro de 18z)  y fijarlos con loctite entre ellos para forzar que se movieran a la vez . Seguimos con engranajes de paso 1mm.  Ahora tendría u reducción final de 32,2 vueltas en el eje motor para recibir una en el eje de rotación de la cámara. El porque de esta reducción tan “imprecisa” fue un tema mecánico de los diseñadores de los engranajes = el sobresaliente del piñón de 18z encajaba justo en el interior del de 58z, eso lo decidí en la propia tienda al mostrarme el vendedor todo el catalogo con las cotas respectivas. También pensé que como el motor va por impulsos y tiene que haber un solape entre capturas no seria de vital importancia que la reducción final fuera un número entero.

NOTA > Ya sé que queda desplazado el engranaje del motor respecto al engranaje atacado, es de fácil resolver pero tampoco es crítico pues hay una superficie de contacto de unos 10 mm.

Hice las primeras pruebas ….lo siento no hay video! Finalmente debería dar 25 impulsos al pequeño motor para obtener una inclinación de 1.47º (el resto hasta 1.8º es el solape) . Una medida que en principio seria justa al provocar un solape de casi un 30% entre capturas. No os podéis imaginar que es un zoom de 500 mm (equivalente a 750) dentro de un piso…se va de foco 3 pueblos!

Luego empecé con el eje horizontal , en principio más fácil….pero JA!!! Aprovechando un perfil de aluminio que corría por el trastero de un anterior invento lo usé para utilizarlo de bancada al que posteriormente le monté unas patas para poder apoyarlo correctamente en el suelo.

Luego una maderita de DM o MD (prensado de resinas) que me gustan porque aguantan mucho peso y como que cada vez pesaba mas el invento y yo no quería flexiones. Monté unos rodamientos bolas que son tan fáciles de montar que sólo hay que agujerear…visita al Leroy Merlin a por una broca de madera de 22mm y en un pis pas la madera hecha un colador con 8 rodamientos que evitarían fricciones y sobreconsumos del motor.


En el centro de la madera hay un casquillo casero de una especie de Nylon con un agujero de 12 mm justo para que pasara un tornillo de M12 (el piñón tenia un agujero interior de 12 y mediante 2 tuercas a fuerza bruta hacen que este no se mueva, lo mismo que en otro eje –es un sistema guarro pero uno no tiene un taller en casa!-). Finalmente en el otro extremo y más abajo un rodamiento “loco” es el encargado de acabar de centrar todo. Y digo loco porque era la única manera de que no me crujiera continuamente la madera (aun no entiendo dónde está el error, creo que está en la rosca un pelín torcida de la pletina superior.También se cómo arreglarlo pero me da un poco de miedo cargarme esa rosca y tener que readaptar todo este movimiento a otro métrico).


Después de otras pruebas decidí que el paso seria de 13 impulsos para mover los 2.34º (el solape seria hasta los 2.7º). Aquí al tener solo una reducción de 1:10 va bastante rápido y me estoy pensando en montar un reductor intermedio pero me falta espacio o bien hacer un juego de piñones…ya veremos!

¿ Mejor una afotillo del conjunto  no ?


Lo siguiente será aprovechando las vacaciones de navidad tengo previsto de instalar un radiador+ventilador para refrigerar los drivers de potencia de los motores y también fabricarme una fuente de alimentación para reducir el voltaje a algo menos de 6 voltios (tensión en que los motores parece que trabajan más finos). En principio y para hacerlo portable tenia previsto usar una batería de coche baratilla.

También tengo unos problemas con la adaptación de mi keypad casero con el programa ….es curioso hay cosas que ahora no entiende el Arduino ….

Por cierto FELIZ NAVIDAD !!

viernes, 2 de diciembre de 2011

Keypad para Arduino

Estrujando la cabeza se me ocurrió de aprovechar las entradas análogicas del Arduino, y en vez de conectar un potenciometro de 10 kOhms, pensé "porque no monto divisores de tensión fijos", asi mediante el uso de resistencias podré "multiplexar" las entradas analogicas de una manera un poco "guarras" (a menos a la vista! cabe recordar que estoy limitado en conocimientos de electrónica, pero esto es de electricidad...jeje!).

AlexRVD me dijo "¿Por que no te curras un keypad?" y  a partir de aqui empezó todo. Primero localizar un keypad de desguace (en las chatarrerias/deixalleries siempre se encuentran cosas interesantes).

Una vez abierto.... sorpresaaaaaaaaaa! aparte de la botonera habia una placa electrónica que me sobrava, luego tuve que empezar a cortar pistas con un cutter para asegurarme de evitar señales cruzadas.
Y a partir de aqui todo es manos a la obra: soldador y un puñado de resistencias.


En la versión beta monté divisores de tensión que luego me daban lecturas "falsas" cuando la entrada respecto a positivo era inferior a 5 kOhms por lo que decidí que la resistencia siempre serian a partir de 5 kOhms hacia arriba a excepción de una combinación en que no uso ninguna resistencia (derivando todo a GND).

Os dejo un ejemplo gráfico de como es, luego sólo hay que múltiplicar el circuito por tantas veces como queramos (en mi caso x 4 veces). Otra opción seria montar más divisores de tensión intermedios pero en mi caso preferia asegurar las lecturas.
Aproximadamente los valores que utilizé fueron R1 y R8 = 10 kOhms, R2 = 6k8 , R3 = 3k3, R4 = 8k , R5 = 2k2, R6 = 6k2 y R7= 4k2.

Por si no os acordais de los colores de las resistencias, aqui teneis una tabla:
Luego ya todo es programación pura y dura. Yo lo hice a base de leer los datos del AnalogRead(x) y luego mediante instrucciones if provocar que ejecute una acción , por ejemplo Serial.print(tecla).

Y aqui la programación. Los valores que hay dentro de las comparativas if son susceptibles que se tengan de ir modificando o depurando, pero eso ya es cosa de que cada uno se lo optimize a su gusto.

El delay(200) es importante si no queremos que nuestro teclado se convierta en una metralleta de datos.

/*
  Keypad para Arduino
(G) CopyGuay by XavierGP 2011

 */
int sensorValue0 = 0;  // variable to store the value coming from the sensor
int sensorValue1 = 0;  // variable to store the value coming from the sensor
int sensorValue2 = 0;  // variable to store the value coming from the sensor
int sensorValue3 = 0;  // variable to store the value coming from the sensor
void setup() {
  
 Serial.begin(9600);
}
void loop() {
  // read the value from the sensor:
 
  sensorValue0 = analogRead(A0);   
  sensorValue1 = analogRead(A1);
  sensorValue2 = analogRead(A2);
  sensorValue3 = analogRead(A3);
 
 
   if(sensorValue0<2){
  Serial.println("Esc");
  }
   if(sensorValue0>329 && sensorValue0<334){
  Serial.println("Del");
  }
   if(sensorValue0>393 && sensorValue0<397){
  Serial.println("7");
  }
    if(sensorValue0>182 && sensorValue0<185){
  Serial.println("4");
  }
  if(sensorValue0>1020){
  Serial.println("1");
  }
 
 
 
   if(sensorValue1<2){
  Serial.println("Ctrl");
  }
   if(sensorValue1>330 && sensorValue1<333){
  Serial.println("/");
  }
    if(sensorValue1>395 && sensorValue1<399){
  Serial.println("8");
  }
    if(sensorValue1>182 && sensorValue1<185){
  Serial.println("5");
  }
  if(sensorValue1>1020){
  Serial.println("2");
  }
 
 
   if(sensorValue2<2){
  Serial.println("Alt");
  }
   if(sensorValue2>332 && sensorValue2<335){
  Serial.println("*");
  }
    if(sensorValue2>398 && sensorValue2<401){
  Serial.println("9");
  }
    if(sensorValue2>179 && sensorValue2<182){
  Serial.println("6");
  }
    if(sensorValue2>1020){
  Serial.println("3");
  }
 
 
  if(sensorValue3<2){
  Serial.println("<-");
  }
   if(sensorValue3>328 && sensorValue3<331){
  Serial.println("-");
  }
    if(sensorValue3>393 && sensorValue3<396){
  Serial.println("+");
  }
    if(sensorValue3>178 && sensorValue3<182){
  Serial.println("Enter");
  }
    if(sensorValue3>1020){
  Serial.println("0");
  }
 
  delay(200);         
              
}


domingo, 20 de noviembre de 2011

Primeras pruebas del eje vertical

Una vez preparado el programa (falta depurarlo) y la electrónica (falta mejorar y hacerlo un sistema totalmente "transportable" con el uso de baterías y convertidores DC-DC), empezó la fase de realizar el mecanismo mecánico.

Tal y como dije, me llevaría su tiempo, pues hay que ir colectando material de desguace y buscar material por tiendas y a ratos ir lo diseñando. Lo que se refiere a la parte de diseño creo tenerlo muy claro como hacerlo pero siempre van surgiendo sorpresas.
Este fin de semana me he podido dedicar un poco y tras montar la estructura del eje vertical con su reducción 1:10 mediante piñones he podido probarlo como he podido, pues mi casa no es un taller mecánico y siempre faltan cosas por lo que habrá que esperar a mañana que sea laborable para poder pisar las tiendas y encontrar elementos que me hacen falta.

En principio el motor nema-17 transmite su fuerza a un piñón de 12 dientes (paso 1mm.) y este va "enlazado" al de 120 dientes (por cierto, pesa un huevo, deberé de quitarle peso). Aquí va al eje que me efectúa la rotación de mi "balancín" gracias al uso de unos rodamientos. Toda la parte mecánica de rodamientos, piñones la he encontrado a un buen precio en Indicom.

Una vez tenia todo esto montado quise probar si tenia fuerza, por lo que antes de montar la cámara probé con dos tetabricks de leche de 1.5 ltrs. y comprobé que se movía el invento...bien!

Luego la ansia me dio por montar la cámara y también tenia fuerza suficiente pero aquí aparecen los problemas:

* Cuando quiero inclinar mucho tanto sea hacia arriba como hacia abajo parece que al motor le falta un empujoncito. También he visto que según que posición el piñón me roza con la estructura.
* Se escucha mucho la piñonería metálica, resuena todo pero no sé si es porque los tornillos que fijan la estructura son muy largos y me chocan con el propio perfil.
* El paso es aun grande y con un zoom de 500 mm (equivalente a 750 mm) no puedo lograr que se solapen las imagenes.

Creo que estos tres problemas los puedo resolver de un tirón (casi) montando otra reducción intermedia, esta vez tengo previsto montar unos piñones de Delrin (tipo Nylon) así acabaré quitando el ruido porque esto lo va a absorber. Al mismo tiempo ganaré fuerza , unas 3.6 veces más por lo que no debería tener problemas en los extremos y ganaré más precisión. Ya de paso he calculado la reducción para que se me adapte al paso del motor (200 pulsos por vuelta) así me será más fácil tener controlado los ángulos.

Os dejo un vídeo , pero la cosa aun tiene de cambiar mucho. Esta quincena que tengo tardes libres intentaré avanzar...

sábado, 5 de noviembre de 2011

Programando tus fotos en el tiempo con The Photographer's Ephemeris

El otro dia, navegando por internet descubrí el The Photographer's Ephemeris, se trata de un programa de descarga gratis (almenos bajo windows que es el que analizé) para varios sistemas operativos (incluido Android, pero a simple vista pagando) en inglés (todo no puede ser en esta vida) que nos puede ser util a la hora de planificar nuestras fotos. Obviamente no es tan inteligente como para predecir una tormenta eléctrica, pero si para informarnos de la trayectoria del sol y de la luna.

Una de las ventajas de conocer los horarios y trayectorias tanto del sol como de la luna a partir de una localización en concreto (usando los propios mapas de Google), nos puede servir para mejorar la planificación a la hora de conocer si realmente podremos ver la luna aparecer por un lugar en concreto y con que inclinación. Asi también conoceremos en que hora se encuentra la luna en pleno apogeo para por ejemplo realizar un reflejo en un lago.

Hay muchos programas capaces de decirnos la hora de los crepúsculos, amaneceres pero raramente encontramos la información tan amena como la de este software.

Podeis descargarlo directamente desde su web http://photoephemeris.com/

viernes, 4 de noviembre de 2011

Robot panoramico...vamos prosperando

    Una vez montada la shield de potencia de los motores y tras familiarizarme con el lenguaje Arduino, me faltaba unos pulsadores para mover el motor manualmente, pues la intención era que se pudiera definir el angulo de la panoramica sin tener de entrar en programación, para evitar de pasear el portatil junto la camara mas otros "trastos" para realizar una panoramica. No tenia muy claro si utilizar un mando remoto inhalambrico o bién con pulsadores, finalmente me decanté por lo tradicional:
En la misma placa donde hay los pulsadores en cruz , he dispuesto de dos botones más que sirven para validar los extremos opuestos de la captura, luego el programa se autoajusta al número de filas y columnas necesarios
Ahora tocaba programar para "probar" si realmente me podia salir con la mia, y aquí está (cuidadín falta depurarlo y corregir errores, pero funciona):

/*
 Photo Robot 2x L298N + Nema 17
 language: Wiring/Arduino

 This program drives two bipolar stepper motor.
 The motor is attached to digital pins 8+9 & 10+12 of the Arduino.
 The pthoto-shots signals it's actuated by relay -Pin 13-
 Movement manual motor by array switchs

 Created 26 Oct. 2011

 by XavierGP

 */

// define the pins used


#include <Stepper.h>        // incluimos la Stepper library

#define motorStepsX 200     // Pasos motor X 360º/1.8º
#define motorStepsY 200     // Pasos motor Y 360º/1.8º                     
#define motorPinX1 10       // Pin OUT 1 control motor X
#define motorPinX2 12       // Pin OUT 2 control motor X
#define enablePin 11        // Pin OUT 11 habilita tensión en motores
#define motorPinY1 8        // Pin OUT 1 control motor Y
#define motorPinY2 9        // Pin OUT 2 control motor Y


int pasoX=10;                // º entre capturas eje X DÓNDE 10 SON 18º
int pasoY=10;                // º entre capturas eje Y
int xact=0;                 // º actual eje X
int yact=0;                 // º actual eje Y
int xmax=0;                 // º posición máxima eje X
int xmin=0;                 // º posición mínima eje X
int ymax=0;                 // º posición máxima eje Y
int ymin=0;                 // º posición mínima eje Y
int xtemp=0;
int ytemp=0;
int definecornerA=0;
int definecornerB=0;
int nshot=0;
int filasX;                 // número de filas eje X >> (xmax-xmin)/pasoX
int filasXX=0;
int columnasY;              // número de columnas eje Y    >> (ymax-ymin)/pasoY
int columnasYY=0;
int previsionShot;          // prevision número shots   filasX * columnasY

// initialize of the Stepper library:
Stepper myStepperX(motorStepsX, motorPinX1,motorPinX2); // libreria motor X
Stepper myStepperY(motorStepsY, motorPinY1,motorPinY2); // libreria motor Y

void setup() {

 pinMode(2, INPUT);        // Input digital 2 =  confirmación corner A 
 pinMode(3, INPUT);        // Input digital 3 =  confirmación corner B
 pinMode(4, INPUT);        // Input digital 4 =  -Y
 pinMode(5, INPUT);        // Input digital 5 =  +Y
 pinMode(6, INPUT);        // Input digital 6 =  +X
 pinMode(7, INPUT);        // Input digital 7 =  -X
 pinMode(13, OUTPUT);      // Output digital 13 = shot
 myStepperX.setSpeed(30); // set the motor X speed at 100 RPMS:
 myStepperY.setSpeed(30); // set the motor Y speed at 100 RPMS:
 
 pinMode(enablePin, OUTPUT);
 digitalWrite(enablePin, HIGH);  // habilita tensión en motores

 Serial.begin(9600);           // Initialize the Serial port:
 Serial.println("Posicione mediante cursores el extremo de origen y valide con CORNER A. Este pasara a ser el punto 0,0");
 Serial.println("A continuacion posicione mediante el otro extremo y valide con CORNER B");
}

void loop(){

  if(definecornerA==0 || definecornerB==0)   //  definimos máximos y mínimos de X e Y
 {
  int sensorValue0 = digitalRead(6);   // Input digital 2 =  +X
  int sensorValue1 = digitalRead(7);   // Input digital 3 =  -X
  int sensorValue2 = digitalRead(5);   // Input digital 4 =  -Y
  int sensorValue3 = digitalRead(4);   // Input digital 5 =  +Y
  int sensorValue4 = digitalRead(2);   // Input digital 6 =  confirmación corner A
  int sensorValue5 = digitalRead(3);   // Input digital 7 =  confirmación corner B
   
  if(sensorValue0==HIGH)
  {
    xact=xact+pasoX;
    Serial.print(xact*1.8);
    Serial.print("  ,  ");
    Serial.println(yact*1.8);
  }
 
   if(sensorValue1==HIGH)
  {
    xact=xact-pasoX;
    Serial.print(xact*1.8);
    Serial.print("  ,  "); 
    Serial.println(yact*1.8);
  }
   if(sensorValue3==HIGH)
  {
    yact=yact-pasoY;
    Serial.print(xact*1.8);
    Serial.print("  ,  ");
    Serial.println(yact*1.8);
  }
   if(sensorValue2==HIGH)
  {
    yact=yact+pasoY;
    Serial.print(xact*1.8);
    Serial.print("  ,  ");
    Serial.println(yact*1.8);
  }
   if(definecornerA!=1){
   if(sensorValue4==HIGH)
  {
    xmin=xact;
    ymin=yact;
    definecornerA=1;
    Serial.println("Esquina A -inferior izquierda- CONFIRMADA ! Punto de inicio");
  }
   }
   if(definecornerB!=1 && definecornerA==1){
   if(sensorValue5==HIGH)
  {
    xmax=xact;
    ymax=yact;
    definecornerB=1;
    Serial.println("Esquina B -superior derecha- CONFIRMADA !");
  }
   }
  myStepperX.step(xact-xtemp);
  xtemp=xact;
  myStepperY.step(yact-ytemp);
  ytemp=yact;
  delay(200);
 }
 else{

  xact=-xmin;
  yact=-ymin;
  filasX=((xmax-xmin)/pasoX)+1;
  filasXX=filasX;
  columnasY=((ymax-ymin)/pasoY)+1;
  columnasYY=columnasY;
  previsionShot=filasX*columnasY;
  myStepperX.step(-(filasX-1)*pasoX);
  myStepperY.step(-(columnasY-1)*pasoY);   
  Serial.println("Panorama data:");
  Serial.println("n SHOT :  Filas X , Columna Y , grados X, grados Y");
  Serial.print(previsionShot);
  Serial.print("      ,    ");
  Serial.print(filasX);
  Serial.print("     ,   ");
  Serial.print(columnasY);
  Serial.print("     ,   ");
  Serial.print((-xmin+xmax)*1.8);
  Serial.print("  ,   ");
  Serial.println((-ymin+ymax)*1.8);
  Serial.println("Home position! Pulse Corner A  para empezar");
 
  int sensorValue4 = digitalRead(2);   // Input digital 9 =  confirmación corner A
  while(digitalRead(2)==LOW)
  {
    }
  Serial.println("Start!");
  Serial.println("SHOT numero:  Filas X , Columna Y ,posicion X, posición Y");
 
xmax=xmax-xmin;
ymax=ymax-ymin;
xmin=0;
ymin=0;
xact=0;
yact=0;
 
  for(int i=0; i<(columnasY); (i++))        
  {
   delay(1000);
    for(int j=0; j<filasX; (j++))
   {
     digitalWrite(13, HIGH);
     delay(500);
     digitalWrite(13, LOW);
     nshot=nshot++;
   
   Serial.print(nshot);
   Serial.print("   :   ");
   Serial.print(j+1);
   Serial.print("   ,   ");
   Serial.print(i+1);
   Serial.print("   ,   ");
   Serial.print(xact*1.8);
   Serial.print("   ,   ");
   Serial.println(yact*1.8);
   
     delay(1500);
    
     if(j!=(filasX+1)){  ///   if(j!=(filasX-1*sentidoX)-1)
     myStepperX.step(pasoX);
     xact=xact+(pasoX);
     } 
     delay(1500);
    }
  
   myStepperX.step((-filasXX)*pasoX);
   xact=0;
   if(i!=columnasY-1){         
   myStepperY.step(pasoY);
   }                                
   yact=yact+(pasoY);
   delay(1000);
    }
    Serial.println("Panoramica completa!");
  myStepperY.step((-columnasYY+1)*pasoY);
  delay(1000000);
 }
}


Los que dominais la programación posiblemente lo reduciriais a la mitad....pero eso es cuestion de minimizarlo (ya se hará!)


Tuve varios problemas (dependiendo de si la panoramica iba de izquierda a derechas o al revés) provocandome duros "quebraderos de cabeza" con los signos < > por lo que al final decidí que sólo seria viable en sentido horario al igual que se mueve el sol (de izquierda a derecha y de abajo a arriba).


Luego me di cuenta que los L298N se calentaban un huevo (si , casi para poder hacer huevos fritos) por lo que temporalmente le monté un radiador casero con una platina de aluminio. Ahora tengo pendiente montarle un ventilador forzado. Aparte del factor temperatura me di cuenta porque cada vez tenia que incrementar más el voltaje de los motores Nema 17 (incluso alimentandolos a 6 voltios cuando lo necesario son 2.8 v 2A).

De momento parece que tiene la intención de funcionar, todo y desconocer si los motores seran capaces de mover los 3 kg....

Os dejo un par de capturas de pantalla de como se ve desde el PC:
Y finalmente unos videos en funcionamiento (mañana intentaré grabar uno mejor):



Ahora tocará la parte que para mi es más complicada: la mecánica por lo que tengo previsto tomarmela con muucha calma, pero sin pausa . A cacharrear  !!!

domingo, 30 de octubre de 2011

Mi gran proyecto (Robot panorámico)



Después de conocer el entorno Arduino y sus posibilidades me he decidido a montarme un robot para realizar fotos panorámicas al estilo del GigaPan, pero obviamente con los conocimientos técnicos que tengo por lo que ….a ver si lo consigo!

La idea es que todo sea capaz de mover una D300s unida a un Sigma 150-500 , un conjunto que ronda los 3 kg de peso sin contar motores, soportes….

Hay varias partes a definir:
·      
      * Parte electrónica (que no es mi fuerte ni mucho menos) pero me veo capacitado para lograrlo en plan googlear+copiar+pegar. La idea es utilizando el Arduino como parte “lógica” ya que al ser programable y disponer de entradas y salidas suficientes es una opción barata. En principio y siguiendo las recomendaciones de Joan Martinez  (@engeeknyer) utilizaré dos motores Paso a Paso (unos Nema 17) para mover hacia los laterales y arriba/abajo.

Dado que estos motores PAP funcionan por impulsos, hay que utilizar unos drivers que sean capaz de convertir estos impulsos “sin  potencia” a potencia suficiente para estos motores (unos 2 Amperios aprox).

Googleando encontré un blog muy interesante: Txapuzas  (mira! Como me define mi padre por lo que me siento identificado), aquí encontré un driver de potencia con unos L298N. En mi caso al utilizar dos motores me fabriqué una shield compuesta por dos IC’s.
Después de varios quebraderos de cabeza por culpa de los diodos, conseguí que esta shield funcionara. En el blog lo explica claro, pero en las tiendas de electrónica de mi ciudad a parte de ser caras siempre van con “contratipos” de dudosa aplicación por lo que al final me bajé a Diotronic (Barcelona) y me vendieron justo lo que necesitaba.

·     *  Parte programación > Aquí si que consiste en autoaprendizaje a base de googlear o tirar de los ejemplos que hay en el misma aplicación de Arduino. En principio no parece complicado, sólo hay que tener bién estructurada la idea y pa’lante! Como que vengo de la época de los ordenadores Amstrad CPC6128 con su Basic y su Logo , luego un poco de PLC’s  cuando estudié FP-II y más tarde programación básica en C+ en la universidad …pués es más de lo mismo : un bit es un bit y llámalo como quieras que es como explicarle a un inglés como se realiza una tortilla de patata: el lenguaje es diferente pero el resultado final el mismo.

·       Parte mecánica > Buff….aqui aun no lo tengo del todo claro! El problema principal es localizar todos los materiales necesarios y mecanizarlo. Como que aun desconozco si los motores tendrán fuerza suficiente quizás me veré obligado a montar reductores …esta es la parte del proyecto que me conllevará más tiempo y quebraderos de cabeza pero …no hay que rendirse!

A dia de hoy tengo los motores Nema 17, el Arduino y la shield 2x L298N montada y funcionando, os dejo el siguiente video para empezar a abrir las mentes. Tiene mala definición pero intentaré que los siguientes sean mejores.


domingo, 23 de octubre de 2011

Arduino y Photoduino


Tal y como se definen en su web: “Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.”


En otras palabras: se trata de una placa electrónica realizada con código abierto y con un pequeño microprocesador al cual mediante unas entradas (sensores, interruptores, contactos de señal,…)  y salidas podemos crearnos un pequeño autómata en casa. Todo ello programándose con un lenguaje similar al Basic o C+  de una manera sencilla.
Tiene infinidad de shields compatibles (módulos RF, GPS, Ethernet, control de motores, sensores de temperatura, etc…) todo para los aficionados amantes de experimentar.

La conexión hacia nuestro PC/Mac via USB y un software descargable desde la própia web.

De momento tengo un clon (made in China via eBay) y por menos de 25 euros ya estoy jugando en casa. Más info en http://arduino.cc/es/

Una de las aplicaciones-shields que se han inventado es el Photoduino http://www.photoduino.com/es Se trata de una Shield (placa de extensión) que unida al Arduino nos puede ayudar mucho en el tema de fotografía pues logras realizar desde time-lapses totalmente despreocupándote del disparador.

Creo que viendo algunas imágenes de ejemplos de su propia web podréis opinar

Yo hace dias que intento conocer el precio y la disponibilidad pero de momento me toca esperar.


¿ Os animais a experimentar?

domingo, 16 de octubre de 2011

Ya no teneis excusas para no hacer panorámicas


También se podría titular Panorámicas automáticas

Googleando me he encontrado el siguiente artilugio…un “robot” programable capaz de emular los movimientos tanto en plano vertical como horizontal para realizar fotografías panorámicas sin sufrir mucho. El producto originalmente vendido por GigapanSystem  es importado para España por GigaPixeles 

Este es el modelo "grande" pensado para cámaras del tipo réflex, aunque también tienen otros modelos más pequeños pensados para cámaras compactas.
 Con este invento nos olvidaremos de hacer virguerias con el trípode( al menos con el mío, un Hama sencillo con poca precisión y estabilidad). Ahora será más fácil conseguir solapes seguros y no olvidarnos una toma intermedia porque estamos pensando en otras cosas.

Si domináis el inglés, aquí tenéis o un video resumen , en youtube podéis encontrar muchos más y ver los Epic pro en funcionamiento.

Lástima de su precio, pues aunque parece interesante tampoco somos el coche del streetview y no estamos todo el dia haciendo panorámicas.

miércoles, 12 de octubre de 2011

Mi primera cámara digital


Finales de noviembre del 1999, llevaba pocos días trabajando en una multinacional japonesa dedicada al mundo de la automoción cuando vi y toqué  por primera vez una cámara fotográfica digital , fue una Olympus C1400L.


A día de hoy, casi 12 años después aun la tenemos…para hacer bonito pues ya no la usamos. Con sus 1.4 Mpx hacia unas fotos realmente bonitas, su menú muy limitado, zoom x3 y una capacidad de memoria creo de 4 u 8 MB pero claro…por aquel entonces hacíamos fotos a 0.2 Mpx y eso ya era una gozada.

Meses más tarde decidí a comprarme lo que seria mi primera cámara digital para uso personal : Una Olympus camedia C2020Zoom que a dia de hoy la tengo “tirada” junto con otros cacharros.


Por aquel entonces pagué lo que seria el equivalente a unos 1.100 Euros, una tarjeta de memoria de 16 MB valía 80 euros, y un año más tarde te daban 32 MB por ese mismo precio.
Cuando tenia que descargar las fotos por el puerto serie me podía morir con la tasa de transferencia…pero valía la pena: tenia fotografías en formato digital, podía borrarlas si no me gustaban, ya sólo revelaba las fotos que me gustaban…bienvenido a la era digital!

Con esta cámara empecé a hacer fotos panorámicas y creo que me enganché! Pues esta ya disponía de una opción en que básicamente te creaba unas líneas de referencia y te bloqueaba la exposición, luego el software Olympus Camedia Master hacia el resto , pero nada que ver con los programas actuales.

Pero un dia en Tenerife (septiembre 2005) , casi llega su muerte en la cima del Teide, de golpe y porrazo me empezó a salir fotos muy granuladas (el ISO era correcto y prueba de ello eran los datos EXIF) pero yo en su pequeña pantalla de 1.8” no observaba nada anormal, también me eliminó muchas fotos de la SmartMedia….estuve a punto de tirarla de un octavo piso hacia el suelo…pero me retraí y a partir de ese día pasó al cajón de los recuerdos para pasarme al mundo Reflex…





sábado, 8 de octubre de 2011

¿ Cómo hacer una foto panorámica ?

Mejor dicho.... ¿ cómo hago las fotos panorámicas ?

Una vez en el sitio S a la hora H del dia D  y teniendo claro que vamos a hacer la foto en modo manual ya estamos a punto para empezar. ¿Tenemos la cámara en mano ?  Si…pues adelante! , de lo contrario ve a buscarla porque ya empiezas mal…ya de paso verifica que tenga batería y tarjeta de memoria
Consejo> Si utilizas trípode, mejor para ti! Y si es de noche, luego ya es más que obligado. Hacerlas a pulso tiene su riesgo pero es cuestión de práctica.
Seleccionamos el balance de blancos (nublado, soleado….). La opción Weber Auto puede ser peligrosa y hacernos alguna jugarreta irreparable, pero esto también nos pasa cuando hacemos simples capturas por lo que yo soy de definirlo manualmente. Otra opción seria disparar en RAW y luego en casa elegir la iluminación….a gusto del consumidor!

También deberemos fijar el ISO (en principio cuanto más bajo mejor)

Ponemos la cámara en modo prioridad a la APERTURA .

Haremos un “barrido” de la escena a fotografiar intentando seguir una línea horizontal cuando nos movamos, de esta manera podremos encontrar definir que focal utilizar.  Recomiendo que siempre es mejor no ajustarse mucho, pues si hacemos la foto a pulso luego el software ya se encargará de ajustarse y cortarnos la foto sin nuestro permiso (siempre se pueden clonar pixeles, pero...no es lo mismo). Esto con trípode casi no pasa. En cambio si lo hacemos con trípode quizás tengamos que repetir esta operación de barrido hasta que logremos tener pefectamente alineado el trípode respecto al suelo. Por mi experiencia nunca suelo hacer panorámicas por debajo de los 25 mm pues luego a la hora de “pegarlas” se acaba deformando mucho la imagen final. Ya tenemos definida la FOCAL …bien! Estamos progresando.



Ahora vamos a definir la apertura del objetivo. Normalmente cuanto más rinden es en diafragmas intermedios. Al tratarse de una panorámica debemos evitar abrir mucho el diafragma de lo contrario si hay diferentes distancias entre los elementos conseguiríamos una panorámica medio desenfocada y eso no creo que nos interese al menos cuando se trata de paisajes. Yo personalmente intento tirar con el diafragma bastante cerrado por aquello de mayor profundidad de campo. Imaginemos que seleccionamos f16.

Sin salir del modo Prioridad a la Apertura, seleccionamos f16, y volvemos a hacer otro barrido y ahora nos fijaremos en el exposímetro para definir la velocidad necesaria (aquí hay que buscar un compromiso casi siempre, pero es lo que hay). Imaginemos que nos da de velocidad entre 1/250 y 1/640 (si en todo el barrido fuera una velocidad uniforme seria lo ideal pero esto es como un sueño). Aquí hay que hacer un compromiso….deberemos elegir una velocidad intermedia o la más ponderada (con tendencia a la mayoría) . Con estos resultados podriamos probar con una velocidad de 1/400. NOTA > Si hay mucha variación el resultado final puede ser que aparezcan zonas quemadas o subexpuestas....entonces mejor esperar otra hora para realizar nuestra pano.

Ahora seleccionamos en la cámara el modo MANUAL y seleccionamos f16 y la velocidad elegida 1/400.

Ponemos el objetivo en modo enfoque manual, buscamos el punto de enfoque ideal mediante el anillo del objetivo, luego lo bloqueamos con la pestaña que tenemos en el objetivo.

Ya tenemos todos los parámetros a punto, sólo queda pasar a la acción para hacer clicks!

Vamos a un extremo de la escena , disparamos para obtener la toma 1, luego hay que mover la cámara para realizar la siguiente captura teniendo en cuenta que hay que solaparse la imagen de las dos tomas al menos un 20 % (para asegurar el tiro) y así sucesivamente.

Muy bien ya sólo queda descargar las fotos en nuestro ordenador y jugar con el software adecuado ,yo utilizo el Panorama Maker 5 Pro de ArcSoft o mediante el plugin PhotoMerge de Photoshop CS5.
Finalmente obtendremos nuestro resultado :

¿ te animas a probar ?

jueves, 6 de octubre de 2011

No puede ser...tengo el sensor CMOS sucio!

¿Por qué a mi? Es lo primero que me pregunté tras visualizar algunas fotos de mis pasadas vacaciones por tierras vascas. Veo una cosa como un pajaro difuminado en la esquina superior izquierda de una foto, me miro la siguiente y no veo nada (porque en la esquina de esa foto era oscura al fotografiar un paisaje con poca claridad). Luego una panoramica compuesta de 4 fotos y sorpresa .... ese pájaro difuminado me aparece en todas....no puede ser!

Empiezo a mirar rapidamente un puñado de capturas en la que esa esquina este perfectamente visible (fotos con cielo basicamente) y me encuentro otra y otra y otra foto.....estan todas!

Algunos direis ¿pero que no visualizas las fotos? Pues si, pero siempre hay alguna mota de polvo o suciedad en el LCD de la pantalla de la camara de fotos por lo que en su momento no "caí", en cambio cuando las miraba en el iMac me escalofriaba (Por cierto hoy Steve Jobs nos ha dejado de la madre tierra, dos dias después de que se presentara el iPhone 4S , tal como dicen algunos ForSteve !)

En casa, pasadas las 10 de la noche (a mi me suena el despertador a las 5 pero cuando se me pone algo por medio del camino no paro) empiezo a hacer fotos a un fondo blanco con diferentes focales y con los dos objetivos y me aparece siempre en el mismo sitio esa "mota de polo" por lo que acabo descartanto suciedad en los objetivos y pasando el problema a la suciedad en el CMOS.

Levanto el cristal (después de leerme el manual - si no tengo la bateria a tope de carga , éste no se sube....-sin comentarios, pero más buena "lógica" ; hay que asegurarse que el espejito mágico no se nos baje a media operación, de lo contrario...que miedo!) y allí está...pero ¿es superman? ¿es una mota de polvo? ¿o un pelillo de mi mascota Issi ?

Resumen: Hay que quitarlo como sea ! Pero mejor esperarme al dia siguiente.

Por la tarde de nuevo, miro en Google y me encuentro de todo, entre ellos me gusta el método de la web de Sergio de la Torre pero buff...no tengo lo que necesito y las tiendas de fotografia de esta ciudad dejan mucho que desear. Buscando entre cajones encuentro la cuchilla de limpiar la vitro ¿no serás capaz ?


Tomo una decisión (posiblemente muy criticada) : soplo suavemente y que pase lo que Diós quiera....

Pues ha sido mi dia de la suerte: ya no tengo suciedad en el sensor! ya no tendré que clonar pixeles con potoxop.

Lástima que ya voy tarde para hechar la primitiva...