Ola, sou iniciante em arduino estou montando um projeto de uma cortina automatizada via controle remoto (IR)
mas estou tendo problemas na parte do fim de curso...
o esquema é o seguinte.. acionando o a tecla 1 do controle a cortina abre a tecla 2 fecha e a 3 é um " stop " em algum angulo que o usuario queira , o problema é que quando o motor chega no fim de curso ele para ..porem enquanto o fim de curso esta ativado ele nao deixa mais o motor girar no sentido contrario.. pois o sensor esta mandando o motor ficar parado...
se alguem puder me ajudar fico grato !
estou usando essa programaçao :
#include <IRremote.h>
#include <AccelStepper.h>
int sensor_final = 2;
int estadosf ;
int velocidade_motor = 250;
int aceleracao_motor = 150;
int sentido_horario = 0 ;
int sentido_antihorario = 0 ;
int RECV_PIN = 11;
float armazenavalor;
int pino_enable = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
AccelStepper motor1(1,7,4);
void setup()
{
pinMode(pino_enable, OUTPUT);
pinMode(sensor_final, INPUT_PULLUP);
Serial.begin(9600);
irrecv.enableIRIn(); // Inicializa o receptor IR
motor1.setMaxSpeed(velocidade_motor);
motor1.setSpeed(velocidade_motor);
motor1.setAcceleration(aceleracao_motor);
Serial.println("Digite 1, 2 ou 3 e 3...");
}
void loop()
{
estadosf = digitalRead (sensor_final);
if (estadosf == LOW )
{
Serial.print(" sensor ");
digitalWrite (pino_enable, HIGH);
}
if (irrecv.decode(&results))
{
Serial.print("Valor lido : ");
Serial.println(results.value, HEX);
armazenavalor = (results.value);
if (armazenavalor == 0xFF6897) //Verifica se a tecla 1 foi acionada
{
Serial.println("Numero 1 recebido - Girando motor sentido horario.");
digitalWrite(pino_enable, LOW);
sentido_horario = 1;
sentido_antihorario = 0;
}
if (armazenavalor == 0xFF9867) //Verifica se a tecla 2 foi acionada
{
Serial.println("Numero 2 recebido - Girando motor sentido anti-horario.");
digitalWrite(pino_enable, LOW);
sentido_horario = 0;
sentido_antihorario = 1;
}
if (armazenavalor == 0xFF02FD) //Verifica se a tecla OK foi acionada
{
Serial.println("Numero 3 recebido - Parando motor...");
sentido_horario = 0;
sentido_antihorario = 0;
motor1.moveTo(0);
digitalWrite(pino_enable, HIGH);
}
irrecv.resume(); //Le o próximo valor
}
// Move o motor no sentido horario
if (sentido_horario == 1)
{
motor1.moveTo(10000);
}
// Move o motor no sentido anti-horario
if (sentido_antihorario == 1)
{
motor1.moveTo(-10000);
}
// Comando para acionar o motor no sentido especificado
motor1.run();
}
Tags:
Olá.
A forma mais segura seria o fim de curso desligar o motor de forma que ele não possa mais ir naquela direção, ainda que a placa comande isso, mas para a outra possa ir normalmente.
Como o motor é DC vc pode fazer isso com diodos.
Colocando um diodo em cada fim de curso quando ele estiver aberto um sentido fica bloqueado mas o outro ainda é permitido (via diodo).
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por