Arduino 온도센서(LM35) 사용


아두이노를 접하면 기본적인 센서 중 하나가 온도센서 LM35이다.

작동전압은 작동 전압은 2.7V ~ 5.5V 이다.

0~100도까지 측정가능하다고 한다.

 

아래 이미지의 순서대로 연결하면 센서가 작동한다.


Source

float temperature;

int reading;

int lm35Pin = A0;

 

void setup()

{

analogReference(DEFAULT); // param

Serial.begin(9600);

}

 

void loop()

{

reading = analogRead(lm35Pin);

//temperature = reading/9.31; //1.1기준전압인 INTERNAL로 할 때 적용 식

temperature = (5.0 * analogRead(lm35Pin) * 100.0) / 1024;

Serial.println(temp);

delay(1000);

}

 

LM35센서에 적용되어 전압을 온도로 변환시키는 공식이 설명되어있다.


http://playground.arduino.cc/Main/LM35HigherResolution


temp = (5.0 * analogRead(tempPin) * 100.0) / 1024;

 

결과

analogReference(INTERNAL)


analogReference(DEFAULT)





====================================================

analogReference() : ADC의 기준전압을 설정하는 함수

param

-DEFAULT: analogReference() 함수를 사용하지 않고 analogRead() 함수를 사용하면 기본으로 동작하는 모드이며, analogReference(DEFAULT) 함수를 사용하면 5V 전압을 사용하는 아두이노 보드들에서는 5 볼트, 3.3V 전압을 사용하는 아두이노 보드들은 3.3 볼트를 아날로그 기준 전압 값으로 사용한다.

 

-INTERNAL: 내장 기준 전압을 사용한다는 의미이며, ATmega168ATmega328 MCU를 사용한 아두이노 보드에서는 1.1 볼트, ATmega8 MCU를 사용한 보드에서는 2.56 볼트가 아날로그 기준 전압이 된다. 이 설정은 아두이노 메가에서는 사용할 수 없다.

 

-INTERNAL1V1 (아두이노 메가 보드 전용): 내장 1.1 볼트를 아날로그 입력 기준 전압으로 사용한다는 의미다. 아두이노 메가 보드에서만 사용 가능하다.

 

-INTERAL2V56 (아두이노 메가 보드 전용): 내장 2.56 볼트를 아날로그 입력 기준 전압으로 사용한다는 의미이며, 아두이노 메가 보드에서만 사용 가능하다.

 

-EXTERNAL: AREF 핀에 외부 전원(0에서 5V 사이의 전압만 사용하여야 함)을 연결하여 기준 전압으로 사용할 수 있다.

경고

===

0V 보다 작거나 5V 보다 높은 외부 전압을 AREF 핀에 연결하지 안됨. AREF 핀에 외부 기준 전압을 연결하여 사용하고자 하면, analogRead() 함수를 사용하기 전에 꼭 EXTERNAL로 기준 전압을 설정해야 한다. 이렇게 하지 않으면, 내부에서 만들어낸 기준 전압과 외부에서 AREF 핀으로 공급되는 전압이 합선되어(short) 아두이노 보드의 마이크로컨트롤러를 손상시킬 수 있다.

 

다른 방법으로서, 외부와 내부 기준 전압을 번갈아 가며 사용할 수 있도록 외부 기준 전압을 5K 저항을 통하여 AREF 핀에 연결할 수 있다. 이렇게 저항을 통하여 외부 기준 전압을 공급하면 AREF 핀에 내부 저항 32K가 연결되어 있어 외부 기준 전압과 다른 전압이 AREF 핀에 공급되게 된다. 두 저항이 전압 분배기와 같이 동작하기 때문이며, 예를 들어 2.5V가 저항을 통하여 AREF 핀에 공급되면, AREF 핀의 전압은 2.5 * 32 / (32 + 5) = ~2.2V가 된다.

 

 



+ Recent posts