Problemas con PCA9685 y servos

Hola buenas, estoy montando un brazo robotico, controlado por un aeduino nano. El brazo usa 6 servomotores y decidi comprarme una placa Pca 9685. He montado todo y he cargado el programa, con un servomotor todo funciona bien, pero en cuantos conecto otro a la placa los dos giran hacia el mismo lado de repente y no responden hasta que desenchufo uno. He probado con otro programa y otros servos, y sigue pasado. A ver si alguno sabe por que pasa o como solucionarlo.

*Por cierto, la placa la he estado alimentado con un cable usb al ordenador hasta que consiga una fuente de alimentacion de 6v. No se si eso tendrá que ver pero he leido que algunos han tenido problemas con eso.
 
Hola buenas, estoy montando un brazo robotico, controlado por un aeduino nano. El brazo usa 6 servomotores y decidi comprarme una placa Pca 9685. He montado todo y he cargado el programa, con un servomotor todo funciona bien, pero en cuantos conecto otro a la placa los dos giran hacia el mismo lado de repente y no responden hasta que desenchufo uno. He probado con otro programa y otros servos, y sigue pasado. A ver si alguno sabe por que pasa o como solucionarlo.

*Por cierto, la placa la he estado alimentado con un cable usb al ordenador hasta que consiga una fuente de alimentacion de 6v. No se si eso tendrá que ver pero he leido que algunos han tenido problemas con eso.
Esa puede ser una excelente cauda de los inconvenientes.

NO es sano/bueno alimentar lógica y potencia desde la misma fuente.
 
El USB del PC entrega unos 200mA, mira a ver cuanto consumen tus servos.
Además raramente alcanza los 5V aunque esa sea su tensión nominal.
 
Todos cometen la misma torpeza, no LEEN!, es increible que en estos tiempos que tienen tanta información no hagan uso de ella. Mucho de nosotros que hoy damos repuestas crecimos en un mundo sin computadoras ni internet y obvio no había simuladores, hasta las protoboard eran caras, pero nada nos impidio aprendern echando mano a lo que había, a lo que se disponia, y ello implicaba leerse cuanta literatura pudieramos coseguir, que no era mucha, era muy difícil, y había que rogar que donde compramos tuvieran los manuales y rogar que nos permitieran sacar fotocopias, y cuando tenias ese manual nos gastabamos hasta el último ctvo fotocopiando todo lo que nos pudiera ser útil, obvio ese material estaba en inglés, si queríamos traducir había que comprar un diccionario y también comprar cuanta publicación se editara.
Hoy tienen todo ese material gratuito!!!!! tienen traductores en línea del idioma que sea, e incluso hoy hay ha disposicisión de cada mortal que se tome el trabajo de entarar a la web del fabricante un canal de feedback para asesoramiento y hasta forum, donde poder aclar dudas directo del fabricante!!!!! antes había que saber donde estaban las oficinas de los fabricantes y enviar una carta y esperar....

Entonces hoy cometer este tipo de salvajadas no tiene justificativo.
Hay miles de páginas dedicadas a arduino, en las cuales se indica lo conveniente de utiizar una fuente para la lógica y otra para los perifericos.
Por otro lado creer que un puerto usb es una fuente inagotable de energía es otr enorme torpeza por no buscar información que la hay y en abundancia.
Los motores suelen tene en su cuerpo voltaje y corriente de los mismos, pero como no LEEN!!! no saben que esa son valores nominales y máximos, pero si no se lee no se informa de que pasa cuando un servo es activado, hay picos de corriente, picos de tensión, que por tales motivos hay que poner diodos en los transistores que manejan sevos, motore, y bobinas en general y por el mismo motivo deben tener fuenes separadas.
Es preferible para los perifericos utilizar 12V o más que utilizar 5V.

Por otra parte, consultar sin poner un diagrama de lo que se ha echo y fotos del montaje, es creer que somos adivinos
 
Esa puede ser una excelente cauda de los inconvenientes.

NO es sano/bueno alimentar lógica y potencia desde la misma fuente.

Estoy siguiendo Este tutorial para el montaje, y aunque el programa no es el mismo con el programa que nuestra en esa pagina me pasa lo mismo. He probado a usar el cable usb pero esta vez enchufado a la red eléctrica con un transformador de 5V y 2.3A y sigue pasando.

Video del error
 
No se puede ver nada , pon diagrama y fotos
41-single-default.jpg

. . . . NO es sano/bueno alimentar lógica y potencia desde la misma fuente.
Intenta alimentar la lógica de control desde otra fuente de 5V distinta a la que alimenta la controladora de los servos, o inserta entre ambas placas un filtro π
 
Última edición:
IMG_20181022_181946.jpgIMG_20181022_181911.jpgIMG_20181022_181736.jpg
41-single-default.jpg


Intenta alimentar la lógica de control desde otra fuente de 5V distinta a la que alimenta la controladora de los servos, o inserta entre ambas placas un filtro π

He probado a alimentar el arduino desde el ordenador y la placa Pca con un usb al enchufe, y con usb a un powerbank de 5v 2.3A pero sigue pasando
 
