AT 8051 마이크로프로세서  DS1620 디지탈 온도센서

마이크로프로세서 8051 또는 ATmega128의 시리얼(serial) 통신으로 데이터를 주고 받을수 있는

디지탈온도 센서 DS1620에 대해서 알아봅니다.

DS1620은 디지털 온도계(Thermometer, thermostat) 로 사용 할수 있으며, 3개의 선(CLK,DQ,RST)을

이용하여 9비트로 내부의 데이터를 읽기, 내부로 쓰기를 할수 있으며, 별도의 콘트롤(CPU) 없이도

독립적으로 사용되거나 CPU에 인터페이스하여 사용할수 있습니다. CPU에 사용할때에도 사용전에

미리 온도를 설정하여야 하며 온도 측정 범위는 -55℃~+125℃의 범위를 0.5℃ 단위로 사용합니다. 

핀(pin) 기능 요약

DQ : 3선 입,출력

CLK/CONV : 3선 클럭 입력과 스탠드 어론 컨버터 입력

RST : 3선 리셋 입력

Vdd , GND :  전원 (+,-) 3v~5v

T_high : 설저 온도 TH와 같거나 높으면 "1"

T_low : 설정 온도 TL과 같거나 낮으며 "1"

T_com : TH를 초과하거나 TL보다 낮으면 "1"

FUNCTIONAL BLOCK DIAGRAM

DS1620 내부블록도는 위와 같으며 높은 온도 상수 발진기에서 결정된 게이트 주기로 낮은 온도

상수의 발진기의 클록 수를 카운트해서 오도를 측정합니다.

->카운터는 -55℃에 대응하는 기본 값으로 미리 설정되며

->게이트의 주기가 끝나기 전에 카운트가 0이되면 -55℃값으로 설정되어 있는 온도 레지스터는 온도

  -55℃보다 크다는 것을 가리키기 위해 증가합니다.

->또 동시에 카운터는 슬로프 어큐물레이터 회로로 결정된 값으로 설정되며 이회로는 모든 온도에

   대해서 발진기의 포물선 동작에 대한 보상이 필요합니다.

-> 카운터는 0에 도달할 때까지 클록을 카운트하고 게이트 주기가 끝날때깢 반복합니다.

->슬로프 어큐뮬레이터는 모든 온도 범위에 걸쳐 분해능이 좋게 하기위해 발진기의 비선형 동작을

  보상하며 모든 온도에서 각각 증가분 온도분을 카운트에 필요한 카운트 수를 변경하며, 원하는

   분해능을 얻기 위해 주어진 온도에서 디그리/카운트 값과 카운터의 값을 알고 있어야 합니다.

->필요한 카운터 값은 ds1620의 분해능이 0.5℃ 분해능이므로 이것으로 계산할수 있습니다.

 온   도

디지털 출력(2진수) 

디지털 출력(16진수) 

+125℃ 

0 11111010 

 0x00FA

 +25℃

0 00110010 

 0x0032

 +0.5℃

 0 00000001

 0x0001

 0℃

 0 00000000

 0x0000

 -0.5℃

 1 11111111

 0x01FF

 -25℃

 1 11001110

 0x01CE

 -55℃

 1 10010010

 0x0192

->데이터는 3선 통신을 이용ㅎ여 최하위 비트가 처음 전송되기 때문에 온도 데이터는 9비트

 워드(9번째 비트(최상의비트) 후에 RST는 "L"로 한다) 혹은 8비트로 2번 전송

-> 또는 아래처럼 최상위 7개의 비트는 무시하거나 0이 됩니다. 

 x

 x

 x

 x

 x

 1

 

 0

 0

 1

 1

 

 ->은 분해능을 얻기 위해 읽은 값에서 0.5℃ 비트 LBS를 잘라냅니다.

온도=temp_read+(count_oer_c-count_remain)/count_per_c

컨피그레이션/스테터스 레지스터 

 DONE

THF

TLF

NVB 

CPU 

1SHOT 

DONE : 1=변환완료, 0=변환진행중

THF : 온도 TH보다 크거나 같으면 "1"  0을 써 넣거나 리셋할때 까지 "1"의 상태를 유지한다.

TLF : 온도가 TH보다 같거나 작으면"1" 0을 써 넣거나 리셋할때 까지 "1"의 상태를 유지한다.

NVB : 1=E2메모리로 써 넣기 진행중, 0=비휘발성 메모리로 쓰기가능

CPU : 0=CLK/CONV 핀 RST가 "L"일때 변환 시작으로 사용,1=CPU와 3선 통신하다.

1SHOT : 1= 변환 시작 명령 T를 수신하면 온도 변환을 시작한다

             0= 계속해서 온도 변환을 시작한다. 이비트는 E2 메모리에 저장된다 초기값=0

3선을 이용한 통신

 인스트럭션

 설명

 프로토콜

 3선데이터

 주의

 온도 변환 명령

 온도 읽기

온도레지스터에서 마지막으로 변환된 값을 읽기

0xAA

읽은 데이터

 

 카운터 읽기

카운터에서 남아있는 카운터 값을 읽기

0xA0

읽은 데이터

 

 스로프 읽기

슬로프 어큐뮬레이터의 값을 읽기

0xA9

읽은 데이터

 

 변환 시작

온도 변환을 시작

0xEE

아이들

1

 변환 정지

온도 변한을 정지

0x22

아이들

1

 

서모스테트 명령

TH 쓰기

상위 온도 리미트 값을 TH 레지스터에 쓰기

 0x01

 써넣을 데이터

2

TL 쓰기

상위 온도 리미트 값을 TL레지스터에 쓰기

 0x02

 써넣을 데이터

 2 

TH 읽기

 상위 온도 리미트 값을 TH 레지스터에서 읽기

 0xA1  읽은 데이터

 2

TL 읽기

 하위 온도 리미트 값을 TL레지스터에서 읽기

 0xA2  읽은 데이터

 2 

컨피그 쓰기

 컨피그 레지스터로 컨피그 데이터 쓰기  0x0C  써넣을 데이터

 2

 컨피그 읽기  컨피그 레지스터에서 컨피그 데이터 읽기  0xAC  읽은 데이터

 2 

주의) 1

연속적인 변환 모드에서 변환 스톱 T명령은 계속적인 변환을 정지시키므로, 다시 시작하기 위하여 변환 시작 T 명령을

발생하여야 한다. 원쑈트 모드에서  변환 시작 T 명령은 희망하는 온도를 읽기 위하여 매번 발생되어야 합니다.

주의2)

실내 온도에서 E2를 쓰는데 10ms가 필요하며, 쓰기 명령을 발새한후 10ms동안 더 이상 아무것도 쓸수 없습니다.

Posted by it is