057_아날로그온도센서_TMP36 💡🌙

도로시와 지니가 함께하는 반도체 접합 온도 특성, $10\text{mV}/^\circ\text{C}$ 전압 변환 공식 및 디지털 온도계 제작
- 👧 도로시: “교수님! 지니야! 오늘 우리 교실이 얼마나 더운지, 아두이노가 온도계처럼 정확한 섭씨 몇 도인지 숫자로 알려줄 수 있어?”
- 👨🏫 이호진 교수님: “그럼! 온도가 1℃ 변할 때마다 출력 전압을 정확히 10mV씩 올려주는 TMP36 아날로그 정밀 온도 센서 덕분이란다!”
-
🐶 토토: “바우! 온도가 30도를 넘어가면 선풍기를 자동으로 켜자 멍!”
- 🖥️ 강의 슬라이드: slides.md
1. TMP36 반도체 온도 센서의 특징과 장점

🌡️ 작지만 오차가 적은 정밀 실리콘 IC 센서
- 측정 온도 범위: $-40^\circ\text{C} \sim +125^\circ\text{C}$ 로 실내외 및 냉장고/냉동고 온도까지 폭넓게 측정 가능합니다.
- 선형 비례 출력 (Linear Output):
- 비선형 곡선을 갖는 써미스터(NTC)와 달리, 온도와 출력 전압이 완벽한 1차 직선 비례 관계를 갖습니다.
- 온도 계수: $10\text{mV} / ^\circ\text{C}$ ($0.01\text{V} / ^\circ\text{C}$).
- 영하($-^\circ\text{C}$) 측정 오프셋 ($500\text{mV}$):
- 섭씨 $0^\circ\text{C}$일 때 정확히 $0.5\text{V}(500\text{mV})$를 출력하도록 베이스라인이 설계되어 있어 단일 5V 전원만으로도 영하 40도까지 오차 없이 측정할 수 있습니다.
2. ⚠️ 극성 주의! TO-92 패키지 3개 핀 핀아웃

🚨 평평한 글자 면(Flat Face)을 바라보고 왼쪽부터 확인!
| 핀 번호 | 핀 이름 | 아두이노 연결 | 기능 설명 |
|---|---|---|---|
| 1번 (왼쪽) | $V_{\text{in}}$ (VCC) | 5V | 센서 구동 전원 ($2.7\text{V} \sim 5.5\text{V}$) |
| 2번 (가운데) | $V_{\text{out}}$ (Signal) | A0 핀 | 온도에 비례하는 아날로그 출력 전압 ($0.1\text{V} \sim 1.75\text{V}$) |
| 3번 (오른쪽) | GND | GND | 공통 접지 단자 (0V) |
[!CAUTION] TMP36은 트랜지스터와 똑같은 검은색 쌀알 모양(TO-92)입니다. VCC와 GND를 반대로 꽂으면 칩 내부가 역방향 전류로 수 초 만에 손을 델 정도로 뜨거워지며 영구 손상될 수 있으므로, 반드시 평평한 면의 글자를 보고 핀 위치를 확인하세요!
3. 센서값을 섭씨온도($^\circ\text{C}$)로 변환하는 수학 공식

📐 2단계 수학적 변환의 원리
- 1단계: 아날로그 ADC 측정값(0 ~ 1023)을 실제 전압($V$)으로 변환: \(V_{\text{out}} = \text{analogRead(A0)} \times \left(\frac{5.0\text{V}}{1024.0}\right)\)
- 2단계: 전압에서 섭씨온도($^\circ\text{C}$) 계산:
- $0^\circ\text{C}$일 때 전압이 $0.5\text{V}$이므로, 먼저 오프셋 $0.5\text{V}$를 빼줍니다.
- $1^\circ\text{C}$당 $0.01\text{V}(10\text{mV})$이므로 $0.01$로 나누어줍니다 (즉, $100$을 곱합니다): \(\text{온도}(^\circ\text{C}) = (V_{\text{out}} - 0.5) \times 100\)
- 계산 예시:
- A0 아날로그 측정값이
153인 경우: - $V_{\text{out}} = 153 \times (5.0 / 1024.0) \approx 0.747\text{V}$
- $\text{온도}(^\circ\text{C}) = (0.747 - 0.5) \times 100 = 24.7^\circ\text{C}$ (쾌적한 실내 온도!)
- A0 아날로그 측정값이
4. 팅커캐드 시뮬레이터 배선 연결

