DS18B20温度センサー知識紹介
DS18B20 は一般的に使用されるデジタル温度センサーです. デジタル信号を出力します, サイズが小さいという特徴があります, ハードウェアのオーバーヘッドが低い, 強力な抗干渉能力, 高精度, そして広く使われています.
DS18B20温度センサーの紹介
技術的な機能:
①. 一意のシングルワイヤーインターフェイスモード. DS18B20がマイクロプロセッサに接続されている場合, のみ 1 マイクロプロセッサとDS18B20の間の双方向通信を実現するには、ワイヤが必要です.
②. 温度測定範囲-55℃~+125℃, 固有の温度測定誤差1℃.
③. マルチポイントネットワーク機能をサポートします. 複数のDS18B20は、3つのワイヤーのみで並行して接続できます, そして最大 8 マルチポイント温度測定を実現するために並行して接続できます. 数が大きすぎる場合, 電源電圧が低すぎます, 不安定な信号伝送をもたらします.
④. 動作電源: 3.0〜5.5V/dc (データライン寄生電源を使用できます).
⑤. 使用中に周辺コンポーネントは必要ありません.
⑥. 測定結果は、9〜12ビットのデジタル形式で連続して送信されます.
⑦. ステンレス鋼の保護チューブの直径はφ6です.
⑧. DN15〜25のさまざまな中型産業パイプラインの温度測定に適しています, DN40〜DN250および狭いスペースの機器.
⑨. 標準インストールスレッドM10x1, M12x1.5, G1/2”はオプションです.
⑩. PVCケーブルが直接接続されているか、ドイツのボールタイプのジャンクションボックスが接続されています, これは、他の電気機器との接続に便利です.
DS18B20タイミングと温度測定の原則の読み取りと書き込み:
DS18B20温度測定原理を図に示します 1. 図の低温係数結晶発振器の振動周波数は、温度によってほとんど影響を受けません, 対抗するために送信される固定周波数パルス信号を生成するために使用されます 1. 高温係数結晶発振器の振動周波数は、温度とともに大幅に変化します, 生成された信号は、カウンターのパルス入力として使用されます 2. カウンタ 1 また、温度レジスタは-55に対応するベース値にプリセットされています。. カウンタ 1 低温係数結晶発振器によって生成されたパルス信号を減算します. カウンターのプリセット値の場合 1 に減らされます 0, 温度レジスタの値は 1, カウンターのプリセット 1 リロードされます. カウンタ 1 再起動して、低温係数クリスタル発振器によって生成されたパルス信号をカウントします, サイクルはカウンターまで続きます 2 カウント 0, 温度レジスタ値の蓄積を停止します. 現時点では, 温度レジスタの値は測定温度です. 勾配アキュムレータは、温度測定プロセスの非線形性を補償し、修正するために使用されます, およびその出力は、カウンターのプリセット値を修正するために使用されます 1.
形 1 次のとおりです:
2. DS18B20およびMCU接続図
3. DS18B20 PIN定義:
DQ: データ入力/出力. ドレイン1線インターフェイスを開きます. また、寄生パワーモードVDDで使用すると、デバイスに電力を提供できます: ポジティブ電源GND: パワーグラウンド 4. DS18B20内部分析の紹介:
上記の図は、DS18B20のブロック図を示しています, 64ビットROMは、デバイスの一意のシリアルコードを保存します. バッファメモリには含まれています 2 温度センサーのデジタル出力を保存する温度レジスタのバイト. 加えて, バッファメモリは、1バイトの上部および下部アラームトリガーレジスタへのアクセスを提供します (thとtl) 1バイトの構成レジスタ. 構成レジスタにより、ユーザーは温度の解像度をデジタル変換に設定できます 9, 10, 11, または 12 ビット. TH, TL, 構成レジスタは不揮発性です (Eeprom), そのため、デバイスの電源が切れたときにデータを保持します. DS18B20は、マキシムのユニークな1線バスプロトコルを使用しています, コントロール信号を使用します. すべてのデバイスが3状態またはオープンドレインポートを介してバスに接続されているため、コントロールラインには弱いプルアップ抵抗が必要です。 (DS18B20の場合のDQピン). このバスシステムでは、マイクロプロセッサ (マスター) デバイスごとに一意の64ビットコードを使用します. 各デバイスには一意のコードがあるからです, 1つのバスで対処できるデバイスの数は、実質的に無制限です.
温度レジスタ形式
温度/データ関係
操作アラーム信号
DS18B20が温度変換を実行した後, 温度値を、1バイトTHおよびTLレジスタに保存されているユーザー定義の2つの補数アラームトリガー値を比較します. 記号ビットは、値がプラスかマイナスかを示します: 正のs = 0, 負のs = 1. THおよびTLレジスタは不揮発性です (Eeprom) したがって、デバイスの電源が切れている場合、揮発性はありません. THおよびTLはバイトからアクセスできます 2 そして 3 メモリの.
THおよびTLレジスタ形式:
外部電源を使用してDS18B20に電力を供給する概略図
64-ビットレーザー読み取り専用メモリコード:
各DS18B20には、ROMに保存されている一意の64ビットコードが含まれています. 最も重要ではありません 8 ROMコードのビットには、DS18B20の単線ファミリーコードが含まれています: 28h. 次は 48 ビットには一意のシリアル番号が含まれています. 最も重要です 8 ビットには、周期的な冗長性チェックが含まれています (CRC) バイト, これは最初から計算されます 56 ROMコードのビット.
DS18B20メモリマップ
構成レジスタ:
形 2
バイト 4 メモリには構成レジスタが含まれています, 図に示すように編成されています 2. ユーザーは、テーブルに示すように、ここでビットR0とR1を使用してDS18B20の変換解像度を設定できます 2. これらのビットのパワーオンデフォルトはR0 =です 1 およびr1 = 1 (12-ビット解像度). 解像度と変換時間の間に直接的な関係があることに注意してください. 少し 7 そしてビット 0 に 4 構成レジスタはデバイスの内部使用のために予約されており、上書きすることはできません.
テーブル 2 温度計の解像度の構成
CRC生成
CRCバイトはDS18B20 64ビットROMコードの一部であり、スクラッチパッドの9番目のバイトで提供されます. ROMコードCRCは、最初から計算されます 56 ROMコードのビットとROMの最も重要なバイトに含まれています. ScratchPad CRCは、ScratchPadに保存されているデータに基づいて計算されます, したがって、ScratchPadのデータが変更されると変更されます. CRCは、DS18B20のデータを読むときにバスホストにデータ検証の方法を提供します. データが正しく読み取られていることを確認した後, バスマスターは、受信したデータからCRCを再計算し、その値をROMコードCRCと比較する必要があります (ROMの読み取りの場合) またはスクラッチパッドCRC (ScratchPadの読み取りの場合). 計算されたCRCが読み取りCRCに一致する場合, データは正しく受信されました. CRC値を比較して進行するという決定は、完全にバスマスターの裁量にあります. DS18B20内には、コマンドシーケンスの実行を妨げる回路はありません。:
DS18B20 CRC (ROMまたはスクラッチパッド) バスマスターによって生成された値と一致しません.
CRCの同等の多項式関数はです:
CRC = X8 + x5 + x4 + 1
バスマスターはCRCを再計算し、それをDS18B20のCRC値と比較することができます:
多項式発電機を図に示します 3. 回路には、シフトレジスタとYihuo Gatesが含まれます, そして、シフトレジスタのビットは初期化されます 0. ROMコードの最小ビットまたは最も有意なバイトのビット 0 スクラッチパッドでは、一度に1つずつシフトレジスタにシフトする必要があります. 少しシフトした後 56 ROMまたは最も重要なバイトから 7 スクラッチパッドから, 多項式発電機には、再計算されたCRCが含まれます. 次, スクラッチパッドDS18B20の8ビットROMコードまたはCRC信号は回路にシフトする必要があります. この時点で, 再計算されたCRCが正しい場合, シフトレジスタはすべて0になります.
形 3: CRCジェネレーター
V. DS18B20へのアクセス:
DS18b20にアクセスするためのシーケンスは次のとおりです:
ステップ 1. 初期化;
ステップ 2. ROMコマンド (必要なデータ交換が続きます);
ステップ 3. DS18B20関数コマンド (必要なデータ交換が続きます);
注記: このシーケンスは、DS18B20にアクセスするたびに追跡されます, DS18B20が順序のステップが欠落しているか故障していない場合、DS18B20が応答しないため. このルールの例外は、検索ROMです [F0H] アラーム検索 [私] コマンド. これら2つのROMコマンドを発行した後, ホストはステップに戻る必要があります 1 順番に.
(上記の紹介は公式マニュアルから翻訳されています)
ROMコマンド
1, ROMを読んでください [33h]
2, ROMを一致させます [55h]
3, 出荷室 [CCH]
4, アラーム検索 [私]
DS18B20関数コマンド
1, 温度を変換します [44h]
2, スクラッチパッドを書きます (メモリ) [4ええ]
3, ScratchPadを読んでください (メモリ) [beh]
4, ScratchPadをコピーします (メモリ [48h]
5, 再び覚醒e2 [B8H]
6, パワーを読む [B4H]
(上記のコマンドの詳細な説明, 公式マニュアルを参照してください)
vi. アクセスDS18B20タイミング
初期化プロセス中, バスマスターはリセットパルスを送信します (TX) 1線バスを引くことで、少なくとも480µsの低レベル. それから, バスマスターがバスをリリースし、受信モードに入ります (Rx). バスをリリースした後, 5kΩのプルアップ抵抗器は、1線式バスを高く引っ張ります. DS18B20がこの立ち上がりエッジを検出するとき, 15µsから60µsを待ってから、60µsから240µsまで1線バスを低く引くことで存在パルスを送信します.
初期化のタイミング:
書き込み時間スロットには2つのタイプがあります: “書き込み1” タイムスロットと “書き込み0” タイムスロット. バスは書き込みを使用します 1 ロジックを書くためのタイムスロット 1 DS18b20と書き込み 0 ロジックを書くためのタイムスロット 0 DS18B20へ. すべての書き込みタイムスロットは、個々の書き込み時間スロット間で少なくとも1µsの回復時間があるため、少なくとも60μsの期間でなければなりません. 両方のタイプの書き込みタイムスロットは、マスターが1線バスを低く引くことによって開始されます (図を参照してください 14). 書き込みを生成します 1 タイムスロット, 1線バスを低く引っ張った後, バスマスターは15µs以内の1線バスをリリースする必要があります. バスをリリースした後, 5kΩのプルアップ抵抗器はバスを高く引っ張ります. aを生成します
書く 0 タイムスロット, 1ワイヤのラインを低く引っ張った後, バスマスターは、時間スロットの期間中、バスを低く保持し続ける必要があります (少なくとも60µs). DS18B20は、マスターが書き込み時間スロットを開始した後、15µsの窓から15µsから60µsの1線バスをサンプリングします. サンプリングウィンドウ中にバスが高い場合, ある 1 DS18B20に書き込まれます. ラインが低い場合, ある 0 DS18B20に書き込まれます.
注記: Timeslotは、単一チャネル専用のタイムスロット情報のシリアル自己緩和転換の一部です.
形 14 次のとおりです:
時間スロットを読みます:
DS18B20は、ホストが読み取り時間スロットを発行した場合にのみ、ホストにデータを送信できます. したがって, ホストは、読み取りメモリコマンドを発行した直後に読み取り時間スロットを生成する必要があります [beh] または読み取り電源 [B4H] DS18B20が必要なデータを提供するためにコマンド. あるいは, ホストは、変換tを発行した後、読み取り時間スロットを生成できます [44h] またはE2を思い出してください [B8H] ステータスを見つけるためのコマンド. すべての読み取りタイムスロットは、時間スロット間で1µsの最小回復時間があり、少なくとも60μsでなければなりません. 読み取りタイムスロットは、マスターが1線バスを低く引っ張って少なくとも1µsで低く保持し、バスをリリースすることによって開始されます。 (図を参照してください 14). マスターが読み取り時間スロットを開始した後, DS18b20はバスで1秒または0秒の送信を開始します. DS18b20はaを送信します 1 バスを高く保持し、aを送信します 0 バスを低く引くことによって. a 0 送信されます, DS18b20はバスを高く保持してバスをリリースします. タイムスロットが終了し、バスがプルアップ抵抗器によってハイアイドル状態に引き戻されます.