Arduino controlando sentido de rotação do motor de passo

Por favor, alguém poderia me ajudar!

O programa abaixo faz o seguinte:

O motor gira no sentido horário "digitalWrite(motorDirPin, LOW);"

Quando o sensor chegar no parâmetro "614", o motor para de girar. " if (positionToGoTo > 614)"

Mas se o sensor estiver acima de 650, como eu faria pra fazer o motor girar sentido anti-horário?

A condição seria essa: 

Se o valor menor que 614, motor gira sentido horário.

Entre 614 e 650 o motor fica parado

Se o valor for maior que 650, motor gira sentido anti-horário

***************************************************************************** 

int multiplier = 10; //change this depending if you need the stepper to move more or less
int ledPin = 13;


#include <AccelStepper.h>

int motorSpeed = 9600; //maximum steps per second (about 3rps / at 16 microsteps)
int motorAccel = 80000; //steps/second/second to accelerate

int motorDirPin = 2; //digital pin 2
int motorStepPin = 3; //digital pin 3

//set up the accelStepper intance
//the "1" tells it we are using a driver
AccelStepper stepper(1, motorStepPin, motorDirPin);

void setup(){
pinMode (ledPin, OUTPUT);
stepper.setMaxSpeed(motorSpeed);
stepper.setSpeed(motorSpeed);
stepper.setAcceleration(motorAccel);

}

void loop(){
int i;
int sensorA = analogRead(A1); // Stepper motor cylinder cab position down detect
if (sensorA <50){

digitalWrite(motorDirPin, LOW); // Set the direction.
delay(300);
for (i = 0; i<400; i++)
{
digitalWrite(motorStepPin, LOW); // This LOW to HIGH change is what creates the
digitalWrite(motorStepPin, HIGH); // "Rising Edge" so the easydriver knows to when to step.
delayMicroseconds(500);
}

int positionToGoTo = analogRead(A0);
stepper.moveTo(positionToGoTo * multiplier);

stepper.run();

if (positionToGoTo > 614){ // Setting for to search position zero
digitalWrite(ledPin, HIGH);
delay (5000);
digitalWrite(ledPin, LOW);
}

}

}

Exibições: 2548

Responder esta

Respostas a este tópico

Seguinte cara, como vc ta acionando este motor de passo? com algum driver de corrente? unipolar ou bipolar?

não tem segredo, é só acionar as bobinas em uma sequencia para o motor girar em um sentido, e inverter essa sequencia para ele mudar o sentido.

Se o valor for X acionar sentido horario

Se o valor for y não acionar as bobinas e o motor para.

Se o valor for z acionar bobinas em sequencia inversa

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço