본문 바로가기

아두이노로 장난하기

아두이노로 온도(LM35D)를 측정하기

아두이노 온도측정


아두이노 우노로 온도 측정 하기



아두이노 온도(lm35d)

 

 

LM35DZ는 섭씨(℃)에 비례해 전압을 측정하는 센서로, 센서의 접압을 읽어 들여서 온도를 측정할 수 있습니다. 온도의 계수는 10.0mV/이므로, 0℃라면 0V, 20℃라면 200mV가 됩니다. 아두이노 보드의 아날로그 입력은 0~5V까지의 전압을 1024단계로 읽어 들이므로, 읽어 들인 값(0~1023)을 온도로 쓰면 됩니다. 0~100℃까지를 약 205단계로 측정하므로 기온의 변화 들을 측정하는 것과 같은 용도라며 층분한 정밀도를 얻을 수 있습니다. 이번 예제는 온도 센서의 값을 읽어 들여, 섭씨로 변환하는 것을 LCD에 표시합니다.

 

 

[온도측정 부품목록]

▶ 아두이노 보드 : 1개

▶ 브레드보드 : 1개

▶ 점프선

▶ 온도 센서 : 1개 (LM35D)

    (http://www.icbanq.com/P004918626)

▶ CLCD : 1개

 



 

■ 아두이노 온도측정 회로 구성

 

LM35DZ에 있는 다리 3개를 각각 5V, A0, GND에 연결합니다


 


 


아두이노 온도측정 예제

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <LiquidCrystal.h>
// 센서에 연결한 아날로그 핀(0번)
int sensorPin = 0;
//LCD 객체
LiquidCrystal lcd(12115432);
 
void setup( ) {
 
//LCD의 열수와 행수를 설정
lcd.begin(162);
 
}
 
void loop( ) {
 
  //LCD화면을 지운다
  lcd.clear( );
  // 온도 센서의 값을 읽어 들인다.
  int value = analogRead(sensorPin);
  //읽어 들인 값을 현재 섭씨 온도값으로 변환한다.
  int temp = (5.0 * value * 100.0)/1024;
  //LCD에 현재 온도를 표시한다.
  lcd.print("Temp: ");
  lcd.print(temp);
  //1초 동안 대기
  delay(1000);
 
}
cs



코드해석


int temp = (5.0 * value * 100.0)/1024;

먼저 온도센서의 특성을 알아야 합니다.

LM35DZ 온도센서는 1도 변화 할 때 10mV가 변하므로

V = 0.01 X T (V: 출력전압, T: 온도) 입니다.

다음으로 ADC변환 출력 공식은 

ADC = Vin / Vref X 1024(10비트 변환을 하면 1024, 8비트를 변환을 하면 256, Vref: 래퍼런스 전압, Vin: 입력전압)입니다.

ADC변환 공식의 좌변을 Vin으로 정리해서 위 LM35DZ의 센서출력을 대입하면

Vin = ADC / 1024 X Vref = 0.01 X T 가 되고 이걸 다시 T로 정리하면

T = ADC / 1024 X Vref X 100이 됩니다.  




LM36ZD 특성

 

 

위 이미지는 LM35D 데이터 쉬트로 온도 범위를 FIGURE1(0~150)로써 기본으로 사용하는 경우와 온도범위 FIGURE2(-50~150)로써 풀 범위로 사용하는 경우의 예제 회로와 그래프를 보여주고 있습니다. 대략적인 기온을 알려고 하는 용도로는 적당히 사용 할 수 있지만, 더 정밀한 온도 측정을 위해서는 하드웨어의 분해능을 올려 주거나 산업용에서 사용하는 온도센서를 사용해야 합니다.