マイクロコントローラーを備えた水槽のレベル


24

マイクロコントローラーで水槽のレベルを測定するにはどうすればよいですか?


1
これは答えとしてふさわしいものではありませんが、私の友人は数年前にアートプロジェクトのためにこれをしました。興味のある人なら誰でもあなたを紹介したいと思います。彼がどのようにそれをしたのかを喜んで説明するでしょう。彼のプロジェクトはここにあります:unixarts.com/sealevel.html これはポンプとセンサーの両方を組み合わせており、あまりゆがみなくループを上下するのに十分な精度が必要でした
cyphunk 2009年

7
マイクロコントローラーが動作を停止すると、水中になります。
ジョンU

回答:


23

さて、地球上で(軌道上ではなく)ここで作業していると仮定すると、マイクロを使用して測定するフロートセンサーを使用できます。質問は次のとおりです。正確なレベルを知る必要がありますか、それとも高低になったときに何らかの旅行が必要ですか?

「特定のレベルでの旅行」テーマでは、このようなスイッチを入手できます。一般的に、フロートには何らかの姿勢検知スイッチが含まれています。水位が低くなると、フロートは横になり、スイッチは「オフ」になりますが、レベルを上げるとフロートが直立するため、「オン」になります。これらは、サンプポンプによく使用されます。これらは非常に信頼性が高く、非常に簡単に対処できますが、正しく固定するように注意する必要があり、フロートの邪魔にならないようにする必要があります。

実際のレベルを知る必要がある場合は、多くの選択肢がありますが、それほど簡単ではありません。超音波センサーのようなもので行くことができます(水位を反映するためにタンクの上部から下に発射される超音波ビーム)。

これらの人は、フロートと外部ウェイトが一緒にケーブル接続されたBIGタンクのレベルインジケーターを作成しているようです。フロートが液体に乗って上下すると、外部インジケータが適切に動きます。レベルを読み取るのにフォトセルほど複雑なものはなく、似たようなものを作成できます(大きなタンクの場合、または多くの粒度が必要な場合は、多くのフォトセルが必要になります)。

あるいは、ケーブル付きフロートのアイデアを考えて、ケーブルが動くたびに動くアイドラーホイールを置き、それにエンコーダーを取り付けることができます。これにより、非常に高い精度でレベルを追跡できます。


15

私はすぐにリリースされる本を知っています Practical Arduinoには、水槽の深さセンサープロジェクトが含まれており、差圧トランスデューサーを使用して水槽の底部の水圧を測定し、そこから水槽の満タンを計算することます。

回路図は、githubのソースコードへのリンクとともに、上記のリンクにあります。

(完全な開示:本とは関係ありませんが、著者の1人と地元のハッカースペースで数回会ったことがあります。)


11

私が好きな方法ですが、試していないのは、液体に2枚の断熱板を入れることです。結露、電気症、コンタミネーションはありません。......キャップのプレートを形成します。そして、ある種の発振器で使用されます(あなた次第で選択できます)。周波数を測定して深さを取得します。

AC信号を適用し、キャップを通る電流を測定することで、同様の結果を得ることができる場合があります。


心、それは流体の弁定数に大きく依存します。誤解がない限り、静電容量センシングはレベルよりも存在/不在の検出に使用されます。しかし、私が遭遇したほとんどすべての方法は、比重に依存しているようです。さまざまな組成の液体を保持するタンクは調整が困難です。
wackyvorlon

静電容量ベースの液体レベルセンサーは、液体の有無を検出するのに最適です。水位を読み取るには、固定抵抗器を使用してプレートを充電/放電し、時間を測定します。前述のように、水に塩分などの汚染物質を追加すると、静電容量が大幅に変化する可能性があるため、固定液位の読み取りが可能になります。あなたが測定している液体が均質であれば、これははるかに問題が少ないです。
mjh2007

単純な既製のSMDコイルを使用してダイナトロン発振器を作成し、これはrussのような絶縁プレートと共振します。正弦波は平方され、ファームウェアでパルスをカウントしました。
自閉症

10

詳細は助けになりますが、とにかく、超音波法はおそらく最も簡単で、概念的には、と思います(したがって、詳細が必要です:-])。MaxSonar超音波トランスデューサーを使用して、地下の燃料油タンクのレベルセンサーを一緒に投げました。Parallax Pingセンサーに切り替えると、すぐに切り替えます。MaxSonarユニットはやや苦痛であることが判明しています。解像度は1インチ(2.54cm)しかありませんが、これは私の戦車でほぼ7ガロンに相当します。MaxSonarユニットを、タンクの上部(液体が届かない範囲)にあるPVCキャップに入れます。


