[DIY 스마트팜] PLC와 Python으로 만드는 모종 발아 시스템 아이디어 노트


안녕하세요! 오늘은 산업용 자동화 기술(PLC)과 데이터 분석 언어(Python)를 결합하여, 가정에서도 전문가 수준의 환경 제어를 구현하는 스마트 모종 발아 시스템 설계법을 정리해 봅니다.

단순히 온도를 끄고 켜는 제어를 넘어, 식물 생장 모델인 ‘적산온도(GDD)’와 ‘VPD(포차)’를 적용한 고차원 제어 모델입니다.


1. 하이브리드 제어 아키텍처 (Hybrid Control Architecture)

가장 먼저 하드웨어와 소프트웨어의 역할을 명확히 나눕니다. 가성비를 위해 비싼 산업용 센서 대신 아두이노와 정밀 모듈을 활용합니다.

L0 (Sensor / Actuator)

  • 아두이노

  • SHT3x 온습도 센서

  • DS18B20 방수 온도 센서

  • 정전용량형 토양수분 센서

  • SSR

  • DC 24V 팬

  • 초음파/진동자 가습기

  • DC 24V 다이아프램 펌프 또는 연동 펌프

L1 (Control)

  • PLC

  • PID 제어

  • 시퀀스 인터록

  • 안전 로직

  • 관수 시퀀스 제어

L2 (Intelligence)

  • Python

  • VPD 계산

  • 적산온도(GDD) 추적

  • 증산량 기반 관수 보정

  • 데이터 로깅

  • 이상 패턴 분석

핵심은 PLC가 “안정성”을 담당하고, Python이 “지능형 분석”을 담당하는 구조입니다.


2. 핵심 제어 로직: VPD (Vapor Pressure Deficit)

단순 습도(%) 제어는 식물에게 큰 의미가 없습니다. 온도가 변하면 상대습도 역시 함께 변하기 때문입니다.

실제 식물은 “공기가 얼마나 수분을 더 가져갈 수 있는 상태인가”를 기준으로 반응합니다. 이를 수치화한 것이 바로 VPD(Vapor Pressure Deficit, 포차)입니다.

왜 VPD가 중요한가?

너무 낮은 VPD

  • 과습

  • 곰팡이 발생

  • 증산 억제

너무 높은 VPD

  • 과도한 건조

  • 발아 스트레스

  • 성장 저하

발아 및 초기 육묘 단계에서는 일반적으로 다음 범위를 많이 사용합니다.

  • 0.4 ~ 0.8 kPa

    • 발아 및 초기 육묘의 골든 존

    • 곰팡이 위험 감소

    • 안정적인 증산 환경 형성

Python에서 실시간으로 온도와 습도를 읽어 VPD를 계산하고, 계산 결과를 Modbus TCP로 PLC 데이터 영역(D 또는 M)에 기록합니다.

이후 PLC는 해당 값을 기준으로:

  • 환기 팬

  • 히터

  • 가습기

를 제어하여 목표 VPD 범위를 유지합니다.


3. 데이터의 응용: 적산온도 (Growing Degree Days, GDD)

이번 프로젝트의 핵심 중 하나는 적산온도(GDD) 모델입니다.

식물의 발아와 성장은 단순히 “며칠이 지났는가”가 아니라:

“유효한 온도를 얼마나 누적해서 받았는가”

에 의해 결정됩니다.

적산온도 계산식

GDD (Growing Degree Days)

GDD = Σ(Tavg - Tbase)

- Tavg  : 하루 평균 온도

- Tbase : 작물이 생장하기 시작하는 기준 온도

- 일반적으로 5°C 또는 10°C 사용

예를 들어 평균 온도가 20°C이고 기준 온도가 10°C라면 하루 GDD는 10이 누적됩니다.


4. 정밀 관수 시스템 통합 (Precision Irrigation System)

모종 시스템에서 관수는 단순한 “물주기”가 아닙니다.

PLC의 타이머 정밀도와 Python의 데이터 분석이 결합되면, 식물의 상태에 따라 물 공급량을 능동적으로 변화시키는 “정밀 관수 시스템”을 구현할 수 있습니다.


관수 하드웨어 구성

펌프

  • DC 24V 다이아프램 펌프

  • 연동 펌프(Peristaltic Pump)

특히 연동 펌프는 토출량이 매우 일정하여:

  • mL 단위 관수

  • 시간 기반 정량 제어

  • 정밀 배출 제어

에 매우 유리합니다.

PLC 타이머와 조합하면:

  • “5초 동작 = 20mL”

  • “10초 동작 = 40mL”

처럼 정량 관수 모델을 만들 수 있습니다.


배출형 관수 모델 (Drain-to-Waste)

실무에서는 단순 급수보다:

“배출(Drain)까지 고려한 관수 모델”

이 훨씬 중요합니다.

관수 후 일부 물이 배출되도록 설계하면:

  • 염류 축적 방지

  • 과습 방지

  • 산소 공급 개선

  • 뿌리 활성 증가

효과를 얻을 수 있습니다.

이를 위해 모종 트레이 하단에는 반드시:

  • 배수층

  • 드레인 홀

  • 배출 수로

를 설계하는 것이 좋습니다.

PLC에서는 다음과 같은 시퀀스를 구성할 수 있습니다.

  1. 관수 펌프 ON

  2. 목표 시간 도달

  3. 배수 대기 시간

  4. 드레인 팬 동작

  5. 토양 수분 안정화 확인

이 구조는 실제 스마트팜 양액 시스템에서도 자주 사용되는 방식입니다.


