大規模な製造会社を訪問したことがある場合、最初に気付くのは、それらがすべて自動化されていることです。清涼飲料業界と化学業界は、この自動化プロセス中に処理する液体を常に測定および定量化する必要があります。液体の流れを測定するために使用される最も一般的なセンサーは、フローセンサーです。。 Arduinoのようなマイクロコントローラーを備えたフローセンサーを使用することで、流量を計算し、パイプを通過した液体の量をチェックし、必要に応じて制御することができます。製造業とは別に、フローセンサーは農業、食品加工、水管理、鉱業、水のリサイクル、コーヒーマシンなどにも見られます。さらに、水流センサーは自動水ディスペンサーなどのプロジェクトに追加するのに適しています。液体の流れを監視および制御する必要があるスマート灌漑システム。
このプロジェクトでは、Arduinoを使用して水流センサーを構築します。水流センサーをArduinoおよびLCDと接続し、バルブを通過した水の量を表示するようにプログラムします。この特定のプロジェクトでは、ホール効果を使用して液体の流量を感知するYF-S201 水流センサーを使用します。
必要なコンポーネント
- 水流センサー
- Arduino UNO
- LCD(16x2)
- めねじ付きコネクタ
- 接続線
- パイプ
YFS201水流センサー
下の図に示すように、センサーには赤、黄、黒の3本のワイヤーがあります。赤い線は5Vから18Vの範囲の供給電圧に使用され、黒い線はGNDに接続されています。黄色の線は出力(パルス)に使用され、MCUで読み取ることができます。水流センサーは、通過した液体の量を測定する風車センサーで構成されています。
YFS201水流量センサの動作は、理解するのは簡単です。水流センサーは、ホール効果の原理に基づいて動作します。ホール効果は、電流の流れの方向に垂直な方向に磁場が印加されたときに、導電体の両端に電位差が生じることです。水流センサーは、回転ごとに電気パルスを生成する磁気ホール効果センサーと統合されています。その設計は、ホール効果センサーが水から密閉され、センサーが安全で乾燥した状態を保つことができるようになっています。
YFS201センサーモジュールのみの写真を以下に示します。
パイプと水流センサーを接続するために、以下に示すようにめねじ付きの2つのコネクターを使用しました。
YFS201仕様によると、5Vで流れる最大電流は15mAで、動作流量は1〜30リットル/分です。液体がセンサーを通って流れるとき、それは流れる液体の経路に配置されているタービンホイールのフィンと接触します。タービンホイールのシャフトは、ホール効果センサーに接続されています。このため、水がバルブを流れるたびにパルスが発生します。さて、私たちがしなければならないのは、プラスの時間を測定するか、1秒間のパルス数をカウントしてから、1時間あたりのリットル(L / Hr)で流量を計算し、簡単な変換式を使用して体積を見つけることです。それを通過した水の。パルスを測定するために、ArduinoUNOを使用します。下の写真は、水流センサーのピン配列を示しています。
回路図
水流センサ回路図でArduinoの水流量センサとLCD(16×2)のインターフェースには、以下に示されています。ArduinoとLCDを初めて使用する場合は、このArduinoとLCDのインターフェイスに関する記事を読むことを検討してください。
水流センサーとLCD(16x2)とArduinoの接続を以下の表形式で示します。ポットは5VとGNDの間に接続され、ポットのピン2はLCDのV0ピンに接続されていることに注意してください。
S.NO |
水流センサーピン |
Arduinoピン |
1 |
赤いワイヤー |
5V |
2 |
ブラック |
GND |
3 |
黄 |
A0 |
S.No |
LCD |
Arduino |
1 |
対 |
GND(ブレッドボードのアースレール) |
2 |
VDD |
5V(ブレッドボードのポジティブレール) |
3 |
V0との接続については、上記の注意事項を確認してください |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6からD3 |
3から5 |
ブレッドボードを使用し、上記の回路図のように接続すると、テストのセットアップは次のようになりました。
Arduino水流センサーコード
完全な水流センサーArduinoコードはページの下部にあります。コードの説明は次のとおりです。
LCDとArduinoのインターフェースを容易にするLCDのヘッダーファイルを使用しており、ピン12、11、5、4、3、9はLCDとArduino間のデータ転送に割り当てられています。センサーの出力ピンはArduinoUNOのピン2に接続されています。
volatile int flow_frequency; //フローセンサーパルスを測定します //計算されたリットル/時間 floatvol = 0.0、l_minute; unsignedcharflowsensor = 2; //センサー入力 unsignedlong currentTime; unsigned long cloopTime; #include
この関数は割り込みサービスルーチンであり、ArduinoUNOのピン2に割り込み信号があるたびに呼び出されます。割り込み信号ごとに、変数flow_frequencyのカウントが1ずつ増加します。割り込みとその動作の詳細については、Arduino割り込みに関するこの記事を参照してください。
void flow()//割り込み関数 { flow_frequency ++; }
ボイド設定では、コマンドpinMode(pin、OUTPUT)を指定して、ArduinoUNOのピン2がINPUTとして使用されることをMCUに通知します。attachInterruptコマンドを使用すると、ピン2で信号が上昇するたびに、フロー関数が呼び出されます。これにより、変数flow_frequencyのカウントが1つ増えます。現在の時刻とcloopTimeは、コードが1秒ごとに実行されるために使用されます。
void setup() { pinMode(flowsensor、INPUT); digitalWrite(flowsensor、HIGH); Serial.begin(9600); lcd.begin(16、2); attachInterrupt(digitalPinToInterrupt(flowsensor)、flow、RISING); //割り込みを設定します lcd.clear(); lcd.setCursor(0,0); lcd.print( "水流量計"); lcd.setCursor(0,1); lcd.print( "Circuit Digest"); currentTime = millis(); cloopTime = currentTime; }
if関数は、1秒ごとにその中のコードが実行されることを保証します。このようにして、1秒あたりの水流センサーによって生成される周波数の数を数えることができます。データシートの流量パルス特性は、周波数に7.5を掛けたものです。したがって、流量は周波数/7.5です。リットル/分単位の流量を見つけたら、それを60で割ってリットル/秒に変換します。この値は、1秒ごとにvol変数に追加されます。
void loop() { currentTime = millis(); // 毎秒、 リットル/時間を計算して出力しますif(currentTime> =(cloopTime + 1000)){ cloopTime = currentTime; // cloopTimeを更新します if(flow_frequency!= 0){ //パルス周波数(Hz)= 7.5Q、QはL / min単位の流量です。 l_minute =(flow_frequency / 7.5); //(パルス周波数x 60分)/ 7.5Q = L /時間の流量 lcd.clear(); lcd.setCursor(0,0); lcd.print( "レート:"); lcd.print(l_minute); lcd.print( "L / M"); l_minute = l_minute / 60; lcd.setCursor(0,1); vol = vol + l_minute; lcd.print( "Vol:"); lcd.print(vol); lcd.print( "L"); flow_frequency = 0; //カウンターをリセット Serial.print(l_minute、DEC); //リットル/時間を 出力Serial.println( "L / Sec"); }
else関数は、指定された時間内に水流センサーからの出力がない場合に機能します。
else { lcd.clear(); lcd.setCursor(0,0); lcd.print( "レート:"); lcd.print(flow_frequency); lcd.print( "L / M"); lcd.setCursor(0,1); lcd.print( "Vol:"); lcd.print(vol); lcd.print( "L"); }
Arduino水流センサーが機能しています
私たちのプロジェクトでは、水流センサーをパイプに接続しました。パイプの出力バルブが閉じている場合、水流センサーの出力はゼロです(パルスなし)。 Arduinoのピン2には割り込み信号は見られず、flow_frequencyのカウントはゼロになります。この状態では、elseループ内に記述されたコードが機能します。
パイプの出力バルブが開いている場合。水はセンサーを通って流れ、センサーはセンサー内部のホイールを回転させます。この状態では、センサーから発生するパルスを観測することができます。これらのパルスは、ArduinoUNOへの割り込み信号として機能します。割り込み信号(立ち上がりエッジ)ごとに、flow_frequency変数のカウントが1つ増えます。現在の時刻とcloopTIme変数により、1秒ごとにflow_frequencyの値が流量と体積の計算に使用されます。計算が終了すると、flow_frequency変数がゼロに設定され、手順全体が最初から開始されます。
完全な作業は、このページの下部にリンクされているビデオにもあります。チュートリアルを楽しんで、何か役立つものを楽しんだことを願っています。問題がある場合は、コメントセクションに残すか、フォーラムを使用して他の技術的な質問をしてください。