Motor paso a paso 5 hilos

Estoy intentando hacer funcionar un motor paso a paso de cinco hilos 12v. Un motor chino http://es.rs-online.com/mobile/p/motores-paso-a-paso/4198296/ podeis ver el datasheet http://docs-europe.electrocomponents.com/webdocs/0536/0900766b80536add.pdf más http://docs-europe.electrocomponents.com/webdocs/0112/0900766b8011263b.pdf. Con el siguiente codigo

const int motorPin1 = 8;   // Pin Orange
const int motorPin2 = 9;   // Pin Yellow
const int motorPin3 = 10;  // Pin Pink
const int motorPin4 = 11;  // Pin Blue
int delayTime = 250; // Delay que determina la velocidad de giro

void setup() {

   // Configuración de los PIN-es como salida digital
   pinMode(motorPin1, OUTPUT); 
   pinMode(motorPin2, OUTPUT);
   pinMode(motorPin3, OUTPUT);
   pinMode(motorPin4, OUTPUT);

   // Los pongo todos a Cero
   digitalWrite(motorPin1, LOW);
   digitalWrite(motorPin2, LOW);
   digitalWrite(motorPin3, LOW);
   digitalWrite(motorPin4, LOW);
   delay(delayTime);
}

void loop() {
  
  // Los pines se activan en secuencia
  digitalWrite(motorPin1, HIGH); // Primer paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  
  // Los pines se activan en secuencia
  digitalWrite(motorPin1, HIGH); // Segundo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW); // Tercer paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW); // Cuarto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH); 
  delay(delayTime); 
  
  digitalWrite(motorPin1, LOW); // Quinto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

  digitalWrite(motorPin1, LOW); // Sexto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

  digitalWrite(motorPin1, LOW); // Septimo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

  digitalWrite(motorPin1, HIGH); // Octavo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
}

El asunto esta que para moverlo uso un ULN2003A donde las entradas son pin arduino 8 = pata4 pin arduino 9 = pata3 pin arduino 10 = pata2 pin arduino 11 = pata1 masa analogina = pata8

Y las salidas son pata16 = cable azul Bobina motor 2 (2) pata15 = cable rosa Bobina motor 1 (1) pata14 = cable amarillo Bobina motor 2 (1) pata13 = cable naranja Bobina 1 (2)

y solo falta el cable rojo del motor esta conectado a 5v del arduino. Según las especificaciones tambien puede trabajar a 5v.

La duda claro esta en que estoy haciendo mal ?

No conectes NUNCA un motor directo al Arduino, lo vas freir por consumo!!!

Alimenta el motor con una fuente externa de 12v o 5v o la tension que necesites y una la masa al arduino....pero nunca alimentes NADA que tenga un consumo superior a 40 mA al Arduino o lo dejaras frito!!!

Si te soy franco también conecte una fuente de pilas de 6v (de un mecano) el positivo al motor y el negativo al gnd analógico de arduino. Pero tampoco funciono.

Podría usar una fuente en atx de un pc para alimentar el motor? Por el momento no lo he hecho porque no se cuanto amperaje entrega.. O por otro lado una fuente de un móvil que de 12v en dc?

Gracias por el toque de atención. Dado que lo he hecho he roto el arduino?

Hola miniduino El común de las bobinas deberás ponerlo a 12v de una fuente, y la masa de la fuente unirlo a la masa de Arduino. Con una fuente ATX va perfecto, puede dar un montón de intensidad y suministrará la intensidad que la pida el motor, que siempre será inferior a la máxima (creo que 12A).

Tienes un ejemplo de conexionado en: http://txapuzas.blogspot.com/2009/12/paperstepperunipolar-driver-de-potencia_12.html

Nota: Para mover el motor paso a paso Arduino tiene una librería denominada Stepper, que facilita el manejo de motores paso a paso.

Saludos

Seguro que no es el codigo o conexionado ? Acabo de meter con un alimentador 12Vc 1.5A el positivo al comun y el negativo a masa del arduion y tampoco funciona el motor.

por cierto txapuzas gran blog.... postea postea que asi no pregunto por estos lares. XDDDDDD

Prolemas de conexionado??? Tipico en motores pap, identificar las bobinas y los comunes aveces es bastante compliado, pero si el problema fuera de conexiones el motor vibraria, quedaria bloqueado o el movimiento seria erratico....

Problemas de codigo??? Tienes ejemplos en el propio IDE con la libreria Stepper que deberian funcionar, solo tendrias que ajustar los pines de salida hacia el motor.

El conexionado ahora mismo es el siguiente

El codigo es el de arriba pero mas o menos lo que seria algo asi programado modo chungo como array azul,rosa,amarillo,naranja paso 1: 1,0,0,0 paso 2: 1,0,0,1 paso 3: 0,0,0,1

