- Thermistor
- Thermistor, 얻은 전압에서 온도값 계산
- Multi Thermocouple - Arduino Uno - display on LCD
- Thermistor로 읽은 값 실시간으로 Excel에 저장
Thermistor
Thermistor
2020/09/10 - [정리, 공부해요/전기, 전자, 통신] - 써미스터 (Thermistor=Thermal resistor) - 사용온도, B value
Thermistor, 얻은 전압에서 온도값 계산
2020/10/08 - [정리, 공부해요/아두이노] - Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까
Multi Thermocouple - Arduino Uno - display on LCD
2020/10/10 - [정리, 공부해요/아두이노] - Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기
Thermistor로 읽은 값 실시간으로 Excel에 저장
우선, 센서로 부터 읽은 값을 실시간으로 오래 기록하기 위해 우리가 DAQ를 사용해 주듯이,
PLX DAQ라는 프로그램을 다운받아야 합니다.
아래의 링크에 들어가서 두 파일을 모두 다운받고, 압축파일을 풀어주면 됩니다.
www.parallax.com/downloads/plx-daq
혹은 아래의 파일을 다운받고 압축을 푸시면 됩니다.
사이트에서 받으셨다면 보라색 박스 이름 그대로의 액셀 파일이 있을 텐데,
이름은 상관없고 아무 액셀파일을 열으시면
파란 창이 뜰 수 있고, 콘텐츠 사용을 허용할지 묻는 노란 알림이 뜰 수 있습니다. 허용해주시면 위의 파란 창이 뜹니다.
<<이 프로그램은 아두이노 스케치의 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
'공부 > 아두이노 & 회로구성' 카테고리의 다른 글
아두이노 우노, PWM 제어 라이브러리 활용 (0) | 2020.10.14 |
---|---|
(저장용) 사용중인 써미스터 B값, 온도별 필요 기준저항값 (0) | 2020.10.12 |
Thermistor(써미스터) 여러개 아두이노 우노에 연결하여 LCD에 띠우기 (0) | 2020.10.10 |
Thermistor - arduino uno (써미스터 with 아두이노) - 온도 측정, 어떻게 할까 (0) | 2020.10.08 |
LCD display, 아두이노 우노, 기본연결/I2C/가변저항의 필요. 회로&코드 (0) | 2020.10.06 |
댓글