컴퓨터
[아두이노 센서] KY-013 Analog Temperature sensor (NTC)
조이팜
2025. 12. 31. 21:21
이 모듈은 -55°C에서 +125°C 범위의 온도를 측정할 수 있는 NTC 서미스터를 포함하고 있습니다.


1. [KY-013 온도 센서] 무엇을 하는 친구일까?
주변 온도가 뜨거워지거나 차가워지면 신호를 보내는 디지털 온도계의 눈이에요."
이 모듈에 달린 작은 검은색 부품(서미스터)은 온도가 올라가면 저항이 줄어드는 성질이 있습니다. 아두이노는 이 전압의 변화를 읽어서 "아, 지금은 몇 도구나!"라고 계산해 냅니다.
2. [활용사례] 우리 주변의 어디에 있을까?
- 스마트 홈: 설정한 온도보다 높아지면 에어컨을 켜거나 선풍기를 돌려요.
- 디지털 체온계: 우리 몸의 온도를 빠르게 측정할 때 사용해요.
- 화재 경보기: 갑자기 온도가 급격히 올라가면 사이렌을 울리게 할 수 있어요.

3. [회로도] 어떻게 연결할까?

|
모듈 핀
|
아두이노 연결
|
설명
|
|
S (Signal)
|
Analog A0
|
변화하는 온도 전압 값을 보내요.
|
|
중간 (VCC)
|
5V
|
전원을 공급해요.
|
|
- (GND)
|
GND
|
전기가 나가는 길이에요.
|
4. [코드설명] 아두이노에게 명령 내리기
서미스터 값은 수학적인 계산(Steinhart-Hart 식)이 필요하지만, 처음에는 단순히 값이 변하는 것부터 확인해 보는 것이 좋습니다.
int sensorPin = A0; // 센서를 A0에 연결했어요
void setup() {
Serial.begin(9600); // 시리얼 모니터로 값을 확인해요
}
void loop() {
int rawValue = analogRead(sensorPin); // 0~1023 사이의 값을 읽어와요
// 간단한 온도 환산 (대략적인 값입니다)
float voltage = rawValue * (5.0 / 1023.0);
Serial.print("현재 센서 값: ");
Serial.print(rawValue);
Serial.print(" | 전압: ");
Serial.println(voltage);
delay(500); // 0.5초마다 측정해요
}
정확한 온도 측정을 위한 변환 공식
#include <math.h> // 로그 계산을 위해 필요한 라이브러리
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int rawValue = analogRead(sensorPin);
// 1. 저항값 계산 (모듈에 달린 분압 저항 기준)
// R = 10000 / (1023 / rawValue - 1)
double resistance = 10000.0 / (1023.0 / rawValue - 1);
// 2. 스테인하트-하트 식을 이용한 온도(켈빈) 계산
double tempK = 1 / (0.001129148 + (0.000234125 * log(resistance)) + (0.0000000876741 * pow(log(resistance), 3)));
// 3. 켈빈(K) 단위를 섭씨(C)로 변환
float tempC = tempK - 273.15;
Serial.print("현재 온도: ");
Serial.print(tempC);
Serial.println(" C");
delay(1000);
}

5. [미션] 도전! 직접 만들어보기
온도가 높으면 경고등 켜기!
조건: 평소에는 초록색이다가, 센서를 손으로 꽉 쥐어서 온도가 올라가면(센서 값이 변하면) 빨간색으로 변하게 만들어 보세요!
힌트: `if (rawValue > 특정숫자)` 형식을 사용하면 됩니다.
KY-013은 아주 정밀한 온도를 측정하기보다는 '온도의 변화'를 감지하는 데 아주 훌륭한 가성비 센서입니다. 만약 정확한 섭씨온도를 얻고 싶다면 수학 공식이 포함된 라이브러리를 사용하는 것이 좋습니다.
#아두이노 #KY013 #온도센서 #서미스터 #Thermistor #아두이노기초 #DIY온도계
반응형