部品実験 元に戻る

DS18B20 2024/6/30

本文目次

本文以外目次
1.概要
2.ハードブロック図
3.64Bit Lasered ROM Code
4.メモリーマップ
5.ROMコマンド
6.使い方
7.DS18B20 Arduinoプログラム(本文以外)



本   文

1.概要
●測定は-10℃~+85℃の範囲で±0.5℃の精度がある。
●通信は独自の1-Wireインターフェース。
●温度を最大12ビットを750msで変換します。
●電源は3~5.5Vで動作する。
●64ビットで構成した番号Lasered ROM Codeで一意を表している。
TO-92 Packagesのピンは
PIN DEVICE DESCRIPTION
1 GND Ground
2 DQ 1-WireR Interface
3 VDD Power supply: 3.0V to 5.5V

[目次に戻る]


2.ハードブロック図

[目次に戻る]


3.64Bit Lasered ROM Code
センサー個別のコードを持っており、並びは下表のとおり
MSB        64-bit Ragistration ROM number          LSB
8-bit CRC
MSB  LSB
48-bit Serial Number
MSB           LSB
8-bit Family Code
MSB          LSB
[目次に戻る]


4.メモリーマップ
SCRATCHPAD
Byte0 Temperature LSB (50h)
Byte 1 Temperature MSB (05h)
Byte 2 TH Register or User Byte 1*
Byte 3 TL Register or User Byte 2*
Byte 4 Configuration Register*
Byte 5 Reserved (FFh)
Byte 6 Reserved
Byte 7 Reserved (10h)
Byte 8 CRC*

←→
←→
←→


EEPROM
TH Register or User Byte 1
TL Register or User Byte 2
Configuration Register
(1)測定した温度データ
 データはByte0,Byte1に格納される。
 温度とデジタルデータの関係は下表の通り
TEMPERATURE
(°C)
DIGITAL OUTPUT
(BINARY)
DIGITAL OUTPUT
(HEX)
+125 0000 0111 1101 0000 07D0h
+85 0000 0101 0101 0000 0550h
+25.0625 0000 0001 1001 0001 0191h
+10.125 0000 0000 1010 0010 00A2h
+0.5 0000 0000 0000 1000 0008h
0 0000 0000 0000 0000 0000h
-0.5 1111 1111 1111 1000 FFF8h
-10.125 1111 1111 0101 1110 FF5Eh
-25.0625 1111 1110 0110 1111 FE6Fh
-55 1111 1100 1001 0000 FC90h

(2)Configuration Register*
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
0 R1 R0 1 1 1 1 1
構成レジスタのビット 7 とビット 0 ~ 4 は、デバイスの内部使用のために予約されており、上書きすることはできません。
R1とR0は温度の分解能を決めるビットで下表の様になっている
分解能
(Bit)
変換時間
(ms)
最小単位
(℃)
Configuration Register
Bit6(R1) Bit5(R0)
9 93.75 0.5 0 0
10 187.5 0.25 0 1
11 375 0.125 1 0
12 750 0.0625 1 1

(3)CRC生成
CRC バイトは、DS18S20 の 64 ビット ROM コードの?部として、およびスクラッチパッド メモリの 9 番目のバイトで提供されます。
ROM コード CRC は、ROM コードの最初の 56 ビットから計算され、ROM の最上位バイトに含まれています。
スクラッチパッド CRC は、スクラッチパッドに格納されているデータから計算されるため、スクラッチパッドのデータが変更されると変更されます。
CRC は、DS18S20 からデータを読み取るときにバス マスターにデータ検証の方法を提供します。
データが正しく読み取られたことを確認するには、バス マスターは受信データから CRC を再計算し、この値を ROM コード CRC (ROM 読み取りの場合) またはスクラッチパッド CRC (スクラッチパッド読み取りの場合) と比較する必要があります。計算された CRC が読み取り CRC と一致する場合、データはエラーなしで受信されています。
CRC 値の比較と操作を続行するかどうかの決定は、すべてバス マスターによって決定されます。
DS18S20 には、DS18S20 CRC (ROM またはスクラッチパッド) がバス マスターによって生成された値と一致しない場合にコマンド シーケンスの進?を妨げる回路はありません。
CRC (ROM またはスクラッチパッド) の同等の多項式関数は次のとおりです。
CRC = X8 + X5 + X4 + 1

バス マスターは、図 10に?す多項式ジェネレータを使?して CRC を再計算し、DS18S20 からの CRC 値と?較できます。この回路はシフト レジスタと XOR ゲートで構成され、シフト レジスタ ビットは 0 に初期化されます。ROM コードの最下位ビットまたはスクラッチパッドのバイト 0 の最下位ビットから始めて、?度に 1 ビットずつシフト レジスタにシフトする必要があります。
ROM から 56 番目のビットまたはスクラッチパッドからバイト 7 の最上位ビットをシフトすると、多項式ジェネレータには再計算された CRC が含まれます。

