Pessoal boa noite, sou fotógrafo mas uso o arduino para alguns projetos relacionados a fotografia.

Estou montando uma plataforma giratoria e já tenho montado o Arduino + Driver A4988 + Motor de passo da EPSON EM-258

Com um tutorial do youtube consegui conectar tudo e o motor está girando. O problema é que preciso dele girando para um lado só e no tempo que eu mandar apertando um botao.

O sketch do esquema é esse:

#define VELOCIDAD 1700


int steps = 2;
int direccion = 3;
int reset = 9;
int pasos = 10;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(steps, OUTPUT);
pinMode(direccion, OUTPUT);
pinMode(reset, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
delay(100);
digitalWrite(reset, HIGH); //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
digitalWrite(direccion, HIGH);

for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{
digitalWrite(steps, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps, LOW); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.

}

digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
delay(100);
digitalWrite(reset, HIGH); //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
digitalWrite(direccion, LOW);

for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{

digitalWrite(steps, LOW); // LOW to HIGH hace que el motor avance ya que da la orden
digitalWrite(steps, HIGH); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.
}
}

Alguem pode me ajudar a modificar o necessario para girar somente pra um lado sendo que  o giro será acionado por um botao de start? 

Obrigado a todos!

Abs

Exibições: 965

Responder esta

Respostas a este tópico

Pessoal, consegui fazer funcionar apenas para um lado o motor. Mas não estou conseguindo programa-lo para se mover através de um push button. Alguem? Obrigado!

Eis o codigo alterado: 

#define VELOCIDAD 10000
const int steps = 2;
const int direccion = 3;
int reset = 9;
int pasos = 200;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(steps, OUTPUT);
pinMode(direccion, OUTPUT);
pinMode(reset, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {

digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
delay(100); // coloquei esta instução
digitalWrite(reset, HIGH); //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
digitalWrite(direccion, LOW);

for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{

digitalWrite(steps, LOW); // LOW to HIGH hace que el motor avance ya que da la orden
delay(10); // coloquei esta instução
digitalWrite(steps, HIGH); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.
}
}

Problema resolvido via Daniel Cesar! :) Obrigado Daniel!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço