[DIY 스마트팜] 외란에 무적이라는 ‘캐스케이드(Cascade) 이중 루프 제어’, 완벽 이해하기

자동화 현장이나 플랜트 공정 제어를 설계하다 보면 반드시 마주치는 숙제가 있습니다. 바로 "외란(Disturbance)을 어떻게 잡을 것인가?" 입니다. 가장 흔하게 쓰는 일반 PID 제어(싱글 루프)는 구조가 단순해서 좋지만, 시스템에 시간 지연(Delay)이 있거나 갑작스러운 외부 충격(외란)이 들이치면 뒤북을 치며 출렁이기 쉽습니다. 이때 제어공학에서 꺼내 드는 마스터키가 바로 캐스케이드(Cascade) 제어 , 즉 이중 루프(Dual-loop) 제어 입니다. 오늘은 이 캐스케이드 제어가 왜 외란에 강한지, 그리고 실제 현장에서 어떻게 구현하는지 아주 쉽게 정리해 보겠습니다. 1. 캐스케이드 제어란? (반장과 행동대장 구조) 일반 PID 제어는 제어기 하나가 센서 하나만 바라보며 히터나 밸브를 혼자서 다 조절합니다. 혼자서 다 하려니 느리고 버거울 수밖에 없습니다. 반면 캐스케이드 제어는 PID 루프 2개를 직렬(종속) 구조로 연결 합니다. 즉: 위쪽 루프 = 최종 목표 관리 아래쪽 루프 = 현장 실무 처리 로 역할을 분리하는 방식입니다. ■ 마스터 PID (Master / Outer Loop) 역할: 최종 관리자 반장 역할 감시 대상: 우리가 진짜 지키고 싶은 값 예: 챔버 내부 식물 주변 온도 행동: 최종 온도를 보고 슬레이브에게 명령함 예시: "지금 챔버가 식었으니까 열풍 온도를 60도로 올려!" 즉, 마스터 PID의 출력값은 "히터 출력"이 아니라 "슬레이브 PID의 목표 온도(Setpoint)"가 됩니다. ■ 슬레이브 PID (Slave / Inner Loop) 역할: 현장 행동대장 작업반장 역할 감시 대상: 히터 바로 앞 열풍 출구 온도 밸브 직전 압력 등 행동: 마스터가 지시한 목표치를 초고속으로 맞춤 즉: 실제 PWM SSR 밸브 개도율 같은 물리 출력은 슬레이브가 담당합니다. 2. 챔버 문이 열렸다! 외란 시나리오로 보는 차이점 겨울철 챔버를 생각해 보겠습니다. 챔버...

[DIY 스마트팜] 서미스터(Thermistor)의 비선형성과 스테인하트-하트(Steinhart–Hart) 방정식 이해

이미지
에어컨, 자동차, 배터리 팩, 스마트팜 환경 제어기 등에는 대부분 서미스터(Thermistor)가 들어갑니다. 서미스터는 매우 저렴하면서도 온도 변화에 민감하기 때문에 산업 현장과 DIY 프로젝트에서 엄청나게 많이 사용됩니다. 하지만 실제로 사용해보면 한 가지 문제가 있습니다. 바로: 온도와 저항의 관계가 직선이 아니라는 점 입니다. 1. 서미스터란? 서미스터(Thermistor)는: Thermal (열) Resistor (저항기) 의 합성어입니다. 즉: 온도에 따라 저항값이 크게 변하는 반도체 기반 수동 소자 입니다. 특히 NTC 서미스터가 온도 측정용으로 가장 많이 사용됩니다. NTC (Negative Temperature Coefficient) 온도 상승 → 저항 감소 예시: 25°C → 10kΩ 50°C → 수 kΩ 수준으로 감소 처럼 변화합니다. 2. 왜 서미스터는 민감할까? RTD(Pt100)는 비교적 선형적으로 변합니다. 반면 NTC 서미스터는: 낮은 온도에서는 저항이 매우 크고 높은 온도에서는 급격히 감소 합니다. 즉: 아주 작은 온도 변화에도 저항 변화량이 매우 큼 이라는 특징이 있습니다. 그래서: 저가형 정밀 온도 측정 배터리 온도 감시 HVAC 스마트팜 전원부 보호회로 등에서 엄청나게 많이 사용됩니다. 3. 서미스터의 가장 큰 문제: 비선형성 서미스터는: 온도 변화량과 저항 변화량이 직선 관계가 아닙니다. 즉: 단순한 1차 함수로 계산 불가능 강한 곡선 형태를 가짐 입니다. 예를 들어: 20°C → 25°C 변화와 70°C → 75°C 변화의 저항 감소 폭이 전혀 다릅니다. 4. 스테인하트-하트(Steinhart–Hart) 방정식 이 문제를 해결하기 위해 가장 널리 쓰이는 모델이 바로 아래 식입니다. 1/T = A + B·ln(R) + C·(ln(R))^3 의미: T = 절대온도(K) R = 서미스터 저항값(Ω) A, B, C = 제조사 계수 핵심은: 로그(Log)가 들어간다는 것 입니다. 이 로그 항 덕분에 비선형 곡선을 현실적으로 매우 ...

