Rapberry Piで1-wire温度センサー(DS18B20)を使った場合の問題、分解能とマイナス表示問題
カテゴリー:#電子工作 Raspberry Pi、Arduinoなど(記事数:225)

↑B


2016.01.23

Rapberry Piで1-wire温度センサー(DS18B20)を使った場合の問題、分解能とマイナス表示問題

★問題1:マイナス表示について
Raspberry Piと1-wire温度センサー(DS18B20)を使って外気温をログしているのですが、氷点下にならないなぁと思っていたらどうやらpythonで組んだスクリプトに問題がある気がします。

↑矢印で示している2016年1月20日の深夜、0度を下回ったあたりで温度がログされていません。

組んだスクリプトでは下記のようにデバイスから出力される文字列を

下記のコードでpythonで温度取得していました。

  • temp=re.search('(?<=t=)(\d+)',resulttext)
  • temp=float(temp.group(1))/1000
これじゃマイナス表示の時に温度部分を抽出し損ねるなぁと思い、下記のように変更しました。
  • temp=re.search('(?<=t=)(-*\d+)',resulttext)
  • temp=float(temp.group(1))/1000
うまく動くかどうかは今晩氷点下になれば分かるでしょう。
追記
上記修正で氷点下もうまく表示されるようになりました。

★問題2:1-wireセンサーの一つの温度分解能が悪い。
我が家では今のところ2つの1-wire温度センサー(DS18B20)が動作しているのですが、そのうちの1台が0.5℃単位でしか温度を出力してくれません。もう一台は0.2℃単位ぐらいで出力されています。

2つの温度センサーモジュールは同じ通販サイトで買い、まったく同じスクリプトで動作させています。温度センサーのデータシートを見ると↓(日本語訳)
赤色で囲んだところが温度、緑で囲った部分が温度をデジタル変換する場合の分解能を示しているのですが、分解能が低いセンサーは9ビットになっているようです(具体的にはこのByte4は12ビット出力したい場合には01111111=7Fで無いといけないはずですが、分解能が低いセンサーでは00011111=01となっています)。
このセンサーはデフォルトで12ビット出力のはずなのですが。。。。

原因を色々と調べるともしかして購入したやつの中身に入っているセンサーが手違いでDS18B20ではなくDS18S20になっているのかも
またはチップ自体は12ビット出力可能なDS18B20なんだけどなんらかの理由で分解能が9ビットに変更されてしまっているのかも、しかしながらRaspberry PiからDS18S20の制御ビットを書き換える方法がいくら検索しても出てこない・・・・・困った。

2つの1-wire温度センサーはいずれも防水加工されたものを下記から購入しました。

Category:#電子工作 Raspberry Pi、Arduinoなど



■ ■ ■ コメント ■ ■ ■

いいっすね!=51
001 [01.23 17:19]で?:何が楽しいん? (5)
002 [01.23 17:59]わら:001の人生が詰まらなさそうでワラた (9)
003 [01.23 18:07]F@Dion:t & 0x0fff しちゃだめか? (2)
004 [01.23 18:17]F@Dion:あ、ごめ。正規表現なのか。-?でいいような。 (4)
005 [01.23 22:42]PI:冷凍庫に入れて試せばいいじゃん。 (3)
006 [01.24 07:18]:001の意図は、センサー直付けではなく、製品化されている温度データロガーを使いましょうということかな? (4)
007 [01.24 08:41]Aガット:1wireで動作設定レジスタを書き換えればよいと思いますが、Raspberry Piのように出来合のライブラリをつかっていると、こういう時にハマるんですよね。1wireモジュール自体を調べて、書き込みコマンドを最初に発行するとかしないとダメそうですね。 (2)
008 [01.24 09:23]Aガット:DS18S20はデータシートだと、Byte4はRESERVED (FFh)になってるのでDS18S20ってことはなさそうですね。 (4)
009 [01.24 09:41]Aガット:動作設定レジスタはEEPROMの値が最初に読み込まれるみたいですね。EEPROMに9ビット分解能の設定がされてしまっているようです。何らかの方法で動作設定レジスタの変更およびEEPROMへのコピーを行うしかないですね。私だったら、Arduinoでやるかな。 (4)
010 [01.24 10:25]とおりすがり@InfoWeb:https://www.raspberrypi.org/forums/viewt....とりあえず、これで設定変更はできるけど。w1 device は読み出しだけ?書き込みはできないのかな?man w1で調べてみて。 (4)


011 [01.31 07:16]:Configuration RegisterのBIT6とBit5に11を設定するだけじゃないの? (3)

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:

本カテゴリーで直近コメントが書かれた記事


→カテゴリー:#電子工作 Raspberry Pi、Arduinoなど(記事数:225)
本カテゴリーの最近の記事(コメント数)