A PHP Error was encountered

Severity: Notice

Message: Undefined index: HTTP_ACCEPT_LANGUAGE

Filename: core/KF_Controller.php

Line Number: 155

엔트리를 사용하여 온도센서 측정 값에 따라 LED 점등하기

초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

엔트리를 사용하여 온도센서 측정 값에 따라 LED 점등하기

2016-01-06 09:24:05

개요

 

1. 트랜지스터 온도센서란 무엇인가?

온도센서(Temperature Sensor)란 물체의 온도를 감지하여 전기신호로 바꿔주는 센서입니다.

이 컨텐츠에서 사용할 TMP36 온도센서는 온도에 따른 전압의 변화량을 이용하여 온도를 측정하는 센서로써 약간의 오차가 있지만(±2%),

-40℃~120℃까지의 온도를 측정 할 수 있고, 사용하기 편해서 학습용으로 자주 활용 합니다.

 

2. 트랜지스터 온도센서 사용 방법

TMP36은 아래의 그림과 같이 각각 Pin 1번(5V), Pin 2번(아날로그), Pin 3번(GND)에 연결합니다.

이 컨텐츠에서는 TMP36을 이용하여 온도를 측정하고 그 값을 섭씨 온도로 변환해주고

20도 미만에서는 빨간색 LED를 20도 이상, 30도 이하에서는 초록색 LED를, 그리고 30도 이상에서는 노락색 LED를 점등하도록 합니다.

 

 

 

 

 

미리 보기

 

현재 실내 온도는 24.9도 입니다.

 

 

 

따라서 초록색 LED가 점등 되었습니다.

 

 

 

다음으로는 오렌지 보드와 브레드 보드를 냉동실에 넣고 측정해 보았습니다.

20도 미만의 온도이므로 빨간색 LED가 점등 되었습니다.

 

 

 

 

 

부품목록

 

NO

부품명

수량

상세설명

1

오렌지보드

1

아두이노 우노

2

온도센서

1

온도센서(TMP36)

3

브레드보드

1

브레드보드

4

LED

Green 1

Red 1

Yellow 1

LED(RED)

LED(GREEN)

LED(YELLOW)

5

10KΩ 저항

3

10KΩ 저항

6

점퍼케이블

11

점퍼케이블

 

 

부품명

아두이노 우노 R3

온도센서(TMP36)

브레드보드

점퍼케이블

파트

x1

x1

x1

x11

 

 

부품명

LED

10KΩ 저

파트

       red x1, Green x1,  yellow x1

x3

 

 

 

 

 

하드웨어 Making

 

 

브레드보드 레이아웃

 

1. 오렌지보드의 GND 핀을 브레드보드의 - 버스에 연결합니다.
2. 오렌지보드의 5V 핀을 브레드보드의 + 버스에 연결합니다.
3. 트랜지스터 온도센서를 그림처럼 각각 Pin 1번(5V), Pin 2번(아날로그), Pin 3번(GND)에 연결합니다.
4. RED LED를 애노드(긴 단자)가 아래쪽으로 향하게하여 꽂습니다.
5. RED LED의 애노드가 연결된 행에 10kΩ 저항을 연결합니다.
6. 짧은 단자쪽를 그림처럼 GND가 연결된 브레드 보드에 연결합니다.
7. RED LED의 저항 양 끝 중 RED LED와 연결되지 않은 곳과 브레드보드의 9번에 연결합니다.
8. GREEN LED, YELLOW LED를 같은 형태로 연결하고 각각의 저항 끝은 6번과 3번에 연결합니다.
 

 

 

회로도

 

 

 

 

엔트리 코딩

 

<아두이노 온도 측정 예제>

 

// RED LED를 9핀으로 설정합니다.
int RED_LED = 9; 
// GREEN LED를 6핀으로 설정합니다.
int GREEN_LED = 6; 
// YELLOW LED를 3핀으로 설정합니다.
int YELLOW_LED = 3; 

float sensor = 0;
float voltage = 0;
float celsius = 0;

void setup() {
        Serial.begin(9600);
  
        pinMode(RED_LED, OUTPUT);
        pinMode(GREEN_LED, OUTPUT);
        pinMode(YELLOW_LED, OUTPUT);
}
  
