Go Down

Topic: Motor Paso a Paso (Read 2 times) previous topic - next topic

santiago.lopez

Buenas, estoy intentando usar un motor paso a paso Bipolar de una disquetera, he mirado las especificaciones y es a 5v, pero intento hacerlo funcionar y no hay manera, reconozco los dos polos, y conecto los 4 cables a cuatro salidas digitales, y las voy encendiendo de dos en dos en funcion de los polos, pero el motor no se mueve a ningún lao, es necesario usar alguna etapa de potencia¿
En clase cuando trabajaba con motores paso a paso, los coenctaba a los automatas directamente y funcionaban perfectamente.. por qué con arduino no?

emv

Hola, necesitas un driver L293 para poder usar motores bipolares.
En google encontraras facilmente muchos esquemas.

Tambien necesitas saber la secuencia para hacer funcionar estos motores:

Paso            terminales

           A      B      C      D

1            +V      -V      +V      -V
2            +V      -V      -V      +V
3            -V      +V      -V      +V
4            -V      +V      +V      -V


Un ejemplo de programa:

Code: [Select]


//Control de motor PaP Bipolar


// PIN-es del Motor
int motorPin1 = 8;    //Pin cable verde                        
int motorPin2 = 9;    //Pin cable rojo
int motorPin3 = 10;   //Pin cable negro
int motorPin4 = 11;   //Pin cable marron
int delayTime = 50;                            // 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);
}


void loop() {
// Secuencia de activacion para motor Bipolar
 digitalWrite(motorPin1, HIGH);                
 digitalWrite(motorPin2, LOW);
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(delayTime);
 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(delayTime);
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(delayTime);
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(delayTime);

santiago.lopez

Gracias EMV, con el L293, puedo controlar otros que no sean bipolares?, es decir vale para cualquier paso a paso?
mañan ale echaré n vistazo gracias!

emv

Si, y ademas tambien puedes usar el L298 y para los unipolares tambien puedes usar el ULN2803.

santiago.lopez

ok, esta tarde lo comprare,
me recomiendas el shields para motores? eso ya es demasiado..?
http://www.adafruit.com/index.php?main_page=product_info&cPath=17_21&products_id=81&zenid=2ee45bd10f09092785cbae4e817469fe

dakar

Hola,
Puedes usar un driver como SAA1027 ( bipolar ), L287 ( tanto para bipolar como unipolar ) y similares.
Con estos driver puedes controlra el moor usando solo 2 pines del micro, uno para los pasos y otro para el sentido de giro.
De esta forma el codigo se simplifica.

int n=0;

void setup()                      // run once, when the sketch starts
{
 pinMode(2,OUTPUT);              // señal de movimiento del motor
 pinMode(3,OUTPUT);              // sentido de giro
}

void movimiento(){
  digitalWrite (3,HIGH);              // giro en sentido horario
  for(n=0;n<48;n++){              // hace 360º con pasos de 7,5º
   digitalWrite (2,HIGH);        // paso del motor
   delay(5);                   // pausa en milisegundos
   digitalWrite(2,LOW);          // paso del motor
   delay(5);                   // pausa en milisegundos
 }
}  

Go Up