- Componentes
- Módulo de sensor ultrasónico
- Funcionamiento del controlador automático de nivel de agua
- Diagrama de circuito y explicación
- Programación
En este proyecto de controlador e indicador automático de nivel de agua basado en Arduino, vamos a medir el nivel del agua mediante el uso de sensores ultrasónicos. El principio básico de la medición de distancia por ultrasonidos se basa en ECHO. Cuando las ondas sonoras se transmiten en el entorno, vuelven al origen como ECHO después de chocar con cualquier obstáculo. Por lo tanto, solo tenemos que calcular el tiempo de viaje de ambos sonidos, el tiempo de salida y el tiempo de regreso al origen después de chocar con cualquier obstáculo. Y después de algunos cálculos podemos obtener un resultado que es la distancia. Este concepto se utiliza en nuestro proyecto de controlador de agua donde la bomba del motor de agua se enciende automáticamente cuando el nivel de agua en el tanque es bajo. También puede consultar este circuito indicador de nivel de agua simple para obtener una versión más simple de este proyecto.
Componentes
- Arduino Uno
- Módulo sensor ultrasónico
- LCD de 16x2
- Relé de 6 voltios
- ULN2003
- 7806
- PVT
- Alambre de cobre
- Batería de 9 voltios o 12 voltadaptor
- Cables de conexión
Módulo de sensor ultrasónico
El sensor ultrasónico HC-SR04 se utiliza para medir distancias en un rango de 2 cm a 400 cm con una precisión de 3 mm. El módulo sensor consta de transmisor ultrasónico, receptor y circuito de control.
El módulo de sensor ultrasónico trabaja sobre el fenómeno natural de ECHO del sonido. Se envía un pulso de aproximadamente 10us para activar el módulo. Después de lo cual, el módulo envía automáticamente 8 ciclos de señal de ultrasonido de 40 KHz y verifica su eco. La señal después de chocar con un obstáculo regresa y es capturada por el receptor. Por lo tanto, la distancia del obstáculo al sensor se calcula simplemente mediante la fórmula dada como
Distancia = (tiempo x velocidad) / 2.
Aquí hemos dividido el producto de la velocidad y el tiempo por 2 porque el tiempo es el tiempo total que tomó alcanzar el obstáculo y regresar. Por lo tanto, el tiempo para alcanzar el obstáculo es solo la mitad del tiempo total necesario.
Funcionamiento del controlador automático de nivel de agua
El trabajo de este proyecto es muy simple, hemos utilizado un módulo sensor ultrasónico que envía las ondas sonoras en el tanque de agua y detecta el reflejo de las ondas sonoras que es ECHO. En primer lugar, debemos activar el módulo del sensor ultrasónico para transmitir la señal usando Arduino y luego esperar a recibir ECHO. Arduino lee el tiempo entre el disparo y el ECHO recibido. Sabemos que la velocidad del sonido ronda los 340 m / s. entonces podemos calcular la distancia usando la fórmula dada:
Distancia = (tiempo de viaje / 2) * velocidad del sonido
Donde la velocidad del sonido es de aproximadamente 340 m por segundo.
Al usar estos métodos, obtenemos la distancia del sensor a la superficie del agua. Después necesitamos calcular el nivel del agua.
Ahora necesitamos calcular la longitud total del tanque de agua. Como sabemos la longitud del tanque de agua, podemos calcular el nivel del agua restando la distancia resultante del ultrasonido de la longitud total del tanque. Y obtendremos la distancia del nivel del agua. Ahora podemos convertir este nivel de agua en porcentaje de agua y mostrarlo en la pantalla LCD. El funcionamiento del proyecto completo del indicador de nivel de agua se muestra en el diagrama de bloques a continuación.
Diagrama de circuito y explicación
Como se muestra en el circuito del controlador de nivel de agua que se muestra a continuación, los pines "disparador" y "eco" del módulo del sensor ultrasónico están conectados directamente a los pines 10 y 11 del arduino. Una pantalla LCD de 16x2 está conectada con arduino en modo de 4 bits. Los pines de control RS, RW y En están conectados directamente a los pines 7, GND y 6 de arduino. también conectado en el pin 8 de arduino a través de ULN2003 para encender o apagar la bomba del motor de agua. También se utiliza un regulador de voltaje 7805 para proporcionar 5 voltios al relé y al circuito restante.
En este circuito, el módulo del sensor ultrasónico se coloca en la parte superior del cubo (tanque de agua) para la demostración. Este módulo sensor leerá la distancia entre el módulo sensor y la superficie del agua, y mostrará la distancia en la pantalla LCD con el mensaje "El espacio de agua en el tanque es:". Significa que aquí estamos mostrando un lugar vacío de distancia o volumen para el agua en lugar del nivel del agua. Debido a esta funcionalidad podemos utilizar este sistema en cualquier tanque de agua. Cuando el nivel de agua vacía alcanza una distancia de unos 30 cm, Arduino enciende la bomba de agua accionando el relé. Y ahora la pantalla LCD mostrará "Nivel de agua bajo", "Motor encendido", y el LED de estado del relé comenzará a brillar.
Ahora, si el espacio vacío alcanza una distancia de unos 12 cm, arduino apaga el relé y la pantalla LCD mostrará "El tanque está lleno", "Motor apagado". El zumbador también emitirá un pitido durante algún tiempo y el LED de estado del relé se apagará.
Programación
Para programar Arduino para el controlador de nivel de agua, primero definimos todos los pines que vamos a usar en el proyecto para conectar dispositivos externos como relé, LCD, zumbador, etc.
# definir disparador 10 # definir eco 11 # definir motor 8 # definir zumbador 12
Luego inicializamos todos los dispositivos usados en el proyecto.
lcd.begin (16,2); pinMode (disparador, SALIDA); pinMode (eco, ENTRADA); pinMode (motor, SALIDA); pinMode (zumbador, SALIDA); lcd.print ("Nivel del agua"); lcd.setCursor (0,1); lcd.print ("Indicador"); retraso (2000);
Ahora inicialice el módulo del sensor ultrasónico y lea el tiempo de envío y recepción de ondas ultrasónicas o sonido utilizando pulseIn (pin). Luego realice cálculos y muestre el resultado en una pantalla LCD de 16x2 utilizando las funciones apropiadas.
digitalWrite (disparador, ALTO); delayMicroseconds (10); digitalWrite (disparador, BAJO); delayMicroseconds (2); tiempo = pulseIn (eco, ALTO); distancia = tiempo * 340/20000; lcd.clear (); lcd.print ("Espacio de agua en"); lcd.setCursor (0,1); lcd.print ("El tanque es:"); lcd.print (distancia); lcd.print ("Cm");
Después de eso, verificamos las condiciones si el tanque de agua está lleno o el nivel de agua es BAJO, y tomamos las medidas correspondientes.
if (distancia <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (zumbador, ALTO); lcd.clear (); lcd.print ("Tanque de agua lleno"); lcd.setCursor (0,1); lcd.print ("Motor apagado"); retraso (2000); digitalWrite (zumbador, BAJO); retraso (3000); temp = 1; } else if (distancia <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Tanque de agua lleno"); lcd.setCursor (0,1); lcd.print ("Motor apagado"); retraso (5000); }