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 ????

Exibições: 1309

Responder esta

Respostas a este tópico

José se poder dar uma olhada eu agradeço. eu gostaria de colocar um delay entre um motor e outro.

Anexos

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();

Não funciona

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

Anexos

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);

 

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço