Problema con un motor paso a paso

Hola a todos, soy nuevo en el foro, estoy haciendo mis primeros pinitos con Arduino, y estoy desarrollando un pequeño proyecto para hacer una plancheta ecuatorial motorizada.

He comprado un motor paso a paso para ello, en concreto este: http://www.ebay.es/itm/121426747151?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Por si no funciona el link en concreto lo llaman así: CNC Nema17 Hybrid Stepper Motor DC 5V 2-Phase 2.3kg.cm 4-Lead 1.8 Degree 3D, y sus características según el vendedor son estas:

working voltage :DC 5V

phase resistance: 3 Ω

current : 1A

stepping angle: 1.8°

weight: 230g

Lo estoy controlando con un Arduino Uno R3 y con un Easy Driver v4.4, alimentado con una pila de 9V.

Le pongo el siguiente sketch de prueba:

#include <Stepper.h>
#define STEPS 200
Stepper stepper(STEPS, 8, 9);

void setup()
{
stepper.setSpeed(60);
}

void loop()
{
stepper.step(200);
delay(1000);
stepper.step(-200);
delay(1000);
}

Con esto entendía que debía dar una vuelta completa hacia un sentido y otra hacia el otro, al ser un motor de pasos de 1,8º, y a una velocidad de 60 vueltas por minuto.

Pues la cuestión es que no lo hace así. El motor hace movimiento hacia un lado y hacia otro pero apenas se mueve unos grados hacia cada lado, no más de 5 o 10 grados. Para que dé una vuelta completa le tengo que poner un parámetro stepper.step(6000) aproximadamente, y con el setSpeed(60) la da muy lenta, prácticamente a un par de vueltas por minuto o algo más…

Vamos, que no entiendo nada. ¿Qué estoy haciendo mal? ¿Alguien puede ayudarme? En este proyecto es precisa la velocidad de giro (debo fijarla a 1 vuelta completa y exacta por minuto)

Muchas gracias por vuestra ayuda.

Un saludo y felices fiestas.

Que estas haciendo mal??? pues lee bien tus características y luego ve con que lo alimentas

current : 1A

Lo alimento con una batería de 9V

Ahí esta tu problema.

Surbyte, gracias por tu respuesta. Debo ser muy torpe, lo siento, no lo has explicado para mi nivel.

Creo que tiene que ver con la alimentación y creo intuir por dónde vas. En la página del EasyDriver pone esto:

Each EasyDriver can drive up to about 750mA per phase of a bi-polar stepper motor. It defaults to 8 step microstepping mode. (So if your motor is 200 full steps per revolution, you would get 1600 steps/rev using EasyDriver.)

Jugando con los distintos valores, y fijando los siguientes parámetros:

define STEPS 800

stepper.setSpeed(8);

stepper.step(6400);

Consigo algo parecido a lo que necesito, es decir que dé una vuelta completa casi en un minuto (unos 57 segundos).

Insisto que soy capaz de mover el motor muy rápido adelante y atrás cambiando parámetros, pero no soy capaz de interpretar éstos para afinar el resultado.

De todas formas voy a buscar una fuente de alimentación distinta con un amperaje mayor, aunque necesito que sea lo más portátil posible...

Gracias de nuevo.

Pedón por el emoticono, stepper.setSpeed ( 8 );
No soy capaz de editar el mensaje…

Saludos Lo que surbyte quiere decir que tu driver solo soporta 750mA como tu mismo lo indicaste. Y tu motor es de 1A así que te faltan 250mA tren matemática directa. Pero tu manejador debería ser de al menos 1.5A para poder manejar los picos.

Además de eso, usas una pila de 9V, ni por asomo entrega 1A. Considera una bateria de gel de 12VDC 7Ah

Buff, gracias por vuestra paciencia. No creo que sea problema del easydriver, ya que los movimientos no son erráticos y cambiando parámetros lo hago girar a vuelta cada 57 segundos exactos. Sí he cambiado la fuente de alimentación y le he conectado una toma de red de 12V y 1A. Funciona igual pero sin sobrecalentamientos.

La cuestión es que da la impresión de que sea un motor de 100 pasos (800 micropasos que transforma el easydriver - creo haberlo entendido así en las instrucciones del easydriver). Para hacerlo girar una vuelta entera en un tiempo parecido al que yo quiero tiene que ser con los parámetros que he comentado antes:

define STEPS 800

stepper.setSpeed( 8 );

stepper.step(6400);

Y entonces gira a 57 segundos por vuelta (he añadido al sketch un cálculo de tiempo y es lo que me da, coincidiendo con vuelta exacta).

Quiero ajustar más el giro, tres segundos es un error que no puedo asumir pero si cambio el número de pasos da más de una vuelta, no puedo ajustar la velocidad al tener que ser un entero, y no sé si debo/puedo cambiar STEPS 800...

En fin, creo que no lo estoy haciendo bien....

fotoflipao: Buff, gracias por vuestra paciencia. No creo que sea problema del easydriver, ya que los movimientos no son erráticos y cambiando parámetros lo hago girar a vuelta cada 57 segundos exactos. Sí he cambiado la fuente de alimentación y le he conectado una toma de red de 12V y 1A. Funciona igual pero sin sobrecalentamientos.

La cuestión es que da la impresión de que sea un motor de 100 pasos (800 micropasos que transforma el easydriver - creo haberlo entendido así en las instrucciones del easydriver). Para hacerlo girar una vuelta entera en un tiempo parecido al que yo quiero tiene que ser con los parámetros que he comentado antes:

define STEPS 800

stepper.setSpeed( 8 );

stepper.step(6400);

Y entonces gira a 57 segundos por vuelta (he añadido al sketch un cálculo de tiempo y es lo que me da, coincidiendo con vuelta exacta).

Quiero ajustar más el giro, tres segundos es un error que no puedo asumir pero si cambio el número de pasos da más de una vuelta, no puedo ajustar la velocidad al tener que ser un entero, y no sé si debo/puedo cambiar STEPS 800...

En fin, creo que no lo estoy haciendo bien....

mira el datasheet para saber como conectar los pines ms1 y ms2 para poner los micropasos en modo full y asi cada impulso correspondera con un movimiento del motor de 1.8º y con 200 steps deberia dar toda la vuelta.