En este artículo, el Asistente nos dirá cómo hacer un sistema para monitorear y controlar el nivel del agua en un tanque. Es un sistema simple y confiable.
Sus características clave son las siguientes:
Monitoreo en tiempo real del nivel del agua.
Bomba automática de encendido / apagado.
Parada de emergencia de la bomba.
Herramientas y materiales:
-Arduino Pro mini
-Sensor ultrasónico HC-SR04;
- Módulo MAX485;
- Módulo LCD i2c;
LCD 1602;
- Microcontrolador ATTINY45 / 85;
- Regulador de voltaje LM7805;
Transistor NPN (2n3904);
-MOSFET de canal N IRFD024PBF;
Diodo 1N4007;
Conector de 5 pines;
Conector de 4 pines
-2 pin conector;
- Terminales con 2 contactos (azul) - 2 piezas;
- Terminal con 2 contactos (verde);
Jack DC (- 2 piezas)
-Jack de audio (macho / hembra) - 2 piezas;
- Resistencia 1 kOhm;
- Resistencia 10 kOhm - 3 piezas;
- Condensador 100 nF - 3 piezas;
Condensador 100 uF;
- Botón SMD, 6x3.5 mm;
-Conmutadores DIP (SPST 2) - 2 piezas;
- botón de encendido;
-Tumbler;
-12V DC relé;
-Contactor de relé;
- Fuente de alimentación CC 5 V (> 200 mA);
- Fuente de alimentación DC 12V (> 500 mA);
-Cajas para el caso de un tamaño adecuado;
-Sujetadores;
-Accesorios para soldar;
- destornillador
-Cable;
Paso uno: Unidad de sensor
Esta unidad mide el nivel del agua y envía datos al controlador principal. Tiene dos sensores para medir el nivel del agua. Uno es el sensor de distancia ultrasónico HC-SR04, los otros dos tornillos largos que sobresalen hacia afuera, como se muestra en la foto.
Para instalar los sensores, debe realizar los siguientes pasos:
Coloque el transductor ultrasónico boca abajo en la parte frontal de la cubierta cerca de la parte superior y marque los dos orificios para el transmisor y el receptor ultrasónico.
Corte agujeros y fije el sensor en su lugar con pegamento caliente.
Luego taladre dos agujeros con un diámetro de 3 mm con un espacio de 2-3 cm en el centro de la cubierta.
Inserte los pernos M3 largos con el terminal de alambre sujeto entre las dos arandelas en la parte posterior de la cubierta y apriete las tuercas M3 en el otro lado.
La unidad del sensor utiliza el ATTINY45 como el microcontrolador primario. Como se mencionó anteriormente, HC-SR04 se usa para medir el nivel del agua. Funciona midiendo la distancia desde la parte superior del tanque.
Además, el control se lleva a cabo utilizando dos pernos en el circuito, en el que está instalado el transistor. El microcontrolador lee los datos de ambos sensores y los envía al Arduino instalado en la unidad del controlador.
Primero, el maestro quería enviar datos a través de los módulos RF HC-12. Pero el rango de estos módulos no cumple con los requisitos.El asistente utilizó el convertidor MAX485 TTL a RS485 e hizo un pequeño elevador para instalar en lugar de los módulos HC-12.
El esquema y el enlace al tablero se pueden descargar en esta dirección.
La instalación es la siguiente:
HC-SR04 al circuito principal:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
Tornillos M3 al circuito principal:
Perno 1 - 5 V (CN1).
Perno 2 - 100 (CN1).
Módulo MAX485 (TX):
VCC - 5V (conector HC-12)
A - conector de audio de 1/4 de pulgada.
B - conector de audio de 1/4 de pulgada.
GND - GND (conector HC-12)
R0 - RX (conector HC-12)
RE - VCC (MAX485) o 5V.
DE - RE (abreviado como RE y DE).
DI - TX (conector HC-12).
Jack DC (conector P1):
Punta - 5V
Manga - GND
Paso dos: controlador
El funcionamiento del controlador es simple. Arduino se utiliza como el controlador principal. Recibe datos del sensor enviados desde la placa del transmisor a través del módulo max485. Tiene una pantalla LCD 1602 que muestra el nivel actual de agua y la operación de la bomba. Utiliza un relé de 12 V como interruptor para encender el contactor de relé. Tiene dos interruptores, uno para retroiluminar la pantalla LCD y otro para encender / apagar la bomba de emergencia.
Se encuentra un enlace al diagrama de circuito y al diseño de la placa de circuito impreso para el transmisor y el receptor aqui.
El módulo LCD i2c se suelda directamente a la pantalla LCD 1602. El puente de luz de fondo en el módulo i2c está conectado al interruptor para activar / desactivar. El botón de emergencia (grande) está conectado al circuito principal a través del conector P4.
Módulo LCD I2c al circuito principal (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Conexiones de contactor de relé:
A1 - 230 VAC1 (cero).
A2 - NO (contacto de relé).
S1 - 230 VAC1 (cero).
S2 - 230 VAC2 (fase)
L1 - Cable del motor de la bomba 1
L2 - Cable del motor de la bomba 2.
Conecte el contacto del relé COM a 230 VAC2 (línea).
Paso tres: software y programación
Ahora necesita programar los controladores en ambos dispositivos.
Para descargar el código a ATTINY45, descarga la biblioteca SoftwareSerial.h.
En la función Loop,
> Primero verifique si el tanque está lleno o no.
> Si está lleno, envía "255".
> Si no está lleno, verifica el nivel del agua con un sensor de sonido ultrasónico y transmite datos a través de la comunicación en serie.
Este programa utiliza la subfunción getwtrLvl () para obtener el nivel de agua actual. Primero, mide el tiempo que le toma al sensor transmitir y recibir ondas ultrasónicas. Entonces el tiempo se convierte en distancia usando la velocidad del sonido.
dist = pulseIn (echoPin, HIGH); // tiempo empleado por la onda sonora.
dist = dist / 28/2; // traduce el tiempo en distancia en cm
dist = dist * 1.25; // aquí 1.25 es el factor de corrección para superar el error de medición
retorno dist; // devuelve la distancia a la función de llamada
Ahora para Arduino.
En la función Loop:
> Primero se verifica si el botón de emergencia está presionado o no.
> Verificación del sensor. Parte del programa busca un error de sensor. es decir, si los datos recibidos no son válidos (<= 1) 5 veces, la pantalla muestra el error del sensor y la bomba se apaga.
> La siguiente parte muestra el nivel de agua actual y da un comando para la bomba 1 si el nivel de agua es pequeño, o 0 si es 100% (lleno).
Este programa utiliza dos subfunciones updtMotor () y getWaterLvl (). La función updtMotor () muestra el funcionamiento de la bomba en la pantalla LCD y también envía una señal al relé.
La función getWaterLvl primero verifica si hay algún error de conexión. Si la conexión entre el transmisor y el receptor no se establece durante el tiempo de espera (3000 ms). Muestra un error del sensor y apaga la bomba.
Cuando se restablece la conexión, se reanuda la operación.
Todo está listo, gracias al maestro por un interesante hecho en casa.