개발자/Arduino

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

지구빵집 2021. 4. 19. 10:40
반응형

 

 

아두이노 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 

 

 

반응형