Control motor paso a paso


compañeros del foro les presento mi duda, quiero controlar un motor pasos con matricula 2byj-48 y un driver ul2003, logro que gire y todo, pero el problema es que cuando quiero ejecutar secuencias de pasos el motor se vuelve loco debido al programa, espero su asesoria.

les anexo el codigo de arduino que estoy usando:
code: [select]

int retardo=3;          // tiempo de retardo en milisegundos (velocidad del motor)
int dato_rx=60;            // valor recibido en grados
int numero_pasos = 0;   // valor en grados donde se encuentra el motor
string leecadena;       // almacena la cadena de datos recibida

void setup() {               
serial.begin(9600);     // inicializamos el puerto serie 9600 baudios
pinmode(11, output);    // pin 11 conectar in4
pinmode(10, output);    // pin 10 conectar in3
pinmode(9, output);     // pin 9 conectar in2
pinmode(8, output);     // pin 8 conectar in1
}
void loop(){
while (dato_rx>numero_pasos){   // girohacia la izquierda en grados
       paso_izq();
       numero_pasos = numero_pasos + 1;
   }
   while (dato_rx<numero_pasos){   // giro hacia la derecha en grados
        paso_der();
        numero_pasos = numero_pasos -1;
   }
   
  leecadena = "";   // inicializamos la cadena de caracteres recibidos
  apagado();         // apagado del motor para que no se caliente
}  ///////////////////// fin del loop ///////////////////////////

void paso_der(){         // pasos la derecha
 digitalwrite(11, low);
 digitalwrite(10, low); 
 digitalwrite(9, high); 
 digitalwrite(8, high); 
   delay(retardo);
 digitalwrite(11, low);
 digitalwrite(10, high); 
 digitalwrite(9, high); 
 digitalwrite(8, low); 
   delay(retardo);
 digitalwrite(11, high);
 digitalwrite(10, high); 
 digitalwrite(9, low); 
 digitalwrite(8, low); 
  delay(retardo);
 digitalwrite(11, high);
 digitalwrite(10, low); 
 digitalwrite(9, low); 
 digitalwrite(8, high); 
  delay(retardo); 
}

void paso_izq() {        // pasos la izquierda
 digitalwrite(11, high);
 digitalwrite(10, high); 
 digitalwrite(9, low); 
 digitalwrite(8, low); 
  delay(retardo);
 digitalwrite(11, low);
 digitalwrite(10, high); 
 digitalwrite(9, high); 
 digitalwrite(8, low); 
  delay(retardo);
 digitalwrite(11, low);
 digitalwrite(10, low); 
 digitalwrite(9, high); 
 digitalwrite(8, high); 
  delay(retardo);
 digitalwrite(11, high);
 digitalwrite(10, low); 
 digitalwrite(9, low); 
 digitalwrite(8, high); 
  delay(retardo);
}
       
void apagado() {         // apagado del motor
 digitalwrite(11, low);
 digitalwrite(10, low); 
 digitalwrite(9, low); 
 digitalwrite(8, low); 
 }


nota: pretendo lograr que el motor empiece en 0 grados y cuando ejecute el programa en arduino gire +60 grados, despues pause y regrese +20 grados, despues vaya +40 grados y por ultimo regrese 0 o su posicion inicial y se apague, esto con arduino mega 2560

hola @calo29, bienvenido al foro arduino!!

el código se debe postear usando tags para que se vea apropiadamente. los enlaces también deben postearse usando tags para que uno pueda hacer click y poder ir directamente.
te recomiendo que leas las normas del foro presentes como primer hilo de cada subforo.


Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Control motor paso a paso


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'