반응형

 【 아두이노 센서#4】 TMP36 온도센서 #2





▶ 실험에 사용되는 온도센서 자료 ( TMP36 ) 


아래는 온도 값과 출력전압과의 상관관계를 나타낸 그래프이다.

예를 들어 TMP36센서는 주변 온도가 50도씨 일때 출력단자로 1.0V의 전압값을 출력한다는 뜻이다.


 그래프특성을 살펴보고 자신이 사용하고자 하는 환경에 맞는 센서를 사용하면 되며,  통상적으로 활용 온도 범위가 넓은 TMP36센서를 많이 사용한다. 


[ 실습에 사용될 RGB LED(3색LED) 구조 및 사양 ]


RGB LED 는 그림에서 보듯 3가지 색 LED가 한 몸체에 구성되어 있다고 이해하면 쉽다.

다만, 단자하나는 공통단자로 연결되어 있고, LED의 마이너스(-) 극이 공통단자로 되면 Common 케소드(음극),    플러스(+)극이 공통단자로 되면 Common 애노드(양극)이 된다. (통상적으로 부품의 다리 길이가 제일 긴 단자가 공통단자다)


따라서 부품을 사용하기전에 자신의 부품이 컴온 캐소드 타입인지? , 컴온 애노드 타입인지?  반드시 확인해야 하며, 단자의 색상 위치도 그림과 순서가 다를 수 있으니 멀티테스터기 혹은? 3V 정도의 낮은 전원을 가하여 색의 위치를 사전에 확인하면 좋을 것이다. 



▶ 실습 목표 :  


 온도 범위에 따라 LED의 색을 다르게 표시하라. 

[예, 수치 값이 165 이하는 블루색, 165~175는 그린색,  그 이상은 레드색]


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)





▶ 실습 절차  : 

1. 안정적으로 사용하기 위해서는 LED 공통단자에 220Ω정도의 저항을 
 달아 준다.

2.LED 3개를 사용 하여 회로를 구성하여도 무방하며이때에도 각각 
 저항을 연결해주는 것이 좋다.




▶ 프로그램 코드 및 설명 : 


const int RLED=9;            //9번 핀을 사용하는 빨간색 BLED 상수정의

const int GLED=10;         //10번 핀을 사용하는 초록색 GLED 상수정의

const int BLED=11;         //11번 핀을 사용하는 파란색 RLED 상수 정의

const int TEMP=0;                        //아날로그 입력 0번 핀을 상수 정의

const int LOWER_BOUND=165;      // 온도 하한 값을 정의 함

const int UPPER_BOUND=175;       // 온도 상한 값을 정의 함

int val=0;                          // 온도 센서의 현재 값을 저장하는 val 변수 선언

void setup() {

  pinMode(RLED, OUTPUT);       // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);       // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);      // BLED를 출력으로 지정

}

void loop() {                        // 공통단자가 '-'인 RGB LED 부품 사용

  val=analogRead(TEMP); 

  Serial.println(val);

  float mVoltage = val*5000.0/1024.0;     // 센서의 출력값을 전압값으로 변환

  float TempDotC = (mVoltage - 500) / 10.0;  // 전압값을 Tmp36식에 의해 섭씨온도로변환

  Serial.print(TempDotC);

  Serial.println("℃\n");

  delay(500);

  if(val < LOWER_BOUND)   {         // 아래쪽 경계 값 보다 작다면

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED,HIGH);      val=analogRead(TEMP);     // 하위 경계선 값 이하이면 Blue LED ON

  if(val < LOWER_BOUND)   {

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, LOW);

    digitalWrite(BLED, HIGH);      //  켜려고 하는 LED HIGH 값 지정

  }

  else if (val>UPPER_BOUND) {//상위 경계선값 이상이면 Red LED ON

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED, LOW); 

    digitalWrite(BLED, LOW);    

  }

  else {                                               // 경계선 사이 값이라면 Green LED On

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, HIGH);  

    digitalWrite(BLED, LOW);    

  }

}   


1.TMP 36 온도 센서를 이용해서 온도값에 따른 RGB LED의 색을 
 다르게출력 해보는 실습이다.
2.Common Anode 타입의 RGB LED는 공통단자를 V+ 연결 하기 
 때문에 LED를 On 하기 위해서는 입력단자 LOW신호가 들어가야 한다.

3.온도 변화에 따른 LED 색을 다르게 표시하기 위해  TMP36의 출력 
 값을 측정하여 경계값을 설정한다
  예165  이하면  블루 LED ON’     
  175 
값 이상이면  레드 LED ON’ 
  165~175 
사이 값이면  그린 LED ON’

4. 정상 동작이 되면 온도 변환 공식을 이용하여 섭씨온도로 변환하여 
 시리얼 모니터를 통해 화면에 표시하는 프로그램을 다음 과제로 진행해
 본다.


※위의 섭씨온도식에서 




▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)





반응형