0

部品:1-Wire温度センサー(DS1822)

September 25, 2022

ダウンロード:buspirate.v0d.zip

ダラス/マキシムの1線式プロトコルはバス海賊への最も要求された追加です。私たちは最後にいくつかのワイヤー部分を得ました、そして今日はDS1822 1-Wireデジタル温度計を示しています。データシート(PDF)をつかみ、それに従ってください。

この発行は、ハードウェアバージョン0のバス海賊ファームウェアのリリースV.0Dと一緒に行っています。これには、新しい1-Wireプロトコルライブラリ、より多くの設定オプション、その他の改良が含まれます。

DS1822経済気候デジタル温度計(Digikey#DS1822 + -nd、$ 3.87)CADSOFTダウンロードページのワイプ用の1線グラリのフットプリントを発見しました。

1線式プロトコルは、データ転送のために単一のケーブルを利用し、時には電力を供給します。ビット周期を描写するには別のクロックがないため、データが時間依存の「スロット」で転送されます。

バス海賊

DS1822

SDA.

q

+ 5ボルト
v v

接地

g

DS1822の接続は表に示されています。バス海賊の5Volt電源を利用してDS1822に電力を供給しましたが、3.3ボルトでも機能します。抵抗器(R1、~5K)はバスを高い保持する。

すべての1線式コマンドはリセット手順で始まり、5つのROMコマンドのうちの1つに準拠しています。

指示
説明

0x33
ROMを読んでください。単一のガジェットアドレスをチェックアウトしました。

0x55
ROMとマッチします。ガジェットアドレスを一致させ、64ビットアドレスで準拠しています。

0xcc
ROMをスキップします。すべてのガジェットを一緒にアドレス指定します。

0xec.
警報検索アラーム状態を閲覧します。

0xF0
ROMを検索します。アドレス列挙手順の一部

ROMコマンドはデータシートの10ページに説明されています。すべてのROMコマンドはバスPirate 1-Wireライブラリのマクロとして提供されています。メニューの(0)を参照してください。 ROMコマンドマクロには、1線式バスリセット手順があります。

単一の装置

すべての1-Wireガジェットは一意の64ビット(8バイト)アドレスを持ち、1ワイヤのガジェットは一元的なトラッキング数を提供するためだけに使用されています。単一のガジェットが1-Wireバスにリンクされていると、チェックアウトされたROMコマンドはそのアドレスを抽出します。

1-Wire> {0x33 R:8 <-COMMAND XXX 1ワイヤバスリセットOKをリセットします XXX 1ワイヤライト:0x33 <-Read ROM XXX 1ワイヤーバルク読み取り、0x08バイト: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id# 1線>

コマンドは、バスリセット({)、チェックアウトROMコマンド(0x33)を送信し、64ビットアドレス(R:8,8バイト* 8ビット/バイト= 64ビット)を読みます。

非常に最初のバイト(0x22)はこれをDS1822温度計として決定します。次の6バイトはこのデバイスに固有のもので、最終バイトは前の7バイトのCRCです。

これで、Match ROMコマンドを使用してガジェットに対処し、それ以上の手順を送信できます。

1-wire> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
XXX 1ワイヤバスリセットOKをリセットします
XXX 1Wire Write:0x55 <-match ROMコマンド XXX 1WIRE WRITE:0x22 <-startアドレス XXX 1Wire Write:0x47 XXX 1ワイヤライト:0x45 XXX 1Wire Write:0x22 XXX 1Wire Write:0x00 XXX 1Wire Write:0x00 XXX 1Wire Write:0x00 XXX 1Wire Write:0x29 XXX 1Wire Write:0x44 <-start変換 1線>

まず、Match ROMコマンド(0x55)とガジェットアドレス(8バイト)を送信します。次に、温度変換を開始する変換Tコマンド(0x44、データシートページ11)です。

第2のコマンドシーケンスは、DS1822からの温度読み出しを検索する。

1-Wire> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe R:9
XXX 1ワイヤバスリセットOKをリセットします
XXX 1ワイヤライト:0x55
XXX 1Wire Write:0x22
…長い1線式アドレス…
XXX 1Wire Write:0x29
XXX 1WIRE WRITE:0xBE <-Read ScratchPad Command XXX 1ワイヤーバルク読み取り、0x09バイト: 0x71 0x01 0xFF 0x00 0x7F 0xFF 0x0F 0x10 0xF8 1線>

チェックアウトスクラッチパッドコマンド(0xbe、データシートページ11)は9バイトを返します。最初の2バイトを気にするだけで、残りはデータシートの7ページの表に従って復号化できます。温度はデータシートの4ページに従って計算されます.0x0171 Hex = 369 Dec、369 * 0.0625 = 23 C(74F)。

複数の機器

複数の1-Wireガジェットがバスを共有するとき、すべてのアドレスを決定することはより困難です。接続されたガジェットを検出するための最速の方法は、Browse ROMコマンド(0xF0)とバイナリ分岐手順を備えています。バス海賊はこれをマクロ(240)で自動化します。

1線>(240)<-MACRO 240 XXX 1WIRE ROMコマンド:ブラウズ(0xF0) ガジェットを見つけました: マクロ1線式アドレス 1.0×22 0x50 0x28 0x22 0x00 0x00 0x00 0x00 0x0a