.. que es lo que se lee en el datasheet.

La fuente externa es 12vc a 1.5A y sigo sin hacerlo funcionar. Alguna idea ?

actualización la imagen esta en http://twitpic.com/71cox3

Si el gráfico representada las conexiones, veo que el negativo de la alimentación externa está conectada a un lugar de la placa que no llega a ningún componente.

Pufff..... uuu pa mi. En la realidad SI que hacen contacto...

Hola de nuevo

Las conexiones creo que serían: La masa de la fuente de alimentación AT(cable negro) hay que conectarla al pin 8 del ULN32003 y a GND de Arduino (no a la masa analógica) La tensión de 12v de la FA (cable amarillo) al común de tu motor (cable rojo) El resto de cables del motor a las salidas correspondientes del ULN2003 En el código te sobra el octavo paso (es el mismo que el primero).

¿El motor no te vibra?

Por qué no pones unos leds (con una resistencia) en vez del motor y observas si el integrado funciona correctamente?

No veo la imagen del conexionado.....no se si sera porque estoy desde mi ipad pero no puedo verla

si arrimas la oreja al motor mucho mucho oyes un clock, clock... osea que supongo que las bobinas se magnetizan.

Voy a probar tus soluciones. Merci a todos. En serio he buscado y lo más importante pensado la solucion con datasheets esquemas y no se me ocurre ya nada. Lo peor de todo que seguramente sea la estupidez más grande del mundo.

act: sigo sin hacerlo funcionar. Poneniendo el negativo de la fuente de Tension en el pin8 del integrado ULN2003A y desde aqui al GND del arduino ( el que esta al lado del pin 13 vamos).

act II. Respecto al codigo faltaba un paso y la funcion loop quedaria tal que

  // Los pines se activan en secuencia
  digitalWrite(motorPin1, HIGH); // Primer paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  
  // Los pines se activan en secuencia
  digitalWrite(motorPin1, HIGH); // Segundo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW); // Tercer paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  
  digitalWrite(motorPin1, LOW); // Cuarto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH); 
  delay(delayTime); 
  
  digitalWrite(motorPin1, LOW); // Quinto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

  digitalWrite(motorPin1, LOW); // Sexto paso
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

  digitalWrite(motorPin1, LOW); // Septimo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);


  digitalWrite(motorPin1, HIGH); // Octavo paso
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);

Pero que es segui el esquema del datasheet.

Seguro que tienes mal conectado el motor, yo me he llevado de datasheets para conectarlos y resulta que no funcionan, es cuestion de identificar el comun y probar todas las combinaciones del resto de cables hasta que gire correctamente....

Mirate esto, espero que te ayude.... http://www.todorobot.com.ar/informacion/tutorial%20stepper/stepper-tutorial.htm

En resumen la lectura que debo hacer es que: el datasheet esta mal puesto que

- El conexionado segun el datasheet es correcto y
- el programa del arduino tambien es correcto segun el datasheet.

O lo que es lo mismo. si no hay o hubiere ningun componente roto deberia funcionar. Porqué a priori es todo correcto ?

pd. La fuente atx no la estoy usando dado que he recordado que debia ponerse una resistencia para “activarla”. Ya he probado de tomar el amarillo y el negro de una disquetera pero no debia entregar corriente ya que el ventilador no iba. No quiero estropearla que es de un PC que aunque no uso no quiero romperlo. Uso un adaptador de corriente que da 1.5A a 12Vc asi tengo un conector para pilas. Cosa que también he probado pero 6LR61 no daban los mA que debia dar. Supongo que estaban gastadas (aunque eran nuevas pero de hace mucho tiempo) .

No sé solo se me ocurre una cosa. Sabeis donde comprar un Motor PAP que pueda mover el arduino en Barcelona ciudad o alrededores ? El que compre es de diotronic y si no me equivoco era el unico modelo que tenian en ondaradio no he visto nada.

pd: shaktale tienes razon tendre que probar no sea que el datasheet esté mal pero para jugar a conexiones tambien tengo uno que desmonte de un HD pero en este caso un 4 hilos. Creo que será mejor aprender con material “fiable”/nuevo y cuando lo domine haré el friki pero bajo mi cuenta y riesgo sin andar preguntando en los foros.

Con una fuente ATX conectada de manera independiente para que arranque la fuente tienes que puentear el CABLE VERDE a MASA, si no, no arrancara la fuente, haciendo esto no hay peligro ninguno de romper la fuente, ademas estas fuentes se protegen, si haces corto por cualquier descuido la fuente se desconecta sola, con quitarle el cable de alimentacion, esperar unos segundos y volver a conectar ya funcionara de nuevo.

usa la libreria Stepper.h te ahorras muchos dolores de cabeza!! y tiene ejemplos que funcionan enseguida!