아두이노 우노 R4 MAX6675 열전대 모듈

Arduino UNO R4로 온도를 측정하고 싶다면 선택할 수 있는 센서가 많이 있습니다. 대표적인 예로 DHTxx 시리즈, DS18B20, LM35, TMP36 등이 있으며, 각각 프로젝트의 필요에 맞는 고유한 기능과 성능을 제공합니다.

하지만 화산처럼 뜨거운 것(1000°C 또는 1800°F를 훨씬 넘을 수 있음)이나 액체 질소처럼 매우 차가운 것(약 −195.8°C 또는 −320°F)의 온도를 측정하고 싶다면 어떨까요? 이런 경우 일반 온도 센서는 녹아버리거나 완전히 얼어버릴 것입니다.

그렇다면 극도로 뜨겁거나 차가운 것은 어떻게 측정할까요? 바로 열전대(Thermocouple)라고 불리는 영리한 한 쌍의 전선을 사용합니다. 열전대는 열전 효과를 이용하여 -330°F부터 +2460°F까지의 온도를 측정하는 온도 센서의 한 종류입니다.

이 튜토리얼에서는 가장 널리 사용되고 저렴하면서도 정확한 열전대 모듈 중 하나인 MAX6675 열전대 모듈을 Arduino UNO R4에 연결하는 방법을 안내합니다. 하지만 먼저 열전대의 기본 사항을 간단히 복습해 보겠습니다.

아두이노 우노 R4 max6675 열전대 모듈

준비물

1×Arduino UNO R4 WiFi or Arduino UNO R4 Minima
1×(또는) DIYables STEM V4 IoT, Compatible with Arduino Uno R4 WiFi 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×MAX6675 Thermocouple Module 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노 R4용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino UNO R4 쿠팡 | 아마존
1×(추천) 아두이노 우노 R4용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노 R4용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노 R4용 전원 분배기 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Arduino Uno R4 WiFi Compatible Boards

MAX6675 열전대 모듈에 대하여

MAX6675 열전대 모듈은 MAX6675 브레이크아웃 보드와 K형 열전대 프로브로 구성됩니다.

max6675 열전대 모듈 핀아웃
image source: diyables.io

열전대의 기본

열전대는 서로 다른 두 금속 전선의 한쪽 끝을 접합하여 만든 온도 센서이며, 이 접합부를 열접점(hot junction)이라고 합니다. 열접점이 가열되면 온도에 따라 변하는 아주 작은 전압이 발생합니다. 이 간단한 원리 덕분에 열전대는 다른 종류의 센서라면 손상될 정도로 매우 높거나 낮은 온도도 측정할 수 있습니다.

일반적인 열전대 종류에는 몇 가지(J, K, E, T 등)가 있으며, 각각 서로 다른 금속 쌍으로 만들어집니다. 가장 널리 사용되는 것은 K형 열전대로, 크로멜(Chromel)과 알루멜(Alumel) 전선으로 만들어지며 대략 -328°F부터 +2300°F까지 매우 넓은 온도 범위를 측정할 수 있습니다.

열전대에서 발생하는 전압은 매우 작아서 온도 값으로 직접 변환하기가 쉽지 않습니다. 그래서 이 작업을 대신해 줄 전용 칩이 필요한데, 그것이 바로 MAX6675 IC가 하는 일입니다.

MAX6675 모듈 핀아웃

브레이크아웃 보드는 열전대 프로브의 신호를 읽어 온도 값으로 변환한 다음, SPI를 통해 Arduino UNO R4로 전송합니다. 약 ±3°C의 정확도로 0°C부터 +1024°C까지의 온도를 측정할 수 있으며, 3.0V~5.5V 전원으로 동작합니다.

  • VCC: 전원 핀, 3V - 5V에 연결합니다.
  • GND: 접지 핀.
  • SCK: SPI 클럭 핀.
  • CS: 칩 선택 핀.
  • SO: 데이터 핀, 온도 측정값을 Arduino UNO R4로 보냅니다.

모듈의 반대쪽에는 열전대 프로브를 연결하는 2핀 단자대가 있습니다: 빨간색 전선은 +에, 파란색 전선은 -에 연결합니다.

K형 열전대 프로브

모듈에 포함된 프로브는 길이가 약 18인치이며 0°C부터 80°C까지의 온도를 측정할 수 있습니다. 빨간색 전선이 양극 리드이고, 파란색 전선이 음극 리드입니다.

기술 사양

  • 동작 전압: 3.0V ~ 5.5V
  • 인터페이스: SPI
  • 온도 범위: 0 – 1024°C (MAX6675), 0 – 80°C (기본 제공 프로브)
  • 정확도: ±3°C

배선도

모듈의 VCC 핀을 Arduino UNO R4의 5V에, GND 핀을 접지에 연결합니다. 그런 다음 SPI 인터페이스로 사용할 Arduino UNO R4의 디지털 핀 3개를 연결합니다. 마지막으로 열전대 프로브를 모듈에 연결합니다: 빨간색 전선은 모듈의 '+' 단자에, 파란색 전선은 '-' 단자에 연결합니다.

아두이노 우노 R4 max6675 열전대 모듈 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

