在這篇文章中,我們將使用 Arduino 和 16 x 2 LCD顯示屏構建一個數字水流量計。我們將看看YF-S201水流量傳感器,其結構和工作原理以及如何與Arduino接口以提取一些有用的讀數。
擬議的項目可以測量以升/分鐘為單位的水流量和以升為單位的總水流量。
讓我們來看看YF-S201水流量傳感器。
YF-S201是一款基于霍爾效應的水傳感器。它具有三個端子5V(標稱工作電壓),GND和輸出。+5V為紅色線,黑色為接地線,黃色為輸出。
傳感器發出的頻率與水流量成正比。YF-S201傳感器的測量范圍從1升/分鐘到30升/分鐘。水壓應小于或等于1.75MPa。
水可以從一端注入,水流過另一端。
傳感器可以放置在罐體的主閘閥之后;如果要測量水管網絡中的水流量,或者可以放置在水龍頭之前以測量單個水龍頭的水流量。
傳感器的位置可以根據用戶的需要放在任何地方,但必須注意避免漏水。
傳感器具有磁鐵和霍爾效應傳感器;如果我們看一下水流傳感器的側面,我們可以看到水流路徑中的塑料渦輪機。
一個圓形磁鐵嵌入在渦輪機的中心,霍爾效應傳感器被密封并防止潮濕,并放置在磁鐵上方。霍爾效應傳感器為渦輪機的每一圈產生一個脈沖。
串行繪圖儀上的水流波形
我們可以看到水流量傳感器在arduino IDE的串行繪圖儀上產生的脈沖,如下所示(使用Arduino單通道示波器)。
我們將空氣吹過傳感器以旋轉渦輪機作為測試,生成的波形如上所示。左側密度較高的波形表示渦輪機的頻率更高,旋轉速度更快,右側密度較低的波形表示反之亦然。
一致的水流提供一致的頻率輸出。
我們必須將頻率轉換為升/分鐘刻度。為此,制造商給出了一個公式:
水流量(升/分鐘)= 頻率 / 7.5
因此,我們需要測量生成的頻率并在程序代碼中應用上述公式。
YF-S201技術規格:
·精度:+/- 10%,如果您需要更好的精度,我們需要校準。
·工作溫度:-25至+ 80攝氏度。
·工作濕度:35% 至 80% 相對濕度。
·輸出占空比:50% +/- 10%。
·最大水壓:1.75兆帕。
·每升豆類:450。
·最大電流消耗:15V 時為 5 mA
YF-S201水流量傳感器到此結束。
現在讓我們轉到原理圖。
示意圖:
水流量傳感器的輸出引腳連接到 Arduino 的 A0。使用 10K 電位計調整顯示對比度。按照上圖連接Arduino和LCD顯示屏。
程序代碼:
//-----Program Developed by R.Girish-----//
#include 《LiquidCrystal.h》
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.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-----//
“L/Min”表示當前水流量,“總計”表示自電路打開以來的總流量。
您還可以流動粘度值接近水的任何液體。
-
流量計
+關注
關注
10文章
1481瀏覽量
53571 -
Arduino
+關注
關注
188文章
6468瀏覽量
186951 -
LCD顯示屏
+關注
關注
1文章
91瀏覽量
13295
發布評論請先 登錄
相關推薦
評論