2014. 2. 18. 20:43ㆍ2018년 이전 관심사/개발관련
Step 1: TMP36(온도센서)을 이용한 실내 온도 측정 예제
1. H/W 구성
- 온도센서 : TMP36
- TMP36 데이터시트 : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Temp/TMP35_36_37.pdf
- 특성
- 1도 변화당 10mV변화량을 가짐
- -40도 ~ 125도 까지 측정 가능
- 0.5의 해상도
- 핀 맵
- TMP36의 Vout 핀을 아두이노 우노 보드의 Analog in 핀에 연결
2. S/W 구성
아두이노의 ADC는 아날로그로 입력되는 값을 0 ~ 1023의 디지털 값으로 변환하여 출력합니다.
때문에 TMP36으로 아날로그 값을 추출하기 위해서는, 입력되는 디지털 값을 다시 아날로그인 Vout 값으로 변환 해야 합니다,
우선, 출력된 ADC 값을 Voltage 값으로 변경 한 후, Voltage 값을 이용하여 썹시 온도를 계산 합니다.
TMP36에 5V를 연결 한 경우, 아래 공식으로 ADC 값을 Voltage 로 변환 하 수 있습니다.
// TMP36에 5V를 연결한 경우
Voltage(mV) = ADC * 5000 / 1024
// TMP36에 3.3V를 연결한 경우
Voltage(mV) = ADC * 3300/1024
Voltage 값을 온도로 변환
썹시 온도 = [(mV) -500] / 10
int sensorPin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensor_val = analogRead(sensorPin);
float voltage = sensor_val * 5.0; // if connect to 3.3V, you have to set 3.3
voltage /= 1024.0;
Serial.print(voltage);
Serial.println(" volts");
// 10mV/'C로 단위를 바꾸기 위해 500mV를 뺀 다음 100을 곱 함
float tempC = (voltage - 0.5) * 100;
Serial.print(tempC);
Serial.println( "degree C");
float tempF = (tempC * 9.0 / 5.0) + 32.0;
Serial.print(tempF);
Serial.println( "degree F");
delay(1000);
}
다음 포스팅에서는 WizFi250 Wi-Fi 모듈을 이용하여, 센싱한 온도 값을 클라우드 서버에 전송하는 예제를 포스팅 하겠습니다.
'2018년 이전 관심사 > 개발관련' 카테고리의 다른 글
[Python] Print 변수 출력하기 (0) | 2014.02.19 |
---|---|
[Arduino Uno WiFi Shield]WizFi250과 Xively를 이용하여 온도 센서 모니터링 하기 (2/2) (0) | 2014.02.18 |
[C언어]문자열에서 특정 문자열 추출 하기 (0) | 2014.01.01 |
[Python] serial module 사용 실패 시, 해결 방법 (0) | 2013.12.20 |
[Python] GUI 개발환경 wxpython 설치하기 (0) | 2013.12.01 |