전자 산업은 점점 더 높은 수준의 정확도를 요구하고 있으며, 온도 감지 분야도 예외는 아닙니다. 다양한 온도 감지 솔루션이 존재하며, 각각 장단점이 있습니다. 실리콘 온도 센서는 상당히 선형적이지만, 지금까지 다른 솔루션의 정확도를 제공하지 못했습니다. 그러나 최근 실리콘 온도 감지 기술의 발전으로 고해상도와 정밀도를 실리콘 솔루션으로 달성할 수 있게 되었습니다.
새 냉동고
2020년 3월, 영국은 봉쇄 직전이었습니다. 세계는 슈퍼마켓이 닫을 경우를 대비해 식량을 비축했고, 미래는 불확실해 보였습니다. 그때 브램블 가정의 냉동고가 고장 났습니다. 케니 로저스의 노래 "You Picked a Fine Time to Leave me…"가 머릿속에 맴도는 가운데, 우리는 온라인으로 새 냉동고를 찾았습니다.
며칠 후 새로운 냉동고가 도착했는데, 부인 브램블의 바람대로 전면 패널에 디지털 온도 디스플레이가 있었습니다. 권장 설정은 -18°C였고, 한 시간 후 기기는 올바른 온도에 도달해 음식을 넣을 준비가 되었습니다. 저는 디스플레이의 정확성을 의심했지만 음식이 얼기만 하면 상관없다고 생각했습니다. 하지만 한 가지 문제가 있었습니다. 엔지니어의 마음은 불안한 마음이라, 며칠 동안 현명해 보이는 디지털 표시가 눈도 깜빡이지 않고 나를 응시하며 자신만만한 선언으로 도전하는 듯하자, 저는 무너졌습니다. 이 새로운 주방 식구의 정확성 주장을 테스트해야 했습니다.
온도 센서
산업용 애플리케이션에는 다양한 온도 센서가 사용되며, 각각 장단점이 있습니다. 많은 문서가 다양한 온도 센서의 작동을 자세히 설명하므로 여기서는 반복하지 않고 요약만 제공합니다.
열전대(Thermocouples)
열전대는 매우 높은 온도를 측정하는 저비용, 중간 정확도 방법을 제공합니다. 1821년 토마스 제벡이 발견한 것처럼, 서로 다른 두 금속으로 만들어진 두 접합부가 다른 온도에서 유지될 때 그 사이에 전압이 생성되는 원리를 이용합니다. K-타입 열전대(크로멜과 알루멜 합금)의 경우 약 41μV/°C의 전압을 출력하며 1000°C 이상의 온도 측정에 사용할 수 있습니다. 하지만 제벡 효과는 두 접합부 사이의 온도 차이에 의존하므로, '뜨거운' 접합부가 관심 온도를 측정하는 동안 '차가운' 접합부는 알려진 온도로 유지되어야 합니다. 아이러니하게도 온도 차이를 측정하기 위해 차가운 접합부에 또 다른 온도 센서가 필요하며, AD8494 같은 부품이 이를 위한 완벽한 솔루션을 제공합니다. 열전대는 물리적으로 작아 열용량이 낮아 온도 변화에 빠르게 반응합니다.
RTD(저항 온도 검출기)
중간 온도(<500°C)를 측정하기 위해 산업계에서 널리 사용되는 RTD는 온도에 따라 양의 저항 변화를 보이는 금속 요소로 구성되며, 가장 일반적으로 백금을 사용합니다. 실제로 PT-100 센서는 산업에서 가장 널리 사용되는 RTD로, 백금(PT)으로 만들어졌고 0°C에서 100Ω의 저항을 가져 이 이름을 얻었습니다. 이 장치들은 열전대만큼 높은 온도를 측정하지는 않지만, 매우 선형적이고 판독값이 반복 가능합니다. PT100은 정밀 구동 전류가 필요하여 센서 양단에 온도에 비례하는 정확한 전압 강하를 만듭니다. PT100의 연결선 저항이 센서 저항 측정에 오류를 일으키므로, 켈빈 감지가 일반적이며 3선식 또는 4선식 센서가 됩니다.
서미스터(Thermistors)
저비용 솔루션이 필요하고 온도 범위가 낮다면 서미스터가 종종 충분합니다. 이 장치는 슈타인하트-하트 방정식에 기반한 특성으로 매우 비선형적이며, 온도 상승에 따라 저항이 감소합니다. 서미스터의 장점은 작은 온도 변화에도 저항 변화가 커서 비선형성에도 불구하고 높은 정확도를 달성할 수 있다는 점입니다. 서미스터는 빠른 열 응답도 특징입니다. 개별 서미스터의 비선형성은 잘 정의되어 있어 LTC2986 같은 부품을 사용해 보정할 수 있습니다.
다이오드, 다이오드마다 있지만 (Vbe) 강하가 없다…
마침내 새로운 가정 구성원의 진실성을 테스트하기 위해 실리콘 온도 센서를 선택했습니다. 이들은 박스에서 꺼내 바로 작동하며, 냉접합 온도 보상이나 선형화가 필요 없고, 아날로그 및 디지털 출력으로 제공되며 사전 보정되어 있습니다. 하지만 최근까지는 중간 정확도만 제공했습니다. 전자 장비의 건전성 상태를 나타내는 데는 충분했지만, 예를 들어 체온 측정처럼 보통 ±0.1°C 정확도가 필요한(ASTM E1112 표준) 용도로는 충분히 정확하지 않았습니다. 이는 최근 ADT7422와 ADT7320 실리콘 온도 센서의 출시로 바뀌었는데, 각각 ±0.1°C와 ±0.2°C의 해상도로 측정할 수 있습니다.
실리콘 온도 센서는 트랜지스터의 Vbe 온도 의존성을 이용하며, 이는 에버스-몰 방정식으로 주어지고 다음과 같이 근사됩니다:
여기서 Ic는 컬렉터 전류, Is는 트랜지스터의 역포화 전류, q는 전자 전하(1.602 x 10-19 쿨롱), k는 볼츠만 상수(1.38 x 10-23), T는 절대 온도입니다.
컬렉터 전류에 대한 위 표현은 다이오드의 전류에도 적용됩니다. 그런데 왜 모든 응용 회로는 다이오드 대신 트랜지스터를 사용할까요? 실제로는 다이오드의 전류도 전자가 pn 접합의 공핍 영역을 통과하면서 정공과 재결합하는 재결합 전류를 포함하며, 이는 다이오드의 Vbe와 온도에 대한 전류의 비선형성을 나타냅니다. 이 전류는 바이폴라 트랜지스터에도 나타나지만 트랜지스터의 베이스 쪽으로 흐르므로 컬렉터 전류에는 나타나지 않아 비선형성이 훨씬 적습니다.
위를 재배열하면
Is는 Ic에 비해 작으므로 위 방정식의 '1' 항을 무시할 수 있습니다. 이제 Vbe가 Ic의 로그 변화에 따라 선형적으로 변함을 알 수 있습니다. 또한 Ic와 Is가 상수라면 k와 q도 상수이므로 Vbe가 온도에 따라 선형적으로 변함을 알 수 있습니다. 트랜지스터에 일정한 컬렉터 전류를 강제하고 Vbe가 온도에 따라 어떻게 변하는지 측정하는 것은 쉬운 일입니다.
Is는 트랜지스터의 기하학과 관련되며 온도에 강한 의존성을 가집니다. 많은 실리콘 장치처럼 그 값은 온도가 10°C 상승할 때마다 두 배가 됩니다. 이 전류 변화의 효과는 'ln' 함수로 줄어들지만, Vbe의 절대값이 트랜지스터마다 달라 보정이 필요하다는 문제가 남습니다. 그래서 실용적인 실리콘 온도 센서는 두 개의 동일한 트랜지스터를 사용하고, 하나에는 Ic를, 다른 하나에는 10Ic를 강제합니다. 동일한 트랜지스터와 비율적으로 정확한 전류는 집적 회로에서 쉽게 제작할 수 있어 대부분의 실리콘 센서가 이 아키텍처를 사용합니다. 전류의 로그 변화는 Vbe의 선형 변화를 일으키고, 두 Vbe의 차이를 측정합니다.
위 방정식에서, 동일한 온도에서 유지되는 두 트랜지스터의 Vbe 차이는 다음과 같습니다:
여기서
우리는 다음을 알 수 있습니다:
각 트랜지스터에 다른 전류를 강제하고 Vbe의 차이를 측정함으로써, 비선형 Is 항, 서로 다른 절대 Vbe의 효과, 트랜지스터 기하학과 관련된 기타 모든 비선형 효과를 제거했습니다. k, q, ln10이 모두 상수이므로 Vbe의 변화는 절대 온도에 비례합니다(PTAT). 전류를 10배 차이로 두면 두 Vbe의 차이는 약 198μV/°C로 온도에 따라 선형적으로 변합니다. 이를 달성하기 위한 간소화된 회로는 그림 1에 나와 있습니다.
그림 1. 온도 측정을 위한 기본 회로.
그림 1의 전류는 신중하게 선택해야 합니다. 전류가 너무 높으면 트랜지스터 내부의 상당한 자기 가열과 내부 저항에서의 전압 강하가 결과를 왜곡합니다. 전류가 너무 낮으면 트랜지스터 내부의 누설 전류가 상당한 오류를 더합니다.
위 방정식은 트랜지스터의 컬렉터 전류와 관련되지만 그림 1은 일정한 이미터 전류가 트랜지스터에 주입되는 것을 보여줍니다. 트랜지스터는 컬렉터-이미터 전류 비율이 잘 확립되어 있고(1에 가까움) 설계될 수 있으므로 컬렉터 전류는 이미터 전류에 비례합니다.
이는 이야기의 시작일 뿐입니다. 실리콘 온도 센서로 ±0.1°C 정확도를 얻으려면 광범위한 특성화와 트리밍이 필요합니다.
새인가? 비행기인가?
아니요, 슈퍼 온도계입니다. 네, 존재합니다. 보정되지 않은 실리콘 온도 센서를 실리콘 오일로 채워진 욕조에 넣고 정밀한 온도로 가열한 후 슈퍼 온도계로 측정합니다. 이 장치는 소수점 다섯 자리 이상의 정확도로 측정할 수 있습니다. 센서 내부의 퓨즈를 끊어 온도 센서의 이득을 조정하여 y = mx + C 방정식으로 출력을 선형화합니다. 실리콘 오일은 매우 균일한 온도를 제공하므로 많은 장치를 한 사이클에 보정할 수 있습니다.
ADT7422는 25°C~50°C 온도 범위에서 ±0.1°C 정확도를 가집니다. 이 온도 범위는 일반적인 인체 온도인 38°C를 중심으로 하여 ADT7422가 정확한 활력 징후 모니터링에 이상적입니다. 산업용 애플리케이션의 경우 ADT7320은 -10°C~+85°C의 더 넓은 온도 범위에서 ±0.2°C 정확도로 트리밍됩니다.
그림 2. 0.8mm 두께 PCB에 장착된 ADT7422
실리콘 온도 센서의 보정이 유일한 문제는 아닙니다. 극도로 정밀한 전압 레퍼런스와 마찬가지로, 다이의 응력이 센서 정확도를 손상시킬 수 있으며 PCB, 리드 프레임, 플라스틱 몰딩, 노출 패드의 열팽창 모두를 고려해야 합니다. 납땜 공정도 자체 문제를 더합니다. 납땜 리플로 공정은 부품 온도를 260°C로 올려 플라스틱 패키지를 부드럽게 하고 다이의 리드 프레임을 왜곡시키며, 부품이 식고 플라스틱이 굳으면 기계적 응력이 다이 내부에 고정됩니다. 아나로그 디바이스의 엔지니어들은 수개월의 섬세한 실험 끝에 PCB 두께 0.8mm가 완벽한 최적점임을 발견했고, 납땜 후에도 ±0.1°C 정확도를 달성할 수 있었습니다.
소프트웨어 내부
시스템 소프트웨어의 대부분은 ADT7320의 데이터를 포맷하여 LCD에 표시하는 데 관련되어 있습니다. ADT7320에서 데이터를 가져오는 것은 간단합니다. 프로세서가 초기화되면 CS와 SCLK 라인 모두 높게 설정되고 SCLK 라인은 변환 사이에 높게 유휴 상태를 유지합니다. CS 라인이 낮아지면 데이터 트랜잭션이 시작됩니다. SPI에서 데이터는 SCLK의 상승 에지에서 ADT7320으로 읽히고 하강 에지에서 출력됩니다. 아래 코드는 초기화 루틴을 자세히 보여줍니다.
직렬 인터페이스를 리셋하려면 CS 라인을 낮추고, DOUT 라인을 높이고, SCLK를 40번 진동시킵니다. 그런 다음 CS 라인을 높입니다. 이는 ADT7320에 40개의 '1'을 클록하여 직렬 인터페이스를 리셋합니다. SPI 버스 리셋 후 최소 500μs의 지연이 필요합니다.
다음 코드 블록은 ADT7320에 읽기/쓰기 여부와 어떤 레지스터를 주소 지정할지 알려주는 명령 바이트를 보냅니다. 다음 줄
data = 0b00001000;
는 ADT7320에 레지스터 0x01에 쓰기를 지시합니다. ADT7320은 다음 줄을 사용하여 16비트 해상도로 데이터를 출력하도록 프로그래밍됩니다:
data = 0b10000000;
DOUT 라인은 '0'으로 사전 조건화되고, 데이터 바이트의 MSB가 조사되며 MSB가 '1'이면 DOUT 라인이 높게 설정됩니다. SCLK 라인이 높게 설정되어 데이터를 ADT7320으로 클록합니다.
void reset_adt7320(void) /* initialise ADT7320 */ { unsigned char n, data; /* reset the serial interface */ clearbit(PORTA, CS); setbit(PORTA, DOUT); for(n=40; n>0; n--) { clearbit(PORTA, SCLK); setbit(PORTA, SCLK); } setbit(PORTA, CS); delay_10ms(); /* must wait >500us after reset */ /* set to 16 bit mode */ clearbit(PORTA, CS); data = 0b00001000; /* clear bit 6 (write), reg #001 */ /* send command byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); /* clock data in on rising SCLK */ } data = 0b10000000; /* continuous conversion, 16 bits */ /* send data byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } setbit(PORTA, CS); }
온도 데이터를 얻는 함수 호출도 아래와 같이 유사합니다. 다음 줄
data = 0b01010000;
은 ADT7320에 16비트 데이터용 레지스터 2를 읽으라고 지시합니다.
코드는 ADT7320이 온도 변환을 수행할 때까지 최소 240ms 기다립니다. 그런 다음 16비트의 온도 데이터가 클록 아웃되고, CS 라인이 높게 설정됩니다.
음식을 이 수준의 온도 정밀도로 보관할 필요는 없으므로 인상적으로 정확하다고 생각했습니다. 그런 다음 영국 여름날 사무실 온도를 측정했습니다. 그림 4와 같이 22.87°C였습니다.
그림 4. 22.87°C의 사무실 온도
결론
실리콘 온도 센서는 크게 발전하여 매우 정밀해졌고, 높은 정확도로 활력 징후 모니터링을 수행할 수 있게 되었습니다. 내부 기술은 잘 정립된 원리에 기반하지만, 서브도 정확도 수준에 도달하는 데 필요한 트리밍은 상당한 노력이 필요합니다. 이 수준의 정확도를 달성하더라도 기계적 응력과 납땜이 수시간의 보정으로 얻은 이득을 쉽게 지워버릴 수 있습니다.
ADT7320과 ADT7422는 PCB에 납땜된 후에도 서브도 수준의 정밀도를 달성하기 위한 수년간의 특성화의 정점입니다.
참고문헌
Huijsing, Johan and Michiel Pertijis. Precision Temperature Sensors in CMOS Technology. Springer, 2006. Horowitz, Paul and Winfield Hill. The Art of Electronics. Cambridge University Press, April 2015. Analog Circuit Design, Volume 2, Chapter 32. Linear Technology, December 2012. AD590 datasheet. Analog Devices, Inc., January 2013. ADT5912 data sheet (to be released). Analog Devices, Inc.