Arduinoを使用したシンプルなデジタル水流量計回路

問題を排除するために楽器を試してください





この投稿では、Arduinoと16 x 2LCDディスプレイを使用してデジタル水流量計を構築します。 YF-S201水流センサー、その構造と動作、およびArduinoとのインターフェース方法を見て、いくつかの有用な測定値を抽出します。

提案されたプロジェクトでは、水流の速度をリットル/分で、総水流をリットルで測定できます。



YF-S201水流センサーを見てみましょう。

YF-S201のイラスト:

YF-S201は ホール効果ベース 水センサー。 5V(公称動作電圧)、GND、出力の3つの端子があります。 + 5Vは赤色のワイヤ、黒色のワイヤはGND、黄色のワイヤが出力されます。



センサーは水の流れに正比例する周波数を出します。 YF-S201センサーは、1リットル/分から30リットル/分まで測定できます。水圧は1.75MPa以下である必要があります。

水は一方の端から注入でき、水はもう一方の端を通って流れます。

水道管のネットワーク内の水流を測定する場合は、タンクのメインゲートバルブの後にセンサーを配置するか、水道水栓の直前に配置して単一の蛇口の水流を測定することができます。

センサーの配置はユーザーのニーズに応じてどこでも可能ですが、水漏れを防ぐように注意する必要があります。

センサーには 磁石とホール効果センサー 水流センサーの側面を見ると、水流の経路にあるプラスチック製のタービンを見ることができます。

丸い形の磁石がタービンの中央に埋め込まれ、ホール効果センサーは密閉されて湿気から保護され、磁石の上に配置されます。ホール効果センサーは、タービンが1回転するたびにパルスを生成します。

シリアルプロッタの水流波形

以下に示すように、arduino IDEのシリアルプロッターで水流センサーによって生成されたパルスを確認できます(Arduinoシングルチャネルオシロスコープを使用)。

センサーを通して空気を吹き込みました タービンを回転させる テストとして、生成された波形は上に示されています。左側のより密度の高い波形はタービンのより高い周波数とより速い回転を表し、右側のより密度の低い波形はその逆を意味します。

一貫した水の流れは、一貫した周波数出力を提供します。

するべき 周波数を変換する リットル/分スケールに。これを行うために、メーカーは次の式を与えました。

水の流量(リットル/分)=頻度/ 7.5

したがって、生成された周波数を測定し、プログラムコードに上記の式を適用する必要があります。

YF-S201の技術仕様:

・精度:+/- 10%、より高い精度が必要な場合は、校正する必要があります。

・動作温度:-25〜 + 80℃。

・作業湿度:35%から80%RH。

・出力デューティサイクル:50%+ /-10%。

・最大水圧:1.75MPa。

・リットルあたりのパルス数:450。

・最大消費電流:5Vで15 mA

これでYF-S201水流センサーは終了です。

それでは、回路図に移りましょう。

回路図:

水流センサーの出力ピンはArduinoのA0に接続されています。使用 10Kポテンショメータ ディスプレイのコントラストを調整します。 Arduinoを配線して LCDディスプレイ 上の図のように。

プログラムコード:

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

著者のプロトタイプ:

「L / Min」は現在の水の流量を示し、「Total」は回路がオンになってから流れた水の総量を示します。

粘度値が水に近い液体を流すこともできます。

Arduinoを使用したこのデジタル水流量計について質問がある場合は、コメントセクションで自由に表現してください。すぐに返信が届く場合があります。




前:Arduinoを使用したジョイスティック制御の2.4 GHzRCカー 次へ:Arduinoを使用してこのバックコンバーターを作成する