次に、DS18S20 からの 8 ビット ROM コードまたはスクラッチパッド CRC を回路にシフトする必要があります。この時点で、再計算された CRC が正しければ、シフト レジスタにはすべて 0 が含まれます。Maxim 1-Wire 巡回冗長検査に関する追加情報は、アプリケーション ノート 27「Maxim Button 製品での巡回冗長検査の理解と使用」に記載されています
[目次に戻る]


5.ROMコマンド
バス マスターが ROM コマンドを使?して通信する DS18S20 をアドレス指定した後、マスターは DS18S20 機能コマンドの 1 つを発?できます。
これらのコマンドにより、マスターは DS18S20 のスクラッチパッド メモリへの書き込みと読み取り、温度変換の開始、および電源モードの決定を?うことができます。
以下で説明する DS18S20 機能コマンドは、6項の使い方で例として説明する。
コマンド 内容説明
ROM検索
F0h
システムの初回電源投?時に、マスターはバス上のすべてのスレーブ デバイスの ROM コードを識別する必要があります。これにより、マスターはスレーブの数とデバイスの種類を判断できます。
マスターは消去法によって ROM コードを学習しますが、このプロセスでは、マスターはすべてのスレーブ デバイスを識別するために必要な回数だけ Search ROM サイクル (つまり、Search ROM コマンドに続いてデータ交換) を実?する必要があります。
バス上にスレーブが 1 つしかない場合は、Search ROM プロセスの代わりに、より簡単な Read ROM コマンド (以下を参照) を使用できます。
Search ROM 手順の詳細については、Button* Book of Standardsを参照してください。
ROMの読み取り
33h
このコマンドは、バス上にスレーブが 1 つある場合にのみ使?できます。これにより、バス マスターは、Search ROMte手順を使用せずにスレーブの 64 ビット ROM コードを読み取ることができます。
バス上に複数のスレーブが存在する場合にこのコマンドを使?すると、すべてのスレーブが同時に応答しようとしてデータの衝突が発生します。
マッチROM
55h
マッチ ROM コマンドの後に 64 ビット ROM コード シーケンスが続くと、バス マスターはマルチドロップ バスまたはシングルドロップ バス上の特定のスレーブ デバイスをアドレス指定できます。
64 ビット ROM コード シーケンスと完全に?致するスレーブのみがマスターによって発?された機能コマンドに応答し、バス上の他のすべてのスレーブはリセット パルスを待機します。
ROMをスキップ
CCh
マスターはこのコマンドを使?して、ROM コード情報を送信せずにバス上のすべてのデバイスを同時にアドレス指定できます。たとえば、マスターは Skip ROM コマンドに続いて Convert T [44h] コマンドを発行することで、バス上のすべての DS18S20 に同時に温度変換を実行させることができます。

