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.
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;
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
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.
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.