옵토커플러와 라즈베리 파이로 24V 온도조절기 이벤트 기록 및 그래프화
많은 홈 오토메이션 프로젝트는 온도조절기를 처음부터 만들지만, 이미 프로그래밍 가능한 온도조절기가 있고 단순히 켜짐/꺼짐 시점을 기록하고 싶다면 어떻게 할까요? 이 가이드는 옵토커플러를 사용해 24V AC HVAC 시스템을 라즈베리 파이로부터 안전하게 절연하고, 로직 레벨 신호를 포착해 이벤트를 기록하며, 실시간으로 온도 데이터를 플로팅하는 방법을 설명합니다.
⚠️ 메인 전압 작업은 위험할 수 있습니다. 전기 안전을 이해하고 필요한 기술이 있는 경우에만 진행하세요. 저자는 장비, 반려동물, 재산 피해에 대해 책임지지 않습니다.
1단계: 부품 및 도구 준비
필수 구성품:
- HCPL3700 옵토커플러 (정류기 내장)
- 3.3 kΩ 저항 2개, ½ W 이상
- 10 µF, ≥10 V 전해 콘덴서
- 0.1 µF 세라믹 콘덴서
- 8 kΩ 풀업 저항 (또는 3.3 kΩ + 4.7 kΩ 직렬 연결)
- 라즈베리 파이 (3.3V GPIO가 있는 모든 모델)
- 2심 절연 와이어, 퀵 디스커넥트 커넥터 권장
- 기본 전자 부품: 브레드보드, 점퍼 와이어 등
선택 사항: 온도 센서 추가
- ADT7410 디지털 온도 센서
- SOIC 브레이크아웃 보드
- 추가 0.1 µF 콘덴서
- 10 kΩ 저항 4개
선택 사항: PCB 설계 도구
- 2단자 스크류 블록
- SOIC 보드용 암 헤더 핀
- 파이/아두이노 연결용 수/암 헤더 핀
- 보드 크기 축소용 SMD 저항
도구:
요구 사항:
- 24 VAC HVAC 시스템
- 파이썬 및 관련 라이브러리 (예:
hipi-i2c)
- 선택 사항: 온라인 그래프용 Plotly 계정
- 선택 사항: PCB 설계용 Eagle (무료 버전)
2단계: 온도조절기의 릴레이 와이어 식별
대부분의 가정용 HVAC 시스템은 24 VAC로 동작합니다. 프로그래밍 가능한 온도조절기는 일반적으로 '파워 스틸링' 회로로 스스로 전원을 공급하고 릴레이를 스위칭해 퍼니스나 에어 핸들러를 구동합니다. 릴레이 상태를 모니터링하려면 HVAC 장치로 24 VAC를 공급하는 한 쌍의 와이어를 찾으세요.
멀티미터를 AC 전압 모드로 설정하고 HVAC가 켜짐/꺼짐 상태에서 각 와이어 쌍을 테스트합니다. 전압을 기록하세요. 올바른 쌍은 시스템 작동 시 약 24 VAC(종종 28~30 VAC), 유휴 시 0 VAC를 보여줍니다.
3단계: 모니터링 리드 추가
HVAC 전원을 차단하고 멀티미터로 전압이 없는지 확인하세요. 온도조절기를 마운트 베이스에서 조심스럽게 분리해 배선을 노출시킵니다. 선택한 릴레이 도체 쌍에 두 개의 추가 와이어를 연결합니다. 파이 쪽에는 퀵 디스커넥트 커넥터를 달아 유지보수를 쉽게 만드세요.
4단계: 절연 회로 구성
24 VAC를 라즈베리 파이에 직접 연결하는 것은 불가능합니다. HCPL3700 같은 옵토커플러는 입력 전압을 자동으로 정류하면서 전기적 절연을 제공합니다.
회로도의 핵심 포인트:
- AC 입력 핀에 두 개의 3.3 kΩ 저항(≥½ W 정격)을 달아 트리거 임계값을 설정합니다. 정확한 계산은 HCPL3700 데이터시트 참조.
- 정류기의 DC 출력 단자에 10 µF, ≥10 V 전해 콘덴서를 연결해 신호를 평활화하고 파이 GPIO가 전력선 주파수로 깜빡이는 것을 방지합니다.
- 옵토커플러 전원 핀에 0.1 µF 세라믹 콘덴서를 달아 고주파 노이즈를 줄입니다.
- HCPL3700은 오픈 컬렉터 출력을 사용하므로 풀업 저항이 필요합니다. 8 kΩ 저항(또는 3.3 kΩ + 4.7 kΩ 직렬)이 파이의 3.3V 로직으로 라인을 안정적으로 하이 상태로 끌어올립니다.
옵토커플러 출력을 파이 GPIO 핀(예: GPIO23)에 연결합니다. 파이의 3.3V 레일로 옵토커플러 전원 핀을 공급하고, 파이와 옵토커플러 그라운드를 공통으로 연결하세요.
배선이 완료되면 HVAC 릴레이가 작동할 때 파이가 로직 로우를, 비작동 시 로직 하이를 감지합니다.
완전한 회로도와 부품 계산은 HCPL3700 애플리케이션 노트를 참조하세요.
5단계: 소프트웨어 설치 및 데이터 로깅
파이썬으로 GPIO 핀을 읽고, 상태 변경마다 타임스탬프를 찍어 CSV 파일이나 데이터베이스에 기록합니다. 간단한 스크립트 예시:
import RPi.GPIO as GPIO
import time
import csv
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
with open('thermostat_log.csv', 'a') as f:
writer = csv.writer(f)
while True:
state = GPIO.input(23)
timestamp = time.time()
writer.writerow([timestamp, state])
time.sleep(0.5)
실시간 그래프를 위해 CSV를 Plotly에 업로드하거나 Matplotlib 같은 가벼운 라이브러리로 로컬 차트를 생성하세요.
6단계: 온도 센서로 확장 (선택 사항)
ADT7410을 I²C로 연결해 릴레이 상태와 함께 주변 온도를 기록하세요. 센서를 파이의 SDA/SCL 핀에 연결하고 주소(기본 0x48)를 설정한 뒤 16비트 온도 레지스터를 읽습니다. 판독값을 같은 로그 파일의 별도 열에 저장하세요.
온도 데이터를 확보하면 Plotly로 이중 축 차트를 만드세요: 주 축에 HVAC 상태, 보조 축에 온도를 표시해 온도조절기 작동과 주변 온도 변화를 연관 지어 분석할 수 있습니다.
이 단계를 따라 기존 온도조절기를 수정하지 않고도 그 동작을 안전하게 모니터링하고 로깅할 수 있습니다.