[스마트팜] RTD(측온저항체)의 원리와 실무 이야기

이미지
온실 환경 제어, 반도체 장비, 정밀 공정 제어 같은 산업 현장에서는 “정확한 온도 측정”이 시스템 품질을 결정합니다. 그리고 이런 현장에서 오랫동안 표준처럼 사용되어 온 센서가 바로 RTD(Resistance Temperature Detector, 측온저항체)입니다. 특히 PLC 엔지니어라면 한 번쯤은 반드시 만나게 되는 센서가 바로 PT100입니다. 오늘은 RTD가 왜 그렇게 신뢰받는지, 그리고 실제 제어 시스템에서는 어떤 원리로 동작하는지 정리해보겠습니다. RTD란 무엇인가? RTD는 온도 변화에 따라 저항값이 변하는 센서입니다. 온도가 올라가면 저항도 증가합니다. 가장 중요한 특징은 다음입니다. 온도와 저항 사이의 관계가 매우 안정적이다 반복 측정 시 재현성이 뛰어나다 시간이 지나도 특성이 거의 변하지 않는다 즉, “이번에 측정한 30°C”와 “1년 뒤 측정한 30°C”가 거의 동일하게 유지된다는 뜻입니다. 이 특성 때문에 RTD는 산업 현장에서 “신뢰 가능한 기준 온도 센서”처럼 사용됩니다. RTD는 스스로 전압을 만들지 못한다 여기서 열전대(Thermocouple)와 RTD의 가장 큰 차이가 등장합니다. 열전대는 온도차에 의해 스스로 전압을 생성하는 능동 소자(active device)입니다. (<= 관점에 따라 수동 소자로 분류되기도 함) 반면 RTD는 단순히 저항값만 변하는 수동 소자(passive device)입니다. 즉, RTD는 혼자서는 아무것도 출력하지 못합니다. 그래서 PLC 아날로그 입력 카드나 온도 모듈에서는 반드시 다음 과정을 수행해야 합니다. RTD에 아주 작은 전류를 흘린다 센서 양단의 전압을 측정한다 옴의 법칙으로 저항값을 계산한다 저항값을 온도로 변환한다 즉, 실제로 PLC는 “온도”를 직접 읽는 것이 아니라: 전류를 흘리고 전압을 읽고 저항을 계산한 뒤 테이블이나 공식으로 온도를 환산하는 것 입니다. RTD의 핵심은 “정전류(Constant Current)”이다 RTD 측정에서 가장 중요한 것은 일정한 전류를 유지하는...

[스마트팜] 열전대(Thermocouple)의 모순과 냉접점 보상(CJC)의 작동 원리

