Boa tarde, sou nova na questão de utilização do Arduino e preciso de uma ajudinha.

Estou montando um trabalho que realiza a medição de nível numa caixa d'agua utilizando o Arduino; uso 3 sensores para monitorar o nível em uma caixa (a caixa principal) e um outro sensor em uma caixa que simula uma cisterna, e nesta fica a bomba (esse sensor é pra evitar que a bomba trabalhe sem água).

Os sensores são esses:

https://www.icos.com.br/SensorDeNivel/LA16M40/

O problema é o seguinte: a bomba deve desligar somente quando a água atingir o sensor de nível máximo, e ligar quando a água chegar no sensor de nível médio. Isso é pra evitar que a bomba fique ligando e desligando cada vez que o sensor de nível máximo abrir seu contato. Porém, não sei como passar isso pra programação.

Alguém pode me ajudar?

Exibições: 1673

Responder esta

Respostas a este tópico

Você precisa do esquema elétrico de ligação alem da programação?

Abs.

não não. Somente dessa parte da programação. Vou colocar aqui a programação que fiz:

#include <LiquidCrystal.h> // Inclui a biblioteca do display LCD.
LiquidCrystal lcd (12,11,5,4,3,2); // Configura os pinos do Arduino que farão comunicação com o display.
int sensor1 = 7; // Sensor de nível mínimo da caixa d'água.
int sensor2 = 8; // Sensor de nível intermediário da caixa d'água.
int sensor3 = 9; //Sensor de nível cheio da caixa d'água.
int sensor4 = 10; // Sensor da cisterna. Evita que a bomba funcione a seco.
int bomba = 6;

void setup() {
lcd.begin (16,2); // Define que o display é 16x2 (2 linhas com 16 caracteres cada).
lcd.setCursor (0,0); // Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD.
lcd.print ("Nivel Agua"); // Escreve no LCD "Nivel de agua".
delay(1000);
pinMode (sensor1, INPUT); // Configura o Sensor como entrada.
pinMode (sensor2, INPUT);
pinMode (sensor3, INPUT);
pinMode (sensor4, INPUT);
pinMode (bomba, OUTPUT); // Configura a bomba como saída.
}

void loop() {
int estado2 = digitalRead (sensor1); // Lê o estado lógico do sensor1.
if (estado2 == LOW) {
digitalWrite (bomba, HIGH);} // Se o nível lógico for zero (desligado), a bomba deverá ser acionada.
else {
lcd.setCursor (4,1);
lcd.print ("MINIMO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível no mínimo.

int estado3 = digitalRead (sensor2); // Lê o estado lógico do sensor2.
if (estado3 == LOW){
digitalWrite (bomba, HIGH);} // Se o nível lógico for zero (desligado), a bomba deverá ser acionada.
else {
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Nivel agua");
lcd.setCursor (4,1);
lcd.print ("MEDIO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível intermediário.

int estado4 = digitalRead (sensor3); // Lê o estado lógico do sensor3.
if (estado4 == HIGH) {
digitalWrite (bomba, LOW);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Nivel agua");
lcd.setCursor (5,1);
lcd.print ("CHEIO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível cheio.

int estado1 = digitalRead (sensor4); // Lê o estado lógico do sensor4 (sensor da bomba).
if (estado1 == LOW) { // Se o nível lógico for zero, a bomba deverá ser desligada
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Nivel agua");
lcd.setCursor (2,1);
lcd.print ("CAIXA VAZIA"); // Imprimir na tela que a cisterna está vazia
digitalWrite (bomba,LOW);}

delay(1000);

}

Veja este video no meu canal, se for isso o que quer somente deve adaptar o LCD que é coisa simples.

https://www.youtube.com/watch?v=6RIK9IwKnYs&feature=youtu.be

A bomba somente ira ligar se existir a condição:
Cisterna esta cheia.
Sensor caixa alta médio fechado.
Sensor caixa alta máximo fechado

Qualquer outra condição bomba não liga.

Posso adaptar seu code se quiser.

Abs.

Consegui fazer ela funcionar. Na vdd, já estava funcionando do jeito que eu queria, descobri quando montei a ligação. Tava testando no proteua e lá não mostrava certinho. O único problema agora é que a menagem "caixa vazia" embaralha com a msg "minimo". 

Será que é só mexer no delay?

Legal!

Tente isso, coloque depois do print lcd ("XXXX")

                                                 print lcd ("          ") // limpa msg anterior

Veja se da certo,  note que o espaço em branco dever ter a mesma quantidade de caracteres que a frases.

Tenho uma duvida, tenho um projeto parecido com o seu, porem quero que a bomba só seja ligada quando atingir o nível minimo e só seja desligada quando chegar o nível máximo, minha duvida é em relação ao código fonte.

Poste sua duvida, ou seu código, e vemos como ajudar.

Abs.

Olá Carlos. postei o código em anexo, 
tenho 2 bombas ligadas a cisterna para abastecer um reservatório superior, elas devem ao chegar o nível minimo ser acionada 1 bomba por vez alternando a cada 15 segundos, a alternância está sendo executada com esse código que postei, o código parece está correto, porem não está obedecendo a condição para acionamento das bombas, mesmo se eu desativar os sensores as bombas ficam sempre ligadas alternando entre si.

Se puder me ajudar eu agradeço.

Anexos

Olá Johnny,

Assim que tiver tempo hoje dou uma olhada no seu code, se puder lhe ajudar não tenha duvidas que o farei.

Abs.

Dayanne A.F.,

Estou fazendo trabalho igual este seu gostaria de saber se você tem o esquema elétrico do mesmo?

Para me ajudar?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço