온도 센서 기술

디지털 온도 센서의 온도 측정 기능 설계 DS18B20

디지털 온도 센서 DS18B20의 온도 측정 기능

DS18B20은 DALLAS에서 생산한 1선식 디지털 온도 센서입니다., 3핀 TO-92 소형 패키지 포함. 온도 측정 범위는 -55℃~+125℃입니다., 9비트~12비트 A/D 변환 정확도로 프로그래밍할 수 있습니다.. 온도 측정 분해능은 0.0625℃에 도달할 수 있습니다., 측정된 온도는 부호 확장이 있는 16비트 디지털 양의 형태로 직렬 출력됩니다.. 작동 전원 공급 장치는 원격 끝에 도입되거나 기생 전원 공급 장치에 의해 생성될 수 있습니다.. 여러 개의 DS18B20을 병렬로 연결할 수 있습니다. 3 또는 2 윤곽. CPU는 많은 DS18B20과 통신하기 위해 하나의 포트 라인만 필요합니다., 마이크로프로세서에서 더 적은 포트를 차지함, 많은 리드와 논리 회로를 절약할 수 있습니다.. 위의 특성으로 인해 DS18B20은 장거리 다중 지점 온도 감지 시스템에 매우 적합합니다..

디지털 온도 센서 DS18B20의 온도 측정 기능

디지털 온도 센서 DS18B20의 온도 측정 기능

2. DS18B20 ds18b20 회로도의 내부 구조
DS18B20의 내부 구조는 그림에 나와 있습니다. 1, 주로 구성되는 4 부분품: 64-비트 ROM, 온도 센서, 비 휘발성 온도 경보 경보 Th 및 Tl, 및 구성 레지스터. DS18B20의 핀 배열은 그림에 나와 있습니다. 2. DQ는 디지털 신호 입력/출력 터미널입니다; GND는 전력 접지입니다; VDD는 외부 전원 공급 장치 입력 터미널입니다 (기생 전원 배선 모드에서 접지됨, 그림 참조 4).

ROM의 64비트 일련번호는 공장에서 출고되기 전에 사진으로 에칭됩니다.. DS18B20의 주소 시퀀스 코드로 간주될 수 있습니다.. 각 DS18B20의 64비트 일련번호는 다릅니다.. 순환 중복 검사 코드 (CRC=X8+X5+X4+1) 64비트 ROM의 배열. ROM의 역할은 각 DS18B20을 다르게 만드는 것입니다, 여러 DS18B20을 하나의 버스에 연결할 수 있습니다..

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
에스
에스
에스
에스
에스
22
25
24

온도 값 상위 바이트
고온 및 저온 경보는 TH 및 TL을 트리거합니다., 구성 레지스터는 1바이트의 EEPROM으로 구성됩니다.. 메모리 기능 명령을 사용하여 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-비트 정밀도, 최대 변환 시간은 750ms입니다.. 프로그래밍되지 않은 경우 기본값은 12비트 정밀도입니다..

고속 레지스터는 9바이트 메모리입니다.. 처음 2바이트에는 측정된 온도의 디지털 정보가 포함됩니다.; 3번째, 4th, 5번째 바이트는 TH의 임시 복사본입니다., TL, 및 구성 레지스터, 각기, 전원 공급 재설정이 발생할 때마다 새로 고쳐집니다.; 6번째, 7th, 및 8번째 바이트는 사용되지 않으며 모두 논리 1로 표시됩니다.; 9번째 바이트는 이전의 모든 CRC 코드를 읽습니다. 8 바이트, 올바른 의사소통을 보장하는 데 사용할 수 있는 것.

3. DS18B20 작업 순서
DS18B20의 첫 번째 줄 작업 프로토콜 흐름은 다음과 같습니다.: 초기화 → ROM 연산 명령 → 메모리 연산 명령 → 데이터 전송. 작업 순서에는 초기화 순서가 포함됩니다., 시퀀스 쓰기 및 시퀀스 읽기, 그림과 같이 3 (에이) (비) (기음).

(에이) 초기화 순서
(기음) 읽기 순서

DS18B20과 마이크로프로세서의 일반적인 연결 회로도

DS18B20과 마이크로프로세서의 일반적인 연결 회로도

수치 3, DS18B20 작업 순서 다이어그램

4. DS18B20 및 단일 칩 마이크로컴퓨터의 일반적인 인터페이스 디자인
수치 4 MCS-51 시리즈 단일 칩 마이크로컴퓨터를 예로 들어 DS18B20과 마이크로프로세서 간의 일반적인 연결을 그려봅니다.. 그림에서 4 (에이), DS18B20은 기생 전원 공급 모드를 채택합니다., VDD 및 GND 단자는 접지되어 있습니다.. 그림에서 4 (비), DS18B20은 외부 전원 공급 모드를 채택합니다., VDD 단자는 3V~5.5V 전원으로 전원이 공급됩니다..

에이) 기생 전원 공급 장치 작동 모드
(비) 외부 전원 공급 장치 작동 모드

DS18B20 작동 타이밍 다이어그램

DS18B20 작동 타이밍 다이어그램

수치 4 DS18B20과 마이크로프로세서의 일반적인 연결 다이어그램

