- Components
- Mòdul de sensor ultrasònic
- Funcionament del controlador automàtic de nivell d'aigua
- Diagrama del circuit i explicació
- Programació
En aquest projecte d’indicadors i controladors automàtics de nivell d’aigua basats en Arduino, mesurarem el nivell de l’aigua mitjançant sensors ultrasònics. El principi bàsic de la mesura de distància per ultrasons es basa en ECHO. Quan les ones sonores es transmeten a l’entorn, tornen a l’origen com a ECHO després de copejar qualsevol obstacle. Per tant, només hem de calcular el seu temps de viatge d’ambdós sons: el temps de sortida i el temps de retorn a l’origen després d’haver copejat qualsevol obstacle. I després d'alguns càlculs podem obtenir un resultat que és la distància. Aquest concepte s’utilitza en el nostre projecte de control d’aigua on la bomba del motor d’aigua s’activa automàticament quan el nivell d’aigua del dipòsit es redueix. També podeu consultar aquest senzill circuit indicador de nivell d’aigua per obtenir una versió més senzilla d’aquest projecte.
Components
- Arduino Uno
- Mòdul de sensor ultrasònic
- LCD de 16x2
- Relleu de 6 volts
- ULN2003
- 7806
- PVT
- Filferro de coure
- Bateria de 9 volts o adaptador de 12 volts
- Connexió de cables
Mòdul de sensor ultrasònic

El sensor d'ultrasons HC-SR04 s'utilitza per mesurar la distància entre 2cm-400cm amb una precisió de 3mm. El mòdul sensor està format per transmissor ultrasònic, receptor i circuit de control.

El mòdul del sensor d’ultrasons funciona sobre el fenomen natural de RESSO del so. S’envia un pols durant uns 10us per activar el mòdul. Després, el mòdul envia automàticament 8 cicles de senyal d'ultrasons de 40 KHz i en comprova el ressò. El senyal després de copejar amb un obstacle torna enrere i és capturat pel receptor. Així, la distància de l'obstacle al sensor es calcula simplement mitjançant la fórmula donada com
Distància = (temps x velocitat) / 2.
Aquí hem dividit el producte de la velocitat i el temps per 2 perquè el temps és el temps total que es va trigar a arribar a l’obstacle i a tornar enrere. Per tant, el temps per arribar a l'obstacle és només la meitat del temps total que es triga.
Funcionament del controlador automàtic de nivell d'aigua
El treball d’aquest projecte és molt senzill, hem utilitzat un mòdul de sensor ultrasònic que envia les ones sonores al dipòsit d’aigua i detecta la reflexió de les ones sonores que és ECHO. Primer de tot, hem d’activar el mòdul del sensor d’ultrasons per transmetre el senyal mitjançant Arduino i després esperar a rebre ECHO. Arduino llegeix el temps transcorregut entre el desencadenament i l’ECO rebut. Sabem que la velocitat del so ronda els 340 m / s. de manera que podem calcular la distància utilitzant la fórmula donada:
Distància = (temps de recorregut / 2) * velocitat del so
On la velocitat del so és d'aproximadament 340 m per segon.
Mitjançant aquest mètode obtenim la distància del sensor a la superfície de l’aigua. Després d'això, hem de calcular el nivell de l'aigua.
Ara hem de calcular la longitud total del dipòsit d’aigua. Com sabem la longitud del dipòsit d’aigua, podem calcular el nivell d’aigua restant la distància resultant provinent dels ultrasons de la longitud total del dipòsit. I aconseguirem la distància del nivell de l’aigua. Ara podem convertir aquest nivell d’aigua al percentatge d’aigua i el podem mostrar a la pantalla LCD. El funcionament del projecte complet d’indicadors de nivell d’aigua es mostra al diagrama de blocs següent.

