Arduino Thermometer using LM35 sensor :: 네이버 블로그
Arduino Thermometer using LM35 sensor :: 네이버 블로그:
###############################################################################
Arduino Thermometer using LM35 sensor Arduino
2010/08/12 01:40
|
LM35를 이용한 초초간단 온도계 입니다.
아무것도 필요없고 LM35 와 아두이노만 있으면 됩니다.
분해능을 높이기 위해 내부기준전압 1.1V를 이용합니다.
참고로 mega168,328 은 내부기준전압이 1.1V이고 mega8은 2.56V 입니다.
LM35 는 1도당 10mV 가 증가하는 사용하기 아주 쉬운 온도 센서 입니다.
100도면 1V 인것이죠.
1번핀 VCC(5V)
2번핀 아날로그 0번핀
3번핀 GND
소스를 간단히 설명하자면
내부기준전압 1.1V 를 사용했기 때문에 opamp 없이도 0.107(110/1024)도라는 높은 분해능을 만들 수 있습니다.
map() 가 쓰였는데.. http://arduino.cc/en/Reference/Map
간단히 설명하면 어떤 범위의 값을 내가 원하는 범위로 만들어 주는 함수 입니다.
예를 들어 val 이라는 변수가 있는데..
map(val,0,1023,0,110); 이렇게 하면.. 0~1023 을 0~ 110으로 만들어 주는 것이죠.
단점은 정수형만 된다는 것입니다. 소수점이하의 값은 버려집니다.
그래서 소스에서는 0~1023 의 ADC 값을 110도 아닌 1100 으로 만든후에 10으로 나누어 소수점 첫번째 자리까지 표현합니다.
###############################################################################
// 초간단 온도계
// LM35dz 이용
// mega168/328 내부 기준전압 1.1V 2~110도 까지 측정
// 분해능 0.107도
int analogPin = 0; // 아날로그 0번핀
int val = 0; // 아날로그 데이터를 담을 변수
float temp =0; // 변환된 온도값이 담길 변수
void setup()
{
Serial.begin(9600); // setup serial
analogReference(INTERNAL); // 내부 기준전압 1.1V 설정
}
void loop()
{
val = analogRead(analogPin); // 온도센서 ADC
val = map(val,0,1023,0,1100);
temp=(float)val/10;
Serial.println(temp,1); // float 형 변수를 소수점 첫번째 자리까지 출력
delay(500);
}
시리얼모니터 화면..
댓글