- Thermistor - arduino uno (써미스터 with 아두이노 우노)
- 온도 측정을 어떻게 하는지
- Potential divider circuit for thermistor (읽은 V로 R 계산하기 위해)
- Steinhart-hart equation (구한 R로 T 구하기)
- 회로연결
- 코드
Thermistor - arduino (써미스터 with 아두이노)
<<Thermistor 이론적인 부분 링크>>
2020/09/10 - [분류 전체보기] - 써미스터 (Thermistor=Thermal resistor) - 사용온도, B value
온도 측정을 어떻게 하는지
써미스터는 온도에 따라 저항이 변하는 가변저항이다. 그렇기에 저항을 측정함으로써 온도를 계산할 수 있다.
하지만 아두이노는 저항을 바로 측정할 수 없기 때문에 전압을 측정해 계산해 들어간다.
아두이노로 써미스터 사이의 전압과 우리가 값을 아는 저항에 걸리는 전압을 측정
==> Potential divider circuit (전압 값으로 저항값 구하기 위한 회로 구성)
==> Steinhart-hart equation (구한 R로 T 구하기)
Potential divider circuit for thermistor (읽은 V로 R 계산하기)
- PTC를 기준으로, 만약 직렬로 연결된 기본 저항 Rs와 써미스터인 RTH의 위치를 바꾸면,
- Vout의 방향이 반대로 바뀌고, 써미스터가 뜨거워짐에 따라 Vout이 커질것이다(=저항이 작아질 것이다.)
- PTC가 NTC처럼 역할을 하게 되는 것이다.
- Self-heating effect로 인한 문제 발생 가능성. I^2xR만큼의 파워로 열로써 에너지를 잃게 되고, 써미스터의 온도가 열에너지로 인해 크게 상승하기 시작하면 자체 발열로 인해 R이 변하고 우리가 읽는 값이 V도 변하게 된다.
- NTC의 경우, 자체 발열로 인해 온도가 오르면 저항이 줄고 더 많은 전류가 흐른다.
- constant current를 줄 시, 써미스터의 정확성이 높아진다.
- Known resistor의 저항값과 써미스터의 상온에서의 저항값 혹은 사용하는 범위에서의 저항값이 가까울수록 정확도가 높아진다.
Steinhart-Hart equation (구한 R로 T 계산하기)
Steinhart-Hart equation:
반도체에서 온도와 저항의 관계를 나타낸 식, 보통 저항을 통해 온도를 구하는데 사용된다.
A, B, C는 Steinhart-Hart 상수로, 써미스터의 모델과 타입에 따라, 사용하는 온도 범위에 따라 다르다.
링크에 ABC 상수 값을 정리한 표가 있습니다.
온도 구간별 값이 달라지고,
R/T 비율 값에 따라 달라진다고 하는데 (이부분은 어떤 기준인지 잘 모르겠어서 하나씩 다 넣어봤습니다.)
저는 F값이 잘 맞네요.
회로연결
위의 V --> R --> T로 값을 계산하는 수식들은
코드에 사용되는 수식들이기에 먼저 알아보았습니다.
코드
루프 내에
첫번째 덩어리가 Potential divider circuit을 살린, 전압에서 저항 값을 계산/읽는 구간이고
두번째 덩어리가 Steinhart-hart equation을 사용해, 위에서 구한 R값으로 온도를 구하는 구간입니다. + 온도 단위 변환
==> 측정한 온도값 Serial Monitor로 나타내기
int Thermistor0 = 0;
int V0;
// Static resistor or RT termistor resistance?
float SR = 10000;
float logR0, R0, T0;
// ABC constant
float c1 = 1.028525291852400E-03 , c2 = 2.392327985577990E-04 , c3 = 1.562478971912460E-07;
void setup() {
Serial.begin(9600);
}
void loop() {
// preparing the varialbes to calculate the temperature from volatage which get from thermistor
V0 = analogRead(Thermistor0);
R0 = SR * ((float)V0 / (1023.0-(float)V0));
logR0 = log(R0);
// calculate the temperature from resistance which get from above
T0 = (1.0 / (c1 + c2*logR0 + c3*logR0*logR0*logR0));
T0 = T0 - 273.15; // K --> C
//T0 = (T0 * 9.0) / 5.0 + 32.0; // C --> F
Serial.print("Temperature: ");
Serial.println(T0);
delay(500);
}
다음 포스팅으로,
여러개의 써미스터로 온도 값 받아오기
받아온 온도 값 LCD display로 나타내기
측정한 값을 실시간으로 Excel에 기록하기
제가 사용한 써미스터 + 써미스터 온도 측정 정확도를 올리기 위한 구간별 (Rs)저항값
참고
다른 온도 측정 도구(Thermocouple) + Arduino 사용
2020/10/02 - [정리, 공부해요/아두이노] - Thermocouple(열전대, 써모커플), 아두이노로 값 읽기, MAX31855 증폭기 사용
'서브 공부 > 아두이노 & 회로구성' 카테고리의 다른 글
Thermistor(써미스터) 아두이노 우노로 읽고, PLX DAQ 써서 엑셀에 실시간 기록/저장 (0) | 2020.10.12 |
---|---|
Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기 (0) | 2020.10.10 |
LCD display, 아두이노 우노, 기본연결/I2C/가변저항의 필요. 회로&코드 (0) | 2020.10.06 |
Thermocouple 여러개, 아두이노 연결, LCD display 사용, 액셀에 데이터 실시간 정리 PLX DAQ (11) | 2020.10.04 |
(저장용) Thermocouple amplifier 여러개 아두이노 연결 (0) | 2020.10.02 |
댓글