Motor pap y pololu a4988

Hola gente del foro , Actualmente estoy tratando de mover un motor Paso a paso con el driver Pololu a4988 y un Arduino Mega 2560.

Estos son los drivers para quien no los conozca :

Tengo varios motores sacados de viejas impresoras , Uno de ellos en un em 329 , de 48 pasos , que funciona segun su datasheet a 36 V y en la carcaza indica una resistencia de 12 ohms. Lo que da un aproximado de 3A.

El cableado al arduino es sencillo:
-la alimentacion del motor a una fuente de pc 12v
- la alimentación del driver al pin 5V del arduino
-a1,a2 y b1,b2, Conectados a las bobinas del motor
-Reset al pin 4 del arduino
-dirección a 5v
-Step a pin 2
-masas en común
-ms1,ms2,ms3 en LOW (es decir sin micropasos)

El driver esta ajustado para entregar aproximadamente 1.3A , y el motor se mueve (con un torque considerable) , el problema radica en que si lo hago dar por ejemplo 99 pasos , lo das bien , pero cuando quiero que de pocos pasos (por ejemplo 10 pasos) , lo que hace es dar 1 paso en dirección opuesta y los otros 9 en la direccion correcta. Ademas aveces cuando se le da la orden de ir dando de a 1 paso , la primera vez lo hace bien, la segunda tambien , pero ya a partir de aca no se mueve.

En conclusion , dandole una cantidad de pasos considerables todo OK . pero cuando se le pide que realize los pasos de a pocos , se pierden.

Segun tengo entendido puede exigirles a los pololus que entregen 1.7A calentandose pero nose si sera este el problema , ya que el motor tiene un torque considerable con tan solo 1.3A

Tambien probe variando la velocidad , y una velocidad en la cual no hacen ruido ni vibran demasiado es 30500 , aunque a 12500 tambien funcionan ok

int velocidad = 12500;

int pin_paso = 2;
int pin_direccion = 3;
int pin_reset = 4;

boolean direccion = false;
void setup()
{
Serial.begin(9600);
Serial.println("Conexion con Arduino OK ...");

pinMode(pin_direccion,OUTPUT);
pinMode(pin_paso,OUTPUT);
pinMode(pin_reset,OUTPUT);
digitalWrite(pin_reset,LOW);
}

void Realizarorden(int pasos , boolean direccionx,int velocidadx)
{
digitalWrite(pin_reset,HIGH);
digitalWrite(pin_direccion,direccionx);
for(int i=0; i <pasos;i++)
{
digitalWrite(pin_paso, HIGH); // This LOW to HIGH change is what creates the

digitalWrite(pin_paso, LOW); // al A4988 de avanzar una vez por cada pulso de energia.

delayMicroseconds(velocidadx);
}
Serial.println("-Listo");
digitalWrite(pin_reset,LOW);
}
void loop()
{
char comando[2]; // cadena de 3 letras
int bytes_recibidos =0; //variable ayudante

//recepción de datos serie
while(bytes_recibidos <3)
{
if(Serial.available() >0)
{
comando[bytes_recibidos++] = Serial.read();
delayMicroseconds(500);

}
}

Serial.print("Comando seteado a : ");Serial.println(comando);

if(comando[0] =='I' )
{
Serial.println("Direccion seteada a izquierda");
direccion = true;
}
else if(comando[0]=='D')
{
Serial.println("Direccion seteada a derecha");
direccion=false;
}

if(comando[0] =='F' )
{
Serial.print("Modo : Paso por paso : ");
int numero_de_pasos = (((comando[1] -'0')*10)+ (comando[2]-'0') );
Serial.println(numero_de_pasos);

Realizarorden(numero_de_pasos,direccion,velocidad);

}

}

Hola, yo también estoy tratando de mover el mismo motor EM-329. Sólo que yo lo voy a intentar con un L293D (punte H). Yo no he conseguido la datasheet del motor, pero me imaginé que trabajaba con 36Vdc. Yo no tengo una fuente de 36V, lo haz puesto a funcionar con menor voltaje tu motor?.