- Componenti
- Modulo sensore a ultrasuoni
- Funzionamento del regolatore automatico del livello dell'acqua
- Schema del circuito e spiegazione
- Programmazione
In questo progetto di controller e indicatore automatico del livello dell'acqua basato su Arduino misureremo il livello dell'acqua utilizzando sensori a ultrasuoni. Il principio di base della misurazione della distanza ad ultrasuoni si basa su ECHO. Quando le onde sonore vengono trasmesse nell'ambiente, tornano all'origine come ECHO dopo aver colpito qualsiasi ostacolo. Quindi dobbiamo solo calcolare il tempo di viaggio di entrambi i suoni significa tempo di uscita e tempo di ritorno all'origine dopo aver colpito qualsiasi ostacolo. E dopo qualche calcolo possiamo ottenere un risultato che è la distanza. Questo concetto viene utilizzato nel nostro progetto di controllo dell'acqua in cui la pompa del motore dell'acqua viene attivata automaticamente quando il livello dell'acqua nel serbatoio diventa basso. Puoi anche controllare questo semplice circuito dell'indicatore del livello dell'acqua per una versione più semplice di questo progetto.
Componenti
- Arduino Uno
- Modulo sensore a ultrasuoni
- LCD 16x2
- Relè 6 Volt
- ULN2003
- 7806
- PVT
- Filo di rame
- Batteria da 9 volt o 12 Voltadaptor
- Cavi di collegamento
Modulo sensore a ultrasuoni
Il sensore a ultrasuoni HC-SR04 viene utilizzato per misurare la distanza in un intervallo di 2 cm-400 cm con una precisione di 3 mm. Il modulo sensore è costituito da trasmettitore a ultrasuoni, ricevitore e circuito di controllo.
Il modulo del sensore a ultrasuoni lavora sul fenomeno naturale dell'ECO del suono. Viene inviato un impulso per circa 10us per attivare il modulo. Dopodiché il modulo invia automaticamente 8 cicli di segnale ecografico a 40 KHz e ne verifica l'eco. Il segnale dopo aver colpito con un ostacolo ritorna indietro e viene catturato dal ricevitore. Quindi la distanza dell'ostacolo dal sensore viene semplicemente calcolata dalla formula data come
Distanza = (tempo x velocità) / 2.
Qui abbiamo diviso il prodotto di velocità e tempo per 2 perché il tempo è il tempo totale impiegato per raggiungere l'ostacolo e tornare indietro. Quindi il tempo per raggiungere l'ostacolo è solo la metà del tempo totale impiegato.
Funzionamento del regolatore automatico del livello dell'acqua
Il funzionamento di questo progetto è molto semplice, abbiamo utilizzato il modulo sensore ad ultrasuoni che invia le onde sonore nel serbatoio dell'acqua e rileva il riflesso delle onde sonore che è ECHO. Prima di tutto dobbiamo attivare il modulo del sensore a ultrasuoni per trasmettere il segnale utilizzando Arduino e quindi attendere di ricevere ECHO. Arduino legge il tempo tra l'attivazione e l'ECHO ricevuto. Sappiamo che la velocità del suono è di circa 340 m / s. quindi possiamo calcolare la distanza usando la formula data:
Distanza = (tempo di viaggio / 2) * velocità del suono
Dove la velocità del suono è di circa 340 m al secondo.
Utilizzando questo metodo otteniamo la distanza dal sensore alla superficie dell'acqua. Dopodiché dobbiamo calcolare il livello dell'acqua.
Ora dobbiamo calcolare la lunghezza totale del serbatoio dell'acqua. Poiché conosciamo la lunghezza del serbatoio dell'acqua, possiamo calcolare il livello dell'acqua sottraendo la distanza risultante proveniente dagli ultrasuoni dalla lunghezza totale del serbatoio. E otterremo la distanza del livello dell'acqua. Ora possiamo convertire questo livello dell'acqua in percentuale di acqua e visualizzarlo sul display LCD. Il funzionamento del progetto completo dell'indicatore di livello dell'acqua è mostrato nel diagramma a blocchi sottostante.
Schema del circuito e spiegazione
Come mostrato nel circuito del controller del livello dell'acqua riportato di seguito, i pin "trigger" ed "echo" del modulo sensore a ultrasuoni sono direttamente collegati ai pin 10 e 11 di arduino. Un LCD 16x2 è collegato ad arduino in modalità 4 bit. I pin di controllo RS, RW ed En sono direttamente collegati al pin 7, GND e 6. di arduino e il pin dati D4-D7 è collegato a 5, 4, 3 e 2 di arduino e il buzzer è collegato al pin 12. Il relè a 6 volt è collegato anche al pin 8 di arduino tramite ULN2003 per accendere o spegnere la pompa del motore dell'acqua. Un regolatore di tensione 7805 viene anche utilizzato per fornire 5 volt al relè e al circuito rimanente.
In questo circuito, il modulo del sensore a ultrasuoni è posizionato nella parte superiore del secchio (serbatoio dell'acqua) per dimostrazione. Questo modulo sensore leggerà la distanza tra il modulo sensore e la superficie dell'acqua e mostrerà la distanza sullo schermo LCD con il messaggio "Spazio acqua nel serbatoio:". Significa che qui stiamo mostrando un luogo vuoto di distanza o volume per l'acqua invece del livello dell'acqua. Grazie a questa funzionalità possiamo utilizzare questo sistema in qualsiasi serbatoio d'acqua. Quando il livello dell'acqua vuoto raggiunge una distanza di circa 30 cm, Arduino accende la pompa dell'acqua azionando il relè. E ora il display LCD mostrerà "BASSO livello acqua" "Motore acceso" e il LED di stato del relè inizierà a lampeggiare
Ora se lo spazio vuoto raggiunge una distanza di circa 12 cm arduino si spegne il relè e il display LCD mostrerà “Tank is full” “Motor Turned OFF”. Anche il cicalino emette un segnale acustico per un po 'di tempo e il LED di stato del relè si spegne.
Programmazione
Per programmare Arduino per il controllo del livello dell'acqua, per prima cosa definiamo tutti i pin che utilizzeremo nel progetto per interfacciare dispositivi esterni come relè, LCD, buzzer ecc.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
Quindi inizializziamo tutti i dispositivi utilizzati nel progetto.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (echo, INPUT); pinMode (motore, USCITA); pinMode (buzzer, OUTPUT); lcd.print ("Water Level"); lcd.setCursor (0,1); lcd.print ("Indicatore"); ritardo (2000);
Ora inizializza il modulo del sensore a ultrasuoni e leggi l'ora di invio e ricezione di onde ultrasoniche o suoni utilizzando pulseIn (pin). Quindi eseguire i calcoli e visualizzare il risultato sull'LCD 16x2 utilizzando le funzioni appropriate.
digitalWrite (trigger, HIGH); delayMicroseconds (10); digitalWrite (trigger, LOW); delayMicroseconds (2); time = pulseIn (echo, HIGH); distanza = tempo * 340/20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Il serbatoio è:"); lcd.print (distanza); lcd.print ("Cm");
Dopo di ciò, controlliamo le condizioni se il serbatoio dell'acqua è pieno o il livello dell'acqua è BASSO e agiamo di conseguenza.
if (distanza <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (buzzer, HIGH); lcd.clear (); lcd.print ("Water Tank Full"); lcd.setCursor (0,1); lcd.print ("Motore spento"); ritardo (2000); digitalWrite (buzzer, LOW); ritardo (3000); temp = 1; } else if (distanza <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Water Tank Full"); lcd.setCursor (0,1); lcd.print ("Motore spento"); ritardo (5000); }