[아두이노] 아날로그 온도 센서 완벽 가이드 (TMP36 vs LM35DZ)


아두이노로 온도를 측정할 때 가장 많이 사용하는 센서인 LM35DZTMP36.
겉모양은 거의 동일한데, 왜 코드 속 계산식은 다를까요?

핵심은 바로 전압 스케일링 + 오프셋(Offset) 입니다.


1. 하드웨어 이해 (TO-92 패키지)

두 센서 모두 동일한 형태입니다.

👉 평평한 면을 정면으로 봤을 때:

왼쪽 : VCC (5V)
가운데: OUTPUT
오른쪽: GND

센서 스펙 차이

  • LM35DZ
    • 측정 범위: 0°C ~ 100°C
    • 특징: 음수 온도 측정 불가 (기본 상태에서는)
  • TMP36
    • 측정 범위: -40°C ~ 125°C
    • 특징: 영하 온도 측정 가능

2. 1단계: ADC 값을 전압으로 변환

아두이노는 전압을 직접 읽지 못하고
0 ~ 1023 범위의 디지털 값으로 변환합니다.

공식 (블로그 안전 버전)

Voltage(mV) = Reading × (5000.0 / 1024.0)

의미

  • 5000.0 → 5V를 mV로 변환
  • 1024.0 → ADC 분해능 (10비트)
  • 1 step ≈ 4.88mV

즉,
👉 ADC 값 × 4.88mV = 실제 전압


3. 2단계: 전압 → 온도 변환

두 센서 모두 공통점:

10mV = 1°C

하지만 차이는 여기서 발생합니다:

👉 0°C 기준점 (Offset)


4. LM35DZ (기준점 = 0V)

특성

  • 0°C → 0mV
  • 완전히 비례하는 직선

공식

Temperature(°C) = Voltage(mV) / 10.0

장점

  • 계산이 매우 단순

단점

  • 음수 온도 측정 불가
    (아두이노는 음전압 측정 못함)

5. TMP36 (Offset = 500mV)

핵심 개념: 오프셋(Offset)

  • 0°C → 500mV
  • 일부러 기준점을 위로 올려둠

이유

👉 영하에서도 전압이 0V 아래로 떨어지지 않게 하기 위해

예:

-10°C → 400mV

공식

Temperature(°C) = (Voltage(mV) - 500.0) / 10.0

해석

  1. 500mV 제거 (가짜 기준 제거)
  2. 10으로 나눔 → 온도 환산

6. 통합 코드 (그대로 사용 가능)



void setup() {
Serial.begin(9600);
}

void loop() {
int reading = analogRead(A0);

// 1. ADC → 전압 변환 (mV)
float voltage = reading * (5000.0 / 1024.0);

// 2. 센서별 온도 계산
float tempLM35 = voltage / 10.0; // LM35
float tempTMP36 = (voltage - 500.0) / 10.0; // TMP36

Serial.print("Voltage: ");
Serial.print(voltage);
Serial.print(" mV | ");

Serial.print("Temp (LM35): ");
Serial.print(tempLM35);
Serial.println(" C");

// TMP36 사용할 경우 아래 주석 해제
// Serial.print("Temp (TMP36): ");
// Serial.print(tempTMP36);
// Serial.println(" C");

delay(1000);
}

7. 실전에서 많이 터지는 문제들

🔴 온도가 이상하게 높게 나올 때 (40~50°C)

👉 원인: 5V가 실제로 5V가 아님

  • USB 전원 → 4.7V ~ 5.2V 흔함
  • 해결:
float voltage = reading * (실측전압 / 1024.0);

👉 멀티미터로 5V 핀 측정 후 값 넣기


🔴 값이 계속 흔들릴 때

  • 노이즈 영향
  • 해결 방법:
delay(10); // 또는 평균 필터 사용

또는

여러 번 읽어서 평균값 사용

8. 핵심 요약

  • LM35
    • 0V = 0°C
    • 공식: V / 10
    • 단순하지만 음수 측정 불가
  • TMP36
    • 0°C = 500mV
    • 공식: (V - 500) / 10
    • 영하 측정 가능

9. 한 줄 핵심 개념

👉 TMP36은
"온도 눈금을 500mV만큼 위로 이동시킨 센서"

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

NPN, PNP 트랜지스터 차이점

[PLC] 센서 NPN, PNP 출력 타입별 결선방법 (OMRON E2E-X 시리즈 3선식 배선)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

[투자] ETF 투자 가이드 : 카테고리별 ETF 선택 전략

[PLC] PLC 아날로그 입출력 기본

[농사] 천연 식물성 살충제 종류 및 제조법

[PLC] 릴레이

[PLC] 서보 모터 브레이크 결선, 왜 릴레이 터미널을 써야 할까?

[PLC] 릴레이 자기유지 (Realy Latch or Sealing)