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

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

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

- Thermistor

- Thermistor, 얻은 전압에서 온도값 계산

- Multi Thermocouple - Arduino Uno - display on LCD

- Thermistor로 읽은 값 실시간으로 Excel에 저장

 

 

 Thermistor

Thermistor

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

Thermistor, 얻은 전압에서 온도값 계산

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

Multi Thermocouple - Arduino Uno - display on LCD

2020/10/10 - [정리, 공부해요/아두이노] - Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기

 

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

- 써미스터란, 써미스터 하나 연결 - 써미스터 여러개 아두이노 연결 - 써미스터 여러개 값 LCD display에 나타내기  써미스터란, 써미스터 하나 연결 써미스터에 대한 간단한 원리에 대한 포스팅입

setoo0922.tistory.com

 

 Thermistor로 읽은 값 실시간으로 Excel에 저장

 

우선, 센서로 부터 읽은 값을 실시간으로 오래 기록하기 위해 우리가 DAQ를 사용해 주듯이,

PLX DAQ라는 프로그램을 다운받아야 합니다.

아래의 링크에 들어가서 두 파일을 모두 다운받고, 압축파일을 풀어주면 됩니다.

www.parallax.com/downloads/plx-daq

 

PLX-DAQ | Parallax Inc

You are hereHome › PLX-DAQ PLX-DAQ Download Summary Parallax Data Acquisition tool (PLX-DAQ) software add-in for Microsoft Excel acquires up to 26 channels of data from any Parallax microcontrollers and drops the numbers into columns as they arrive. PLX-

www.parallax.com

혹은 아래의 파일을 다운받고 압축을 푸시면 됩니다.

PLX-DAQ-v2.11.zip
0.48MB
plx-daq-release2b.zip
0.49MB

사이트에서 받으셨다면 보라색 박스 이름 그대로의 액셀 파일이 있을 텐데,

이름은 상관없고 아무 액셀파일을 열으시면

 

300x250

 

파란 창이 뜰 수 있고, 콘텐츠 사용을 허용할지 묻는 노란 알림이 뜰 수 있습니다. 허용해주시면 위의 파란 창이 뜹니다.

 

<<이 프로그램은 아두이노 스케치의 Serial Moniter와 함께 사용할 수 없습니다>>

 

사용법은 간단합니다. (프로그램 사용법 + 코드를 짜야하는데, 프로그램 사용법 먼저 다루자면.)

 

하늘색 상자의 포트와 Baud를 맞춰줍니다.

포트: 아두이노 우노와 연결된 포트 / Baud: Serial.begin( 숫자 ), 보통 9600을 사용합니다.

이렇게 세팅하고, 초록 상자의 Connect를 눌러주면 이 버튼이 Disconnect로 바뀌며 데이터가 코드에서 설정해준 Delay에 맞게 쌓이게 됩니다.

그래프를 미리 설정해두면, 실시간으로 그래프가 데이터도 쌓여갑니다.

이제 코드를 알아보겠습니다.

코드만 알면 위처럼 세팅하고, Connect만 눌러주면 데이터가 쌓이게 됩니다.

(하지만,, 저는 초당 한줄씩 쌓았고, 5시간 뒤에 돌아오니 데이터가 싹 날아가고 프로그램은 꺼져 있었습니다.. 가급적 너무 쌓이지 않게 Delay 설정을 해주고, 불안하면 옆에서 지키길 바랍니다..)

노트북 4개의 써미스터와 팬,팰티어의 아웃풋 값을 받을때는 얼마 못 버티고 자꾸 튕겼는데, 컴퓨터로 하니 잘 되더군요.. 혹시나 자꾸 팅기시거나 하신다면, 좋은 컴퓨터로 써보시길 바랍니다 :)

 

#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);

  //Excel
  Serial.println("CLEARDATA");
  Serial.println("LABEL,Time,H-T0,H-T2,S-T1");
  //H=Holder Temperature, S=Sample Temperature
}

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

  //Excel
  Serial.print("DATA,TIME,");
  Serial.print(T0);
  Serial.print(",");
  Serial.print(T2);
  Serial.print(",");
  Serial.print(T1);
  Serial.println(",");

  //LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(T0);
  lcd.print(" / ");
  lcd.print(T1);
  lcd.setCursor(0, 1);
  lcd.print(T2);
  lcd.println(" C");
  delay(200);
}

 

Serial.println("CLEARDATA");

==> 엑셀에서 기존에 있던 데이터를 정리
Serial.println("LABEL,Time,Int-T1,Int-T2,T1,T2");

==> 액셀의 최상단에 라벨링. Time, 하고 4가지. ","로 종류를 나눕니다.

Serial.print("DATA,TIME,");

==> Time 줄에 시간을 기록합니다.

Serial.print(thermocouple1.readInternal());

==> 그 다음 줄에 기록할 데이터

Serial.print(",");

==> 다음 칸으로 넘어가겠다는 명령어로 보시면 됩니다. 콤마.

 

기존의 코딩에서 이정도의 내용만 추가하면 엑셀에 데이터를 쌓을 수 있습니다.

 

마무리

 

:D

 

반응형

댓글