아두이노 - LM35 온도 센서 | Arduino - LM35 Temperature Sensor
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | LM35 Temperature Sensor | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
LM35 온도 센서에 대하여
핀배열
LM35 온도 센서에는 세 개의 핀이 있습니다:
- GND 핀: GND(0V)에 연결해야 합니다.
- VCC 핀: VCC(5V)에 연결해야 합니다.
- OUT 핀: 온도에 선형적으로 비례하는 출력 전압을 제공하는 신호 핀으로, 아두이노의 아날로그 핀에 연결해야 합니다.
작동 원리
LM35는 섭씨 온도에 선형적으로 비례하는 전압을 출력합니다. LM35의 출력 스케일 인자는 10 mV/°C입니다. 즉, 온도는 출력 핀의 전압(mV)을 10으로 나누어 계산된다는 의미입니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
LM35 온도 센서를 위한 프로그래밍 방법
analogRead() 함수를 사용하여 온도 센서에서 ADC 값을 가져오세요.
int adcVal = analogRead(PIN_LM35);
ADC 값을 밀리볼트 단위로 전압으로 변환하세요.
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
전압을 섭씨 온도로 변환하세요.
float tempC = milliVolt / 10;
(선택 사항) 섭씨를 화씨로 변환하세요.
float tempF = tempC * 9 / 5 + 32;
아두이노 코드
/*
* 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino/arduino-lm35-temperature-sensor
*/
#define ADC_VREF_mV 5000.0 // 밀리볼트 단위
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A0
void setup() {
Serial.begin(9600);
}
void loop() {
// 온도 센서에서 ADC 값을 가져옵니다
int adcVal = analogRead(PIN_LM35);
// ADC 값을 밀리볼트 단위의 전압으로 변환합니다
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
// 전압을 섭씨 온도로 변환합니다
float tempC = milliVolt / 10;
// 섭씨를 화씨로 변환합니다
float tempF = tempC * 9 / 5 + 32;
// 시리얼 모니터에 온도를 출력합니다:
Serial.print("Temperature: ");
Serial.print(tempC); // 섭씨 온도를 출력합니다
Serial.print("°C");
Serial.print(" ~ "); // 섭씨와 화씨 사이의 구분자
Serial.print(tempF); // 화씨 온도를 출력합니다
Serial.println("°F");
delay(1000);
}
사용 방법
- 위의 코드를 복사하고 아두이노 IDE로 열기
- 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노로 코드를 업로드
- 센서를 손으로 잡기
- 시리얼 모니터에서 결과 보기
COM6
Temperature: 26.31°C ~ 79.36°F
Temperature: 26.44°C ~ 79.59°F
Temperature: 26.50°C ~ 79.70°F
Temperature: 26.56°C ~ 79.81°F
Temperature: 27.06°C ~ 80.71°F
Temperature: 27.75°C ~ 81.95°F
Temperature: 28.37°C ~ 83.07°F
Temperature: 29.00°C ~ 84.20°F
Temperature: 29.56°C ~ 85.21°F
Temperature: 30.00°C ~ 86.00°F
Temperature: 30.31°C ~ 86.56°F
Temperature: 30.62°C ~ 87.12°F
Temperature: 30.87°C ~ 87.57°F
Autoscroll
Clear output
9600 baud
Newline
온도 정밀도 향상하기
위 코드에서는 기본적으로 ADC 참조 전압(5V~5000mV)을 사용합니다. 참조 전압을 INTERNAL(1.1V~1100mV)로 변경하여 온도 해상도를 높일 수 있습니다. 이 참조 전압은 analogReference() 함수를 사용하여 변경할 수 있습니다.
아래 표는 5000mV와 1100mV 기준 전압 사용의 차이를 보여줍니다.
Vref(mV) | 5000 mV (by default) | 1100 mV (INTERNAL) |
---|---|---|
Reading Resolution | 5000/1024 = 4.88 mV | 1100/1024 = 1.07 mV |
Temperature Resolution | 0.488 °C | 0.107 °C |
Temperature Range | 0 to 500 °C | 0 to 110 °C |
아두이노 코드
/*
* 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino/arduino-lm35-temperature-sensor
*/
#define ADC_VREF_mV 1100.0 // 밀리볼트 단위
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A0
void setup() {
Serial.begin(9600);
// 내부 1.1V 참조로 전환
analogReference(INTERNAL);
}
void loop() {
// 온도 센서에서 ADC 값 가져오기
int adcVal = analogRead(PIN_LM35);
// ADC 값을 밀리볼트 단위 전압으로 변환
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); // ADC_VREF_mV = 1100 mV
// 전압을 섭씨 온도로 변환
float tempC = milliVolt / 10;
// 섭씨를 화씨로 변환
float tempF = tempC * 9 / 5 + 32;
// 시리얼 모니터에 온도 출력:
Serial.print("Temperature: ");
Serial.print(tempC); // 섭씨 온도 출력
Serial.print("°C");
Serial.print(" ~ "); // 섭씨와 화씨 사이 구분자
Serial.print(tempF); // 화씨 온도 출력
Serial.println("°F");
delay(1000);
}
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.