Semplice circuito digitale del misuratore di portata dell'acqua che utilizza Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post costruiremo un misuratore di portata d'acqua digitale utilizzando Arduino e display LCD 16 x 2. Daremo uno sguardo al sensore di flusso d'acqua YF-S201, alla sua costruzione e al suo funzionamento e come interfacciarsi con Arduino per estrarre alcune letture utili.

Il progetto proposto può misurare la portata d'acqua in litri / minuto e la portata d'acqua totale in litri.



Diamo un'occhiata al sensore di flusso d'acqua YF-S201.

Illustrazione di YF-S201:

YF-S201 è un file Basato su effetto Hall sensore dell'acqua. Ha tre terminali 5V (tensione nominale di lavoro), GND e uscita. Il + 5V è un filo di colore rosso, quello nero è GND e quello giallo è in uscita.



Il sensore emette una frequenza direttamente proporzionale al flusso d'acqua. Il sensore YF-S201 può misurare da 1 litro / minuto a 30 litri / minuto. La pressione dell'acqua deve essere inferiore o uguale a 1,75 MPa.

L'acqua può essere iniettata da un'estremità e l'acqua scorre attraverso l'altra estremità.

Il sensore può essere posizionato dopo la saracinesca principale del serbatoio se si desidera misurare la portata d'acqua in una rete di tubi dell'acqua oppure è possibile posizionare appena prima un rubinetto dell'acqua per misurare la portata dell'acqua del singolo rubinetto.

Il posizionamento del sensore può essere ovunque in base alle necessità dell'utente, ma è necessario prestare attenzione per evitare perdite d'acqua.

Il sensore ha un'estensione magnete e sensore ad effetto Hall se diamo uno sguardo ai lati del sensore di flusso dell'acqua, possiamo assistere a una turbina di plastica nel percorso del flusso d'acqua.

Un magnete di forma rotonda è incorporato al centro della turbina e il sensore ad effetto Hall è sigillato e protetto dall'umidità e posizionato sopra il magnete. Il sensore ad effetto Hall produce un impulso per ogni giro della turbina.

Forma d'onda del flusso d'acqua su plotter seriale

Possiamo vedere gli impulsi generati dal sensore di flusso d'acqua sul plotter seriale dell'IDE di arduino, mostrato di seguito (Utilizzo dell'oscilloscopio a canale singolo di Arduino).

Abbiamo soffiato aria attraverso il sensore a ruotare la turbina come test e la forma d'onda generata è mostrata sopra. La forma d'onda più densa sul lato sinistro rappresenta una frequenza più alta e una rotazione più rapida della turbina, la forma d'onda meno densa sul lato destro indica il viceversa.

Un flusso d'acqua costante fornisce un'uscita in frequenza costante.

Dobbiamo convertire la frequenza in scala litri / minuti. Per fare ciò, il produttore ha dato una formula:

Portata d'acqua (litri / min) = frequenza / 7.5

Quindi, dobbiamo misurare la frequenza generata e applicare la formula sopra nel codice del programma.

Specifiche tecniche di YF-S201:

· Precisione: +/- 10%, se hai bisogno di una migliore precisione, dobbiamo calibrare.

· Temperatura di lavoro: da -25 a + 80 gradi Celsius.

· Umidità di lavoro: dal 35% all'80% di umidità relativa.

· Ciclo di lavoro in uscita: 50% +/- 10%.

· Pressione massima dell'acqua: 1,75 MPa.

· Impulsi per litro: 450.

· Assorbimento di corrente massimo: 15 mA a 5V

Questo conclude il sensore di flusso d'acqua YF-S201.

Ora passiamo allo schema.

Diagramma schematico:

Il pin di uscita del sensore di flusso dell'acqua è collegato ad A0 di Arduino. Usa il Potenziometro 10K per regolare il contrasto del display. Collega Arduino e display LCD come da diagramma sopra.

Codice del programma:

//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time = 0
float frequency = 0
float waterFlow = 0
float total = 0
float LS = 0
const int input = A0
const int test = 9
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Water Flow Meter')
lcd.setCursor(0,1)
lcd.print('****************')
delay(2000)
pinMode(input,INPUT)
pinMode(test, OUTPUT)
analogWrite(test,100)
}
void loop()
{
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000/Time
waterFlow = frequency/7.5
LS = waterFlow/60
if(frequency >= 0)
{
if(isinf(frequency))
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: 0.00')
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
else
{
total = total + LS
Serial.println(frequency)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: ')
lcd.print(waterFlow)
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
}
delay(1000)
}
//-----Program Developed by R.Girish-----//

Prototipo dell'autore:

Il “L / Min” indica la portata d'acqua corrente e il “Totale” indica il flusso totale d'acqua dall'accensione del circuito.

È inoltre possibile far scorrere qualsiasi liquido il cui valore di viscosità è vicino all'acqua.

Se hai domande su questo misuratore di portata d'acqua digitale che utilizza Arduino, sentiti libero di esprimere nella sezione commenti, potresti ricevere una rapida risposta.




Precedente: Auto RC a 2,4 GHz controllata da joystick con Arduino Avanti: crea questo convertitore buck usando Arduino