Liga Desliga Rele com sensor encoder apos 10 voltas

Boa tarde!!
Estou tentando fazer um projeto que ao pressionar e soltar um botão, o motor (Rele, porque o motor que vou usar é de 24v) começa girar, após completar 10 voltas ele desliga o motor e fica aguardando que o botão seja pressionado novamente para repetir o mesmo processo.

Esse projeto é de uma maquina de enrolar arame para alambrado.
Veja uma exemplo: https://www.youtube.com/watch?v=WDlzX3c2GpA
Alguém pode me ajudar finalizar o projeto.

Ele esta funcionando para contar as voltas, mas quando descomento a linha 27 o Rele liga mas para de contar.

int rele=7; // rele no pino 13
int botao=2; // botão no pino 12
int var=0; // valor instantaneo enviado pelo botão
int var2=0; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)

bool s_high = 0;
unsigned long counter = 0;
void setup()
{
Serial.begin(115200);
pinMode(rele,OUTPUT);
pinMode(botao,INPUT);
pinMode(6, INPUT); //contador
digitalWrite(rele, HIGH);
}
void loop()
{
if(digitalRead(6)) s_high = 1;
var=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((var == HIGH) && (var2 == LOW)) {
estado = 1 - estado;

}
var2=var;
if (estado == 0) {
//digitalWrite(rele, LOW); //Ao descomentar essa linha, o contador para de funcionar
if(!digitalRead(6) && s_high)
{
s_high = 0;
counter += 1;
Serial.println(counter);
if(counter == 10)
{
counter = 0;
estado = !estado;

}
delay(400);
}

// de-bouncing
} else {

digitalWrite(rele, HIGH); // desliga o rele
Serial.println("Desligado");
delay(100); // de-bouncing
}
}

Pelo que vi no seu código ele para de contar quando você liga o motor? É isso??

Sim, isso mesmo, na verdade é o relé que vai ligar o motor, se eu descomentar a linha 27, o relé liga mas para de contar

tecdiego fiz um video e postei no youtube, por favor verifica se consegue me ajudar.
Obrigado

Manda o esquema de ligação.

tecdiego:
Manda o esquema de ligação.

tecdiego eu usei fritzing para criar esta imagem do meu esquema de ligação, eu preciso de um botão de "START" para o motor começar girar, quando ele completar 10 voltas, o motor para e quando eu clico no mesmo botão "START" o motor gira mais 10 voltas novamente e para, e assim por diante....
É tipo uma bobinadeira de trafo

Boa noite, o arquivo está bloqueado, mas a única desconfiança que tenho é sobre a corrente fornecida pelo Arduino, tenta fazer os teste substituindo o relé por um led e vê o que acontece.

billim:
tecdiego eu usei fritzing para criar esta imagem do meu esquema de ligação, eu preciso de um botão de "START" para o motor começar girar, quando ele completar 10 voltas, o motor para e quando eu clico no mesmo botão "START" o motor gira mais 10 voltas novamente e para, e assim por diante....
É tipo uma bobinadeira de trafo

https://drive.google.com/file/d/14geUhio23-iLUMhrzVjjdlFeLEdT1-Yz/view?usp=sharing

tecdiego:
Boa noite, o arquivo está bloqueado, mas a única desconfiança que tenho é sobre a corrente fornecida pelo Arduino, tenta fazer os teste substituindo o relé por um led e vê o que acontece.

int rele = 8; // rele no pino 8
int botao = 7; // botão no pino 7
int funcaoa = 1; // valor instantaneo enviado pelo botão
int funcaob = 1; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)

bool s_high = 0;
unsigned long counter = 0;

void setup(){
 Serial.begin(115200);
 pinMode(rele,OUTPUT); //Define o rele como saida
 pinMode(botao,INPUT); //Define o botão como entrada
 pinMode(6,INPUT);
}
void loop(){
if(digitalRead(6)) s_high = 1;
funcaoa=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
 if ((funcaoa == HIGH) && (funcaob == LOW)) {
 estado = 1 - estado;
 }
 funcaob=funcaoa;
 if (estado == 1) {
 digitalWrite(rele, HIGH); // liga o rele
 if(!digitalRead(6) && s_high)
        {
            s_high = 0;
            counter += 1;
            Serial.println(counter);
            if(counter == 10)
            {
              counter = 0;
              estado = !estado;             
            }
            delay(60);
         }               
 } else {
 digitalWrite(rele, LOW); // desliga o rele
 Serial.println("Desligado");
 delay(400);
 }
}

tecdiego, modifiquei este código e com o LED deu certo, porque com o modulo de rele não da certo?
Estou sem rele de 5v aqui para testar, vou comprar e fazer teste no lugar de LED

Ola,
Quando se lida com circuitos de controle de potência, não use a saída de 5V do Arduino (ou outro IoT/embarcado) para alimentar circuitos de potência.
Faça uma ramificação (Y) na fonte antes de entrar no Arduino, tanto para o VCC (5V ou 12V) quanto para o GND. Faça a fiação de alimentação em configuração estrela, tendo a fonte como centro.
Alguns módulos de relé possuem duas entradas para o VCC, um para o relé (esse vem direto da fonte) e outro para o circuito lógico (esse pode vir do Arduino). Pode ser que exista um jumper que interliga esses dois.
Também e preciso evitar que ruídos elétricos de quando se liga ou desliga dispositivos eletromagnéticos (reles e motores, etc) perturbe o funcionamento do uC.

Se o código funciona acionando um led, mas falha ao acionar o relé, e o caso do ruído perturbando o funcionamento do Arduino, ligação da alimentação em estrela pode resolver.

Além de usar uma fonte com potência adequada.

pksato:
Ola,
Quando se lida com circuitos de controle de potência, não use a saída de 5V do Arduino (ou outro IoT/embarcado) para alimentar circuitos de potência.
Faça uma ramificação (Y) na fonte antes de entrar no Arduino, tanto para o VCC (5V ou 12V) quanto para o GND. Faça a fiação de alimentação em configuração estrela, tendo a fonte como centro.
Alguns modulos de relé possuem duas entradas para o VCC, um para o relé (esse vem direto da fonte) e outro para o circuito lógico (esse pode vir do Arduino). Pode ser que exista um jumper que interliga esses dois.
Também e preciso evitar que ruídos elétricos de quando se liga ou desliga dispositivos eletromagnéticos (reles e motores, etc) perturbe o funcionamento do uC.

Se o código funciona acionando um led, mas falha ao acionar o relé, e o caso do ruído perturbando o funcionamento do Arduino, ligação da alimentação em estrela pode resolver.

Além de usar uma fonte com potência adequada.

pksato, agora sim entendi, eu achava que era os 5v que acionava o modulo de relé, eu troquei o LED por RELÉ e deu certo do jeito que eu precisava, usei o BC578 para acionar o relé, funcionou perfeito.
Obrigado, agora é finalizar o projeto.