void loop() {
        // 센서로 부터 자료값을 받습니다.
        sensor = analogRead(A0); 
        voltage = (sensor * 5000) / 1024;
        voltage = voltage - 500;
        // 입력 받은 자료 값을 섭씨 온도로 변환 합니다.
        celsius = voltage / 10;  

        Serial.print(celsius);
        Serial.print("\t");
        
        // 온도가 20도 이상, 30도 이하일 경우 GREEN LED를 점등하고 2초간 대기합니다.
        if (celsius >= 20 && celsius <= 30) {
            digitalWrite(GREEN_LED, HIGH); 
            delay(2000);
            
    // 다음 입력값과의 중복을 막기 위해 LED를 OFF 합니다.
          } else {
                digitalWrite(GREEN_LED, LOW);
                delay(2000);
        } 
  
        // 온도가 20도 미만일 경우 RED LED를 점등하고 2초간 대기합니다.
        if (celsius < 20) {
                digitalWrite(RED_LED, HIGH);
                delay(2000);
        // 다음 입력값과의 중복을 막기 위해 LED를 OFF 합니다.
        } else {
                digitalWrite(RED_LED, LOW);
                delay(2000);
        } 
  
        // 온도가 30도 이상일 경우 YELLOW LED를 점등하고 2초간 대기합니다.
        if (celsius > 30) {
                digitalWrite(YELLOW_LED, HIGH);
                delay(2000);
        // 다음 입력값과의 중복을 막기 위해 LED를 OFF 합니다.
        } else {
                digitalWrite(YELLOW_LED, LOW);
                delay(2000);
        } 
}

 

 

 

스케치 설명

 

// RED LED를 9핀으로 설정합니다.
int RED_LED = 9; 
// GREEN LED를 6핀으로 설정합니다.
int GREEN_LED = 6; 
// YELLOW LED를 3핀으로 설정합니다.
int YELLOW_LED = 3; 

빨간색 LED를 9번핀, 초록색 LED를 6번핀, 노란색 LED를 3번핀에 각각 연결합니다.

 

 

// 센서로 부터 자료값을 받습니다.
sensor = analogRead(A0); 
voltage = (sensor * 5000) / 1024;
voltage = voltage - 500;
// 입력 받은 자료 값을 섭씨 온도로 변환 합니다.
celsius = voltage / 10; 

온도센서를 통해 입력 받은 아날로그 값을 sensor에 저장합니다.

그리고 관계식을 이용하여 일상생활에서 사용 되는 섭씨 온도로 변환 하는 과정입니다.

 

 

// 온도가 20도 이상, 30도 이하일 경우 GREEN LED를 점등하고 2초간 대기합니다.  
if (celsius >= 20 && celsius <= 30) {
    digitalWrite(GREEN_LED, HIGH); 
    delay(2000);
} else {
    digitalWrite(GREEN_LED, LOW);
    delay(2000);
} 
  
// 온도가 20도 미만일 경우 RED LED를 점등하고 2초간 대기합니다.
if (celsius < 20) {
    digitalWrite(RED_LED, HIGH);
    delay(2000);
// 다음 입력값과의 중복을 막기 위해 LED를 OFF 합니다.
} else {
    digitalWrite(RED_LED, LOW);
    delay(2000);
} 

// 온도가 30도 이상일 경우 YELLOW LED를 점등하고 2초간 대기합니다.
if (celsius > 30) {
    digitalWrite(YELLOW_LED, HIGH);
    delay(2000);
// 다음 입력값과의 중복을 막기 위해 LED를 OFF 합니다.
} else {
    digitalWrite(YELLOW_LED, LOW);
    delay(2000);
} 

 

온도에 따라 각각 색이 다른 LED를 점등하는 과정입니다.

생활하기 가장 적합한 온도라고 생각되는 20 - 30 도는 초록색 LED로, 20도 미만일 경우에는 RED LED를 , 30도 이상일 경우에는 YELLOW LED가 점등 됩니다.

LED가 점등되고 2초간 정지 상태 후에 다음 값이 입력 되었을 때 두가지에 점등 되는 것을 막기 위해 LED를 OFF 해 줍니다.

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

온도센서, 엔트리, LED, TMR36