본문 바로가기

개발자/Arduino

아두이노 DS1820 (디지털 온도 센서) 다루기

반응형

 

 

아두이노 DS1820 (디지털 온도 센서) 다루기 

 

Arduino와 함께 DS1820 디지털 온도 센서를 사용하는 방법을 보여 드리겠습니다. 그러면 주변 환경이나 공기의 온도, 물과 같은 액체, 땅의 온도를 측정할 수 있습니다. 

 

온도 측정 응용이 나와 있는데 모두 유용한 방법입니다. ^^

 

  • 욕조 온도 측정
  • 실내 높이마다 다른 온도 측정
  • 모터 동작할 때 표면 온도 측정

DS18B20 은 Maxim IC의 1-Wire 디지털 온도 센서입니다. -55에서 125 (+/- 0.5)까지 9 ~ 12 비트 정밀도로 섭씨로 출력을 볼 수 있습니다. 각 센서에는 고유한 64비트 일련번호가 새겨져 있어 하나의 데이터 버스에서 많은 수의 센서를 사용할 수 있습니다.

 

 

특징은 아래와 같습니다.

 

  • 고유한 1-Wire® 인터페이스는 통신을 위해 하나의 포트 핀만 필요합니다.
  • 각 장치에는 온보드 ROM에 저장된 고유한 64비트 직렬 코드가 있습니다.
  • 멀티 드롭 기능은 분산된 온도 감지 애플리케이션을 단순화합니다.
  • 외부 부품이 필요하지 않음
  • 데이터 라인에서 전원을 공급받을 수 있습니다.
  • 전원 공급 범위는 3.0V ~ 5.5V입니다.
  • –55℃ ~ + 125 ℃ (–67 ℉ ~ +257℉) ± 0.5℃ 온도 측정 정확도 –10℃ ~ +85℃
  • 온도계 분해능은 9 ~ 12 비트에서 사용자 선택 가능
  • 750ms (최대) 내에 온도를 12 비트 디지털 워드로 변환
  • 사용자 정의 가능한 비 휘발성 (NV) 경보 설정
  • 알람 검색 명령은 온도가 프로그래밍된 한계 (온도 알람 조건)를 벗어난 장치를 식별하고 해결합니다.
  • 응용 분야에는 자동 온도 조절 제어, 산업 시스템, 소비재, 온도계 또는 열에 민감한 모든 시스템이 포함됩니다.  

온도계를 만들려면 다음이 필요합니다. Arduino 보드 ( UNO , DUE , Micro 등). DS18B20 센서 A 방수 또는 하지 하나 4.7K * 저항 브레드 보드 모든 것을 함께 연결하는 점퍼. * 일부 매장에서는 4.7k 저항으로 센서를 판매합니다. 

 

연결도

 

시작하기 전에 Arduino 보드에서 센서를 사용하려면 / Progam Files (x86) / Arduino / Libraries (기본값)에서 다음 라이브러리를 다운로드하고 압축을 풉니다. 

 

이 방법은 구식이라 직접 라이브러리를 설치합니다. 아래 이미지 두 개를 참고하여 1-wire 버스와 Dallas Temperature Sensor 라이브러리를 설치합니다.

 

 

 

 

IDE의 직렬 모니터에서 DS18B20의 데이터를 인쇄하려면 회로도를 따라 회로를 구축해야 합니다. 먼저 브레드 보드에 센서를 연결하고 다음 순서로 점퍼를 사용하여 핀을 Arduino에 연결합니다. 핀 1에서 GND; 핀 2를 모든 디지털 핀에 연결합니다 (이 경우 핀 2). 핀 3 ~ + 5V 또는 + 3.3V, 끝에 풀업 저항을 놓습니다. 

 

소스코드입니다.

 

/********************************************************************/
// First we include the libraries
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
void setup(void) 
{ 
 // start serial port 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
} 
void loop(void) 
{ 
 // call sensors.requestTemperatures() to issue a global temperature 
 // request to all devices on the bus 
/********************************************************************/
 Serial.print(" Requesting temperatures..."); 
 sensors.requestTemperatures(); // Send the command to get temperature readings 
 Serial.println("DONE"); 
/********************************************************************/
 Serial.print("Temperature is: "); 
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?  
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire 
   delay(1000); 
} 

 

 

참고 자료

DS18B20 (Digital Temperature Sensor) and Arduino 

Arduino Uno에서 DS18B20 1-Wire 온도 센서 사용하기 

Interfacing DS18B20 1-Wire Digital Temperature Sensor with Arduino 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^