단일 칩 마이크로컴퓨터 시스템에서 사용하는 수정 주파수를 12MHz로 가정하면, 초기화 타이밍에 따라 3개의 서브루틴이 작성됩니다., DS18B20의 쓰기 타이밍과 읽기 타이밍: INIT는 초기화 서브루틴입니다.; WRITE는 쓰는 거야 (명령 또는 데이터) 서브루틴; READ는 데이터 읽기 서브루틴입니다.. 모든 데이터 읽기 및 쓰기는 가장 낮은 비트부터 시작됩니다..

DATEQUP1.0
……
초기화:클레아
이니10:SETBDAT
MOVR2,#200
이니11:Clrdat
DJNZR2,INI11; 호스트는 3μs×200=600μs 동안 재설정 펄스를 보냅니다.
SETBDAT; 호스트가 버스를 풀어줍니다., 포트 라인이 입력으로 변경됩니다
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20은 2μs×30=60μs 동안 대기합니다.
CLRC
오르크,저것; DS18B20 데이터 라인이 낮습니까? (맥박이 존재한다)?
JCINI10; DS18B20이 준비되지 않았습니다., 다시 초기화하다
MOVR6, #80
INI13: 오르크, 저것
JCINI14; DS18B20 데이터 라인이 높아짐, 초기화가 성공했습니다
DJNZR6, INI13; 데이터 라인 로우 레벨은 3μs × 동안 지속될 수 있습니다. 80 = 240μs
심피니10; 초기화 실패, 다시 시작하다
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20은 최소 2μs 동안 응답합니다 × 240 = 48 0μs
RET

;---------------------------------
쓰다:클레아
MOVR3,#8;고리 8 타임스, 바이트를 쓰다
WR11:SETBDAT
MOVR4,#8
RRCA;쓰기 비트가 A에서 CY로 이동합니다.
Clrdat
WR12:DJNZR4,WR12
;16μs 동안 기다립니다.
MOVDAT,씨;명령 워드는 비트 단위로 DS18B20으로 전송됩니다.
MOVR4,#20
WR13:DJNZR4,WR1 3
; 쓰기 프로세스가 60μs 동안 지속되는지 확인하십시오.
DJNZR3,WR11
; 바이트를 보내기 전에 계속
SETBDAT
RET

;---------------------------------
읽다:클레아
MOVR6,#8; 고리 8 타임스, 바이트 읽기
RD11:Clrdat
MOVR4,#4
안돼; 낮은 레벨은 2μs 동안 지속됩니다.
SETBDAT; 포트 라인을 입력으로 설정
RD12:DJNZR4,RD12
; 8μs 동안 기다립니다.
MOVC,T에서
;호스트는 DS18B20의 데이터를 비트 단위로 읽습니다.
RRCA;읽은 데이터는 A로 이동됩니다.
MOVR5,#30
RD13:DJNZR5,RD13
;판독 프로세스가 60μs 동안 지속되는지 확인하십시오.
DJNZR6,RD11
;1바이트의 데이터를 읽은 후, A에 저장하세요
SETBDAT
RET
;---------------------------------
호스트는 온도 변환을 완료하기 위해 DS18B20을 제어하는 ​​3단계를 거쳐야 합니다.: 초기화, ROM 작동 지침, 및 메모리 작동 지침. 온도 변환 값을 읽기 전에 DS18B20을 시작하여 변환을 시작해야 합니다.. 하나의 라인에 하나의 칩만 연결한다고 가정, 기본 12비트 변환 정확도가 사용됩니다., 외부 전원 공급 장치가 사용됩니다., 변환을 완료하고 온도 값을 읽기 위해 서브루틴 GETWD를 작성할 수 있습니다..

영재:LCALLINIT
이동하다,#0CCH
LCALLWRITE; ROM 건너뛰기 명령 보내기
이동하다,#44H
LCALLWRITE; 변환 시작 명령 보내기
LCALLINIT
이동하다,#0CCH; ROM 건너뛰기 명령 보내기
LCALLWRITE
이동하다,#0BEH; 메모리 읽기 명령 보내기
LCALLWRITE
LCALLREAD
MOVWDLSB,ㅏ
; 온도 값의 하위 바이트를 WDLSB로 보냅니다.
LCALLREAD
MOVWDMSB,ㅏ
; 온도 값의 상위 바이트를 WDMSB로 보냅니다.
RET
……

서브루틴 GETWD에 의해 판독된 온도 값의 상위 바이트가 WDMSB 장치로 전송됩니다., 하위 바이트는 WDLSB 장치로 전송됩니다.. 그런 다음 온도 값 바이트와 해당 부호 비트의 표현 형식에 따라, 간단한 변환을 통해 실제 온도 값을 얻을 수 있습니다..

여러 개의 DS18B20이 한 회선에 연결된 경우, 기생 전원 연결 모드가 채택되었습니다., 변환 정확도 구성, 상한 및 하한 경보, 등. 필수. 그러면 서브루틴 GETWD 작성이 더 복잡해집니다.. 공간적 제약으로 인해, 이 부분은 자세히 설명하지 않겠습니다. 관련 내용을 참고해주세요.

DS18B20을 성공적으로 적용했습니다. “가정용 난방 욕조” 우리가 개발한 제어 시스템. 빠른 변환 속도, 높은 변환 정확도, 마이크로프로세서와의 간단한 인터페이스로 하드웨어 설계 작업의 편의성을 높였습니다., 효과적으로 비용을 절감하고 개발 주기를 단축합니다..