라즈베리 파이 피코 MAX6675 열전대 모듈

이 사이트에서 다루는 다른 모든 온도 센서 - DS18B20, DHT11, LM35 - 는 물의 끓는점보다 훨씬 낮은 온도에서 쓸모가 없어지며, 납땜 인두에 끼우거나 녹은 왁스에 담그면 어느 것도 버티지 못합니다. 프로젝트에서 수백 도 이상을 측정해야 한다면, 일반적인 해결책은 MAX6675 디지털 변환 칩으로 읽는 열전대 프로브입니다. 여기에는 아두이노 방식의 라이브러리 매니저가 없으므로, 이 튜토리얼에서는 마이크로파이썬에서 실제로 쓰는 방식대로 MAX6675를 읽습니다: 파이썬에서 클록, 칩 선택, 데이터 핀을 직접 토글하는 방식입니다.

이 가이드에서는 다음 내용을 다룹니다:

라즈베리 파이 피코와 max6675 열전대 모듈

준비물

1×라즈베리 파이 피코 W 쿠팡 | 아마존
1×라즈베리 파이 피코 (또는) 쿠팡 | 아마존
1×마이크로 USB 케이블 아마존
1×MAX6675 Thermocouple Module 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 라즈베리 파이 피코용 스크루 터미널 확장 보드 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

열전대란 무엇인가요?

열전대는 서로 다른 두 금속 전선을 한쪽 끝에서 녹여 붙인 것일 뿐이며, 그 끝을 열 접점이라고 부릅니다. 그 접점을 가열(또는 냉각)하면 전선 양단에 작은 전압이 나타나고, 이 전압은 온도에 따라 오르내립니다 - 그래서 열전대는 일반 센서라면 즉시 망가질 환경도 거뜬히 견딥니다. 가장 흔한 종류인 K타입은 크로멜과 알루멜 전선으로 만들어지며, 대략 -328°F에서 +2300°F까지 측정할 수 있습니다.

MAX6675 열전대 모듈에 대하여

열전대 단품은 몇 밀리볼트만 출력하므로, 피코가 혼자 읽기에는 너무 작고 잡음이 많습니다. MAX6675 모듈은 작은 브레이크아웃 보드의 MAX6675 칩과 이미 연결된 K타입 프로브를 함께 제공하여 이 문제를 해결하므로, 전체 조립품이 깨끗하고 바로 쓸 수 있는 온도 값을 돌려줍니다.

MAX6675 열전대 모듈
동작 전압 3.0V ~ 5.5V
측정 범위 0°C ~ 1024°C
정확도 ±3°C
분해능 약 0.25°C
프로브 길이 약 18인치 (45 cm)
프로브 정격 0°C ~ 80°C

핀아웃

max6675 열전대 모듈 핀아웃

브레이크아웃에는 헤더 핀과 프로브를 연결하는 2핀 나사 단자가 있습니다:

  • VCC 핀: 전원 입력, 3.0V ~ 5.5V를 받습니다.
  • GND 핀: 접지.
  • SCK 핀: 시리얼 클록 입력 - 피코가 이 핀에 펄스를 보내 칩에서 측정값을 밀어냅니다.
  • CS 핀: 칩 선택 - 측정하는 동안에는 LOW, 나머지 시간에는 HIGH로 유지됩니다.
  • SO 핀: 시리얼 데이터 출력 - 모듈의 유일한 데이터 라인입니다. 모듈은 피코로부터 명령을 받지 않고 측정값만 돌려보내기 때문입니다.
  • + / - 단자대: 프로브를 연결하는 곳입니다. 빨간색 선은 +에, 파란색 선은 -에 연결합니다.

모듈에 포함된 프로브의 길이는 약 18인치이며, 칩 자체는 1024°C까지의 온도를 디지털로 변환할 수 있지만 그 프로브 선은 0°C에서 80°C까지만 견딥니다 - 끓는 물이 담긴 냄비보다 뜨거운 것을 측정하려면 더 높은 온도를 견디는 프로브를 준비하세요.

배선도

피코의 GPIO는 3.3V 전용이며 5V를 견디지 못하므로, 모듈의 전원은 5V가 아니라 피코의 3.3V 레일에서 공급하세요: VCC는 3V3(OUT)에, GND는 아무 GND 핀에 연결합니다. 세 개의 신호 라인(SCK, CS, SO)은 원하는 빈 GPIO 어디에나 연결할 수 있습니다. 아래 코드는 피코의 하드웨어 SPI 주변 장치를 사용하지 않고 직접 비트뱅잉하기 때문입니다. 마지막으로 프로브의 빨간색과 파란색 선을 모듈의 +와 - 나사 단자에 끼우세요.

라즈베리 파이 피코 max6675 열전대 모듈 배선도

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

라즈베리 파이 피코 - MAX6675 모듈 배선

MAX6675 모듈 라즈베리 파이 피코
VCC 3V3(OUT)
GND GND
SCK GP5
CS GP4
SO GP3