バス上にスレーブ デバイスが 1 つしかない場合のみ、Read Scratchpad [BEh] コマンドを Skip ROM コマンドに続けることができます。この場合、マスターがデバイスの 64 ビット ROM コードを送信せずにスレーブから読み取ることができるため、時間が節約されます。
Skip ROM コマンドの後に Read Scratchpad コマンドを続けると、スレーブが複数ある場合は複数のデバイスが同時にデータを送信しようとするため、バス上でデータの衝突が発生します。
アラーム検索
ECh
このコマンドの動作は、アラーム フラグが設定されているスレーブのみが応答することを除いて、Search ROM コマンドの動作と同じです。
このコマンドを使?すると、マスター デバイスは、最新の温度変換中に DS18S20 がアラーム状態を経験したかどうかを判断できます。
各アラーム検索サイクル (つまり、アラーム検索コマンドの後にデータ交換が続く) の後、バス マスターはトランザクション シーケンスのステップ 1 (初期化) に戻る必要があります。
アラーム フラグの動作の説明については、 「操作 - アラーム信号」セクションを参照してください。
温度を変換
44h
このコマンドは、単?の温度変換を開始します。
変換後、結果の温度データはスクラッチパッド メモリの 2 バイト温度レジスタに保存され、DS18S20 は低電力アイドル状態に戻ります。
デバイスがパラサイト パワー モードで使?されている場合、このコマンドが発?されてから 10μs (最?) 以内に、マスターはDS18S20 の電源供給セクションで説明されているように、変換中(tCONV)に 1-Wire バスの強力なプルアップを有効にする必要があります。
DS18S20 が外部電源によって電源供給されている場合、マスターは Convert T コマンドの後に読み取り時間スロットを発行することができ、DS18S20 は温度変換中は 0 を送信し、変換が完了すると 1 を送信して応答します。
寄生電力モードでは、変換中にバスが強力なプルアップによってハイに引き上げられるため、この通知?法は使用できません。
スクラッチパットに書き込む
4Eh
このコマンドにより、マスターは DS18S20 のスクラッチパッドに 2 バイトのデータを書き込むことができます。
最初のバイトはTHレジスタ (スクラッチパッドのバイト 2) に書き込まれ、2 番?のバイトはTLレジスタ (スクラッチパッドのバイト 3) に書き込まれます。データは最下位ビットから先に送信する必要があります。
マスターがリセットを発?する前に両?のバイトを書き込む必要があります。
そうしないと、データが破損する可能性があります。
スクラッチパッドを読む
BEh
このコマンドにより、マスターはスクラッチパッドの内容を読み取ることができます。
データ転送はバイト 0 の最下位ビットから始まり、スクラッチパッドを介して 9 番目のバイト (バイト 8 - CRC) が読み取られるまで続きます。
スクラッチパッド データの一部だけが必要な場合、マスターはいつでもリセットを発行して読み取りを終了できます。
スクラッチパッドをコピー
48h
このコマンドは、スクラッチパッドのTHおよびTLレジスタ (バイト 2 および 3)の内容を EEPROM にコピーします。
デバイスがパラサイト パワー モードで使?されている場合、このコマンドが発?されてから 10μs (最大) 以内に、マスターはDS18S20 の電源供給セクションで説明されているように、1-Wire バス上で少なくとも 10ms の間強?なプルアップを有効にする必要があります。
E2を思い出す
B8h
このコマンドは、アラーム トリガー値 (THとTL)を EEPROM から呼び出し、データをそれぞれスクラッチパッド メモリのバイト 2 と 3 に配置します。
マスター デバイスは、Recall E2コマンドに続いて読み取りタイム スロットを発行することができ、DS18S20 は、呼び出しが進行中は 0 を、呼び出しが完了すると 1 を送信して、呼び出しのステータスを示します。
呼び出し操作は電源投?時に自動的に実行されるため、デバイスに電源が投?されるとすぐに、スクラッチパッドで有効なデータが使?可能になります。
電源の状態
B4h
マスター デバイスはこのコマンドを発?し、その後に読み取りタイム スロットを発行して、バス上の DS18S20 が寄生電源を使?しているかどうかを判断します。
読み取りタイム スロット中、寄生電源で駆動される DS18S20 はバスを低く引き下げ、外部電源で駆動される DS18S20 はバスを低く維持します。
このコマンドの使用方法については、「DS18S20 の電源供給」セクションを参照してください。
[目次に戻る]


6.使い方
 コマンド例はOneWire.hライブラリーを使用した場合を記載します
(1)複数の場合
 a.送信 リセット マスタが、リセットパルスを出します。
  myWire.reset()

 b.受信 存在パルス DS18B20は、存在パルスで応じます

 c.※1送信 MATCH ROM [55h] マスターが、「MATCH ROM」コマンドを出します。
  myWire.write(0x55, 1);
  ※1送信 64-bit ROMコード マスターは、DS18B20にROMコードを送ります。

 c.※2送信 MATCH ROM [CCh] マスターが、「MATCH ROM」コマンドを出します。
  myWire.write(0xCC, 1);

 d.送信 CONVERT T [44h] マスターは、「CONVERT T」コマンドを出します。
  myWire.write(0x44, 1);

 e.送信 DQ線を、強いプルアップで[Hi]にします。 マスターは、変換(tCONV)の間、強いプルアップをDQに適用します。

 f.送信 リセット マスタが、リセットパルスを出します。
   myWire.reset()

 g.受信 存在パルス DS18B20は、存在パルスで応じます。

 h.送信 MATCH ROM [55h] マスターが、「MATCH ROM」コマンドを出します。
   myWire.write(0x55, 1);

 i.送信 64-bit ROM code マスターは、DS18B20にROMコードを送ります。
   myWire.select(addr);

 j.送信 READ SCRATCHPAD [BEh] マスターは、「READ SCRATCHPAD」コマンドを出します。
  myWire.write(0xBE);

 k.受信 9バイトのデータ マスターは、CRCを含む全てのスクラッチパッドを読みます。
  myWire.read()
 マスターは、スクラッチパッドの先頭から8バイトのデータでCRCを再計算し、計算されたCRCを、読み込まれたCRC[Byte 9]と比較します。
それが一致する場合は、マスターは継続します。そうでなければ、読み込み操作が繰り返されます。

プログラムのれいとしては 1.DS18B20ソフArduino を参照してください。
[目次に戻る]