Bom dia, tou tentando montar esse sistema que consistem em dois sensores, um minimo e um maximo para verificar o nivel de determinado recipiente e acionar ou desligar um motor. Simples, mas é meu primeiro projeto com arduino, e no simulador não está funcionando ...

O sensor estou utilizando duas pequenas barras metalicas galvanizadas sendo uma com uma carga positiva e outra negativa, para quando a agua entrar em contato da o curto e enviar o sinal. Porem no simulador estou utilizando um button.

Alguem, com mais experiencia poderia verificar e me ajudar a encontrar o erro, se consiste na logica do codigo ou na construção do circuito. Desde ja agradece, segue o codigo e a img do circuito

Código:

int sensormax = 3;
int sensormin = 2;
int rele = 6;

void setup(){
pinMode(sensormax,INPUT);
pinMode(sensormin,INPUT);
pinMode(rele,OUTPUT);
}

void loop(){
int estadomax = digitalRead(sensormax);
int estadomin = digitalRead(sensormin);

switch(sensormax){
case 1:
digitalWrite(rele,LOW);
break;

case 0:
switch(sensormin){
case 0:
digitalWrite(rele,HIGH);
break;

case 1:

digitalWrite(rele,LOW);

break;

}
break;
}
delay(100);
}

Exibições: 1187

Responder esta

Respostas a este tópico

Esta faltando um break depois do case 0

A linha default não precisa? Não me lembro.

switch(sensormax){
case 1:
digitalWrite(rele,LOW);
break;

case 0:

Estude isso : (em portugues)

http://playground.arduino.cc/Referencia/SwitchCase

http://playground.arduino.cc/Portugues/Referencia

Verdade, obrigado pela observação 

Yago, bom dia.

Segue abaixo uma variação para seu projeto ficar mais enxuto e intuitivo. Desculpe, não é a resposta direta da sua pergunta, mas, ajudará você analisar possibilidades. Espero ter contribuído, um abraço.

int sensormax = 3;
int sensormin = 2;
int rele = 13;

void setup()
{
   pinMode(sensormax,INPUT);
   pinMode(sensormin,INPUT);
   pinMode(rele,OUTPUT);
   digitalWrite(sensormax,HIGH); //ativar resistor interno de pull up
   digitalWrite(sensormin,HIGH); //ativar resistor interno de pull up
}

void loop()
{
  int estadomax = digitalRead(sensormax);
  int estadomin = digitalRead(sensormin);
 
  if (estadomin==0 && estadomax==0) //condição de liga porque sensores estão em low
  {
    digitalWrite(rele,HIGH);
  }
  if (estadomin==1 && estadomax==1) //atingiu nivel maximo, então, desliga
  {
    digitalWrite(rele,LOW);
  }
  if (estadomin==0 && estadomax==1) //condição de falha, então, desliga
  {
    digitalWrite(rele,LOW);
  }
}

Realmente, não tive este seu raciocínio, acredito que esteja melhor. Vou testa-lo. Abraço. (:

Não é melhor, mas, seria outra possibilidade. A vantagem é de economizar os dois resistores (pull up) que você colocou nas chaves e ter uma condição de falha na lógica. Um abraço.

Fiz um primeiro teste com esse codigo e percebi que com a caixa vazia ele entra no primeiro if, claro. Mas depois de acionar a bomba ele começa a encher e para sem chegar ate o nivel maximo. Ele interrompe antes, entrando no terceiro if.
Seria bom que ao esvaziar totalmente ele enchesse por completo.
Logo vou colocar um while dentro do primeiro if para ele so sair de dentro quando encher por completo. 

Abraços. Ta ficando legal (:

Acho que deve estar invertido o nível baixo com o alto. Reservatório vazio o motor liga. Depois o reservatório vai enchendo e ao passar pelo nível baixo o motor permanece ligado e somente desliga ao atingir o nível alto.

Pelo sintoma os sensores de nível alto e baixo estão invertidos, então, desligou por condição de falha.

Atte.

Vejam como estou dispondo os sensores no meu recipiente 

Esta muito artesanal e muito mal feito , ainda, kkk caso funcione pretendo fazer mais elaborado para apresentar na faculdade. 

A bomba que vou esta utilizando é essa: Um motor que joga agua para vidros de retrovisor de carro

Porem nao encontrei nenhuma fonte de 12v . Tenho uma, de carregador de notebook, de 19v . Acredito que possa ligar pois já que é um motor não terei problemas com uma diferença de 7v desde que eu não deixe ele ligado por muito tempo. O que vocês acham ?

Yago, protótipo é isso aí mesmo. Apenas alguns detalhes de minha experiência de vida para tentar lhe ajudar.

1) Pelo visto você aproveitará a condutividade da água para atuar as entradas, então, obviamente que essa água tem que conter característica condutivas;

2) Para uma solução definitiva o nível DC dos sensores criam um zinabre nos sensores. Existem reles de nível que lhe oferecem um sistema apropriado de medição e dois contatos (nível alto e baixo) para você integrar nas entradas do Arduíno;

3) Com relação a tensão do motor versus a sua fonte disponível, é um importante saber a corrente que esse motor consome e ver se essa fonte suporta. A elevação de tensão pode ser prejudicial. Por que não pega uma bateria de carro para deixar o protótipo mas adequado?

Atte.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço