Proyecto hexapodo + matrices led como ojos


Hola, buenas estoy trabajando es la construcción de un hexapodo con 12 servos controlados por una arduino mega, pero después de terminarlo y conectar todo me topo con un problema que es que los servos no se mueven solo vibran. tengo los servos alimentados con una fuente externa de 6v y 2,5 amperios. Buscando por internet he visto a mucha gente con el mismo problema y quería saber si seria posible hacer algún circuito de potencia que me permita usar esa batería para alimentarlo.
Saludos y muchas gracias.

¿Cómo le mandas la señal a cada servo? Creo que ahí está la clave, para ver que voltaje les está llegando y con cuanta corriente.

PD: No se si será el caso, pero fijate que acá, este dice que está usando 2A y apenas puede controlar 8 servos simultáneos y se levanta, sólo si lo ayuda con la mano

http://letsmakerobots.com/node/27020

Hay en la foto los servos no están conectados a nada esa foto fue la que hice el dia que lo acabe de montar. Los servos los tengo conectados a corriente externa y una arduino mega controlandolos pero aun teniéndolos así conectados solo funcionan bien 4 servos simultáneamente a pleno rendimiento.

Buenas noches:

Para separar/estabilizar tensiones te recomiendo esto:

Radio Control Planes, Drones, Cars, FPV, Quadcopters and more - Hobbyking.
Tengo un hexapodo(a ver si pongo un post) y despues de usar el estabilizador hubo una gran mejora. En mi caso para los servos he utilizado una controladora que me permite tener al arduino mas desahogado para atender sensores y demas.

Saludos

Hola DeividMaxx. Creo que tu problema está en la alimentacion de servos. Yo de placas arduino ando en pañales pero de servos tengo alguna experiencia puesto que llevo tiempo liado con el aeromodelismo. Tienes varias opciones para solventarlo. Una de ellas, es como ya te han expuesto aqui es alimentar los servos mediante ese regulador de voltaje, pero te aconsejo que no pases toda la corriente por arduino, porque el consumo te va a quemar la placa. Yo personalmente optaria por alimentar los servos por un lado y la placa por otro, es decir, mandarle directamente de 4'5 a 6v a los servos (mira las especificaciones tecnicas de los mismos, pero practicamente todos trabajan dentro de este rango) y por otro lado a la placa arduino. De esta forma evitas sobreintensidades. Si piensas pedir ese regulador de corriente a hobbyking hy tienes cargador de baterias de polimero de litio, piensa en pedir una bateria de LIPO de 7'2 voltios de TURNIGY, que salen muy bien de precio y funcionan cojonudas. Si no tienes ese cargador, opta por baterias de metal hidruro.

Cualquier consulta al respecto estoy a tu entera disposición.

Muchas gracias. He estado mirando lo del estabilizador y la verdad nunca he comprado por hobbyking ademas de que es un poco caro ya que quiero reducir un poco el presupuesto porque llevo ya bastante gastado. He estado mirando por ebay, que suelo comprar mucho por hay y he estado viendo algunos que dan 3a como máximo 5 bastante mas baratos pero creo que llegara muy justo o no sera suficiente. Se me había ocurrido poner o dos juntos para el total de los 12 servos o irme a por uno de 6a, no se como hacer la verdad:
El de 6a:
http://www.ebay.es/itm/HENGE-6A-2-6S-Input-Switch-Mode-UBEC-/140927444629?pt=US_Radio_Control_Control_Line&hash=item20cfee2695#ht_2548wt_952

El de 3a max 5a:
http://www.ebay.es/itm/Hobbywing-3A-UBEC-5V-6V-max-5A-Lowest-RF-Noise-BEC-S-/120753508902?pt=US_Radio_Control_Control_Line&hash=item1c1d785226#ht_2788wt_952

Sobre las baterías tengo un cargador tengo un ultramat 14 plus que me permite cargas las baterías de lipo pero lo que si tengo son muchas baterías de nimh y nicd ya que tengo un coche electrico. Pero si dan mejor resultado als de lipo poder puedo cargarlas.
Saludos

Una apción seria alimentar 6 servos por una lado y 6 por otro, pero ten cuidado con los reguladores de voltaje demasiado baratos. Hobbyking es muy malo en algunos articulos pero respecto baterias y material electronico funcionan genial. Yo te aconsejaria que si puedes hacer un esfuerzo economico lo hagas, asi te garantizas una corriente estable. Si observas con un osciloscopio las fluctuaciones de reguladores malos te quedarás sorprendido. Respecto de las lipo, podrias aprovechar las hidruro que ya tienes y ahorrar en costes.

Muchas gracias por vuestra ayuda, sois geniales. Ya lo he pedido, ahora solo me queda que me llegue y ponerme a programar jaja. Ademas le voy a hacer una ojos con dos matrices leds, ya pondré fotos y os iré comentando como va. Saludos.

Yo te pediría un favor a ti, ya compre tres servos para empezar una pata, y ando pensando en hacer uno también. Podrias ir subiendo datos, programa, hardware y demás, en la medida que tu quieras.
Yo parto de cero pero tengo experiencia en programar sobre todo PICS y en hardware.
Lo que puedas pasar te lo agradecermos todos.
Un saludo y suerte

