液体レベルインジケーターとコントローラー
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
次の図は、超音波センサーとArduinoを示しています。作成されたモデルはプレゼンテーションのみを目的としています 。
はじめに
レベルインジケーターは、主にすべての産業部門で使用されます。小規模な作業や家庭用にも同じように実装できます。連続データの読み取りに役立つ液面センサーを構築しました。これにより、タンク内で占有されている液体の量の値がわかります。私たちが作成したシステムは、占有されている液体の量を提供するだけでなく、ポンプを使用してそれを制御するフィードバックシステムです。
<図>
建設
上の図は、私が作成したシステムの簡略化したブロック図です。 Arduinoは私たちが使用しているマイクロコントローラーです。超音波センサーHC-SR04はArduinoに接続されています。センサーはタンクの上部に取り付けられています。モデルには2つの水中ポンプを使用しました。水中ポンプは一方向です。つまり、流体をある方向から別の方向にのみ輸送できます。両方向に運転できる双方向ポンプを使用することができます。両方のポンプはArduinoから信号を受け取ります。ポンプは動作するのに12vを必要とするので、モータードライバーも使用する必要があります。 (モータードライバーはブロック図には示されていません。)
作業中
理解を容易にするために、モデルをさまざまなセクションに分割します。
- センシングシステム
- 制御システム
センシング
センシングシステムには超音波センサーHC-SR04が搭載されています。超音波範囲は20kHzを超えます。このセンサーには送信機と受信機があります。送信機は40kHzの周波数を生成します。この超音波は液面から跳ね返り、受信機で受信されます。このセンサーには4つのピンがあります。アースはArduinoのアースに与えられ、VCCは+ 3.3vまたは5vにすることができます。トリガーピンは、トランスミッタにトリガー信号を与えるために使用されます。エコーピンは、超音波からのエコーを受信するために使用されます。これから、生成および受信する超音波の期間を取得します。時間を距離に変換する必要があります。以下に以下を示します。
duration =pulseIn(echoPin、HIGH); //距離を計算するdistance =duration * 0.034 / 2;
<図>
制御システム
Arduinoはセンサーからデータを受信し、ポンプに目的の信号を送ります。コードから指定されたレベルを設定できます。レベルが指定されたしきい値を超えると、タンク内のポンプに信号が送信され、しきい値を下回るまでタンクから水を汲み出し始めます。レベルが上記のしきい値を下回ると、リザーバー内のポンプがタンクへの液体のポンプを開始します。タンクと1つのポンプのみが使用されます。
将来の改善
次の方法でプロジェクトの効率を向上させることができます。
- タンクの外側に配置できる双方向ポンプを使用できます。使用する必要があるポンプは1つだけです。
- 結果はOLEDまたはLCD画面に表示できます。
- IOTに接続している場合は、データをクラウドに保存することもできます。
- IOTに接続されている場合は、液体レベルを制御したり、アプリケーションから液体レベルを確認したりできます。
- タンクがオーバーフローしたときに安全ブザーを提供することもできます。また、タンクのオーバーフローを回避するようにコードを変更することもできます。
コード
- 水位コントローラー
水位コントローラー Arduino
int tankPump =3; int reserviorPump =2; int trigPin =9; // whiteint echoPin =10; // brownlong duration; int distance; void setup(){Serial.begin(9600); pinMode(tankPump、OUTPUT); pinMode(reserviorPump、OUTPUT); pinMode(trigPin、OUTPUT); // trigPinをOutputpinMode(echoPin、INPUT);として設定します// echoPinを入力として設定します} void loop(){ultrasound(); pump();} void Ultrasonic(){digitalWrite(trigPin、LOW); delayMicroseconds(2); // trigPinをHIGH状態に10に設定しますmicro secondsdigitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW); // echoPinを読み取り、音波の移動時間をマイクロ秒単位で返します。duration=pulseIn(echoPin、HIGH); //距離の計算=期間* 0.034 / 2; //距離をシリアルモニターに出力Serial.print( "Distance:"); Serial.println(distance); delay(1000);} void pump(){if(distance> 10){digitalWrite(tankPump 、高い); digitalWrite(reserviorPump、LOW); } else {digitalWrite(tankPump、LOW); } if(distance <6){digitalWrite(reserviorPump、HIGH); digitalWrite(tankPump、LOW); } else {digitalWrite(reserviorPump、LOW); }}
回路図
製造プロセス