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);
}
}
Tags:
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);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por