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:
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
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.
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
Post a Comment