🔌 브레드보드 초간단 결선
- 평평한 글자 면을 바라보았을 때:
- 1번 핀(왼쪽) ➡️ 아두이노 5V 전원선
- 2번 핀(가운데) ➡️ 아두이노 A0 핀
- 3번 핀(오른쪽) ➡️ 아두이노 GND 접지선
- 별도의 저항 부품이 전혀 필요 없이 3가닥 점퍼선만으로 완성됩니다!
5. 실습 전체 코드: 실시간 디지털 온도계 (Arduino C++)
💻 섭씨(℃)와 화씨(℉)를 동시 계산하여 출력하는 펌웨어
// 핀 번호 상수 정의
const int TEMP_PIN = A0; // TMP36 Vout 핀이 연결된 아날로그 핀
void setup() {
// PC 시리얼 모니터 통신 시작 (고속 115200 bps 권장)
Serial.begin(115200);
Serial.println("==========================================");
Serial.println(" TMP36 Precision Digital Thermometer ");
Serial.println("==========================================");
}
void loop() {
// 노이즈 완화를 위해 10회 연속 측정 후 평균 필터링 적용
long sumADC = 0;
for (int i = 0; i < 10; i++) {
sumADC += analogRead(TEMP_PIN);
delay(10); // 10ms 간격 샘플링
}
float avgADC = sumADC / 10.0;
// 1. ADC 값을 아날로그 실제 전압(V)으로 변환
float voltage = avgADC * (5.0 / 1024.0);
// 2. 전압을 섭씨온도(°C)로 계산: (전압 - 0.5) * 100
float tempC = (voltage - 0.5) * 100.0;
// 3. 섭씨를 화씨온도(°F)로 환산: (C * 9/5) + 32
float tempF = (tempC * 9.0 / 5.0) + 32.0;
// 4. 시리얼 모니터에 정돈된 측정값 출력
Serial.print("Raw ADC: ");
Serial.print(avgADC, 1);
Serial.print(" | Voltage: ");
Serial.print(voltage, 3);
Serial.print(" V | Temp: ");
Serial.print(tempC, 1);
Serial.print(" °C (");
Serial.print(tempF, 1);
Serial.println(" °F)");
// 1초 간격으로 반복 측정
delay(1000);
}
6. 코드 상세 해설 및 10회 평균 필터링 기법
🔍 미세 전압 측정의 안정성을 극대화하는 노하우
- 10회 누적 평균 필터 (Moving Average Filter):
- 아날로그 핀의 전압은 주변 전자기 노이즈나 USB 전원 전압의 미세한 흔들림으로 인해 1~2비트씩 출렁일 수 있습니다.
10mV가 곧1℃를 나타내므로, 작은 전압 흔들림이 온도 수치를 0.5℃ 이상 출렁이게 만듭니다.- 코드에서 10ms 간격으로 10번 측정하여 평균을 내면 측정값이 흔들리지 않고 매우 안정적인 결과를 얻을 수 있습니다!
🌟 도로시와 지니의 핵심 요약 노트!
| 변환 단계 | 입력값 | 변환 수식 | 출력값 예시 |
|---|---|---|---|
| 1단계 (전압 변환) | analogRead(A0) (0~1023) |
$\text{ADC} \times (5.0 / 1024.0)$ | $0.750\text{V}$ |
| 2단계 (섭씨 환산) | 측정 전압 ($V_{\text{out}}$) | $(V_{\text{out}} - 0.5) \times 100$ | $25.0^\circ\text{C}$ |
| 3단계 (화씨 환산) | 섭씨온도 ($^\circ\text{C}$) | $(^\circ\text{C} \times 1.8) + 32$ | $77.0^\circ\text{F}$ |
- 👧 도로시: “평평한 면을 보고 5V, A0, GND를 꽂고,
(전압 - 0.5) * 100공식만 적용하면 정확한 섭씨온도가 짠 하고 계산되네!” - 👨🏫 이호진 교수님: “맞아! 여기에 10회 평균 필터링까지 넣어서 흔들림 없는 완벽한 디지털 체온계를 완성했단다.”
- 🐶 토토: “바우! 이제 오전 센서 7개 챕터를 모두 정복했다 멍!”
서브목차