- Componentes
- Módulo de sensor ultrassônico
- Funcionamento do controlador automático de nível de água
- Diagrama de Circuito e Explicação
- Programação
Neste projeto controlador e indicador de nível de água automático baseado em Arduino, iremos medir o nível de água usando sensores ultrassônicos. O princípio básico da medição de distância ultrassônica é baseado no ECHO. Quando as ondas sonoras são transmitidas no ambiente, elas retornam à origem como ECO após atingirem qualquer obstáculo. Portanto, temos que apenas calcular o tempo de viagem de ambos os sons significa tempo de saída e tempo de retorno à origem após colidir com qualquer obstáculo. E depois de alguns cálculos, podemos obter um resultado que é a distância. Este conceito é usado em nosso projeto de controlador de água, onde a bomba do motor de água é automaticamente ligada quando o nível de água no tanque fica baixo. Você também pode verificar este circuito indicador de nível de água simples para uma versão mais simples deste projeto.
Componentes
- Arduino Uno
- Módulo de sensor ultrassônico
- LCD 16x2
- Relé 6 Volt
- ULN2003
- 7806
- PVT
- Fio de cobre
- Bateria de 9 volts ou 12 voltadaptor
- Fios de conexão
Módulo de sensor ultrassônico
O sensor ultrassônico HC-SR04 é usado para medir distâncias na faixa de 2 a 400 cm com precisão de 3 mm. O módulo sensor consiste em um transmissor ultrassônico, receptor e circuito de controle.
O módulo do sensor ultrassônico funciona no fenômeno natural do ECO do som. Um pulso é enviado por cerca de 10us para acionar o módulo. Depois disso, o módulo envia automaticamente 8 ciclos de sinal de ultrassom de 40 KHz e verifica seu eco. O sinal após colidir com um obstáculo retorna e é capturado pelo receptor. Assim, a distância do obstáculo do sensor é simplesmente calculada pela fórmula dada como
Distância = (tempo x velocidade) / 2.
Aqui dividimos o produto da velocidade e do tempo por 2 porque o tempo é o tempo total que levou para chegar ao obstáculo e voltar. Portanto, o tempo para alcançar o obstáculo é apenas metade do tempo total gasto.
Funcionamento do controlador automático de nível de água
O funcionamento deste projeto é muito simples, usamos um módulo de sensor ultrassônico que envia as ondas sonoras para o tanque de água e detecta a reflexão das ondas sonoras que é ECO. Em primeiro lugar, precisamos acionar o módulo do sensor ultrassônico para transmitir o sinal usando o Arduino e, em seguida, aguardar o recebimento do ECHO. O Arduino lê o tempo entre o disparo e o ECHO recebido. Sabemos que a velocidade do som está em torno de 340 m / s. para que possamos calcular a distância usando a fórmula dada:
Distância = (tempo de viagem / 2) * velocidade do som
Onde a velocidade do som é de aproximadamente 340m por segundo.
Usando este método, obtemos a distância do sensor à superfície da água. Depois disso, precisamos calcular o nível de água.
Agora precisamos calcular o comprimento total do tanque de água. Como sabemos o comprimento do tanque de água, podemos calcular o nível da água subtraindo a distância resultante do ultrassom do comprimento total do tanque. E obteremos a distância do nível de água. Agora podemos converter esse nível de água em porcentagem de água e exibi-lo no LCD. O funcionamento do projeto completo do indicador de nível de água é mostrado no diagrama de blocos abaixo.
Diagrama de Circuito e Explicação
Conforme mostrado no circuito do controlador de nível de água abaixo, os pinos de “gatilho” e “eco” do módulo do sensor ultrassônico são conectados diretamente aos pinos 10 e 11 do Arduino. Um LCD 16x2 é conectado ao arduino no modo de 4 bits. Os pinos de controle RS, RW e En estão diretamente conectados ao arduino pino 7, GND e 6. E o pino de dados D4-D7 é conectado a 5, 4, 3 e 2 do arduino, e o buzzer está conectado no pino 12. O relé de 6 volts está também conectado no pino 8 do arduino através do ULN2003 para ligar ou desligar a bomba do motor de água. Um regulador de tensão 7805 também é usado para fornecer 5 volts ao relé e ao circuito restante.
Neste circuito, o módulo do sensor ultrassônico é colocado no topo do balde (tanque de água) para demonstração. Este módulo sensor irá ler a distância entre o módulo sensor e a superfície da água, e irá mostrar a distância na tela LCD com a mensagem “O espaço da água no tanque é:”. Isso significa que estamos aqui mostrando um lugar vazio de distância ou volume de água em vez de nível de água. Devido a esta funcionalidade, podemos usar este sistema em qualquer caixa d'água. Quando o nível da água vazia atinge uma distância de cerca de 30 cm, o Arduino liga a bomba d'água acionando o relé. E agora o LCD mostrará "BAIXO Nível de água" "Motor ligado" e o LED de status do relé começará a brilhar
Agora, se o espaço vazio atingir uma distância de cerca de 12 cm, o Arduino DESLIGARÁ o relé e o LCD mostrará “Tanque cheio” “Motor Desligado”. A campainha também emite um bipe por algum tempo e o LED de status do relé APAGARÁ.
Programação
Para programar o Arduino para o controlador de nível de água, primeiro definimos todos os pinos que usaremos no projeto para fazer a interface de dispositivos externos como relé, LCD, campainha etc.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
Em seguida, inicializamos todos os dispositivos usados no projeto.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (eco, INPUT); pinMode (motor, OUTPUT); pinMode (buzzer, OUTPUT); lcd.print ("Nível da água"); lcd.setCursor (0,1); lcd.print ("Indicador"); atraso (2000);
Agora inicialize o módulo do sensor ultrassônico e leia o tempo de envio e recebimento de ondas ultrassônicas ou som usando pulseIn (pino). Em seguida, execute cálculos e exiba o resultado no LCD 16x2 usando as funções apropriadas.
digitalWrite (gatilho, HIGH); delayMicroseconds (10); digitalWrite (disparador, LOW); atrasoMicrosegundos (2); tempo = pulseIn (eco, HIGH); distância = tempo * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("O tanque é:"); lcd.print (distância); lcd.print ("Cm");
Depois disso, verificamos as condições se o tanque de água está cheio ou se o nível de água está BAIXO e tomamos as devidas providências.
if (distância <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (campainha, ALTO); lcd.clear (); lcd.print ("Tanque de água cheio"); lcd.setCursor (0,1); lcd.print ("Motor desligado"); atraso (2000); digitalWrite (campainha, LOW); atraso (3000); temp = 1; } else if (distance <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Tanque de água cheio"); lcd.setCursor (0,1); lcd.print ("Motor desligado"); atraso (5000); }