산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

가스 온수기 파일럿 라이트 감시 시스템 – 열전대 전압 모니터링으로 안전 확보

필요한 부품 및 소모품

부품 수량 비고
라즈베리 파이 제로 WH 1 알림 발송용 (WiFi 내장)
아두이노 나노 R3 1 열전대 전압 측정용 (ADC 내장)

프로젝트 개요

가스 온수기의 파일럿 라이트가 간헐적으로 꺼지는 문제(연 3회 내외)를 해결하기 위해 열전대가 생성하는 미세 전압(최대 30mV)을 모니터링합니다. 전압이 0에 가까워지면 파일럿 라이트가 꺼진 것으로 판단해 이메일/문자 알림을 보냅니다. 가스 밸브는 열전대 전압이 떨어지면 자동 차단되므로 가스 누출 위험은 없습니다.

시스템 아키텍처

단계별 구현

1. 라즈베리 파이 준비

OS 설치, 네트워크 연결, 파이썬 알림 프로그램 작성 (소스 코드 참조). Gmail 앱 비밀번호 사용 권장 (일반 비밀번호는 보안 정책상 차단될 수 있음).

2. 아두이노 준비

중국산 나노 보드 드라이버(CH340 등) 설치 후 스케치 업로드. analogReference(INTERNAL)로 1.1V 레퍼런스 설정. A0 핀으로 열전대 전압 읽기.

3. 열전대 선 연결

온수기 써모스탯으로 가는 동축 케이블을 써모스탯에서 약 5인치 지점에서 절단. 외부 차폐선(양극)을 살짝 벗겨 중앙 도체(음극)와 쇼트 나지 않게 주의하며 아두이노 A0와 GND에 연결. 악어 클립 활용 권장.

4. 아두이노-라즈베리 파이 간 레벨 시프팅

아두이노 출력(5V) → 라즈베리 파이 입력(3.3V) 위해 전압 분할기 필요. 예: 330Ω + 220Ω 직렬 연결, 중간 점을 라즈베리 파이 GPIO 16번(BCM)에 연결. 모든 GND 공통 연결 필수.

5. 아두이노 시그널링 프로토콜

ADC 값(0~1023)을 두 자리 10진수로 전송. 각 자릿수마다 펄스 수로 인코딩:
- 킥오프 펄스 1개 + 자릿수 값만큼 펄스 추가 (자릿수 내 펄스 간격 20ms HIGH + 20ms LOW)
- 자릿수 간 50ms 대기
- 예: 값 12 → 킥오프 + 1펄스(십의 자리) + 50ms + 킥오프 + 2펄스(일의 자리)

6. 라즈베리 파이 수신 및 판정 로직

GPIO 16번 라이징 에지 감지 루프. 펄스 간격 70ms 미만이면 같은 자릿수, 70ms~200ms면 다음 자릿수, 200ms 초과면 숫자 완료로 판정. 수신 값 × 1.1V / 1023으로 전압 환산.

7. 알림 발송 조건

8. 자동 실행 설정

부팅 시 파이썬 스크립트 자동 실행 위해 크론탭 등록:

@reboot sh /home/pi/hotwater/run_HotWaterNotifier.sh >> /home/pi/hotwater/logs/HotWaterNotifier.log 2>&1

수동 실행 시: ./run_HotWaterNotifier.sh → Ctrl+Z → bg → disown

소스 코드

아두이노 스케치 (핵심부)

double ReferenceVoltage = 1.1;
int OUTPUT_PIN = 9;
int INTRA_DIGIT_WAIT = 20;
int BETWEEN_DIGIT_WAIT = 50;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(OUTPUT_PIN, OUTPUT);
  analogReference(INTERNAL);
  Serial.begin(9600);
}

void loop() {
  int pinInput = analogRead(A0);
  double voltage = (pinInput * ReferenceVoltage) / 1023.0;
  sendNumberSignal(pinInput, OUTPUT_PIN, INTRA_DIGIT_WAIT, BETWEEN_DIGIT_WAIT);
  delay(30000); // 30초 주기
}

// sendNumberSignal, sendPulse 함수 구현 생략 (원문 참조)

파이썬 알림 프로그램 (핵심부)

import RPi.GPIO as GPIO, smtplib, datetime, logging, time

GPIO_Alert = 16
lowSensorReading = 1
maxLowVoltageCount = 5
emailWaitHours = 6

def waitReceiveNumber(pin):
    # 라이징 에지 기반 펄스 카운팅으로 2자리 숫자 수신
    # 구현 생략 (원문 참조)
    return decoded_number

def send_email_alert():
    # Gmail SMTP + 앱 비밀번호로 이메일/문자 발송
    # 구현 생략 (원문 참조)
    pass

def main():
    lowVoltageCount = 0
    while True:
        sensorReading = waitReceiveNumber(GPIO_Alert)
        voltage = (sensorReading * 1.1) / 1023.0
        if sensorReading <= lowSensorReading:
            lowVoltageCount += 1
            if lowVoltageCount >= maxLowVoltageCount:
                send_email_alert()
                lowVoltageCount = 0
        else:
            lowVoltageCount = 0

if __name__ == "__main__":
    main()

실행 스크립트 (run_HotWaterNotifier.sh)

#!/bin/bash
cd /home/pi/hotwater
sudo python HotWaterNotifier.py

설치 사진

아두이노-라즈베리 파이 연결부, 전압 분할기, 열전대 탭 연결부 등 실물 사진 참조.

제조공정

  1. 홈 에너지 센터: 라즈베리 파이와 Moteino로 태양광 PV, 열 패널, 실내 온도 모니터링
  2. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  3. 아두이노로 태양광 패널 실시간 모니터링 - 저비용 데이터 수집 시스템
  4. 아두이노 나노로 물방울 고속 촬영하기 – DIY 하이스피드 포토그래피
  5. 아두이노 에너지 모니터 & 데이터 로거 만들기 – Dr. Wattson 보드 활용
  6. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  7. 아두이노 듀(Due) + 3.2″ TFT로 만드는 실시간 시계 & 온도 모니터
  8. 최적의 히트펌프 온수기: 에너지 효율적인 온수 솔루션
  9. 가정용 온수 순환 펌프(국내 온수 펌프) 선택 전문가 팁 & 가이드
  10. 온수 순환 펌프 핵심 가이드: 작동 원리·종류·에너지 절약 팁