Back Ground

아두이노 - 온도센서 본문

아두이노

아두이노 - 온도센서

Back 2016. 6. 21. 14:39



1.온도센서로 온도 측정하기 ( TMP 36)



TMP36온도센서는-40도에서125도까지온도를측정할수있는센서로약±2도정도의정확도를가지고있습니다.

세개의다리가있는데평평한곳을정면으로가정할때, 왼쪽다리는입력전원, 오른쪽은GND, 그리고가운데다리를이용하여온도를측정할 수 있습니다.



※ 핀 방향을 반대로 하면, 손을 데일수도 있습니다.



일반적으로센서를사용하여실제적인물리량(ex. 온도)을측정하기위해서는변환공식이필요합니다. TMP36에인가해주는전원은5V입니다. 그리고아두이노가센서로부터읽는방법은analogRead()라는함수를이용합니다. 이anlogRead()함수는센서로부터나오는아날로그전압값(0~5V)를디지털값으로변환하여읽게되는데그범위는10bit, 즉0에서1023 사이의값입니다. 따라서5V는1023에매칭이되고, 5V/1024*analogRead를이용하여전원값을읽을수있습니다. 그리고, 데이터시트에서기재된센서의특징에서전압과온도의관계를생각할 수 있습니다.



위표에서사용된TMP36을보면Offset Voltage(V)는0.5이고, Output Voltage Scaling은0.01V/C입니다. 즉, 1도에0.01V씩증가한다는의미죠.

V(전압)과C(온도)와의관계를생각해보면, V = 0.01*C + 0.5가되고, 이를온도에대하여다시풀면, C = 100*(V –0.5)가됩니다.




TMP36의가운데신호다리를아날로그0번에연결하고전원과GND를아두이노에다음과같이연결합니다.




스케치


const int TMP36_pin = A0;

void setup()

{

Serial.begin(9600);

}

void loop()

{

int sensorValue = analogRead(TMP36_pin);

float mVoltage = sensorValue * 5000.0/1024.0;

float temperatureC = (mVoltage - 500) / 10.0;

Serial.print(temperatureC);

Serial.println(" degrees C");

delay(1000);

}








- 결과 -














2.온도가 높아지면, 빨간불이 켜지는 예제
















스케치





const int TMP36_pin = A0;
int ldigitalPin = 13;

void setup(){
pinMode(ldigitalPin,OUTPUT);
Serial.begin(9600);

}

void loop()

{

int sensorValue = analogRead(TMP36_pin);

float mVoltage = sensorValue * 5000.0/1024.0;

float temperatureC = (mVoltage - 500) / 10.0;

Serial.print(temperatureC);

Serial.println(" degrees C");

if(temperatureC < -20){
  digitalWrite(ldigitalPin,HIGH);
  delay(100);
   digitalWrite(ldigitalPin,LOW);
   delay(100);
}

delay(1000);

}



'아두이노' 카테고리의 다른 글

아두이노 - 이더넷쉴드  (2) 2016.06.21
아두이노 - 적 외선 센서  (0) 2016.06.21
아두이노 - 온습도센서  (0) 2016.06.21
아두이노 - 7 세그먼트 사용하기  (0) 2016.06.21
아두이노 - LCD 패널 사용하기  (0) 2016.06.21
Comments