sábado, 18 de junio de 2016

Estabilizador de gopro barato


Empecemos por la lista de materiales:

  • Gimbal Walkera g 2d  (Lo tengo para uso en un dron)
  • Placa arduino  (tenía una placa clónica rondando por casa)
  • Batería Lipo de 3 celdas (Tengo varias y ésta en concreto la uso para dar energía al transmisor de vídeo del FPV del Dron)
  • 2 micropulsadores   (valor 1 €)
  • 1 microinterruptor (valor 0,60€)
  • Placa de aluminio de 4 mm espesor y 18 mm de largo (No me cobraron nada)
  • Tubo de PVC y 2 tapas de PVC (0,60 €)
  • Cables y microconectores (Los tenía por casa).
  • Pegamento, soldador y herramientas de corte.
  • Caja de cerillas (la tenía por casa)
Los materiales pueden variar según nuestro propio diseño. Concretamente la placa arduino que será usada para controlar el tilt del gimbal puede sustituirse por servo tester, que se pueden encontrar por muy poco dinero (5€ aproximadamente).

La idea de este proyecto es dar un doble uso al gimbal Walkera, es decir, sin perder la posibilidad de su uso inicial (como estabilizador de cámara en un dron) poderlo usar también como estabilizador de una cámara pero de forma manual.
El reto era que el gimbal pudiera desacoplarse del proyecto fácilmente para poderse usar también para su uso inicial.

Un esquema de la posición de las piezas sería:
Las piezas de la imagen son arduino en caja de cerillas, tapa caja de cerillas forrada, tubo de PVC con lámina de aluminio y 2 pulsadores y un interruptor insertados, tapas de PVC y batería lipo de 3 celdas



Esquema eléctrico:

Los pulsadores van a las entradas 11 y 12 y la señal que va a la controladora sale del puerto 3.
El código arduino necesario para controlar el servo correspondiente del gimbal es:

#include <Servo.h>

Servo myservo; 
int pos = 100;

void setup() 
  myservo.attach(3);
  myservo.write(100);
  delay(1000);
  pinMode(12, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
}


void loop() 
{
  if(digitalRead(12)==LOW && pos<=140)
  {
    pos++;
    myservo.write(pos);
    delay(150);
  }
  if(digitalRead(11)==LOW && pos>72)
  {
    pos--;
    myservo.write(pos);
    delay(150);
  }
}