라즈베리 파이 피코 코드

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-max6675-thermocouple-module */ from machine import Pin import time # Define the pins connected to the MAX6675 module sck = Pin(5, Pin.OUT) # The Raspberry Pi Pico pin GP5 connected to the SCK pin of the MAX6675 module cs = Pin(4, Pin.OUT) # The Raspberry Pi Pico pin GP4 connected to the CS pin of the MAX6675 module so = Pin(3, Pin.IN) # The Raspberry Pi Pico pin GP3 connected to the SO pin of the MAX6675 module cs.value(1) # Keep CS high (idle) until we are ready to take a reading sck.value(0) # Keep SCK low (idle) until we are ready to take a reading # Manually bit-bang the MAX6675's 3-wire protocol. # There is no MicroPython library for this chip, but the protocol # is simple enough to reproduce with plain GPIO pulses. def read_celsius(): raw_word = 0 cs.value(0) # Select the chip (active low) to start a transfer time.sleep_us(1) for i in range(16): # The MAX6675 always clocks out 16 bits, MSB first sck.value(1) time.sleep_us(1) raw_word = (raw_word << 1) | so.value() # Shift in the bit sitting on SO sck.value(0) time.sleep_us(1) cs.value(1) # Deselect the chip, the transfer is complete if raw_word & 0x4: # Bit D2 flags an open/disconnected thermocouple return None raw_word >>= 3 # Discard the 3 low status bits, keep the 12-bit reading return raw_word * 0.25 # Each count of the 12-bit word equals 0.25 degrees C # Main loop: take one reading per second and print it to the Shell while True: celsius = read_celsius() if celsius is None: print('No thermocouple detected - check the probe connection') else: fahrenheit = celsius * 9 / 5 + 32 print('Temperature: {:.2f} C / {:.2f} F'.format(celsius, fahrenheit)) time.sleep(1)

빠른 단계

다음 안내를 단계별로 따라 하세요:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하세요.
  • 라즈베리 파이 피코에 마이크로파이썬 펌웨어가 설치되어 있는지 확인하세요.
  • 라즈베리 파이 피코를 처음 사용한다면 자세한 안내는 라즈베리 파이 피코 - 시작하기 튜토리얼을 참고하세요.
  • 위 배선도에 따라 MAX6675 모듈과 열전대 프로브를 라즈베리 파이 피코에 배선하세요.
  • USB 케이블로 라즈베리 파이 피코를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 Tools Options로 이동하여 MicroPython (Raspberry Pi Pico) 인터프리터를 선택하세요.
  • Interpreter 탭의 드롭다운 메뉴에서 MicroPython (Raspberry Pi Pico)를 선택하세요.
  • 올바른 포트가 선택되었는지 확인하세요. Thonny IDE가 포트를 자동으로 감지하지만, 직접 선택해야 할 수도 있습니다(예: Windows에서는 COM3, Linux에서는 /dev/ttyACM0).
  • 위 코드를 복사하여 Thonny IDE의 편집기에 붙여넣으세요.
  • 다음과 같이 스크립트를 라즈베리 파이 피코에 저장하세요:
    • Save 버튼을 클릭하거나 Ctrl+S 키를 누르세요.
    • 저장 대화 상자에 This computer와 Raspberry Pi Pico 두 섹션이 표시됩니다. Raspberry Pi Pico를 선택하세요
    • 파일 이름을 main.py로 저장하세요
  • 초록색 Run 버튼을 클릭(또는 F5 키를 누름)하여 스크립트를 실행하세요. 스크립트가 실행됩니다.
  • 손가락, 뜨거운 물 한 컵, 또는 잠깐 가까이 댄 라이터로 열전대 끝을 데운 다음, 다시 식히세요.
  • Thonny 하단의 Shell에서 메시지를 확인하세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Temperature: 24.50 C / 76.10 F Temperature: 24.75 C / 76.55 F Temperature: 26.00 C / 78.80 F Temperature: 31.25 C / 88.25 F Temperature: 45.50 C / 113.90 F Temperature: 62.75 C / 144.95 F Temperature: 71.00 C / 159.80 F Temperature: 58.00 C / 136.40 F Temperature: 40.25 C / 104.45 F
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

프로브가 빠져 있거나 잘못 배선되어 있으면 Shell에 온도 대신 "No thermocouple detected - check the probe connection"이 출력됩니다 - 이 메시지가 보이면 빨간색과 파란색 선을 나사 단자에 다시 끼우세요.

스크립트 이름을 main.py로 지정하고 라즈베리 파이 피코의 루트 디렉터리에 저장하면, 피코의 전원이 켜지거나 리셋될 때마다 자동으로 실행됩니다. 이는 전원이 켜지자마자 바로 실행되어야 하는 독립형 애플리케이션에 유용합니다. 스크립트 이름을 main.py가 아닌 다른 이름으로 지정하면 Thonny의 Shell에서 직접 실행해야 합니다.

코드 설명

소스 코드 주석의 설명을 확인하세요! 요약하면: 스크립트는 CS를 LOW로 내리고, SCK를 16번 클록하면서 SO에 있는 비트를 16비트 워드로 시프트해 넣은 다음, CS를 다시 올립니다. 그 워드의 하위 3비트는 상태 비트(비트 2가 설정되면 프로브가 분리된 것)이므로, 코드는 이를 시프트해 버리고 남은 값에 0.25를 곱해 섭씨 온도를 얻으며, 표시를 위해 이를 화씨로도 변환합니다.

동영상

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