Última edición:
Cuanto consume cada servo? Te has leido la hoja de datos?(seguro que no)
Ese CI esta diseñado para el manjo de LED's con una salida de 25mA máximos y vos le estas poniendo una carga inductiva!!!!!, no esta diseñado para servos es un PWM para LED's
 
Cuanto consume cada servo? Te has leido la hoja de datos?(seguro que no)
Ese CI esta diseñado para el manjo de LED's con una salida de 25mA máximos y vos le estas poniendo una carga inductiva!!!!!, no esta diseñado para servos es un PWM para LED's

Para eso esta la alimentacion externa de los servos, venden esta placa para el controlado de servomotores, se supone que con la libreria si que se puede no?

*Los servos no traian hojas con especificaciones ni ningun papel
 
Para eso esta la alimentacion externa de los servos, venden esta placa para el controlado de servomotores, se supone que con la libreria si que se puede no?

*Los servos no traian hojas con especificaciones ni ningun papel


Acabo de probar usando solo el arduino, y conectando los servos directamente a las salidas pwm de arduino, usando la librería original. Me sigue pasando, os pongo el código por si es fallo de eso.

*Es un poco chapuza, que estoy empezando con la programación y no tengo mucho tiempo, pero creo que esta bien.

Código:
#include <Servo.h>
#include <PS2X_lib.h>

PS2X ps2x;
int error = 0;
byte vibrate = 0;
int lx2;
int ly2;
int rx2;
int ry2;
byte Antebrazo = 20;
byte Codo = 20;
byte Hombro = 60;
byte Rotacion = 20;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
void setup()
{

  Serial.begin(9600);
  error = ps2x.config_gamepad(8,12,A0,13,true,true);  //(clock, command, attention, data)

  if(error == 0)
  {
    Serial.println("Controlador encontrado y configurado");
  }
  else
  {
    Serial.println("Error, mando no encontrado");
  }
servo1.attach(11);
servo2.attach(10);
servo3.attach(9);
  servo4.attach(6);
}




void loop()
{
  byte ry;
  byte rx;
  byte ly;
  byte lx;
  int temp;


  ps2x.read_gamepad(false,vibrate);
  vibrate = ps2x.Analog(PSAB_BLUE);




  if(ps2x.Button(PSB_BLUE))
  {
    Serial.println("Presionaste X: ");
  }
  if(ps2x.Button(PSB_GREEN))
  {
    Serial.println("Presionaste triangulo: ");
  }
  if(ps2x.Button(PSB_L1))
  {
    Serial.println("Presionaste L1: ");
  }

 
  ps2x.read_gamepad(false,vibrate);
  ly = ps2x.Analog(PSS_LY), DEC;
  lx = ps2x.Analog(PSS_LX), DEC;
  ry = ps2x.Analog(PSS_RY), DEC;
  rx = ps2x.Analog(PSS_RX), DEC;


lx2 = map(lx, 0, 255, -4, 4);
ly2 = map(ly, 0, 255, 4, -4);
rx2 = map(rx, 0, 255, -4, 4);
ry2 = map(ry, 0, 255, 4, -4);

Hombro = Hombro + ly2;
Rotacion = Rotacion + lx2;
Codo = Codo + ry2;
Antebrazo = Antebrazo + rx2;
Rotacion = constrain(Rotacion, 20, 160);
Hombro = constrain(Hombro, 20, 160);
Codo = constrain(Codo, 20, 160);
Antebrazo = constrain(Antebrazo, 20, 160);

Serial.println(Hombro);
Serial.println(Rotacion);
Serial.println(Codo);
Serial.println(Antebrazo);
servo1.write(Hombro);
servo2.write(Rotacion);
servo3.write(Codo);
servo4.write(Antebrazo);
  delay(50);
}
 
Última edición:
De todas formas no ha dicho cuanto consumen los servo y como lo conectaste al arduino? pon un esquema o foto, se te estan pasando varias cosas y me parece que repites los mismos errores.
Es necesario ver como conectaste el servo al arduino
Para eso esta la alimentacion externa de los servos, venden esta placa para el controlado de servomotores, se supone que con la libreria si que se puede no?

*Los servos no traian hojas con especificaciones ni ningun papel
En electrónica se trabaja con hoja de datso, no ha ciegas para eso estan los datasheet, y en el dice claramente que es un pwm para LED, e ninguna parte dice que sea para servos, el tema que es evidente no tienes idea de electrónica cuando se conmutan cargas inductivas, como la bobina de un servo los transistores deben llevar diodos para evitar que se dañen, cuando se alimenta el arduino y la carga inductiva con la misma fuente los pulsos generado pueden resetearlo, producir fallos en el funcionamiento y daños irreversible ya que son pulsos de un voltaje que el micro no puede soportar.
Tenes que leer y entender que es la electrónica, no es ninguna pavada y lleva tiempo aprenderla bien
De que marca son los servos, su consumo se puede medir con un tester, seguro que eso tampoco lo sabes..... sin saber cunto consumen como conectas las cosas se pueden dañar
 
Última edición:
Atrás
Arriba