Pessoal,

Gostaria de saber como faço para acelerar e desacelerar um motor de passo sem usar a biblioteca Accelstepper? Sou novato no arduino, consegui montar este codigo, no qual apos acionamento de uma chave de liga/desliga, o motor gira no sentido horario e antihorario. Contudo o mesmo ao iniciar o loop, esta dando uns trancos na maquina que estou construindo, balançando-a. Senso assim gostaria de acelera-lo, alguém pode me ajudar?

EStou usando:

Arduino Uno;

motor passo nema 23

drive - 2m542-N

codigo

int i = 0;
int dir1 = 8;
int passo1 = 9;
int distancia = 1300;
int pausa = 100;

int velox1 = 300;

int liga = 5;

void setup() {
pinMode(dir1, OUTPUT);
pinMode(passo1, OUTPUT);
pinMode(liga,INPUT);
digitalWrite(liga,1);

}

void loop() {

int leitura = digitalRead(5);
if(leitura == 0){

for (int i = 0; i< distancia; i++)
{
motor1horario();
}
delay(pausa);

for (int i = 0; i< distancia; i++)
{
motor1antihorario();
}
delay(pausa);


digitalWrite(passo1, LOW); 


}
}

// funçoes//

void motor1horario()
{
digitalWrite(dir1, HIGH);
digitalWrite(passo1, HIGH);
delayMicroseconds(velox1);
digitalWrite(passo1, LOW);
delayMicroseconds(velox1);
}

void motor1antihorario()
{
digitalWrite(dir1, LOW);
digitalWrite(passo1, HIGH);
delayMicroseconds(velox1);
digitalWrite(passo1, LOW);
delayMicroseconds(velox1);
}

Exibições: 1820

Responder esta

Respostas a este tópico

Não conheço este driver, contudo a "aceleração" de qualquer motor de passo é feita pela variação da velocidade dos pulsos em cada passo.

A máquina dando trancos pode significar que a velocidade inicial está muito alta ou que o motor está rodando e parando muito rápido.

Eu coloquei aceleração entre parêntesis no início, porque esse comando na verdade varia a rotação do motor. Controle de aceleração é algo bem mais complexo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço