温度センサー技術

デジタル温度センサーDS18B20の温度測定機能の設計

デジタル温度センサーDS18B20の温度測定機能

DS18B20は、ダラスが生成する1線デジタル温度センサーです, 3ピンから92の小さなパッケージを備えています. 温度測定範囲は-55 ℃〜+125°です, そして、それは9ビット〜12ビットA/D変換精度にプログラムできます. 温度測定の解像度は0.0625に達する可能性があります, そして、測定された温度は、標識拡張を備えた16ビットのデジタル数量の形で連続して出力されます. その作業電源は、リモートエンドで導入したり、寄生電源によって生成されたりできます. 複数のDS18B20を並行して接続できます 3 または 2 線. CPUは、多くのDS18b20と通信するために1つのポートラインのみを必要とします, マイクロプロセッサのより少ないポートを占有します, 多くのリードとロジック回路を節約できます. 上記の特性により、DS18B20は長距離マルチポイント温度検出システムに非常に適しています.

デジタル温度センサーDS18B20の温度測定機能

デジタル温度センサーDS18B20の温度測定機能

2. DS18B20 DS18B20回路図の内部構造
DS18b20の内部構造を図に示します 1, 主に構成されています 4 部品: 64-ビットROM, 温度センサー, 不揮発性温度アラームはTHとTLをトリガーします, および構成レジスタ. DS18B20のPIN配置を図に示します 2. DQは、デジタル信号入力/出力端子です; GNDは電力場です; VDDは外部電源入力端子です (寄生電源配線モードに接地します, 図を参照してください 4).

ROMの64ビットのシリアル番号は、工場を出る前にフォトエッチングされています. DS18B20のアドレスシーケンスコードと見なすことができます. 各DS18b20の64ビットシリアル番号は異なります. 循環冗長チェックコード (Crc = x8+ x5+ x4+1) 64ビットROMの配置. ROMの役割は、各DS18B20を異なるものにすることです, 複数のDS18B20を1つのバスに接続できるように.

DS18B20チップの内部構造

DS18B20チップの内部構造

形 1, DS18B20の内部構造

DS18B20の温度センサーは、温度測定を完了します, これは、16ビットのサイン拡張バイナリ補数測定値の形で提供されます, 0.0625℃/LSBの形で表されます, ここで、Sはサインビットです. 例えば, +125℃のデジタル出力は07d0hです, +25.0625のデジタル出力は0191Hです, -25.0625℃のデジタル出力はFF6FHです, -55℃のデジタル出力はFC90Hです.

23
22
21
20
2-1
2-2
2-3
2-4

温度値低バイト
msblsb
S
S
S
S
S
22
25
24

温度値ハイバイト
高温および低温アラームはTHとTLをトリガーします, 構成レジスタは、eepromの1つのバイトで構成されています. メモリ関数コマンドを使用してthに書き込むことができます, TL, または構成レジスタ. 構成レジスタの形式は次のとおりです:

0
R1
R0
1
1
1
1
1
msblsb

R1とR0は、温度変換のための精度の桁数を決定します: R1R0 = “00”, 9-ビット精度, 最大変換時間は93.75msです; R1R0 = “01”, 10-ビット精度, 最大変換時間は187.5msです. R1R0 = “10”, 11-ビット精度, 最大変換時間は375msです. R1R0 = “11”, 12-ビット精度, 最大変換時間は750ミリ秒です. プログラムされていない場合、デフォルトは12ビット精度です.

高速レジスタは9バイトのメモリです. 最初の2バイトには、測定温度のデジタル情報が含まれています; 3番目, 4th, 5番目のバイトは、Thの一時的なコピーです, TL, および構成レジスタ, それぞれ, パワーオンリセットが発生するたびに更新されます; 6日, 7th, 8番目のバイトは使用されず、すべてのロジック1として表されます; 9番目のバイトは、前のすべてのCRCコードを読み取ります 8 バイト, 正しい通信を確保するために使用できます.

3. DS18B20作業シーケンス
DS18b20の第一選択プロトコルの流れはです: 初期化→ROM操作命令→メモリ操作命令→データ送信. その作業シーケンスには、初期化シーケンスが含まれます, シーケンスと読み取りシーケンスを書き込みます, 図に示すように 3 (ある) (b) (c).

(ある) 初期化シーケンス
(c) シーケンスを読み取ります

DS18B20およびマイクロプロセッサの典型的な接続回路図

DS18B20およびマイクロプロセッサの典型的な接続回路図

形 3, DS18B20作業シーケンス図

4. DS18B20およびシングルチップマイクロコンピューターの典型的なインターフェイス設計
形 4 MCS-51シリーズシングルチップマイクロコンピューターを採用して、DS18B20とマイクロプロセッサの典型的な接続を描画する例として撮影します. 図で 4 (ある), DS18B20は寄生電源モードを採用しています, そして、そのVDDおよびGND端子は接地されています. 図で 4 (b), DS18B20は外部電源モードを採用しています, そして、そのVDD端子は3V〜5.5V電源を搭載しています.

ある) 寄生電源作業モード
(b) 外部電源作業モード

DS18B20作業タイミング図

DS18B20作業タイミング図

形 4 DS18B20およびマイクロプロセッサの典型的な接続図

シングルチップマイクロコンピューターシステムで使用される結晶周波数が12MHzであると仮定します, 3つのサブルーチンは、初期化のタイミングに従って書かれています, タイミングを書き、DS18B20のタイミングを読みます: initは初期化サブルーチンです; 書き込みは書き込みです (コマンドまたはデータ) サブルーチン; 読み取りは読み取りデータサブルーチンです. すべてのデータの読み取りと書き込みは最低から始まります.

datequp1.0
……
init:clrea
ユナイテッド:setbdat
movr2、#200
INI11:clrdat
DJNZR2、INI11; ホストは、3μs×200μsのリセットパルスを送信します
setbdat; ホストはバスをリリースします, ポートラインは入力に変更されます
movr2、#30
In12:DJNZR2、INI12; DS18b20は2μs×30 =60μsを待ちます
CLRC
orlc,それ; DS18B20データラインは低いです (パルスが存在します)?
jcini10; DS18B20の準備ができていません, 再独立性
movr6, #80
INI13: orlc, それ
jacini14; DS18B20データラインは高くなります, 初期化が成功しました
djnzr6, INI13; データラインの低レベルは3μs×で持続します 80 = 240ms
sjmpini10; 初期化に失敗しました, 再起動
INI14: modr2, #240
In15: djnzr2, NI15; DS18b20は少なくとも2μs×で応答します 240 = 48 0μs
ret

;-------------------------
書く:clrea
movr3、#8;ループ 8 回, バイトを書いてください
WR11:setbdat
movr4、#8
RRCA;AからCyへのビットの動きを書きます
clrdat
WR12:DJNZR4、WR12
;16μsを待ちます
movdat,C;コマンドワードは、DS18B20にビットで送信されます
movr4、#20
WR13:DJNZR4、WR1 3
; 書き込みプロセスが60μs続くことを確認してください
DJNZR3、WR11
; バイトを送信する前に続行します
setbdat
ret

;------------------------
読む:clrea
movr6、#8; ループ 8 回, バイトを読んでください
RD11:clrdat
movr4、#4
nop; 低レベルは2μsで続きます
setbdat; ポートラインを入力に設定します
RD12:DJNZR4、RD12
; 8μsを待ちます
movc,tから
;ホストはDS18b20ビットのデータをビットずつ読み取ります
RRCA;読み取りデータはaに移動されます
movr5、#30
RD13:DJNZR5、RD13
;読み取りプロセスが60μs続くことを確認してください
djnzr6、rd11
;データのバイトを読んだ後, に保存します
setbdat
ret
;-------------------------
ホストは、温度変換を完了するためにDS18b20を制御するために3つのステップを踏む必要があります: 初期化, ROM操作手順, およびメモリ操作の指示. 温度変換値を読み取る前に、DS18B20を開始するために開始する必要があります. 1つのチップのみが1つの行に接続されていると仮定すると, デフォルトの12ビット変換精度が使用されます, そして、外部電源が使用されます, サブルーチンのgetWDは、変換を完了して温度値を読み取ることができます.

才能:lcallinit
Mova,#0CCH
lcallwrite; Skip ROMコマンドを送信します
Mova,#44H
lcallwrite; 開始変換コマンドを送信します
lcallinit
Mova,#0CCH; Skip ROMコマンドを送信します
lcallwrite
Mova,#0bh; 読み取りメモリコマンドを送信します
lcallwrite
lcallread
movwdlsb,あ
; 低いバイトの温度値をWDLSBに送信します
lcallread
movwdmsb,あ
; WDMSBに高いバイトの温度値を送信します
ret
……

Subroutine getWDによって読み取られた温度値の高いバイトがWDMSBユニットに送信されます, 低バイトがWDLSBユニットに送信されます. 次に、温度値バイトとそのサインビットの表現形式に従って, 実際の温度値は、単純な変換によって取得できます.

複数のDS18b20が1行で接続されている場合, 寄生電源接続モードが採用されています, 変換精度の構成, 高および下限アラーム, 等. 必要です. その後、Subroutine getWDの執筆はより複雑になります. スペースの制限のため, このセクションについては詳細に説明しません. 関連するコンテンツを参照してください.

DS18B20を次のように適用しました “家庭用暖房バス” 私たちが開発した制御システム. その高速変換速度, 高い変換精度, そして、マイクロプロセッサとのシンプルなインターフェースは、ハードウェアの設計作業に非常に便利なものをもたらしました, コストを効果的に削減し、開発サイクルを短縮します.