ESTOY CONFIGURANDO EL ARDUINO PARA EL ARMADO DE UNA GRABADORA LASER CON 3 MOTORES COMO LA QUE USTEDES ARMAN LES COMPRE TODO Y TENGO DUDA ESA CONFIGURACION O PROGRAMACION SIRVE PARA MOVER LOS 3 MOTROES
Hola Octavio. Listo acá te envío el código. Saludos! #include #define stepPin 9 // definiciones de pins de salida. Pin para pulsos: 9 #define dirPin 10 // Pin de dirección: 10 #define microstep 2 // definiciones de parametros para calcular movimiento. Micropasos (1/2) #define pasosMotor 200 // Cantidad de pasos por revolución del motor (en este caso 200 por ser un motor de 1.8° por paso) #define mmVueltaHusillo 8 // Cantidad de mm lineales que avanza el husillo por cada revolución completa int distanciaObjetivo = 65; // distancia solicitada para moverse (Se moverá el doble ya que el sistema empieza en 0 ,va hasta la cantidad deseada, después vuelve al 0 y después va a menos la cantidad deseada int aceleracion = 10000; // variable para configurar aceleración int velocidadMaxima =5000; // variable para configurar velocidad máxima int distanciaMM; // variable para almacenar calculo de pasos/mm // crear motor con la libreria accelstepper, configurando el motor como "driver" y se declaran los pines a usar AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin); void setup() { distanciaMM = (( pasosMotor * microstep ) / mmVueltaHusillo); // cálculo de pasos/mm Serial.begin(250000); // activar comunicacion serie para debug stepper.setMaxSpeed(velocidadMaxima); // se recogen las definiciones de movimiento para configurar el motor stepper.setAcceleration(aceleracion); stepper.moveTo(distanciaMM * distanciaObjetivo); stepper.setPinsInverted(0, 1, 0); // se invierte la lógica del pin STEP..... (direccion, step, enable), 0 corresponde a no invertir y 1 corresponde a invertir } void loop() { if (stepper.distanceToGo() == 0) { // si la distancia restante es igual a cero stepper.moveTo(-stepper.currentPosition()); // mueve el motor en sentido contrario colocando la posicion actual negativa en la funcion moveTo Serial.println(stepper.distanceToGo()); // indica por monitor serie la distancia que debe moverse delay(10); // espera al final del movimiento (milisegundos) } stepper.run(); // activa el movimiento del motor }
COMO SERIA EL CODIGO SI USARIA UN DRIVER L298N #include #define stepPin 9 // definiciones de pins de salida. Pin para pulsos: 9 #define dirPin 10 // Pin de dirección: 10 #define microstep 2 // definiciones de parametros para calcular movimiento. Micropasos (1/2) #define pasosMotor 200 // Cantidad de pasos por revolución del motor (en este caso 200 por ser un motor de 1.8° por paso) #define mmVueltaHusillo 8 // Cantidad de mm lineales que avanza el husillo por cada revolución completa int distanciaObjetivo = 65; // distancia solicitada para moverse (Se moverá el doble ya que el sistema empieza en 0 ,va hasta la cantidad deseada, después vuelve al 0 y después va a menos la cantidad deseada int aceleracion = 10000; // variable para configurar aceleración int velocidadMaxima =5000; // variable para configurar velocidad máxima int distanciaMM; // variable para almacenar calculo de pasos/mm // crear motor con la libreria accelstepper, configurando el motor como "driver" y se declaran los pines a usar AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin); void setup() { distanciaMM = (( pasosMotor * microstep ) / mmVueltaHusillo); // cálculo de pasos/mm Serial.begin(250000); // activar comunicacion serie para debug stepper.setMaxSpeed(velocidadMaxima); // se recogen las definiciones de movimiento para configurar el motor stepper.setAcceleration(aceleracion); stepper.moveTo(distanciaMM * distanciaObjetivo); stepper.setPinsInverted(0, 1, 0); // se invierte la lógica del pin STEP..... (direccion, step, enable), 0 corresponde a no invertir y 1 corresponde a invertir } void loop() { if (stepper.distanceToGo() == 0) { // si la distancia restante es igual a cero stepper.moveTo(-stepper.currentPosition()); // mueve el motor en sentido contrario colocando la posicion actual negativa en la funcion moveTo Serial.println(stepper.distanceToGo()); // indica por monitor serie la distancia que debe moverse delay(10); // espera al final del movimiento (milisegundos) } stepper.run(); // activa el movimiento del motor }
.....buenisimo el video profe....mil gracias!!
Oleee muy bien explicado todo ,muchas gracias
Genial muy buena explicación
Gracias por tu comentario!
Saludos, quusiera saber en que momento explicaste las conexiones?
Excelente explicación
Muchas gracias Joshua
Hola, Donde dejaron la información de las librerías ?
Mas que excelente!!
Gracias por tu comentario!
para conectar dos motores ?
ESTOY CONFIGURANDO EL ARDUINO PARA EL ARMADO DE UNA GRABADORA LASER CON 3 MOTORES COMO LA QUE USTEDES ARMAN LES COMPRE TODO Y TENGO DUDA ESA CONFIGURACION O PROGRAMACION SIRVE PARA MOVER LOS 3 MOTROES
No estan los accesos a los link :( , los podrian facilitar ? :) , EXCELENTE TRABAJO !
Emmanuel. Acá van los links!. Saludos y gracias por comentar!.
www.arduino.cc/en/software
www.airspayce.com/mikem/arduino/AccelStepper/
Hola buenas,no esta el acceso al link del programa que diseñaste
si no quisiera que regresara y se mantuviera en stop como lo puedo modificar
Hola. No me aparece el código en la descripción del video. Me lo puedes facilitar? Muchas gracias
Hola Octavio. Listo acá te envío el código. Saludos!
#include
#define stepPin 9 // definiciones de pins de salida. Pin para pulsos: 9
#define dirPin 10 // Pin de dirección: 10
#define microstep 2 // definiciones de parametros para calcular movimiento. Micropasos (1/2)
#define pasosMotor 200 // Cantidad de pasos por revolución del motor (en este caso 200 por ser un motor de 1.8° por paso)
#define mmVueltaHusillo 8 // Cantidad de mm lineales que avanza el husillo por cada revolución completa
int distanciaObjetivo = 65; // distancia solicitada para moverse (Se moverá el doble ya que el sistema empieza en 0 ,va hasta la cantidad deseada, después vuelve al 0 y después va a menos la cantidad deseada
int aceleracion = 10000; // variable para configurar aceleración
int velocidadMaxima =5000; // variable para configurar velocidad máxima
int distanciaMM; // variable para almacenar calculo de pasos/mm
// crear motor con la libreria accelstepper, configurando el motor como "driver" y se declaran los pines a usar
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
void setup()
{
distanciaMM = (( pasosMotor * microstep ) / mmVueltaHusillo); // cálculo de pasos/mm
Serial.begin(250000); // activar comunicacion serie para debug
stepper.setMaxSpeed(velocidadMaxima); // se recogen las definiciones de movimiento para configurar el motor
stepper.setAcceleration(aceleracion);
stepper.moveTo(distanciaMM * distanciaObjetivo);
stepper.setPinsInverted(0, 1, 0); // se invierte la lógica del pin STEP..... (direccion, step, enable), 0 corresponde a no invertir y 1 corresponde a invertir
}
void loop()
{
if (stepper.distanceToGo() == 0) { // si la distancia restante es igual a cero
stepper.moveTo(-stepper.currentPosition()); // mueve el motor en sentido contrario colocando la posicion actual negativa en la funcion moveTo
Serial.println(stepper.distanceToGo()); // indica por monitor serie la distancia que debe moverse
delay(10); // espera al final del movimiento (milisegundos)
}
stepper.run(); // activa el movimiento del motor
}
Una consulta, porque mi motor paso paso vibra y suena, gracias.
Debes tener mal conectados los cables. Te sugiero revises eso!. Saludos!.
buenos dias, no incluyo el codigo en la descripcion del video. gracias
buenas tardes. no encuentro el código. podrias subierlo
Q buen video
Amigo un programa para mover 45 45grados un motor paso a paso em bambos sentidos como serias
AMIGO BUEN DIA CUAL SERIA EL CODIGO SI USARIA UN L298N PORFAVOR COMO DRIVER
R
COMO SERIA EL CODIGO SI USARIA UN DRIVER L298N
#include
#define stepPin 9 // definiciones de pins de salida. Pin para pulsos: 9
#define dirPin 10 // Pin de dirección: 10
#define microstep 2 // definiciones de parametros para calcular movimiento. Micropasos (1/2)
#define pasosMotor 200 // Cantidad de pasos por revolución del motor (en este caso 200 por ser un motor de 1.8° por paso)
#define mmVueltaHusillo 8 // Cantidad de mm lineales que avanza el husillo por cada revolución completa
int distanciaObjetivo = 65; // distancia solicitada para moverse (Se moverá el doble ya que el sistema empieza en 0 ,va hasta la cantidad deseada, después vuelve al 0 y después va a menos la cantidad deseada
int aceleracion = 10000; // variable para configurar aceleración
int velocidadMaxima =5000; // variable para configurar velocidad máxima
int distanciaMM; // variable para almacenar calculo de pasos/mm
// crear motor con la libreria accelstepper, configurando el motor como "driver" y se declaran los pines a usar
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
void setup()
{
distanciaMM = (( pasosMotor * microstep ) / mmVueltaHusillo); // cálculo de pasos/mm
Serial.begin(250000); // activar comunicacion serie para debug
stepper.setMaxSpeed(velocidadMaxima); // se recogen las definiciones de movimiento para configurar el motor
stepper.setAcceleration(aceleracion);
stepper.moveTo(distanciaMM * distanciaObjetivo);
stepper.setPinsInverted(0, 1, 0); // se invierte la lógica del pin STEP..... (direccion, step, enable), 0 corresponde a no invertir y 1 corresponde a invertir
}
void loop()
{
if (stepper.distanceToGo() == 0) { // si la distancia restante es igual a cero
stepper.moveTo(-stepper.currentPosition()); // mueve el motor en sentido contrario colocando la posicion actual negativa en la funcion moveTo
Serial.println(stepper.distanceToGo()); // indica por monitor serie la distancia que debe moverse
delay(10); // espera al final del movimiento (milisegundos)
}
stepper.run(); // activa el movimiento del motor
}
Como seria para enviar pasos , y que se detenga , no que se mantenga en bucle
Mejor dicho 90 grados en cada direcvion...a travesde un pulso
no me quiere coger la libreria
que error te da?
xd