DS18x20温度センサーの信頼性


11

MaximのDS18x20(実際には複数のバリエーションを持っています)1-Wire温度センサーを使用して、家のさまざまな部屋の温度を1分に1回記録しています。1000分の1の読書で、私は何かが完全に偽物になっています。65Fから70Fに徐々に上昇するシーケンスの途中で、私は-32.1Fまたは15.64Fのようなものを取得します。

他の誰かがそのような問題を抱えていましたか、それとも私のセットアップに何か問題がありますか?これがこれらの既知の問題である場合は、3つの測定値を取得して、外れ値を破棄する必要があります。

私のセットアップに関するいくつかのステートメント:

  • 3.3Vで実行しています
  • 私はarduinoに戻ったときに読み取り値のチェックサムをチェックしていますが、一致しています(または、一致していると思います-そのコードには常にバグがある可能性があります)。
  • これらは寄生電源ではなく、通常の電源で実行されています。
  • 4.7Kのプルアップ抵抗を配置しています。
  • 各センシングプラットフォームで使用しているセンサーは1つだけです。
  • センサーは、それを読み取るarduinoに接続されたPCBにあります。
  • さまざまなアルドゥイーノ(ジエシミラ、プロミニ、自家製カスタム)から読んでいる同じ問題がわかります

回答:


5

DS18B20で時々これを確認しました。私のアプリケーションでは、コードで誤った結果を除外するのに十分簡単でした。


他の誰かがそのようなもののように思われたと聞いてうれしいです。フィルタリングアルゴリズムは何でしたか?
edebill 09

私はあなたがあなたが言ったことをしたことをお勧めします、3つのリーディングを取る、5はそれより良い、7はそれより良いでしょうが、約1/1000の何かのエラーがあるなら、あなたはちょうど3を必要とします。問題は解決されます。5を取ると、問題が発生するまでに奇妙なことが起こります。
Kortuk、2009

私は今5をやっています。私は2の高い方だけを取得しようとしましたが、昨夜もエラーが発生しました(毎分3つのセンサーが読み取りを行っているため、1日に数千のデータポイントを取得しています)。
edebill 09

3

エラーのある測定値の原因が見つからない場合は、簡単に除外して以前の測定値から外挿するか、後読が重要な場合は測定値間を補間する必要があります。毎分1回サンプリングしているので、最後の測定値をコピーすることさえできます。室温は1分でほとんど変化しません。


3

これは、コントローラが特定の高負荷条件下で温度応答の1つ以上のビットを誤って読み取るか、1つ以上のビットが破損している電気的干渉が原因である可能性があります。

こちらのデータシートを詳しく見てくださいhttp://www.rentron.com/Files/ds18b20.pdf

5ページ目では、85Cの正確なバイナリシーケンスは次のとおりです。

+85°C 0000 0101 0101 0000

同様に、25Cの場合:

+25.0625°C 0000 0001 1001 0001

場合によっては、コントローラーが少しミスすると、バイナリーでビットシフトされた実際の温度の値が得られます。多くの場合、これはCのターゲット値の1/2です。

時々、ライン上で電気的干渉が発生し、コントローラーが1のニブル全体を読み取る場合、その場合、15.64のようないくつかの数値が得られます。最初は1の束。


2

価値があるのは、数か月前にDS18B20で少し作業をしたことです。私は短いビデオを撮影し、例とサンプルコードへのリンクがある私のブログに記事を書きました。これが少し役立つことを願っています! http://dailyduino.com/archives/552


2

現在約4年前から、うち13人は家で走っています。データベースはもう処理が困難です(私はすべてのサンプルを追跡しました)。しかし、私はこのような振る舞いを見ませんでした。代わりに、1つ以上のセンサーがフリーズして他のすべてのセンサーをブロックし、これを回避する唯一の方法(私が見つけた)は、電源電圧を数秒間シャットダウンすることでした。そこで、ボードに小さなリレーを追加しました。マイクロがこの動作を感知すると、センサーのチェーン全体がリセットされます。それは週に数回起こります。


うーん。多分私は読書をしようとしているときだけそれらをパワーアップするべきです。
edebill 09
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.