이미지
산업 현장이나 스마트팜 고온 제어에서 가장 흔하게 쓰이는 센서가 바로 열전대(Thermocouple)입니다. 구조가 단순해 무식할 정도로 튼튼하고, 1000°C가 넘는 극한 환경도 거뜬히 버티기 때문입니다. 하지만 이 센서에는 치명적인 모순이 하나 있습니다. 바로 "온도를 측정하기 위해, 제어기 내부에 또 다른 온도 센서가 필요하다"는 점입니다. 왜 이런 독특한 구조를 가지게 되었는지, 그리고 제어의 핵심인 냉접점 보상(CJC)의 필요성을 핵심만 작동 원리 위주로 정리해 봅니다. 1. 열전대의 본질: "나는 절대 온도를 모른다" 우리가 흔히 쓰는 일반적인 센서들은 "지금 여기가 정확히 몇 도다"라는 절대적인 값을 알려줍니다. 하지만 열전대는 작동 원리인 제베크 효과(Seebeck Effect)로 인해 전혀 다른 방식으로 움직입니다. 서로 다른 두 금속 선의 양끝을 붙이고 한쪽에 열을 가하면 미세한 전압(mV)이 발생하는데, 이 전압은 오직 "센서 앞단과 뒷단의 온도 차이"에 의해서만 결정됩니다. 측정 접점(Hot Junction): 보일러 내부나 온실 수조 등, 우리가 진짜 측정하고 싶은 센서의 뾰족한 끝부분입니다. 기준 접점 / 냉접점(Cold Junction): 센서 선이 끝나고 PLC 아날로그 입력 카드나 변환 모듈(예: MAX6675)의 나사 단자에 물리는 지점입니다. 즉, 열전대가 제어기로 보내는 신호는 "지금 현장이 500°C입니다"가 아니라, "지금 현장이랑 제어기 단자대 사이에 480°C만큼의 온도 차이가 납니다"라는 상대적인 정보일 뿐입니다. 2. 냉접점 보상(CJC)이 왜 필요할까? 이 상태에서 제어실(또는 PLC 판넬 내부)의 온도가 변하면 치명적인 문제가 발생합니다. 실제 현장(측정 접점) 온도가 500°C로 일정하다고 가정해 봅시다. 상황 A (봄): 제어실 온도가 20°C입니다. 두 곳의 차이는 480°C이므로 센서는 이에 맞는 ...

[아두이노] I²C는 어떻게 데이터와 ACK를 구분할까? (클럭 기반 상태 머신의 이해)

I²C를 공부하다 보면 많은 사람들이 한 번쯤 이런 의문을 가집니다. "ACK도 그냥 1비트인데, 데이터 비트와 어떻게 구분하지?" 예를 들어 I²C는: 8비트 데이터 + ACK/NACK 1비트 구조로 동작합니다. 그런데 버스에는 결국: SDA(Data) SCL(Clock) 두 선밖에 없습니다. 즉 전압만 보면: 0인지 1인지 밖에 안 보입니다. 그렇다면 MCU는 어떻게: 데이터 ACK START STOP 을 구분하는 걸까요? 오늘은 I²C 프로토콜의 핵심인: 클럭 기반 상태 머신(State Machine) 관점으로 정리해보겠습니다. 1. I²C는 "값"보다 "타이밍"이 중요하다 초보자는 흔히 이렇게 생각합니다. "ACK는 특별한 전압값인가?" 하지만 아닙니다. ACK도 단순한 1비트입니다. 핵심은: 언제 나타났는가 입니다. 즉 I²C는: 비트 값 자체보다 클럭 타이밍이 더 중요 합니다. 2. I²C는 동기식 통신이다 I²C에는 두 선이 있습니다. 선 역할 SDA 데이터 SCL 클럭 그리고 모든 장치는: SCL을 기준으로 동작 합니다. 즉: 몇 번째 클럭인가? 를 계속 추적합니다. 3. ACK는 항상 9번째 클럭 I²C 규칙은 매우 엄격합니다. 클럭 번호 의미 1~8 데이터 9 ACK/NACK 즉: 1~8번째 클럭: 데이터 비트 9번째 클럭: 응답 비트 입니다. 그래서 MCU는: "지금 9번째 클럭이네? 그럼 ACK 슬롯이구나" 라고 판단합니다. 즉: 값이 아니라 위치로 구분 합니다. 4. 실제 흐름 예시 예를 들어: 10110010 를 전송한다고 해봅시다. 그러면 실제 버스 흐름은: 클럭 1 → 1 클럭 2 → 0 클럭 3 → 1 클럭 4 → 1 클럭 5 → 0 클럭 6 → 0 클럭 7 → 1 클럭 8 → 0 클럭 9 → ACK/NACK 입니다. 즉 마지막 9번째 클럭은: 무조건 ACK 전용 슬롯 입니다. 5. ACK는 누가 만드는가? 여기서 중요한 점이 있습니다. I...

[아두이노] I2C센서 데이터시트를 읽고 직접 코딩하는 방법 (Wire 라이브러리의 진짜 의미)

