PROBLEMA: Servomotor no gira

Buenas a todos! Mi problema es bastante sencillo de explicar pero por mas vueltas que le doy no consigo solucionarlo.Desde hace unos meses estoy montando un brazo robot que consiste en 5 servomotores controlados con 5 potenciometros a través de una placa Arduino UNO (Nada del otro mundo). El caso es que los servomotores que tenia no tienen suficiente fuerza para levantar el brazo asi que los he substituido por estos: JX PDI-6221MG (Más specs). Estos motores cuando los conecto al pin de 5V, esten o no con más servomotores, no giran ni con potenciometro ni con el comando Servo.write(Ang).

Los motores que tenia antes y funcionaban perfectamente con el código son los famosos MG90S y esos sí que giran cuando los conecto.

Aquí dejo el código que estoy usando y el diagrama de conexiones:

#include <Servo.h>

Servo ServoRB; 
Servo ServoB1;
Servo ServoB2;
Servo ServoRP;
Servo ServoP;

int pot0 = 0;
int pot1 = 1;
int pot2 = 2;
int pot3 = 3;
int pot4 = 4;

int val0;int val1;
int val2;
int val3;
int val4;

void setup() 
{
ServoRB.attach(13);
ServoB1.attach(12);
ServoB2.attach(8);
ServoRP.attach(7);
ServoP.attach(2);
}

void loop() 
{
val0 = analogRead(pot0); 
val0 = map(val0, 0 ,1023, 0, 180); 
ServoRB.write(val0); 
delay (20); 

val1 = analogRead(pot1); 
val1 = map(val1, 0 ,1023, 30, 95); 
ServoB1.write(val1);
delay(20);

val2 = analogRead(pot2); 
val2 = map(val2, 0 ,1023, 0, 180);
ServoB2.write(val2);
delay(20);

val3 = analogRead(pot3);
val3 = map(val3, 0 ,1023, 0, 180);
ServoRP.write(val3);
delay(20);

val4 = analogRead(pot4);
val4 = map(val4, 0 ,1023, 25, 150); 
ServoP.write(val4);

delay(20);
}

Sospecho que el problema pueda ser intentar alimentar el motor desde los 5V de la placa o quizás le falta intensidad al motor. He estado mucho rato información sobre esto y no he encontrado prácticamente nada.

Como lo mencionas lo mas probable es que la placa no sea capaz de suministrar la suficiente corriente, por que no haces la prueba alimentando los servos con una fuente extra, es una manera fácil y rápida de ubicar el problema, ¿no?.

@ArdyMyth
Muchas gracias a ambos por los consejos, esta tarde me pondré a hacer pruebas con lo del código(milis) y las fuentes de alimentación :slight_smile:

Por cierto, en el 4º sí que he tenido en cuenta ciertas partes del frame (val1 = map(val1, 0 ,1023, 30, 95); que es el valor de la pinza i en val4 = map(val4, 0 ,1023, 25, 150); que es el hombro del brazo, porque como bien dijiste chocaban con el frame xD

Aquí estan las especificaciones del motor en cuestion

He estado probando lo de la fuente de alimentacion externa y no tengo ni idea de como hacer para conectar los motores, los potenciometros y la arduino. Sabes de alguna página/video donde lo explique o algun diagrama de conexiones que se vea claro? Muchas gracias de antemano :slight_smile:

No has comprendido el consejo de @ArduMyth.
Usa la fuente externa para alimentar solo los motores.
El resto como esta con la fuente que ya tienes. Comparte GND entre ambas fuentes y todo debería funcionar sin problemas.

Acabo de conectar el motor con una fuente externa de 6V a 2A y gira, el problema es que lo hace de una forma muy irregular y apenas sin fuerza. A veces gira muy lento y otras veces normal, hasta que se le aplica un poco de fuerza en contra y se detiene. Algun consejo?

EDITO: Lo he estado probando un buen rato y solo falla cuando giro el potenciometro muy rápido.

Vale muchas gracias por la información :slight_smile: Está tarde me pongo a tope a ver que puedo hacer.