아두이노 나노 - LM35 온도 센서 | Arduino Nano - LM35 Temperature Sensor
이 튜토리얼은 아두이노 나노를 사용하여 LM35 센서에서 온도를 읽는 방법을 안내합니다. 자세히, 우리는 배우게 될 것입니다:
- 아두이노 나노를 LM35 온도 센서에 연결하는 방법.
- LM35 센서에서 온도를 얻기 위해 아두이노 나노를 프로그래밍하는 방법.
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | LM35 Temperature Sensor | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
LM35 온도 센서에 관하여
LM35 온도 센서 핀배열
LM35 온도 센서에는 세 개의 핀이 있습니다:
- GND 핀: 이것은 접지(0V)에 연결되어야 합니다.
- VCC 핀: 이것은 VCC(5V)에 연결되어야 합니다.
- OUT 핀: 이 신호 핀은 온도에 선형적으로 비례하는 출력 전압을 제공하며 아두이노 나노의 아날로그 핀에 연결되어야 합니다.
작동 원리
LM35는 섭씨 온도에 선형적으로 비례하는 전압을 발생시킵니다. 출력 스케일 요소는 10 mV/°C이며, 이는 출력 핀에서의 전압(밀리볼트 단위)을 10으로 나눔으로써 온도를 결정할 수 있음을 의미합니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
LM35 온도 센서를 위한 프로그래밍 방법
analogRead() 함수를 사용하여 온도 센서에서 ADC 값을 얻으십시오.
int adcVal = analogRead(PIN_LM35);
ADC 값을 밀리볼트의 전압으로 변환하십시오.
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
전압을 섭씨 온도로 변환하세요.
float temperature_C = milliVolt / 10;
선택 사항: 섭씨를 화씨로 변환하세요.
float temperature_F = temperature_C * 9 / 5 + 32;
아두이노 나노 코드
/*
* 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino-nano/arduino-nano-lm35-temperature-sensor
*/
#define ADC_VREF_mV 5000.0 // 밀리볼트 단위
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A6 // LM35 센서에 연결된 아두이노 나노 핀
void setup() {
Serial.begin(9600);
}
void loop() {
// 온도 센서에서 ADC 값을 받기
int adcVal = analogRead(PIN_LM35);
// ADC 값을 밀리볼트 단위의 전압으로 변환
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
// 전압을 섭씨 온도로 변환
float temperature_C = milliVolt / 10;
// 섭씨를 화씨로 변환
float temperature_F = temperature_C * 9 / 5 + 32;
// 시리얼 모니터에 온도 출력:
Serial.print("Temperature: ");
Serial.print(temperature_C); // 섭씨 온도 출력
Serial.print("°C");
Serial.print(" ~ "); // 섭씨와 화씨 사이의 구분자
Serial.print(temperature_F); // 화씨 온도 출력
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로 설정됩니다. 온도 해상도를 높이기 위해, 참조 전압은 analogReference() 함수를 사용하여 1.1V에서 1100mV인 INTERNAL로 변경할 수 있습니다.
이 표는 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 Nano 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino-nano/arduino-nano-lm35-temperature-sensor
*/
#define ADC_VREF_mV 1100.0 // 밀리볼트 단위
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A6 // LM35 센서에 연결된 아두이노 나노 핀
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 temperature_C = milliVolt / 10;
// 섭씨를 화씨로 변환
float temperature_F = temperature_C * 9 / 5 + 32;
// Serial Monitor에 온도 출력:
Serial.print("Temperature: ");
Serial.print(temperature_C); // 섭씨 온도 출력
Serial.print("°C");
Serial.print(" ~ "); // 섭씨와 화씨 사이 구분자
Serial.print(temperature_F); // 화씨 온도 출력
Serial.println("°F");
delay(1000);
}
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.