Tanque de água baseado em Arduino – Nível e taxa de fluxo (corte automático)
Esta ideia de projeto explica como controlar automaticamente a operação da bomba d’água de acordo com o nível de água do tanque e a vazão.
Um sensor ultrassônico detecta o nível de água e liga a bomba se o nível de água estiver abaixo de 25%.
A taxa de fluxo não pode ser determinada inicialmente, porque inicialmente não há fluxo de água através do sensor de fluxo de água.
Portanto, o limite de nível de 30% foi definido.
Se o nível de água estiver acima de 30% e a vazão de água abaixo de 0,5 litro/min, o relé permanecerá na posição NÃO (normalmente aberto) e a fonte de alimentação para o motor da bomba permanecerá desligada.
Se o nível de água estiver acima de 30% e a vazão de água acima de 0,5 litro / min, o relé opera e a energia será fornecida ao motor da bomba. (Para proteger o motor da bomba)
Se o nível de água atingir 95%, o relé desconectará a energia do motor da bomba, portanto, não haverá vazamento de água.
O nível de água (sempre) e a vazão (somente quando a água flui através do sensor) são exibidos na tela LCD. Dessa forma, o usuário pode monitorar o nível de água e a vazão.
Nota: Antes de construir este projeto, esteja ciente dos componentes usados e suas capacidades.
Ferramentas e componentes
1 x Arduino Nano
1 x 5V/230V 1Hp Relé
1 x Sensor ultrassônico (HC-SR04)
1 x Sensor de taxa de fluxo de água (YF S201)
1 x Módulo LCD 16×2
1 x Potenciômetro 10K Ohm
1 x bomba de água 0,5 HP
1 x Tanque de água de 500 litros
Tubos de PVC de 1/2 “(para sensor de taxa de fluxo de água, tanque e bomba de água)
Acessórios, válvulas e cola para tubos de PVC
O sistema de controle é a principal preocupação deste projeto. Portanto, você pode organizar o equipamento de encanamento adequado de acordo.
Componentes de conexão
Pino de sinal do sensor de nível de água – Arduino Pino D12
Pino de sinal de relé – Arduino Pino D13
Ultrasonic Trig. Pino – Arduino Pino D03
Ultrasonic Echo Pino – Arduino Pino D02
Pino RS LCD – Arduino Pino A02
Pino EN LCD – Arduino Pino A03
Pino D4 LCD – Arduino Pino A04
Pino D5 LCD – Arduino Pino A05
Pino D6 LCD – Arduino Pino A06
Pino D7 LCD – Arduino Pino A07
Código Arduino
#include <LiquidCrystal.h> #include <HCSR04.h> UltraSonicDistanceSensor distanceSensor(3, 2); int LCD; const int rs = A2, en = A3, d4 = A4, d5 = A5, d6 = A6, d7 = A7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); byte Relay = 13; byte sensorInterrupt = 0; byte sensorPin = 12; float calibrationFactor = 7.5; volatile byte pulseCount; float flowRate; unsigned int flowMilliLitres; unsigned long totalMilliLitres; unsigned long oldTime; void setup() { pinMode(Relay, OUTPUT); pinMode(sensorPin, INPUT); digitalWrite(sensorPin, HIGH); pulseCount = 0; flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime = 0; attachInterrupt(sensorInterrupt, pulseCounter, FALLING); } void loop() { LCD = map( distanceSensor.measureDistanceCm(), 0, 95, 100, 0); delay(1); lcd.begin(16, 2); lcd.print("NÍVEL : "); lcd.print(LCD); lcd.print("%"); delay(500); lcd.clear(); delay(1); if((millis() - oldTime) > 1000) { detachInterrupt(sensorInterrupt); flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor; oldTime = millis(); flowMilliLitres = (flowRate / 60) * 1000; totalMilliLitres += flowMilliLitres; unsigned int frac; lcd.print("Quociente de vazão: "); lcd.print(flowRate); lcd.print("L/Min"); delay(500); lcd.clear(); delay(1); pulseCount = 0; attachInterrupt(sensorInterrupt, pulseCounter, FALLING); } if (LCD <= 25){ digitalWrite(Relay,HIGH); } else if(LCD >= 95){ digitalWrite(Relay,LOW); } else if(flowRate <= 0.500 && LCD >=30){ digitalWrite(Relay,LOW); } else if(flowRate >= 0.500 && LCD >=30){ digitalWrite(Relay,HIGH); } else if(flowRate <= 0.500 && LCD >=95){ digitalWrite(Relay,LOW); } } void pulseCounter() { pulseCount++; }
// Altere o código de acordo com a profundidade do tanque e a vazão mínima necessária.
Sempre conecte a fonte de alimentação principal se tiver certeza absoluta de que os componentes estão conectados corretamente sem alterar a polaridade e causar curto-circuito na ligação.
Mesmo que pareça que não há nada de errado: VERIFIQUE DUPLA TUDO !!