Bom dia amigos

e Meu primeiro post aqui no lab, mais ja agradeço a todos vcs pois ja aprendi muito com vcs

Meu caso e o seguinte 

tenho o seguinte projeto 

Tenho 2 sensores de nivel de agua horizontais dentro da minha caixa dagua 

desse modelo

LINK REMOVIDO POR VIOLAR OS TERMOS DE SERVIÇO

coloque um na parte inferiror da caixa dagua e outro na parte superior da caixa dagua, eles monitora se caixa esta com nivel baixo ou alto e ligam um relay ,

escrevi no codigo que quando o sensor de agua alta estiver Low ele verifica sensor de agua baixa se ele tambem estiver Low ele aciona o relay para que a bomba ligue 

para desligar e o contrario

quando o sensor de agua alta estiver HIGH ele verifica sensor de agua baixa se ele tambem estiver HIGH ele desliga o relay para que a bomba desligue e desse jeito a caixa nao transborde

ate ai tudo bem

ai vem minha duvida eu querro colocar um botão   para que  possa ligar a bomba independente do nivel da agua estar muito baixo so que euquerro que o sensor de nivel de agua desligue a bomba quando a caixa estiver quase transbordando ( como ja ocorre atuamente ) idenpendente da bomba ter sido acionada pelo sensor ou pelo botao

como poderia fazer isso no codigo do programa ?

segue meu codigo funcionando com os sensores

aem cada sensor uso um resistor de 10k junto ao gnd

int pinAguaBaixa = 10; // Sensor de Augua Baixo
int pinAguaAlta = 11; // Sensor de Augua Alto
int pinBOMBA = 12; // Relay da Bomba

