본문 바로가기
공부/아두이노 & 회로구성

Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기

by 쉬고 싶다 2020. 10. 10.
반응형

 

- 써미스터란, 써미스터 하나 연결

- 써미스터 여러개 아두이노 연결

- 써미스터 여러개 값 LCD display에 나타내기

 

 

 써미스터란, 써미스터 하나 연결

 

써미스터에 대한 간단한 원리에 대한 포스팅입니다.

2020/09/10 - [정리, 공부해요/전기, 전자, 통신] - 써미스터 (Thermistor=Thermal resistor) - 사용온도, B value

 

써미스터 (Thermistor=Thermal resistor) - 사용온도, B value

- Thermistor - Thermistor 구입에 있어, - Thermistor 종류, 사용온도 - "B" value 써미스터 (Thermistor=Thermal resistor)   써미스터는 주로 폴리머나 세라믹 소재로 제작되며, 섭씨 영하 90도에서 130도..

setoo0922.tistory.com

써미스터 하나를 연결하는 방법, 연결하는데 알아두어야 할, 코드에 녹아있는 원리와 법칙에 대한 설명을 포스팅 해뒀습니다. 참고하시길 바랍니다!

2020/10/08 - [정리, 공부해요/아두이노] - Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까

 

Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까

- Thermistor - arduino uno (써미스터 with 아두이노 우노) - 온도 측정을 어떻게 하는지 - Potential divider circuit for thermistor (읽은 V로 R 계산하기 위해) - Steinhart-hart equation (구한 R로 T 구하..

setoo0922.tistory.com

 

 써미스터 여러개 아두이노 연결

 

위에서 하나의 연결이 되었고,

써미스터의 코드가 왜 저런식으로 되는지만 이해하셨다면

여러개 연결은 그저 코드를 그 갯수에 맞게 늘려서 적어주고

변수 더 넣어주고

회로 연결해주고 그게 다 입니다.

 

 

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/가변저항의 필요. 회로&코드

 

LCD display, 아두이노 우노, 기본연결/I2C/가변저항의 필요. 회로&코드

- LCD display - 기본연결 LCD (회로 & 코드) - I2C 탑재된 LCD (회로 & 코드) - 가변저항이 필요한 이유  LCD display address 찾기 LCD display를 사용하는 코드를 짜기 위해선 우선 우리가 가지고 있는 LCD가..

setoo0922.tistory.com

 

#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 써서 엑셀에 실시간 기록/저장

 

Thermistor(써미스터) 아두이노 우노로 읽고, PLX DAQ 써서 엑셀에 실시간 기록/저장

- Thermistor - Thermistor, 얻은 전압에서 온도값 계산 - Multi Thermocouple - Arduino Uno - display on LCD - Thermistor로 읽은 값 실시간으로 Excel에 저장  Thermistor Thermistor 2020/09/10 - [정리, 공..

setoo0922.tistory.com

 

반응형

댓글