Diagrama del circuit i explicació
Com es mostra al circuit del controlador de nivell d'aigua que es mostra a continuació, els pins "activadors" i "eco" del mòdul del sensor d'ultrasons estan connectats directament als pins 10 i 11 de l'arduino. Una pantalla LCD de 16x2 està connectada amb arduino en mode de 4 bits. Els pins de control RS, RW i En estan connectats directament al pin 7 d’arduino, GND i 6. I el pin de dades D4-D7 està connectat a 5, 4, 3 i 2 d’arduino i el buzzer està connectat al pin 12. El relé de 6 volts és també es connecta al pin 8 d'Arduino mitjançant ULN2003 per activar o apagar la bomba del motor d'aigua. També es fa servir un regulador de voltatge 7805 per proporcionar 5 volts al relé i al circuit restant.

En aquest circuit, el mòdul del sensor d'ultrasons es col·loca a la part superior del cubell (dipòsit d'aigua) per demostrar-lo. Aquest mòdul de sensor llegirà la distància entre el mòdul de sensor i la superfície de l'aigua i mostrarà la distància a la pantalla LCD amb el missatge "L'espai d'aigua al tanc és:". Vol dir que estem mostrant aquí un lloc buit de distància o volum per a l'aigua en lloc del nivell de l'aigua. Gràcies a aquesta funcionalitat, podem utilitzar aquest sistema en qualsevol dipòsit d’aigua. Quan el nivell d’aigua buit arriba a una distància d’uns 30 cm, Arduino engega la bomba d’aigua conduint el relé. I ara, la pantalla LCD mostrarà "Nivell d'aigua BAIX" "El motor s'ha engegat" i el LED d'estat del relé començarà a brillar
Ara, si l'espai buit arriba a una distància aproximada de 12 cm, l'arduino s'apaga el relé i la pantalla LCD mostrarà "El tanc està ple" "El motor està apagat". El timbre també emet un so durant algun temps i el LED d’estat del relé s’apagarà.
Programació
Per programar Arduino per al controlador de nivell d’aigua, primer definim tots els pins que farem servir en el projecte per a la interfície de dispositius externs com relés, LCD, timbre, etc.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
A continuació, inicialitzem tots els dispositius que s’utilitzen al projecte.
lcd.begin (16,2); pinMode (activador, OUTPUT); pinMode (eco, INPUT); pinMode (motor, SORTIDA); pinMode (buzzer, OUTPUT); lcd.print ("Nivell d'aigua"); lcd.setCursor (0,1); lcd.print ("Indicador"); endarreriment (2000);
Ara inicialitzeu el mòdul del sensor d’ultrasons i llegiu el temps d’enviament i recepció d’ones o sons d’ultrasons mitjançant pulseIn (pin). A continuació, feu càlculs i mostreu el resultat a la pantalla LCD de 16x2 mitjançant les funcions adequades.
digitalWrite (activador, ALT); delayMicroseconds (10); digitalWrite (activador, BAIX); delayMicroseconds (2); temps = pulseIn (eco, HIGH); distància = temps * 340/20000; lcd.clear (); lcd.print ("L'aigua a l'espai"); lcd.setCursor (0,1); lcd.print ("El tanc és:"); lcd.print (distància); lcd.print ("Cm");
Després d'això, comprovem les condicions si el dipòsit d'aigua està ple o el nivell de l'aigua és BAIX, i prenem mesures en conseqüència.
if (distància <12 && temp == 0) {digitalWrite (motor, BAIX); digitalWrite (buzzer, HIGH); lcd.clear (); lcd.print ("Dipòsit d'aigua ple"); lcd.setCursor (0,1); lcd.print ("Motor apagat"); endarreriment (2000); digitalWrite (brunzidor, BAIX); retard (3000); temp = 1; } else if (distància <12 && temp == 1) {digitalWrite (motor, BAIX); lcd.clear (); lcd.print ("Dipòsit d'aigua ple"); lcd.setCursor (0,1); lcd.print ("Motor apagat"); retard (5000); }
