Circuit simplu debitmetru digital de apă folosind Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un debitmetru digital de apă folosind Arduino și un ecran LCD de 16 x 2. Vom arunca o privire asupra senzorului de debit YF-S201, a construcției și funcționării acestuia și a modului de interfață cu Arduino pentru a extrage câteva lecturi utile.

Proiectul propus poate măsura debitul de apă în litri / minut și debitul total de apă în litri.



Să aruncăm o privire la senzorul de debit YF-S201.

Ilustrația YF-S201:

YF-S201 este un Bazat pe efectul Hall senzor de apă. Are trei terminale 5V (tensiune nominală de lucru), GND și ieșire. + 5V este sârmă de culoare roșie, cea neagră este GND, iar cea galbenă este emisă.



Senzorul oferă frecvență direct proporțională cu debitul de apă. Senzorul YF-S201 poate măsura de la 1 litru / minut la 30 litri / minut. Presiunea apei trebuie să fie mai mică sau egală cu 1,75 MPa.

Apa poate fi injectată de la un capăt și apa curge prin celălalt capăt.

Senzorul poate fi amplasat după poarta principală a rezervorului dacă doriți să măsurați debitul de apă într-o rețea de conducte de apă sau puteți plasa chiar înainte de un robinet de apă pentru a măsura debitul de apă al unui singur robinet.

Amplasarea senzorului poate fi oriunde în funcție de nevoile utilizatorului, dar trebuie să aveți grijă să evitați scurgerile de apă.

Senzorul are o magnet și senzor de efect Hall dacă aruncăm o privire asupra părților laterale ale senzorului de curgere a apei, putem asista la o turbină de plastic pe calea curgerii apei.

Un magnet de formă rotundă este încorporat în centrul turbinei, iar senzorul Hall Effect este sigilat și protejat de umezeală și plasat deasupra magnetului. Senzorul Hall Effect produce un impuls pentru fiecare revoluție a turbinei.

Forma de undă a fluxului de apă pe plotter serial

Putem vedea impulsurile generate de senzorul de curgere a apei pe plotterul serial al IDE arduino, prezentate mai jos (folosind osciloscopul Arduino cu un singur canal).

Am suflat aer prin senzor rotiți turbina ca test și forma de undă generată este prezentată mai sus. Forma de undă mai densă din partea stângă reprezintă o frecvență mai mare și o rotație mai rapidă a turbinei, forma de undă mai puțin densă din partea dreaptă semnifică invers.

Un debit consistent de apă oferă o ieșire de frecvență constantă.

Trebuie să ne converti frecventa în scară litru / minut. Pentru a face acest lucru, producătorul a dat o formulă:

Debitul apei (litru / min) = frecvență / 7,5

Deci, trebuie să măsurăm frecvența generată și să aplicăm formula de mai sus în codul programului.

Specificații tehnice ale YF-S201:

· Precizie: +/- 10%, dacă aveți nevoie de o precizie mai bună, trebuie să calibrăm.

· Temperatura de lucru: -25 la + 80 grade Celsius.

· Umiditate de lucru: 35% până la 80% RH.

· Ciclul de funcționare de ieșire: 50% +/- 10%.

· Presiunea maximă a apei: 1,75 MPa.

· Pulsuri pe litru: 450.

· Consumul maxim de curent: 15 mA la 5V

Aceasta concluzionează senzorul de debit YF-S201.

Acum să trecem la schemă.

Diagramă schematică:

Pinul de ieșire al senzorului de debit de apă este conectat la A0 al Arduino. Folosește Potențiometru 10K pentru reglarea contrastului afișajului. Sârmă Arduino și Ecran LCD conform diagramei de mai sus.

Codul programului:

//-----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-----//

Prototipul autorului:

„L / Min” indică debitul curent de apă, iar „Total” indică debitul total de apă de la pornirea circuitului.

De asemenea, puteți curge orice lichide a căror valoare a vâscozității este aproape de apă.

Dacă aveți întrebări cu privire la acest debitmetru digital de apă care utilizează Arduino, nu ezitați să exprimați în secțiunea de comentarii, este posibil să primiți un răspuns rapid.




Precedent: Mașină RC controlată cu joystick de 2,4 GHz folosind Arduino În continuare: Faceți acest convertor Buck folosind Arduino