아두이노로 I²C 센서를 사용할 때 많은 사람들이 먼저 라이브러리를 설치합니다. 하지만 실무나 디버깅 단계로 들어가면 결국 반드시 만나게 되는 것이 있습니다. 바로: 센서 데이터시트(Datasheet) 입니다. 오늘은 단순히 "코드를 복붙하는 방법"이 아니라, I²C가 실제로 어떻게 동작하는지 데이터시트를 어떻게 읽는지 그 내용을 어떻게 Wire 코드로 변환하는지 를 하나씩 연결해서 정리해보겠습니다. 1. I²C 센서는 왜 데이터시트가 중요한가? I²C는 단순히: "주소로 장치를 선택해서 데이터 주고받는 통신" 정도로 알려져 있습니다. 하지만 실제 센서는 내부에 여러 레지스터(Register)를 가지고 있습니다. 예를 들어 온도 센서 내부에는: Register 의미 0x00 Temperature 0x01 Configuration 0x02 Alarm Threshold 같은 구조가 들어있습니다. 즉 MCU는 단순히: "온도 줘" 라고 말하는 것이 아니라, "0x00 레지스터의 데이터를 읽겠다" 라고 정확히 지정해야 합니다. 이 정보는 전부 데이터시트에 적혀 있습니다. 2. 데이터시트에서 가장 먼저 보는 것 I²C 센서 데이터시트를 열면 가장 먼저 찾는 것은: 1. I²C Address 2. Register Map 3. Read/Write Timing 입니다. 3. I²C Address 읽기 예제 코드: int temp_address = 72; 여기서 72는 10진수입니다. 16진수로는: 0x48 입니다. 그리고 이진수로는: 1001000 입니다. 데이터시트에는 보통 이렇게 나옵니다. Slave Address = 1001000 이것이 센서의 I²C 주소입니다. 4. 데이터시트의 핵심: Read Byte Format 많은 I²C 센서 데이터시트에는 아래 같은 타이밍 다이어그램이 나옵니다. S Address WR ACK Command ACK S Address RD ACK Data NACK P 처음 ...

[DIY 스마트팜] 지렁이 상토/액비 생산 시스템 구축 아이디어

  생활형 순환 스마트팜을 위한 환경 제어 모델 안녕하세요. 이번 글에서는 단순 퇴비통이 아니라, 실내 육묘 시스템과 연계 가능한: 지렁이 상토 생산 액비(Vermi Tea) 생성 함수율 제어 환경 모니터링 까지 포함한 소형 자동화 시스템을 정리해봅니다. 특히 PLC 엔지니어 관점에서: 함수율 환기 액비 체류 시간 발효 안정성 을 어떻게 관리할 것인지에 초점을 맞췄습니다. 1. 시스템 목표 이번 시스템의 핵심 목표는 다음과 같습니다. 사용 후 코코피트 재활용 지렁이 분변토 생산 저농도 액비 생성 냄새/혐기화 최소화 실내 육묘 시스템과 연계 2. 전체 시스템 구조 입력(Input) 사용 후 코코피트 식물 잔사 마른 종이류 소량의 유기물 ↓ 처리(Process) 지렁이 분해 미생물 활성 함수율 유지 약한 환기 ↓ 출력(Output) 지렁이 분변토 Vermi Tea 액비 3. 환경 모델(Environment Model) 지렁이 시스템은 사실: "미생물 환경 제어" 에 가깝습니다. 중요한 환경 변수는 다음과 같습니다. 핵심 변수 항목 목표 범위 함수율 60~80% 온도 18~28°C 산소 상태 약한 호기성 액비 체류 시간 짧게 환기 약한 지속 환기 왜 중요한가? 지렁이 시스템이 실패하는 가장 큰 이유는: 과습 혐기화 정체 입니다. 즉: "산소 공급" 이 핵심입니다. 4. 추천 하드웨어 구조 센서 SHT30 (온습도) Capacitive Soil Sensor DS18B20 (베드 내부 온도) 액추에이터 DC 24V 팬 소형 펌프 배출 솔레노이드 밸브 제어 장치 PLC Python PC/Raspberry Pi 5. 제어 프로세스(Control Process) 기본 철학 "짧게 공급하고 빠르게 배출" 입니다. 함수율 제어 프로세스 함수율 측정 목표 함수율 이하 확인 분무/급수 일정 시간 유지 자동 배출 약한 환기 PLC 시퀀스 예시 STEP 1: 함수율 LOW 감지 ↓ STEP 2: 펌프 ON (10초) ↓ STEP 3...