본문 바로가기

컴퓨터

아두이노 초정밀 온도 센서 DS18B20 사용법 (TMP36과 헷갈리지 마세요!)

안녕하세요!

오늘은 아두이노 프로젝트에서 온도를 측정할 때 가장 많이 쓰이는 디지털 온도 센서 DS18B20에 대해 알아보겠습니다.

 

아두이노 키트를 열어보면 똑같이 생긴 부품이 여러 개라 당황하신 적 있으시죠?

저도 처음엔 트랜지스터인 줄 알았답니다.

오늘 그 구별법부터 정밀한 온도 측정 방법까지 완벽하게 정리해 드릴게요!

 

1. 외형 및 구별법

DS18B20은 'TO-92'라는 규격을 사용하여 트랜지스터(C509Y, C1959 등)아날로그 온도 센서(TMP36)와 똑같이 생겼습니다.

확인 방법:

부품의 평평한 면을 밝은 곳에서 자세히 보세요.

반드시 DALLAS / 18B20이라는 글자가 적혀 있어야 합니다.

TMP36은 전압으로 온도를 보내는 '아날로그' 방식이지만,

DS18B20은 데이터를 직접 주고받는 '디지털' 방식이라 훨씬 정확합니다.

2. DS18B20의 핵심 특징: OneWire

이 센서의 가장 큰 매력은 OneWire(원와이어) 통신을 한다는 점입니다.

전원선을 제외하고 단 하나의 데이터 선(DQ)만으로 아두이노와 대화합니다.

그리고 센서마다 사람의 주민등록번호 같은 고유 ID가 있어, 아두이노 핀 하나에 여러 개의 센서를 병렬로 연결해 각각의 온도를 읽을 수 있습니다.

 

정밀도는 ±0.5°C의 오차 범위를 가지며, 0.0625°C 단위까지 읽어내는 괴물 같은 성능을 자랑합니다.

특성
TMP36
DHT11
DHT22
DS18B20
방식
아날로그(전압)
디지털(데이터)
디지털(데이터)
디지털(1-Wire)
온도 오차
±1°C ~ ±2°C
±2°C
±0.5°C
±0.5°C
온도 범위
-40~150°C
0~50°C
-40~80°C
-55~125°C
해상도
낮음 (Vref 의존)
1°C 단위
0.1°C 단위
0.0625°C 단위
측정 항목
온도 전용
온도 + 습도
온도 + 습도
온도 전용

3. 회로 연결하기 (풀업 저항 필수!)

DS18B20을 연결할 때 가장 많이 하는 실수가 바로 저항을 빼먹는 것입니다.

핀 배치 (평평한 면 기준):

왼쪽: GND (접지)

가운데: DQ (데이터 - 아두이노 디지털 4번)

오른쪽: VDD (전원 - 아두이노 5V)

2번(데이터)과 3번(5V) 사이에 4.7kΩ 저항을 꼭 연결해 주세요.

이 저항이 있어야 신호가 안정적으로 전달됩니다!

4. 아두이노 소스 코드

코드를 작성하기 전, 라이브러리 관리자에서 OneWire와 DallasTemperature 설치해 주세요.

#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 // 데이터 핀 번호 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); sensors.begin(); Serial.println("DS18B20 정밀 온도 측정 시작"); } void loop() { sensors.requestTemperatures(); // 온도 측정 요청 float tempC = sensors.getTempCByIndex(0); // 0번째 센서 값 읽기 Serial.print("현재 온도: "); Serial.print(tempC); Serial.println(" 도 (Celsius)"); delay(1000); }

5. 마치며

DS18B20은 정확도가 높고 데이터가 안정적이어서 실내 온도계는 물론, 방수 튜브를 씌워 어항 온도계를 만드는 데도 최고입니다. 만약 시리얼 모니터에 -127이라는 숫자가 뜬다면? 당황하지 마시고 4.7kΩ 저항이 잘 꽂혀 있는지 다시 한번 확인해 보세요!

마이크로비트 하고 비교해 봤는데요.

1도 차이가 나네요

#아두이노 #arduino #DS18B20 #초정밀온도센서 #온도센서

반응형