Tanque de agua basado en Arduino: nivel y caudal (corte automá co)
Tanque de agua basado en Arduino: nivel y caudal (corte automá co)
Publicado en12/10/2020por cacpnrj
Tiempo de lectura: 3 minutos
Esta idea de proyecto explica cómo controlar automá camente el funcionamiento de la bomba
de agua según el nivel de agua del tanque y el caudal.
Un sensor ultrasónico detecta el nivel del agua y enciende la bomba si el nivel del agua está por
debajo del 25%.
El caudal no se puede determinar inicialmente porque inicialmente no hay flujo de agua a
través del sensor de flujo de agua.
Por lo tanto, se fijó el límite del nivel del 30%.
Si el nivel del agua está por encima del 30 % y el caudal de agua es inferior a 0,5 litros/min, el
relé permanecerá en la posición NO (normalmente abierto) y el suministro de energía al motor
de la bomba permanecerá cortado.
Si el nivel del agua es superior al 30 % y el caudal de agua es superior a 0,5 litros/min, el relé
funciona y se suministrará energía al motor de la bomba. (Para proteger el motor de la bomba)
Si el nivel del agua alcanza el 95%, el relé desconectará la alimentación del motor de la bomba,
por lo que no habrá fugas de agua.
El nivel del agua (siempre) y el caudal (solo cuando el agua fluye a través del sensor) se
muestran en la pantalla LCD. De esta manera, el usuario puede controlar el nivel del agua y el
caudal.
Nota: antes de construir este proyecto, tenga en cuenta los componentes u lizados y sus
capacidades.
Herramientas y componentes
1 x Arduino Nano
1 x Relé 5V/230V 1Hp
1 x Sensor ultrasónico (HC-SR04)
1 x Sensor de caudal de agua (YF S201)
1 x Módulo LCD 16×2
1 x Potenciómetro de 10K ohmios
1 x Bomba de agua 0,5 HP
1 x Tanque de agua de 500 litros
Tuberías de PVC de 1/2" (para sensor de caudal de agua, tanque y bomba de agua)
Accesorios para tuberías de PVC, válvulas y pegamento
El sistema de control es la principal preocupación de este proyecto. Por lo tanto, puede
disponer del equipamiento sanitario adecuado.
Componentes de conexión
Pin de señal del sensor de nivel de agua – Pin Arduino D12
Pin de señal de relé – Pin Arduino D13
Disparo ultrasónico. Pin – Arduino Pin D03
Eco ultrasónico Pin – Arduino Pin D02
Pin RS LCD – Arduino Pin A02
Pin EN LCD – Arduino Pin A03 Pin
D4 LCD – Arduino Pin A04 Pin D5 LCD –
Arduino Pin A05 Pin D6
LCD – Arduino Pin A06
Pin D7 LCD – Pin A07 de Arduino
Código Arduino
#incluir <CristalLiquido.h>
#incluir <HCSR04.h>
UltraSonicDistanceSensordistanciaSensor ( 3, 2 ) ;
intLCD ;
const int rs = A2, en = A3, d4 = A4, d5 = A5, d6 = A6, d7 = A7;
Lcd de cristal líquido ( rs, en, d4, d5, d6, d7 ) ;
byte Relé = 13;
Interrupción del sensor de bytes = 0;
sensor de bytesPin = 12;
Factor de calibración flotante = 7,5 ;
byte volá l pulseCount;
caudal flotante ;
flujo int sin signoMilliLitres;
total largo sin firmarMilliLitres;
empo an guo sin firmar ;
configuración nula ()
pinMode ( Relé, SALIDA ) ;
pinMode ( sensorPin, ENTRADA ) ;
escritura digital ( pin del sensor, ALTO ) ;
contador de pulsos = 0;
caudal = 0,0 ;
flujoMilliLitres = 0;
totalMilliLitros = 0;
empo an guo = 0;
adjuntarInterrupción ( interrupción de sensor, contador de pulsos, FALLING ) ;
bucle vacío ()
LCD = mapa ( [Link] () , 0, 95, 100, 0 ) ;
retraso ( 1 ) ;
LCD. comenzar ( 16, 2 ) ;
LCD. imprimir ( "NIVEL:" ) ;
LCD. imprimir ( LCD ) ;
LCD. imprimir ( "%" ) ;
retraso ( 500 ) ;
LCD. claro () ;
retraso ( 1 ) ;
si (( milis () - empoan guo ) > 1000 )
separar Interrupción ( interrupción de sensor ) ;
caudal = (( 1000,0 / ( milis () - empoan guo )) * contador de pulsos ) / factor de calibración;
empoan guo = milisegundos () ;
flujoMilliLitres = ( flujo/60 ) * 1000;
totalMilliLitres += flujoMilliLitres;
frac int sin firmar ;
LCD. imprimir ( "Caudal: " ) ;
LCD. imprimir ( tasa de flujo ) ;
LCD. imprimir ( "L/Min" ) ;
retraso ( 500 ) ;
LCD. claro () ;
retraso ( 1 ) ;
contador de pulsos = 0;
adjuntarInterrupción ( interrupción de sensor, contador de pulsos, FALLING ) ;
si ( LCD < = 25 ) {
escritura digital ( relé, ALTO ) ;
} si no ( LCD > = 95 ){
escritura digital ( relé, BAJO ) ;
} más si ( tasa de flujo < = 0,500 && LCD > =30 ){
escritura digital ( relé, BAJO ) ;
} más si ( tasa de flujo > = 0,500 && LCD > =30 ){
escritura digital ( relé, ALTO ) ;
} más si ( tasa de flujo < = 0,500 && LCD > =95 ){
escritura digital ( relé, BAJO ) ;
contador de pulsos vacío ()
pulsoCount++;
// Cambia el código según la profundidad del tanque y el caudal mínimo requerido.
Conecte siempre la fuente de alimentación principal si está absolutamente seguro de que los
componentes están conectados correctamente sin cambiar la polaridad y provocar un
cortocircuito en la conexión.
Código: