코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-06 13:29:27
전 컨텐츠에서 온도센서(TMP36)에 사용법에 대해 알아 보았습니다. 이 컨텐츠에서는 디지털 온도 센서(DS18B20)를 사용하여 현재 온도(섭씨, 화씨)를 측정해 봅시다.
디지털 온도센서는 I2C프로토콜을 사용하여 온도값을 받아 옵니다.
- 온도 센서로는 DS18B20 센서를 사용 했습니다.
- 55 ℃ ~ +125℃, 정확도 ±0.5℃ (-10 ℃ ~ +85℃내) 입니다.
- 센서를 사용하기 위한 onewire 라이브러리는 http://playground.arduino.cc/Learning/OneWire 여기에 있습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지보드 | 1 | 아두이노 |
2 | 디지털 온도 센서(DS18B20) | 1 | 온도 센서 |
3 | 저항 4.7KΩ | 1 | 저항 |
4 | 브레드보드 | 1 | 브레드보드 |
5 | 점퍼케이블 | 4 | 점퍼케이블 |
부품명 | 아두이노 우노 R3 | 디지털 온도 센서 | 저항 4.7KΩ | 브레드보드 | 점퍼케이블 |
파트 | x1 | x1 | x1 | x1 | x4 |
센서 핀 | 아두이노 핀 |
- | GND |
+ | 5V |
S | D2 |
#include <OneWire.h> // 디지털 온도 센서를 사용하기 위해서는 이 라이브러리를 사용해야 한다.
OneWire ds(2); // 2번 핀에 연결된 OneWire 개체 생성
void setup() {
Serial.begin(9600);
}
void loop() {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
float Temp;
if (!ds.search(addr)) {
ds.reset_search();
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (i = 0; i < 9; i++) { // 센서에서 가져온 값을 정리하고 난 후 배열에 순서대로 넣어 둔다.
data[i] = ds.read();
}
Temp=(data[1]<<8)+data[0];
Temp=Temp/16;
// 위에서 받아온 값중에 1번 배열에 있는 값을 256배(2의 8승) 해주고 0번 배열에 있는 값과 더해준다.
// 그 값을 16으로 나누면 섭씨 온도가 된다.
Serial.print("C=");
Serial.print(Temp);
Serial.print(", ");
// 섭씨 출력
Temp=Temp*1.8+32;
// 섭씨를 화씨로 변환
Serial.print("F=");
Serial.print(Temp);
Serial.println(" ");
// 화씨 출력
}
* 이 코드는 스케치를 사용하여 작성 / 업로드 합니다. 스케치에 대한 사용법은 링크를 참고하시기 바랍니다.
#include <OneWire.h> // 디지털 온도 센서를 사용하기 위해서는 이 라이브러리를 사용해야 한다.
OneWire ds(2); // 2번 핀에 연결된 OneWire 개체 생성
디지털 온도 센서를 사용하기 위해서는 OneWire 라이브러리를 사용해야 한다.
OneWire 라이브러리를 include 시키고 2번 핀과 연결된 개체를 하나 만든다.
for (i = 0; i < 9; i++) { // 센서에서 가져온 값을 정리하고 난 후 배열에 순서대로 넣어 둔다.
data[i] = ds.read();
}
Temp=(data[1]<<8)+data[0]; //take the two bytes from response relating to temperature Temp=Temp/16;//divide by 16 to get pure celcius readout
Temp=Temp*1.8+32;
// 섭씨를 화씨로 변환
// 위에서 받아온 값중에 1번 배열에 있는 값을 256배(2의 8승) 해주고 0번 배열에 있는 값과 더해준다.
// 그 값을 16으로 나누면 섭씨 온도가 된다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!