Ajuda, botão + Rele

Como estás a ligar o relé? Está ligado da mesma forma que o led ao Arduino, isto é, com a mesma polaridade? E como ligaste as coisas na saída do relé? A luz na saída do relé é completamente oposta ao LED?

O relé alguma vez comutou?

O rele é normalmente aberto ou normalmente fechado?

Lago:
O rele é normalmente aberto ou normalmente fechado?

Essa pergunta é valida, pois normalmente o relé funciona como um interruptor, ligando o contato do meio com o contato ou da esquerda ou da direita. Então você pode estar ligando os fios nos contatos do relé que ficam fechados quando o relé não está alimentado.

Faça o teste com um multimetro para ver se você não está ligando nada errado. Se mesmo assim não resolver, poste o esquema elétrico e/ou uma foto de como você está fazendo.

bubulindo

Entao, o módulo que tenho possui 6 pinos, um GND, um VCC e as 4 portas de cada rele (o módulo tem 4 reles), liguei o GND ao GND do arduino, o VCC ao 5 Volts do Arduino e liguei uma porta de saida digital do arduino á uma entrada no módulo relé...

O rele está comutando sim, o problema é que quando ligo o arduino ele já comuta, ele deveria ficar desligado até eu apertar o botao

Ok...

Não estou a entender muito bem... Ele liga e desliga muito rápido ou quando o arduino é iniciado ele liga e fica sempre ligado?

Sem saber como o relé está ligado é difícil de garantir, mas...

O ATmega328 começa com os pinos configurados como entradas, se estiveres a fazer sink (ou seja, ligar a bobine do relé entre VCC e o Arduino) na entrada isto pode realmente comutar o relé. Como o bootloader do Arduino fica ali algum tempo até iniciar, deve ser o suficiente para comutar uma vez.

Depois tens o facto que o Arduino faz sabe-se lá o quê aos pinos e isso também pode influenciar, embora duvide que seja algo assim que esteja a acontecer, nunca se sabe.

Agora se o relé fica sempre ligado, provavelmente tens a lógica invertida no programa.

Isso, quando o arduino é iniciado ele liga e fica sempre ligado...
esse é o problema, mesmo se eu colocar digitalWrite(rele,LOW); ele inicia ligado...Nao deveria iniciar com a porta desligada?

E quem te diz que low é desligado?

Experimenta ao contrário:

void setup()
{
  pinMode(rele, OUTPUT); 
  pinMode (botao, INPUT);
  digitalWrite(rele,HIGH);
}

Era isto que eu referia quando perguntei:

Como estás a ligar o relé? Está ligado da mesma forma que o led ao Arduino, isto é, com a mesma polaridade?

Bubulindo,

No momento estou no trabalho, testarei isso que tu me indicou quando eu chegar em casa...

Acredito que sejas esta a solução mesmo, pois ainda não testei desta maneira

Muito Obrigado pela Ajuda :smiley:

Amigo também tenho um modulo desses de reles e eles funcionam com lógica invertida.
Para o rele activar mandas valor 0V e para ele estar desligado 5V.

Eu tirei um rele de uma sucata aqui e o estado sem tensão era ligado... e demorou para cair a ficha rs

Mortis e HugoPT

Era isso mesmo !!! Fiz oque o Bubulindo me disse e deu certo, o módulo funciona com a lógica invertida hehe

Obrigado a todos pela ajuda ^^

bubulindo:
O ATmega328 começa com os pinos configurados como entradas, se estiveres a fazer sink (ou seja, ligar a bobine do relé entre VCC e o Arduino) na entrada isto pode realmente comutar o relé. Como o bootloader do Arduino fica ali algum tempo até iniciar, deve ser o suficiente para comutar uma vez.

Estou com esse problema, ao ligar o arduino o relé liga e desliga rapidamente. Como resolvo isso?

Quando isso acontece é porque não foi inicializado o estado inicial da saída digital correspondente, no setup.

void setup(){
 digitalWrite(8, LOW);   // turn the LED on (HIGH is the voltage level)


}

Ou ao contrário, dependendo da tua placa de relés.

Entendo! Já fiz códigos mais simples apenas para acionar um relé e não era necessário iniciá-lo em low. Lembrei que para resetar o sistema usei o comando asm volatile (" jmp 0");
Quando o sistema é reiniciado por esse comando o relé não faz a comutação de quando é reiniciado pela tomada! Há alguma possibilidade do problema ser no hardware?

Eu tmb fiz códigos simples onde não foi preciso. Noutros casos tive mesmo de fazer isto. Não me parece problema de hardware.

alkuentrus:
Eu tmb fiz códigos simples onde não foi preciso. Noutros casos tive mesmo de fazer isto. Não me parece problema de hardware.

Não funcionou digitei logo abaixo do setup =/, o relé é do tipo optoacoplado e está ligado em um arduino UNO VCC-5V, GND-GND, IN-12. Alguma outra sugestão eu agradeço.

Meteste mesmo dentro da função setup?

Sim, pus logo no início e por último logo abaixo das declarações do tipo de pino.

Também esqueci de dizer, ao desligar da tomada o solenóide faz um ruído "tick" , não sei se isso influi em algo. O problema de ligar na tomada e o relé comutar rapidamente ainda persisti.

void setup()
{
  Serial.begin(9600);
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,INPUT_PULLUP);//Sem digitalWrite condiciona HIGH
  pinMode(7,INPUT_PULLUP);
  pinMode(8,INPUT_PULLUP);
  pinMode(ledr,OUTPUT);//9
  pinMode(ledg,OUTPUT);//10
  pinMode(rele,OUTPUT);//12
  pinMode(buzzer,OUTPUT);//13
  digitalWrite(12,LOW);

Há alguma componente eletrônico que eu possa utilizar para impedir esse comutação na inicialização do aparelho? Já tentei várias possibilidades para resolver pelo código mas, não obtive sucesso.