void setup(){

pinMode(pinAguaBaixa,INPUT);
pinMode(pinAguaAlta,INPUT);
pinMode(pinBOMBA,OUTPUT);
}
void loop(){
if(digitalRead(pinAguaBaixa)==HIGH)
{
if(digitalRead(pinAguaAlta)==HIGH){
digitalWrite(pinBOMBA,LOW);
}
}
if(digitalRead(pinAguaAlta)==LOW)
{
if(digitalRead(pinAguaBaixa)==LOW){
digitalWrite(pinBOMBA,HIGH);
}
}

Exibições: 10203

Responder esta

Respostas a este tópico

Vai usar um Arduino porque deseja?

Seria muito mais simples e barato usar um circuito lógico (hardware).

estou no inicio de um projeto a ideia e controlar a bomba , depois iluminação externa e outros tudo no mesmo arduino e pode visualizar e controlar remotamente via web

Se um objetivo importante é controle via web, eu usaria um Raspberry Pi.

Acho que deve ficar mais barato e mais facil de implementar.

Voce não precisa de circuito lógico para isto. Apenas 2 sensores de nivel e uma chave liga desliga fazem isto. O unico problema é que seus sensores são para corrente baixa. Em casas que vendem bombas voce encontra sensores (+/-  R$ 35,00) com saidas NA e NF e que podem acionar diretamente a bomba. 

Pessoa agradeço a todos

consegui fazer o que eu queria 

Sei que não era necessario usar arduino "so pra isso " e que estou começando a brincar com ele e estou facinado com isso estou começando a automatizar coisas na minha casa usando ele na pratica

bem um ja foi agora a bomba que puxa agua da cisterna para caixa dagua esta no automatico e ainda tem a possibilidade de ligar ela no manual com o botao que adicionei kkkk

segue  o codigo


int pinAguaBaixa = 10; // Sensor de Agua Baixo
int pinAguaAlta = 11; // Sensor de Agua Alto
int pinBOMBA = 12; // Relay da Bomba
int botao=8; // botão no pino 12
int estadobotao = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do botao
int estadodabomba = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do bomba
int alta = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua alto
int baixa = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua baixo

void setup(){
Serial.begin(9600);
pinMode(pinAguaBaixa,INPUT);
pinMode(pinAguaAlta,INPUT);
pinMode(pinBOMBA,OUTPUT);
pinMode(botao, OUTPUT);
}

void loop(){

estadobotao = digitalRead(botao);
alta = digitalRead(pinAguaAlta);
baixa = digitalRead(pinAguaBaixa);


// Lendo os sensores e escrevendo na variavel estado da bomba
if(digitalRead(pinAguaBaixa)==HIGH)
{
if(digitalRead(pinAguaAlta)==HIGH){
// digitalWrite(pinBOMBA,LOW);
estadodabomba = LOW;
delay(100);
}
}


if(digitalRead(pinAguaAlta)==LOW)
{
if(digitalRead(pinAguaBaixa)==LOW){
// digitalWrite(pinBOMBA,HIGH);
estadodabomba = HIGH;
delay(100);
}
}

// Mudando o estado da Bomba caso o botao seja pressionado
if (estadobotao == HIGH )
{(alta == LOW );
{
estadodabomba = !estadodabomba;
delay(1000); // esse delay de 1 segundo e importante pois sem ele o botao fica louco
}
}

// Ligando ou desligando a bomba de acordo com o estado da variavel estado da Bomba

if (estadodabomba == LOW) {
digitalWrite(pinBOMBA,LOW); //Desliga a bomba caso a variavel estadodabomba seja 0.
}
//
if (estadodabomba == HIGH)
{
digitalWrite(pinBOMBA,HIGH); //liga a bomba caso a variavel estadodabomba seja 1
}

// Lendo o estado da Bomba e apresentado no monitor serial
Serial.println(estadodabomba);

}

Pessoal Melhorei o Codigo Para exibir o estado da bomba e da Caixa Dagua

Estou usando monitor serial ( meu display de lcd ta ferrado estou esperando chegar o novo da china kkk )

segue oi codigo

/*
Programa para Controle de agua da caixa Dagua e acionar a Bomba
estou usando serial monitor para exibir o estado da bomba so para ter
documentado a ideia e usar um lcd e adicionar o coda em cada if */

int pinAguaBaixa = 10; // Sensor de Agua Baixo
int pinAguaAlta = 11; // Sensor de Agua Alto
int pinBOMBA = 12; // Relay da Bomba
int botao=8; // botão no pino 12
int estadobotao = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do botao
int estadodabomba = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do bomba
int alta = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua alto
int baixa = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua baixo


void setup(){
Serial.begin(9600);
pinMode(pinAguaBaixa,INPUT);
pinMode(pinAguaAlta,INPUT);
pinMode(pinBOMBA,OUTPUT);
pinMode(botao, OUTPUT);
}

void loop()
{

estadobotao = digitalRead(botao);
alta = digitalRead(pinAguaAlta);
baixa = digitalRead(pinAguaBaixa);


// Lendo os sensores e escrevendo na variavel estado da bomba ( Caixa Vazia )
// Exibindo o estado da Bomba e da Caixa Dagua ( Monitor serial )
if(digitalRead(pinAguaAlta)==LOW)
{
if(digitalRead(pinAguaBaixa)==LOW)
{
// digitalWrite(pinBOMBA,HIGH);
estadodabomba = HIGH;
Serial.println ("Caixa Dagua esta Vazia Bomba Ligada") ;
delay(100);
}
}

// Mudando o estado da Bomba caso o botao seja pressionado
if (estadobotao == HIGH )
{
(alta == LOW );
{
estadodabomba = !estadodabomba;
delay(1000); // esse delay de 1 segundo e importante pois sem ele o botao fica louco
}
}

//if (estadobotao == HIGH )
//{(digitalRead(pinAguaAlta)==LOW);
//{
//estadodabomba = !estadodabomba;
//delay(1000);
//}
//}

// Lendo os sensores e escrevendo na variavel estado da bomba ( Caixa Cheia )
// Exibindo o estado da Bomba e da Caixa Dagua ( Monitor serial )
if(digitalRead(pinAguaBaixa)==HIGH)
{
if(digitalRead(pinAguaAlta)==HIGH)
{
// digitalWrite(pinBOMBA,LOW);
estadodabomba = LOW;
Serial.println ("Caixa Dagua esta Cheia Bomba Desligada") ;
delay(50);
}
}

// Exibindo o estado da Bomba e da Caixa Dagua ( Monitor serial )
if(digitalRead(pinAguaBaixa)==HIGH)
{
if(digitalRead(pinAguaAlta)==LOW)
{
if (estadodabomba==LOW)
{
// digitalWrite(pinBOMBA,LOW);

Serial.println ("Caixa Dagua esta Esvaziando Bomba Desligada") ;
delay(50);
}
}
}


// Exibindo o estado da Bomba e da Caixa Dagua ( Monitor serial )
if(digitalRead(pinAguaBaixa)==HIGH)
{
if(digitalRead(pinAguaAlta)==LOW)
{
if (estadodabomba==HIGH)
{
// digitalWrite(pinBOMBA,LOW);

Serial.println ("Caixa Dagua esta Enchendo Bomba Ligada") ;
delay(50);
}
}
}
// Ligando ou desligando a bomba de acordo com o estado da variavel estado da Bomba

if (estadodabomba == LOW)
{
digitalWrite(pinBOMBA,LOW); //Desliga a bomba caso a variavel estadodabomba seja 0.
}
//
if (estadodabomba == HIGH)
{
digitalWrite(pinBOMBA,HIGH); //liga a bomba caso a variavel estadodabomba seja 1
}

// Lendo o estado da Bomba e apresentado no monitor serial
// Serial.println(estadodabomba);

}

 

Jeferson, estou fazendo um projeto parecido. Vc poderia me ajudar?
Pois sou iniciante em arduino e não faço a minima ideia dos componentes necessários
Sei que vou usar 3 sensores de nível de água, neles é preciso usar resistores?
E a bomba dagua, precisa utilizar modulo rele ou alguma outra coisa?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço