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

Thermocouple(열전대, 써모커플), 아두이노로 값 읽기, MAX31855 증폭기 사용

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

 

- Thermocouple (열전대)

- Thermocouple amplifier (MAX31855, 왜 필요한지)

- Thermocouple with arduino (회로 연결 & 코딩)

 

 

 

 Thermocouple (열전대)

 

열전대에 관한 간단한 내용들은 아래 글을 참고하면 좋을 것입니다.

 

2020/09/12 - [정리, 공부해요/전기, 전자, 통신] - 열전대(써모커플, Thermocouple) - 원리, 종류

 

열전대(써모커플, Thermocouple) - 원리, 종류

- 열전대(써모커플, Thermocouple) 원리 - Thermocouple type - Thermocouple 종류 열전대(써모커플, Thermocouple) 써모커플은 서로 다른 두 종류의 금속의 기전력을 이용한 온도센서입니다. 특성이 다른 두 종류..

setoo0922.tistory.com

 

 Thermocouple amplifier (MAX31855, 왜 필요한지)

 

이번 포스팅에서는 열전대 값을 아두이노로 읽는 것을 정리 해볼까 합니다.

그 이후는 LCD 화면에 띠우고, Excel 파일로 실시간으로 데이터를 Kipping 하는 법 등등 지금 진행중인 실험 셋업의 완성까지 포스팅 하려 합니다.

 

열전대는 간단히, 열의 전도도가 다른 두 금속을 사용해 특정 지점의 온도를 전기 값으로 받아들이는 센서입니다.

하지만 열전대를 아두이노에 바로 쓰기에는 신호가 너무 미비하여 그를 증폭시켜줄 증폭기가 필요하다고 합니다.

 

대부분의 증폭기는 하나의 증폭기당 하나의 열전대를 달아 사용할 수 있습니다.

노랑 형광은 무시해주세요 :)

위의 사진은 몇가지의 열전대 증폭기를 비교해둔 것입니다.

열전대를 고를 때 측정가능한 온도범위를 보고 고르듯 (열전대의 종류는 위에서 언급한 링크에 정리해뒀습니다.)

증폭기 또한 그를 염두해 두어야 합니다.

비교적 저렴한 MAX6675 증폭기를 쓸 수 있지만, 0도 밑의 온도를 측정할 때는 좋지 않습니다.

저의 이번 프로젝트는 -180도 부터 시작하여 상온까지의 온도를 측정할 필요가 있기에 MAX31855를 사용하게 되었고,

그 증폭기에 (연구실에 있기도 하여) K-type 열전대를 연결하여 사용했습니다.

 

MAX6675
MAX31855

MAX6675와 MAX31855 입니다.

 

 Thermocouple with arduino (회로 연결 & 코딩)

 

증폭기의 준비 & 축전지의 필요성

먼저 증폭기를 준비하겠습니다.

MAX31855를 구입하면, 커넥터들이 연결된 제품도 있겠지만,

저는 연결되지 않은 (비교적 저렴한) 제품을 구입했습니다.

간단히 납땜을 해주면 되는데,

 

한 가지 주의할 점이 있습니다.

관련 정보를 수집하며 몇몇 사이트/블로그에서 열전대와 증폭기의 사용에 노이즈 문제가 있었고,

(증폭기의 납땜 부분이 바닥, 혹은 어딘가 닿는 것만으로 생기는 작은 노이즈가 영향을 줄 수 있습니다.)

그를 잡아주기 위해 사진과 같이 0.01 ~ 0.1 uF Capacitor를 달아주어 그 문제를 해결했습니다.

 

핀의 의미

MAX6675와 MAX31855 둘 다 해당되는 내용입니다.

  • CLK (clock): microcontroller(우노보드)로 들어가는 값으로, 데이터가 들어갈 때 필요한 시간 값입니다.
  • DO (data out): microcontroller로 부터 나오는 값으로, 열전대로부터 읽은 값입니다.
  • CS (chip select): microcontroller로 들어가는 값으로, 열전대로부터 데이터를 읽기 시작하는 신호를 주는 핀이라 합니다.

