아두이노 우노로 온도 측정 하기
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(12, 11, 5, 4, 3, 2); void setup( ) { //LCD의 열수와 행수를 설정 lcd.begin(16, 2); } 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℃)로써 풀 범위로 사용하는 경우의 예제 회로와 그래프를 보여주고 있습니다. 대략적인 기온을 알려고 하는 용도로는 적당히 사용 할 수 있지만, 더 정밀한 온도 측정을 위해서는 하드웨어의 분해능을 올려 주거나 산업용에서 사용하는 온도센서를 사용해야 합니다.
'아두이노로 장난하기' 카테고리의 다른 글
아두이노로 압력을 측정하기 (1) | 2018.03.13 |
---|---|
아두이노로 거리(초음파 센서)를 측정하기 (0) | 2018.03.13 |
아두이노로 빛의 밝기를 측정하기 (0) | 2018.03.13 |
아두이노로 텍스트 LCD 표시하기 (0) | 2018.03.12 |
아두이노로 FND 4Digit 7세그먼트 표시하기 (0) | 2018.03.07 |