7

これを行う1つの方法は、タンクの底にLEDを向けて上部を指すようにLEDを配置し、タンクの上部にフォトダイオードを配置することです。LEDはタンク内の水によって減衰します。その量を判断するには実験する必要があります。また、この方法を使用する場合は、一連の迅速な測定を行い、それらを平均することが最善です。


1
エラー、周囲光、スロッシングなどに非常になりやすいようです
ジェイソンS

7

私は、LEDインジケーターを検知するために、フォトトランジスタを備えた地元の金物店の安価なスタッドセンサーを使用します。これがタンクの側面に接着されているので、レベルがセンサーより上になったときに感知し、高水状態を警告します。


6

レベルを確認するには、驚くほど多くの方法があります。RFを使用して、導波管にパルスを送信し、タンク内の液体の表面からの反射を検出するセンサーがあります。超音波、フロート、バブラーチューブ、圧力タップなどがあります。使用する方法は、タンクのサイズ、内容物、周囲環境、その他の要因によって異なります。


4

ここでの複雑な電子ソリューションすべてに驚いています。単純なポテンショメータを使用します。ほとんどのマイクロコントローラーには、基本的なアナログi / pがあります。

 +V
-----
  |
  |
  /
  \
  /<----------> to analog i/p
  \
  |
  |
-----
 GND

標準の水タンクバルブフロートを使用します(既にある場合があります)。残りの問題は、フロートをポットに結合して最大のスイングを得ることです(スライダーポットを使用することもできます)。

                  |-|
                  | |
                  |o| <--------Slider pot.
                  |||
                  |||
                   |
                   |  <--------Coupling.
                   |
   ____            |
  (float)----------o-----o  <--Anchor point of float.
   ----

ポットが元の位置に戻ることをどのように確認しますか?

フロートの重量は、水位が下がると引き下げられます
...-ttt

それについてはよくわかりません。水の存在下で浮くように、そして水の不在下でポットを落とすように、フロートの正しい重量を見つけることはそれほど簡単ではありません。ほとんどのポットはかなり高い静摩擦を持っています。しかし、適切な機械的セットアップがあれば、それは可能だと思います。

長いスライダーポットの多くは、非常に低い摩擦を持っています(指先制御のミキサーとDJデッキで使用されます)。ビットボックスの4インチスライダーを使用し、通常の水槽フロートでテストしました。小さなトイレの水槽フロートでも動作しました。ところで、ポットと直列に固定抵抗器を使用して、濡れた環境でのショートは、コントローラーポートの出力を超えない(または固定Vrefから電流を引き込む)テストセットアップで10kポットに10k抵抗を使用しました
ttt

テストでは、曲がったワイヤを使用してフロートアームに固定しました。トイレの水槽では、アームは四角い部分のプラスチックなので、小さな穴を開けてアタッチメントを作るのは本当に簡単です。
ttt

4

最も簡単なアプローチ

ピンポンボールよりも直径がわずかに大きいタンクの角に小さなチューブを置きます。

チューブの片側に赤外線LEDを配置し、LEDの反対側にフォトレジスターを配置します(不透明のチューブに穴を開けるか、透明の場合は外側に配置します)。電気部品をホットグルーして防水し、ピンポンボールをチューブに落とします。

水位がピンポンボールが赤外線ビームを破壊するポイントまで上昇または下降すると、望みのレベルに達することがわかります。これは、個別の(オン/オフ)レベルインジケーターのみが必要な場合に機能します。

このシステムは、電子トリガーが発射ソレノイドを作動させる前に、ボール全体が発射室内にあることを確認することにより、ボールを切ることを防ぐように設計されたペイントボール銃でも使用されます。

シンプルで効果的で、キャリブレーションはほとんど必要ありません。



1

もう1つの賢いアプローチ:水(流体)のより大きな熱伝導率を利用します。アイデアは、温度センサーを備え、水没時と自由空気中の自己発熱の差を測定することです。


これは実際に私がいるCHCHニュージーランドで行われましたが、私はそれをしませんでした、私はその約20歳だと思います。タンクの外側に多くのサーミスターが並んでいました。
自閉症

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倍)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.