Perdón por tardar tanto en responder, pero con tantos exámenes y con selectividad a la vuelta de la esquina no he tenido mucho tiempo para hacer casi nada, cuando tenga tiempo y avance algo ya veré lo que subo.
Saludos

Al final pude sacar un poco de tiempo y avanzar un poco con el hexapodo acondicionando los cables y terminando los ojos.




Buenas,

Llevo un tiempo ya trabajando en el hexapodo y decidí ponerme con los ojos, que son dos matrices de 5 filas y 9 columnas. Y me he topado con el problema de que no consigo mostrar la forma de una pupila. He utilizado dos registros de desplazamiento. En las 5 primeras salidas del 1 74hc595 he conectado las 5 filas y en las restantes parte de las columnas. El resto de de columnas las he conectado a otra 74hc595 que esta conectado en cascada con el primero.

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

int counter = 0;
int LEDs[5][9] = {
  {0,0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0,0}
};

int ojocentrado[5][9] = {
  {0,0,0,0,1,1,1,0,0},
  {0,0,0,1,1,1,1,0,0},
  {0,0,1,1,0,1,1,0,0},
  {0,0,1,1,1,1,0,0,0},
  {0,0,1,1,1,0,0,0,0}
};

int ojoderecha[5][9] = {
  {0,0,0,1,1,1,0,0,0},
  {0,0,1,1,1,1,0,0,0},
  {0,1,1,0,1,1,0,0,0},
  {0,1,1,1,1,0,0,0,0},
  {0,1,1,1,0,0,0,0,0}
};

void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop()
{
  if (counter < 50) {
    lightLED(ojocentrado);
  }
  if (counter > 50) {
    lightLED(ojoderecha);
  }
  if (counter > 100) {
    counter = 0;
  }
  counter++;
}

void lightLED(int tempLED[5][9]) {
  byte columnbitsToSend = 0;
  byte rowbitsToSend = 0;
  
  int x = 0;
  int y = 0;
  for (x = 0; x < 9; x++) {
    columnbitsToSend = 0;
    rowbitsToSend = 0;
    
    
    for (y = 0; y < 5; y++) {
      if (tempLED[x][y] == 1) {
        bitWrite(rowbitsToSend, y, HIGH);
      }
    }
    
    digitalWrite(latchPin, LOW);
    bitWrite(columnbitsToSend, x, HIGH);
    shiftOut(dataPin, clockPin, MSBFIRST, columnbitsToSend);
    shiftOut(dataPin, clockPin, MSBFIRST, rowbitsToSend);
    digitalWrite(latchPin, HIGH);
    delay(2);
  }
}

no consigo que me muestre nada y no lo entiendo. He mirado por un montón de sitios: en instructables, en algunos foros incluso de arduino, y nada no consigo crear un sketch que me funciona con mi matriz. SI alguien me puede ayudar muchas gracias de antemano.

También intente usar este otro sketch, para aprender como funciona, pero no tampoco consigo que me salga bien. En este creo que el problema es que las cuentas no las he hecho bien. El sketch se basa en encender un led luego el siguiente de cada fila y luego cuando llegue pasar a la siguiente linea y así todo el tiempo.

//pin connections- the #define tag will replace all instances of "latchPin" in your code with A1 (and so on)
#define latchPin A1
#define clockPin A0
#define dataPin A2

//looping variables
byte i;
byte j;

//storage variable
byte dataToSend;

void setup() {
  //set pins as output
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  
  for (i=0;i<5;i++){
    
    for (j=0;j<9;j++){
      
      //bit manipulation (more info at http://arduino.cc/en/Reference/Bitshift ,  http://arduino.cc/en/Reference/BitwiseXorNot , and http://arduino.cc/en/Reference/BitwiseAnd)
      dataToSend = (1 << (i+10)) | (255 & ~(1 << j));//preprare byte (series of 8 bits) to send to 74HC595
      //for example when i =2, j = 3,
      //dataToSend = (1 << 6) | (15 & ~(1 << 3));
      //dataToSend = 01000000 | (15 & ~(00001000));
      //dataToSend = 01000000 | (15 & 11110111);
      //dataToSend = 01000000 | (15 & 11110111);
      //dataToSend = 01000000 | 00000111;
      //dataToSend = 01000111;
      //the first four bits of dataToSend go to the four rows (anodes) of the LED matrix- only one is set high and the rest are set to ground
      //the last four bits of dataToSend go to the four columns (cathodes) of the LED matrix- only one is set to ground and the rest are high
      //this means that going through i = 0 to 3 and j = 0 to three with light up each led once
      
      // setlatch pin low so the LEDs don't change while sending in bits
      digitalWrite(latchPin, LOW);
      // shift out the bits of dataToSend to the 74HC595
      shiftOut(dataPin, clockPin, LSBFIRST, dataToSend);
      //set latch pin high- this sends data to outputs so the LEDs will light up
      digitalWrite(latchPin, HIGH);
      
      delay(500);//wait
    }
  }
  
}

¿Nadie puede saber porque me ocurre esto?