- 써미스터란, 써미스터 하나 연결
- 써미스터 여러개 아두이노 연결
- 써미스터 여러개 값 LCD display에 나타내기
써미스터란, 써미스터 하나 연결
써미스터에 대한 간단한 원리에 대한 포스팅입니다.
2020/09/10 - [정리, 공부해요/전기, 전자, 통신] - 써미스터 (Thermistor=Thermal resistor) - 사용온도, B value
써미스터 하나를 연결하는 방법, 연결하는데 알아두어야 할, 코드에 녹아있는 원리와 법칙에 대한 설명을 포스팅 해뒀습니다. 참고하시길 바랍니다!
2020/10/08 - [정리, 공부해요/아두이노] - Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까
써미스터 여러개 아두이노 연결
위에서 하나의 연결이 되었고,
써미스터의 코드가 왜 저런식으로 되는지만 이해하셨다면
여러개 연결은 그저 코드를 그 갯수에 맞게 늘려서 적어주고
변수 더 넣어주고
회로 연결해주고 그게 다 입니다.
int Thermistor0 = 0;
int Thermistor1 = 1;
int Thermistor2 = 2;
int V0, V1, V2;
// Static resistor or RT termistor resistance?
float SR = 10000;
float logR0, R0, T0, logR1, R1, T1, logR2, R2, T2;
// 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);
V1 = analogRead(Thermistor1);
V2 = analogRead(Thermistor2);
R0 = SR * ((float)V0 / (1023.0-(float)V0));
R1 = SR * ((float)V1 / (1023.0-(float)V1));
R2 = SR * ((float)V2 / (1023.0-(float)V2));
logR0 = log(R0);
logR1 = log(R1);
logR2 = log(R2);
// calculate the temperature from resistance which get from above
T0 = (1.0 / (c1 + c2*logR0 + c3*logR0*logR0*logR0));
T0 = T0 - 273.15; // C --> K
//T0 = (T0 * 9.0) / 5.0 + 32.0; // C --> F
T1 = (1.0 / (c1 + c2*logR1 + c3*logR1*logR1*logR1));
T1 = T1 - 273.15; // C --> K
//T1 = (T1 * 9.0) / 5.0 + 32.0; // C --> F
T2 = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T2 = T2 - 273.15; // C --> K
//T2 = (T2 * 9.0) / 5.0 + 32.0; // C --> F
Serial.println("Temperature: ");
Serial.print(T0);
Serial.print("/");
Serial.print(T1);
Serial.print("/");
Serial.print(T2);
Serial.println(" C");
delay(500);
}
기준 저항, ABC 상수, 읽은 전압으로 부터 저항 계산 및 필요 회로, 저항값에서 온도값 계산에 관해서는
위의 두 번째 포스팅에 자세히 정리해두었습니다 :)
써미스터 여러개 값 LCD display에 나타내기
우선, 저는 16x2 LCD display를 사용했고,
기본 LCD가 아닌 I2C로 사용편의성이 좋게 나온 제품을 사용했습니다.
LCD 관련 회로연결, 편한 코딩을 위한 라이브러리 다운로드 및 활용은 아래 포스팅을 참고 해주시길 바랍니다 :)
2020/10/06 - [정리, 공부해요/아두이노] - LCD display, 아두이노 우노, 기본연결/I2C/가변저항의 필요. 회로&코드
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Thermistor0 = 0;
int Thermistor1 = 1;
int Thermistor2 = 2;
int V0, V1, V2;
// Static resistor or RT termistor resistance?
float SR = 10000;
float logR0, R0, T0, logR1, R1, T1, logR2, R2, T2;
// ABC constant
float c1 = 1.028525291852400E-03 , c2 = 2.392327985577990E-04 , c3 = 1.562478971912460E-07;
void setup() {
#ifndef ESP8266
while (!Serial); // will pause Zero, Leonardo, etc until serial console opens
#endif
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
}
void loop() {
// preparing the varialbes to calculate the temperature from volatage which get from thermistor
V0 = analogRead(Thermistor0);
V1 = analogRead(Thermistor1);
V2 = analogRead(Thermistor2);
R0 = SR * ((float)V0 / (1023.0-(float)V0));
R1 = SR * ((float)V1 / (1023.0-(float)V1));
R2 = SR * ((float)V2 / (1023.0-(float)V2));
logR0 = log(R0);
logR1 = log(R1);
logR2 = log(R2);
// calculate the temperature from resistance which get from above
T0 = (1.0 / (c1 + c2*logR0 + c3*logR0*logR0*logR0));
T0 = T0 - 273.15; // C --> K
//T0 = (T0 * 9.0) / 5.0 + 32.0; // C --> F
T1 = (1.0 / (c1 + c2*logR1 + c3*logR1*logR1*logR1));
T1 = T1 - 273.15; // C --> K
//T1 = (T1 * 9.0) / 5.0 + 32.0; // C --> F
T2 = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T2 = T2 - 273.15; // C --> K
//T2 = (T2 * 9.0) / 5.0 + 32.0; // C --> F
Serial.println("Temperature: ");
Serial.print(T0);
Serial.print("/");
Serial.print(T1);
Serial.print("/");
Serial.print(T2);
Serial.println(" C");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(T0);
lcd.print("/");
lcd.print(T1);
lcd.print("/");
lcd.print(T2);
//lcd.println("C");
delay(100);
}
마무리
혹시나 받아온 데이터 값을 저장 후, 분석이 필요하신 분들은
2020/10/12 - [정리, 공부해요/아두이노] - Thermistor(써미스터) 아두이노 우노로 읽고, PLX DAQ 써서 엑셀에 실시간 기록/저장
'공부 > 아두이노 & 회로구성' 카테고리의 다른 글
(저장용) 사용중인 써미스터 B값, 온도별 필요 기준저항값 (0) | 2020.10.12 |
---|---|
Thermistor(써미스터) 아두이노 우노로 읽고, PLX DAQ 써서 엑셀에 실시간 기록/저장 (0) | 2020.10.12 |
Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까 (0) | 2020.10.08 |
LCD display, 아두이노 우노, 기본연결/I2C/가변저항의 필요. 회로&코드 (0) | 2020.10.06 |
Thermocouple 여러개, 아두이노 연결, LCD display 사용, 액셀에 데이터 실시간 정리 PLX DAQ (11) | 2020.10.04 |
댓글