Boa noite pessoal, estou com um projeto de TCC da escola, estou utilizando 3 motores de passo controlados pelo driver A4988, estou utilizando a biblioteca AccelStepper.h estou tendo algumas dificuldades no controle dos motores na questão de colocar um motor de cada vez para funcionar. Oque eu preciso é colocar um delay entre o funcionamento de um para o outro, porem quando eu coloco a função delay ele espera o tempo que determinei e em sequida os 3 motores funcionam juntos, alguem pode me ajudar ????
Tags:
Envie o arquivo do seu Sketch .
Não cole o programa no tópico.
Sugiro que estude como são usadas as funções da Biblioteca AccelStepper :
http://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepp...
http://www.airspayce.com/mikem/arduino/AccelStepper/
Veja esses exemplos :
http://www.airspayce.com/mikem/arduino/AccelStepper/examples.html
http://www.airspayce.com/mikem/arduino/AccelStepper/MultipleStepper...
José se poder dar uma olhada eu agradeço. eu gostaria de colocar um delay entre um motor e outro.
Analisando o seu Sketch :
motorX.setMaxSpeed(velocidade_motorX); // configura a velocidade máxima do motor X = 500 passos/segundo
motorX.setSpeed(velocidade_motorX); // configura a velocidade do motor X = 500 passos/segundo
motorX.setAcceleration(aceleracao_motorX); // configura aceleração máxima = 500 passos/segundo ao quadrado
AccelStepper motorX (1,6,7 ); // Definição do uso de driver e pinos STEP e DIR
int pino_enable = 8; // Para que serve esse pino ENABLE ? Para ativar todos os Drivers de motor ?
Se usar um pino Enable para cada motor, dessa forma terá o controle individual de cada motor !
motorX.move(-500); // envia 500 pulsos para o motor (direção inversa)
motorY.move(500); // envia 500 pulsos para o motor
motorZ.move(500);
motorX.run();
motorY.run(); // Manda o Motor girar
motorZ.run();
Nunca usei a AccelStepper para vários motores, mas o que acontece se fizer assim ?
motorX.move(-500);
motorX.run();
motorY.move(500);
motorY.run();
motorZ.move(500);
motorZ.run();
Bom dia W.
Nestas 2 linhas:
AccelStepper motorX (1,6,7 );
AccelStepper motorZ (1,6,7 );
você define o motor x e z com os mesmos ports do arduino.
Assim o X e o Y sempre vão funcionar ao mesmo tempo.
Também não encontrei onde você colocou o delay (xxx);
Estou analisando o resto do seu sketch.
Rui
Obrigado Véio.
eu nao inseri o delay ai, mas em qualquer lugar que eu coloque ele, nao ta fazendo diferença.
Oi W,
testa este code anexado.
Um detalhe, não modifiquei os ports dos motores X e Z.
Deixei isto pra você.
Rui
int pino_enable = 8; //
Para que serve esse pino ENABLE ? Para ativar todos os Drivers de motor ?
Se usar um pino Enable para cada motor, dessa forma terá o controle individual de cada motor !
O véio esta certo ! Não tinha percebido esse erro :
AccelStepper motorY (1,4,20 );
AccelStepper motorX (1,6,7 );
AccelStepper motorZ (1,6,7 ); errado
Os motores não giram ?
motorX.move(-500);
motorX.run();
nao. só gira quando insiro motorX.run(); no final do programa.
Voce testou o programa sugerido pelo Rui ? (Ranzinza ) ?
Wesley
esse programa funciona perfeitamente aqui
#include <AccelStepper.h>#include <AccelStepper.h>
byte const enablePin = 8;
AccelStepper stepper1( AccelStepper::FULL3WIRE , 1, 4, 7);
const int stepPin = 4; const int dirPin = 7; const int enPin = 8;
void setup(){ stepper1.setMaxSpeed(20000.0); stepper1.setAcceleration(10000.0);
//stepper2.setMaxSpeed(20000.0);// stepper2.setAcceleration(20000.0);
pinMode(12, INPUT_PULLUP);
pinMode(stepPin,OUTPUT); pinMode(dirPin,OUTPUT);
pinMode(enPin,OUTPUT); digitalWrite(enPin,LOW); stepper1.setSpeed(20000.0);// stepper2.setSpeed(20000.0); while (digitalRead(12)==0) stepper1.runSpeed();
// stepper2.runSpeed(); stepper1.setCurrentPosition(0); // stepper2.setCurrentPosition(0); delay(1000);}
void loop()
{
delay(1000);//stepper2.runToNewPosition(-10000.0);// posiçao pe palito 60 cm -109000.0// stepper2.setMaxSpeed(20000.0); //stepper2.setAcceleration(20000.0);// delay(100);
//stepper2.runToNewPosition(1000); // stepper2.setMaxSpeed(20000.0); //stepper2.setAcceleration(5000.0);// delay(100);
stepper1.runToNewPosition(-1400); stepper1.setMaxSpeed(20000.0); stepper1.setAcceleration(5000.0); delay(100);
stepper1.runToNewPosition(0); stepper1.setMaxSpeed(20000.0); stepper1.setAcceleration(20000.0); delay(100);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por