1-Wire DS18B20での温度測定  2009/06/10  2009/06/16
home


以前よりDALLAS(MAXIM)の1-Wireというのを使用してみたいと思っていた。
チップが着たので、とりあえず動くか試してみた。

ググってみると、昔はDS1820という型式だったみたいだ。
現在は、DS18S20というのとDS18B20が現行商品だと思う。(自信なし)
入手したものの正式な品番は、[DS18B20+]となっています。

手持ちのトラ技 2003年1月に解説があった。が、
プログラムはアセンブラでかかれているので内容不明(orz)です。

コマンドがいろいろあり、1対1で読み出すのが簡単そうなのでとりあえずセンサは1ヶのみ実装。

/////////////動作について///////////////////////////////////////////////////
1.DS18B20+への電源供給について。
.通常の電源供給。3線式。
連続して温度を読んでいっても問題ないみたいです。
ただし、変換完了を読まないと、だめと思います。データシート14ページ

.パラサイトパワー。2線式
変換指令を出してから
2秒程度待たないといけません。たぶん。
↑嘘です。データシート上は750msとなっています。
800ms間隔で読み出すと問題ないです。データシート8ページ

16F84Aでクリスタルを6MHzに落とすと、ピンの切り替えが間に合わないようで、CRCエラーが出ます。
一応20MHzで動かそう。

.パラサイトパワーチェック。
パワーモードチェックをしているので、電源供給状態に応じて読み込みタイミングを変えています。


2.使用コマンド
Skip ROM・Conver T・Read Scratchpad・Read Power Supplyしか使用していません。
他のコマンドはこれからです。


3.16F877Aと16F84A
16F877Aは、LCD表示&PCへのデータ転送をしています。
16F84Aは、LCD表示はしていません。プログラム容量超えてしまう。


4.エラー時
未接続、CRCエラー時動作停止します。電源再投入で動作します。
テストしていてクロックが勝手に止まるので自分でびっくりした。


5
.使用言語バージョンなど
MPLAB8.30とCCSC4.092にて書きました。
ネットで参考になるプログラムがあったのですが、アドレスが・・・外国だった。


6
.外部電源不要(232Cから供給)
12F683を使用して、RS232Cから電源を取り供給すると便利かな。
下に図面あり。

これから2ヶ接続できるようにしたいですが、私の腕ではいつになることか・・・。
 

DS18B20

DS18B20+

テスト中。
上段が温度データの生情報。
下段は変換値。

 全体

 少し見にくいですが、
1側が、通常?の電源供給モード
2側が、パラサイトパワー

 DS18B20+接続

正常動作時
"+""-"表示を現在は追加しています。

 正常

DS18B20未接続

 DS18B20+未接続

パラサイトパワー時  クロック6MHzにして16F84Aで試していると・・・
たぶんPIN_B0の切り替えが、間に合わず電源不足でデータがおかしいと思う。
どこまで動作するか不明ですが、一応20MHzで動作させる。

 CRCエラー

16F84Aに書いてみた。
容量の関係で、RS232C出力のみです。

16F84A容量

15mのLANケーブルを出してきて・・・

LANケーブル

怪しい空中配線で接続。
エラー出ずに測定しているようです。
これまた、昔に作った(10年以上前?)怪しい基板で確認。

怪しい延長

12F683で232Cより電源供給

12F683 外部電源不要