몇몇 포스팅에서 여러 열전대를 사용 할 때, DO나 CS 핀을 아두이노의 한 핀에서 여럿 뽑아내던데 (하나의 핀에서 여러 열전대로 연결하던데), CLK는 그게 가능하지만 다른 핀은,, 가능할지 모르겠네요 (다음 포스팅 때는 이 부분을 해보고 추가로 포스팅 하겠습니다.)

 

회로 연결

 

열전대 하나 연결하는 코드, 테스트

코드는 간단합니다.

라이브러리에 있는 코드를 사용하면 되는데,

우선 라이브러리에 필요한 내용을 넣어줄 필요가 있습니다.

아두이노 스케치 파일에서

스케치 ==> 라이브러리 포함하기 ==> 라이브러리 관리 클릭하시고

보라색 검색 창에 adafruit max31855를 검색하시면

초록색 박스 안의 저 라이브러리가 나옵니다.

저는 이미 다운로드를 한 상태이기에 설치 버튼이 비활성화 되어있지만,

활성화 되어 있는 설치를 누르고, 추가적으로 필요하다는 라이브러리를 다 같이 다운로드 해주시면 됩니다.


#include <SPI.h>
#include "Adafruit_MAX31855.h"

// Default connection is using software SPI, but comment and uncomment one of
// the two examples below to switch between software SPI and hardware SPI:

// Example creating a thermocouple instance with software SPI on any three
// digital IO pins.
#define MAXDO   3
#define MAXCS   4
#define MAXCLK  5

// initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

// Example creating a thermocouple instance with hardware SPI
// on a given CS pin.
//#define MAXCS   10
//Adafruit_MAX31855 thermocouple(MAXCS);

void setup() {
  Serial.begin(9600);

  while (!Serial) delay(1); // wait for Serial on Leonardo/Zero, etc

  Serial.println("MAX31855 test");
  // wait for MAX chip to stabilize
  delay(500);
  Serial.print("Initializing sensor...");
  if (!thermocouple.begin()) {
    Serial.println("ERROR.");
    while (1) delay(10);
  }
  Serial.println("DONE.");
}

void loop() {
  // basic readout test, just print the current temp
   Serial.print("Internal Temp = ");
   Serial.println(thermocouple.readInternal());

   double c = thermocouple.readCelsius();
   if (isnan(c)) {
     Serial.println("Something wrong with thermocouple!");
   } else {
     Serial.print("C = ");
     Serial.println(c);
   }
   //Serial.print("F = ");
   //Serial.println(thermocouple.readFahrenheit());

   delay(1000);
}

 

그리고 이 코드는 SerialThermocouple 예제 입니다.

 

열전대, 손으로 잡으면 온도가 순간 올랐다가 노으면 비교적 천천히 떨어진다.

열전대 둘 연결하는 코드

 

 

포스팅이 생각보다 길어져서

열전대 둘 연결하는 내용과

그를 LCD 화면에 바로바로 띠워주는 것은 따로 포스팅 하겠습니다 :)

 

 

마무리

써미스터, 다른 온도 측정 툴

2020/10/10 - [정리, 공부해요/아두이노] - 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

 

여러개의 열전대 연결 + LCD display 표시 + 액셀에 데이터 실시간 저장

2020/10/10 - [정리, 공부해요/아두이노] - Thermocouple 여러개, 아두이노 연결, LCD display 사용, 액셀에 데이터 실시간 정리 PLX DAQ

 

Thermocouple 여러개, 아두이노 연결, LCD display 사용, 액셀에 데이터 실시간 정리 PLX DAQ

- Thermocouple - Multi Thermocouple - Arduino Uno - Thermocouple로 읽은 값 LCD display로 띠우기 - Thermocouple로 읽은 값 실시간으로 Excel에 저장  Thermocouple 간단한 열전대에 관한 내용과 MAX31855를..

setoo0922.tistory.com

 

반응형

댓글