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);
}
###############################################################################
시리얼모니터 화면..

댓글

이 블로그의 인기 게시물

remove bluebirds.exe , virtual drive

4,5,6 띠 저항의 색띠를 읽는 법(띠저항 값)

수지에서 인천공항 리무진 버스 (인천공항버스정보)(2022년3월업데이트)