マイクロコントローラーで水槽のレベルを測定するにはどうすればよいですか?
マイクロコントローラーで水槽のレベルを測定するにはどうすればよいですか?
回答:
さて、地球上で(軌道上ではなく)ここで作業していると仮定すると、マイクロを使用して測定するフロートセンサーを使用できます。質問は次のとおりです。正確なレベルを知る必要がありますか、それとも高低になったときに何らかの旅行が必要ですか?
「特定のレベルでの旅行」テーマでは、このようなスイッチを入手できます。一般的に、フロートには何らかの姿勢検知スイッチが含まれています。水位が低くなると、フロートは横になり、スイッチは「オフ」になりますが、レベルを上げるとフロートが直立するため、「オン」になります。これらは、サンプポンプによく使用されます。これらは非常に信頼性が高く、非常に簡単に対処できますが、正しく固定するように注意する必要があり、フロートの邪魔にならないようにする必要があります。
実際のレベルを知る必要がある場合は、多くの選択肢がありますが、それほど簡単ではありません。超音波センサーのようなもので行くことができます(水位を反映するためにタンクの上部から下に発射される超音波ビーム)。
これらの人は、フロートと外部ウェイトが一緒にケーブル接続されたBIGタンクのレベルインジケーターを作成しているようです。フロートが液体に乗って上下すると、外部インジケータが適切に動きます。レベルを読み取るのにフォトセルほど複雑なものはなく、似たようなものを作成できます(大きなタンクの場合、または多くの粒度が必要な場合は、多くのフォトセルが必要になります)。
あるいは、ケーブル付きフロートのアイデアを考えて、ケーブルが動くたびに動くアイドラーホイールを置き、それにエンコーダーを取り付けることができます。これにより、非常に高い精度でレベルを追跡できます。
私はすぐにリリースされる本を知っています Practical Arduinoには、水槽の深さセンサープロジェクトが含まれており、差圧トランスデューサーを使用して水槽の底部の水圧を測定し、そこから水槽の満タンを計算することます。
回路図は、githubのソースコードへのリンクとともに、上記のリンクにあります。
(完全な開示:本とは関係ありませんが、著者の1人と地元のハッカースペースで数回会ったことがあります。)
私が好きな方法ですが、試していないのは、液体に2枚の断熱板を入れることです。結露、電気症、コンタミネーションはありません。......キャップのプレートを形成します。そして、ある種の発振器で使用されます(あなた次第で選択できます)。周波数を測定して深さを取得します。
AC信号を適用し、キャップを通る電流を測定することで、同様の結果を得ることができる場合があります。
ここでの複雑な電子ソリューションすべてに驚いています。単純なポテンショメータを使用します。ほとんどのマイクロコントローラーには、基本的なアナログi / pがあります。
+V
-----
|
|
/
\
/<----------> to analog i/p
\
|
|
-----
GND
標準の水タンクバルブフロートを使用します(既にある場合があります)。残りの問題は、フロートをポットに結合して最大のスイングを得ることです(スライダーポットを使用することもできます)。
|-|
| |
|o| <--------Slider pot.
|||
|||
|
| <--------Coupling.
|
____ |
(float)----------o-----o <--Anchor point of float.
----
最も簡単なアプローチ
ピンポンボールよりも直径がわずかに大きいタンクの角に小さなチューブを置きます。
チューブの片側に赤外線LEDを配置し、LEDの反対側にフォトレジスターを配置します(不透明のチューブに穴を開けるか、透明の場合は外側に配置します)。電気部品をホットグルーして防水し、ピンポンボールをチューブに落とします。
水位がピンポンボールが赤外線ビームを破壊するポイントまで上昇または下降すると、望みのレベルに達することがわかります。これは、個別の(オン/オフ)レベルインジケーターのみが必要な場合に機能します。
このシステムは、電子トリガーが発射ソレノイドを作動させる前に、ボール全体が発射室内にあることを確認することにより、ボールを切ることを防ぐように設計されたペイントボール銃でも使用されます。
シンプルで効果的で、キャリブレーションはほとんど必要ありません。
もう1つの賢いアプローチ:水(流体)のより大きな熱伝導率を利用します。アイデアは、温度センサーを備え、水没時と自由空気中の自己発熱の差を測定することです。
別の解決策(しゃれなし);
上記のポテンショメータを使用してください。通常の回転範囲は270度です。ブームアームを使用してフロートをポテンショメーターに取り付けます。(長さ= 1単位)
満杯と空の間で、ブームアームは90度移動します。
PICのADCは256または1024ステップです(はい、ゼロはステップです)。
わかりやすくするために、256ステップを使用します。
270度= 256 ADCステップ。270/90 = 3(ポテンショメータ範囲の3分の1)
255/3 = 85 ADCステップ
ボタンを押したときに0度のポイント(タンクが空)をマークするコードをプログラムします。
これにより、PIC eepromにオフセットポイントが保存されます。これで、このキャリブレーションポイントを設定できるため、ポテンショメータを正確にゼロにする必要がなくなりました。
三角法を使用して、ADCの各ステップに対応するルックアップテーブル(ヒント:phpスクリプト)を計算します。
ヒント:各ADCステップは90/85 = 1.0588度に対応します。
はい、数学の授業でもっと注意を払うべきでした。当時の馬鹿げた無駄遣い、今は不可欠。脳を引き込みます。三角法を学びます。他の人に教えます。
頭字語:オールドアラブは干し草の重い袋を運んだ。
斜辺は、ブームアームの長さです。長さを1ユニットにします。ルックアップテーブルは、タンクの深さの割合を提供します。(もちろん100倍)