Arduino Uno R4와 기타 부품에 전원을 공급하는 가장 효과적인 방법을 확인하시려면, 아래 링크를 참조하세요: 아두이노 우노 R4 전원 공급 방법.

MAX6675 모듈과 Arduino UNO R4의 배선표

MAX6675 모듈 Arduino UNO R4
VCC → 5V
GND → GND
SCK → 5
CS → 4
SO → 3

아두이노 UNO R4 코드

/* * 이 아두이노 우노 R4 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 우노 R4 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-r4/arduino-uno-r4-max6675-thermocouple-module */ #include "max6675.h" // Define the Arduino UNO R4 pins the MAX6675 module is connected to int SO_PIN = 3; // Serial Out (SO) pin int CS_PIN = 4; // Chip Select (CS) pin int SCK_PIN = 5; // Clock (SCK) pin // Create an instance of the MAX6675 class with the specified pins MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN); void setup() { Serial.begin(9600); delay(500); } void loop() { // Read the current temperature and print it to the Serial Monitor // Read the temperature in Celsius Serial.print("Temperature: "); Serial.print(thermocouple.readCelsius()); Serial.print("\xC2\xB0"); // shows degree symbol Serial.print("C | "); // Read the temperature in Fahrenheit Serial.print(thermocouple.readFahrenheit()); Serial.print("\xC2\xB0"); // shows degree symbol Serial.println("F"); delay(1000); }

빠른 단계

다음 지침을 단계별로 따라 하세요:

  • Arduino Uno R4 WiFi/Minima를 처음 사용한다면 아두이노 우노 R4 - 소프트웨어 설치 튜토리얼을 참고하세요.
  • 제공된 배선도에 따라 MAX6675 모듈을 Arduino Uno R4에 연결합니다.
  • USB 케이블로 Arduino Uno R4 보드를 컴퓨터에 연결합니다.
  • 컴퓨터에서 Arduino IDE를 실행합니다.
  • 알맞은 Arduino Uno R4 보드(예: Arduino Uno R4 WiFi)와 COM 포트를 선택합니다.
  • Arduino IDE 왼쪽에 있는 Libraries 아이콘으로 이동합니다.
  • "MAX6675"를 검색하고 Adafruit에서 만든 라이브러리를 찾습니다.
  • Install 버튼을 클릭하여 MAX6675 라이브러리를 설치합니다.
  • Search for MAX6675 library created by Adafruit and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Library Manager
Type:
All
Topic:
All
MAX6675 library by Adafruit
Arduino library for interfacing with MAX6675 thermocouple amplifier More info
1.1.2
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
Arduino Uno R4 WiFi on COM15
1
  • 위의 코드를 복사하여 Arduino IDE에서 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드합니다.
  • 측정할 물체에 열전대를 접촉시킵니다.
  • 시리얼 모니터를 엽니다.
  • 시리얼 모니터에서 결과를 확인합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Temperature: 25.00°C | 77.00°F Temperature: 25.25°C | 77.45°F Temperature: 26.50°C | 79.70°F Temperature: 28.75°C | 83.75°F Temperature: 31.00°C | 87.80°F
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

※ 주의:

시리얼 모니터에 표시되는 온도가 변하지 않거나 잘못된 것 같다면, 모듈과 Arduino UNO R4 사이의 배선을 다시 확인하고 K형 열전대 프로브가 '+' 및 '-' 단자에 단단히 연결되어 있는지 확인하세요.

코드 설명

스케치는 MAX6675 헤더 파일을 포함하는 것으로 시작합니다. 이 헤더 파일 덕분에 Arduino UNO R4가 MAX6675 모듈과 통신할 수 있습니다.

#include "max6675.h"

전역 영역에서는 세 개의 정수 SO_PIN, CS_PIN, SCK_PIN을 선언하여, 모듈의 시리얼 출력(SO), 칩 선택(CS), 클럭(SCK) 핀에 연결된 Arduino UNO R4 핀을 지정합니다.

int SO_PIN = 3; // Serial Out (SO) pin int CS_PIN = 4; // Chip Select (CS) pin int SCK_PIN = 5; // Clock (SCK) pin

다음으로 thermocouple이라는 이름의 MAX6675 클래스 인스턴스를 생성합니다. 이 코드는 정의된 SCK, CS, SO 핀으로 thermocouple 객체를 초기화합니다.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() 함수는 컴퓨터와의 시리얼 통신을 9600 보드레이트로 초기화합니다.

void setup() { Serial.begin(9600); delay(500); }

loop()에서는 두 개의 라이브러리 함수를 사용하여 MAX6675 열전대에서 값을 읽고 그 결과를 시리얼 모니터에 출력합니다:

  • Thermocouple.readCelsius(): 섭씨 온도를 반환합니다.
  • Thermocouple.readFahrenheit(): 화씨 온도를 반환합니다.
Serial.print("Temperature: "); Serial.print(thermocouple.readCelsius()); Serial.print("\xC2\xB0"); // shows degree symbol Serial.print("C | "); Serial.print(thermocouple.readFahrenheit()); Serial.print("\xC2\xB0"); // shows degree symbol Serial.println("F");

loop는 계속해서 무한히 실행되며, 매초 온도를 반복적으로 읽고 출력합니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글