노즐 선택

모종 단계에서는 강한 물줄기가 흙을 파내므로:

  • 저압 미스트 노즐

  • 점적 단추

  • 미세 분사 노즐

이 유리합니다.

특히 초기 발아 단계에서는 “미세 분무 + 짧은 주기”가 안정적입니다.


5. 제어 모델: 시간 기반 vs 센서 기반

1) 시간 기반 관수 (Time-based)

가장 단순하면서도 안정적인 방식입니다.

예시:

  • 6시간마다 10초 관수

  • 낮 시간대만 관수

  • 야간 관수 제한

PLC 타이머만으로 구현 가능하며, 초기 구축 시 매우 유용합니다.


2) 함수율 기반 관수 (Sensor-based)

정전용량형 토양수분 센서를 활용하여 실제 상토의 함수율(VWC)을 기반으로 제어합니다.

여기서 중요한 점:

저가형 저항식 수분 센서는 빠르게 부식되므로 반드시 정전용량형(Capacitive) 센서를 사용하는 것이 좋습니다.

예시 로직:

  • 함수율 35% 이하 → 관수 시작

  • 함수율 45% 도달 → 관수 종료

이 방식은 과습 방지에 매우 효과적입니다.


6. Python 응용: 증산량 기반 관수

가장 고급 단계의 제어 방식입니다.

단순히 “흙이 마르면 물을 준다”가 아니라:

“식물이 오늘 얼마나 물을 소비했는가”

를 계산하여 관수량을 동적으로 조절합니다.


VPD 기반 관수 보정

VPD가 높다는 것은 식물의 증산량이 증가했다는 의미입니다.

따라서 Python에서는:

  • 오늘 평균 VPD

  • 최대 VPD

  • 누적 증산 스트레스

를 계산한 뒤 PLC에 보정값을 전달할 수 있습니다.

예시:

  • 오늘 VPD 높음
    → 관수 시간 20% 증가

  • 흐리고 습한 날
    → 관수 시간 15% 감소

이 보정값은 PLC의 D 레지스터에 기록되어 실시간으로 반영됩니다.


적산온도 기반 성장 가변형 관수

적산온도가 증가하면 식물의 잎 면적과 증산량도 함께 증가합니다.

즉:

  • 어린 모종
    → 적은 물

  • 성장한 모종
    → 많은 물

이 필요합니다.

Python은 적산온도를 기반으로 성장 단계를 추정하고, PLC의 관수 목표값을 자동으로 조정할 수 있습니다.


7. 안전 로직 (Interlock)

관수 시스템은 사고 발생 시:

  • 수조 고갈

  • 펌프 공회전

  • 침수

  • 과습

등의 문제가 발생할 수 있습니다.

PLC 엔지니어라면 반드시 인터록을 넣어야 합니다.


최대 가동 시간 제한 (Watchdog)

어떤 이유로든 펌프가 장시간 동작하면:

  • PLC 강제 정지

  • 알람 발생

  • 수동 복귀 요구

를 수행합니다.

예시:

  • 펌프 60초 이상 동작 시 강제 차단


수위 센서 연동

공급 수조의 물이 부족하면:

  • 펌프 정지

  • 알람 출력

  • 관수 금지 인터록

을 수행하여 공회전을 방지합니다.


야간 관수 제한

야간에는 증산량이 크게 감소합니다.

따라서:

  • 관수 주기 증가

  • 관수량 감소

  • 심야 관수 차단

등의 로직을 넣으면 습해와 곰팡이 발생을 줄일 수 있습니다.


8. 실전 구축 팁 (Engineer’s Note)

환기 로직은 반드시 별도로 넣어라

습도 센서 값이 정상이어도 공기가 정체되면 곰팡이가 발생합니다.

따라서 PLC에는 반드시:

  • 10분마다 1분 환기

  • 30분마다 강제 순환

같은 플리커(Flicker) 환기 로직을 추가하는 것이 좋습니다.


지온(Soil Temperature)을 기준으로 제어하라

모종은 공기 온도보다:

“상토 내부 온도”

에 훨씬 민감합니다.

따라서 방수형 DS18B20 센서를 상토 내부에 삽입하고:

  • 지온 기준 PID 제어

  • 히터 ON/OFF

  • 바닥 열선 제어

를 수행하는 것이 훨씬 안정적입니다.


데이터는 반드시 시각화하라

Python으로 수집한 데이터를:

  • Grafana

  • InfluxDB

  • SQLite

  • PostgreSQL

등과 연동하면 스마트폰에서도 실시간 모니터링이 가능합니다.

특히 다음 데이터를 함께 보면 매우 유용합니다.

  • VPD 변화

  • 지온 변화

  • 적산온도 누적량

  • 함수율(VWC)

  • 관수량 변화

  • 펌프 동작 패턴

  • 배출량(Drain) 변화

이 데이터는 추후:

  • 자동 최적화

  • AI 기반 성장 예측

  • 스마트팜 사업화

로 확장 가능한 강력한 자산이 됩니다.

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

[PLC] 센서 NPN, PNP 출력 타입별 결선방법 (OMRON E2E-X 시리즈 3선식 배선)

NPN, PNP 트랜지스터 차이점

[PLC] PLC 아날로그 입출력 기본

[PLC] 릴레이와 전자 접촉기 (MC)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

[PLC] 서보 모터 브레이크 결선, 왜 릴레이 터미널을 써야 할까?

[투자] ETF 투자 가이드 : 카테고리별 ETF 선택 전략

사각형의 넓이 공식의 증명