Olá pessoal, sou extremamente iniciante em Arduíno e programação.
Eu estou iniciando um projeto para automatizar uma fresadora.
será apenas 1 motor
já que o processo da fresadora é fazer com que a mesa dela se movimente apenas no sentido de ida e volta.
Os produtos que já possuo são o seguinte.
1 Arduino Uno
1 Motor Nema 23 19kgf cm 4.2A (8Fios)
1 Drive TB6600 (hy-div268n-5A)
2 Crash Sensor (botões de fim de curso)
1 Push button (botão iniciar o processo)
A ligação do motor fiz em séria buscando mais Torque do que velocidade.
As conexões estão feitas, tudo ok.
O que eu estou quebrando a cabeça agora é na programação;
O que eu desejo que aconteça é o seguinte.
Ao pressionar o Botão quero que o Motor gire sentido horário, até tocar o fim de curso.
Ao tocar o crash sensor(fim de curso) ele deve girar no sentido anti-horário, até que o outro crash sensor (Inicio de curso) seja alcançado, e ficar parado até que o Puch Buttom (botão iniciar) seja pressionado.
Segue o código que tenho até o momento.
//Arduino Sketch based on easy driver
int dirpin = 8;
int steppin = 9;
int enable = 7;
int sensorFinal = 3;
int sensorInicial = 5;
void setup()
{
pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
digitalWrite(enable, LOW);
pinMode(sensorFinal, INPUT);
pinMode(sensorInicial, INPUT);
}
void loop()
{
int i;
int sensor = digitalRead(sensorFinal);
if (sensor == HIGH) {
digitalWrite(dirpin, HIGH); // Set the direction.
}else{
digitalWrite(dirpin, LOW); // Set the direction.
}
delay(1);
for (i = 0; i<1; i++) // Iterate for 4000 microsteps.
{
digitalWrite(steppin, LOW); // This LOW to HIGH change is what creates the "Rising Edge" so the easydriver knows to when to step.
delayMicroseconds(2);
digitalWrite(steppin, HIGH);
delayMicroseconds(200); // This delay time is close to top speed for this
} // particular motor. Any faster the motor stalls.
}
Desa forma o motor só gira no sentido anti-horário enquanto o fim de curso estiver pressionado.