한글보드: 아두이노 디지털 온도센서 (DS18B20)

  OneWire.zip 15.3K 146 3년전

 

한글보드: 디지털 온도센서 / DS18B20 (Introduction)

DS18B20이 내장된 디지털 온도 측정 센서입니다. 디지털 신호를 통해 온도를 측정할 수 있습니다. 하나의 핀으로 
다수의 DS18B20 온도센서를 사용할 수 있으며, 온도 변화에 빠르게 반응한다는 장점이 있습니다.

 

  

05b0d1abf55ba9c4b6e00de6f819f4eb_1503562

사양 (Specification)

  • DS18B20기반

  • 디지털 인터페이스

  • 작동 전압: 3.3~5V

  • 온도 범위: -50~125℃

  • 크기: 23 x 20mm

  • 무게: 4g​

 


 
튜토리얼 (Tutorial)

bae14042eb31927dfbc234a6870132ae_1503587
 

 

 

샘플 코드 (Sample Code)


라이브러리를 포함해야하며, 라이브러리는 본문에 파일 첨부되어있습니다.
 

#include <OneWire.h>


int DS18S20 = 2;

OneWire ds(DS18S20);


void setup() {

  Serial.begin(9600);

}


void loop() {

  float temperature = getTemp();

  Serial.println(temperature);

  delay(1000);

}


float getTemp() {

  byte data[12];

  byte addr[8];

  if ( !ds.search(addr)) {

    ds.reset_search();

    return -1000;

  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {

    Serial.println("CRC is not valid!");

    return -1000;

  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {

    Serial.print("Device is not recognized");

    return -1000;

  }

  ds.reset();

  ds.select(addr);

  ds.write(0x44, 1);

  byte present = ds.reset();

  ds.select(addr);

  ds.write(0xBE);

  for (int i = 0; i < 9; i++)  {

    data[i] = ds.read();

  }

  ds.reset_search();

  byte MSB = data[1];

  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB);

  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}


 

 

 

결과물 (Output)

아두이노 스케치의 시리얼 모니터 확인시 센서의 감지 상태을 확인할 수 있습니다.

 

bae14042eb31927dfbc234a6870132ae_1503588
 

 

 

판매처 - 메카솔루션 (http://mechasolution.com)  /   디스트리뷰터 문의 -

메카리워즈 Image Map


모바일 버전으로 보기