[아두이노] PTC 히터 제어의 핵심: Soft Start와 PID 로직의 완벽한 연동
PTC 히팅 시스템을 구축할 때 가장 많이 하는 실수가 "PID 라이브러리만 올리면 끝"이라고 생각하는 것입니다. 하지만 진정한 엔지니어링은 **초기 기동의 안전(Soft Start)**과 **정상 상태의 정밀도(PID)**를 어떻게 조율하느냐에 달려 있습니다.
1. 왜 두 로직을 연동해야 하는가?
PID의 공격성: PID 제어기는 전원을 켜는 순간 목표 온도와 현재 온도 차이가 크기 때문에 무조건 100% 출력을 내보내려 합니다.
PTC의 취약점: 차가운 PTC 히터에 100% 전력이 공급되면 저항이 낮아 **돌입 전류(Inrush Current)**가 수 배로 치솟으며 SSR에 치명적인 손상을 줍니다.
해결책: PID의 출력값을 Soft Start라는 필터로 한 번 걸러서 내보내는 '제어권 이양' 전략이 필요합니다.
2. 제어 로직 연동 설계: "바톤 터치(Baton Touch)" 알고리즘
두 로직은 별개로 노는 것이 아니라, 시간(Time) 또는 **온도(Temperature)**를 기준으로 매끄럽게 연결되어야 합니다.
[단계 1] Soft Start 구간 (가동 후 초기 5~10초)
시스템이 켜지면 아두이노는 PID 연산값보다 우선하여 **출력 한도(Output Limit)**를 강제로 설정합니다.
0초: 출력 한도 0%
2.5초: 출력 한도 50%
5초: 출력 한도 100% (완전 개방) 이 기간 동안 PID가 아무리 100%를 외쳐도, 시스템은 설정된 한도 내에서만 SSR을 구동합니다.
[단계 2] PID Control 구간 (안정기 진입 후)
히터 블럭이 예열되어 저항이 안정화되면, 이제 모든 제어권은 PID에게 넘어갑니다. 이때부터는 센서로부터 들어오는 미세한 온도 변화에 따라 전력을 0.1% 단위로 정밀하게 조절하며 목표 온도를 유지합니다.
3. [실전] 아두이노 연동 코드 구조
블로그 독자들이 자신의 프로젝트에 바로 적용해 볼 수 있는 논리 구조입니다.
// 1. PID 연산 수행
double pidOutput = myPID.compute();
// 2. 소프트 스타트 한도 계산 (가동 후 5초 동안 0~255까지 증가)
unsigned long runTime = millis() - powerOnTime;
int softLimit = map(min(runTime, 5000), 0, 5000, 0, 255);
// 3. 두 로직의 연동 (둘 중 더 작은 값 선택)
// PID가 255를 원해도 softLimit이 50이면 50만 출력됨
int finalSSRValue = min(pidOutput, softLimit);
// 4. 최종 SSR 구동
driveSSR(finalSSRValue);
4. 연동 제어의 기대 효과
하드웨어 수명 연장: SSR과 PTC 소자에 가해지는 전기적/열적 충격을 최소화합니다.
전력망 안정화: 급격한 전력 소모로 인한 주변 기기의 전압 강하(깜빡임) 현상을 방지합니다.
부드러운 온도 곡선: 급발진 없는 부드러운 가열로 오버슈트를 줄이고 시스템의 신뢰도를 높입니다.
💡 마무리하며: 소프트웨어가 만드는 '물리적 안전'
하드웨어에 바이메탈과 퓨즈라는 **'물리적 안전벨트'**를 맸다면, Soft Start와 PID 연동 로직은 **'안전 운전 시스템(ADAS)'**과 같습니다.
알루미늄 PTC 블럭의 매끄러운 표면에 밀착된 센서, 그리고 그 센서 값을 바탕으로 정교하게 짜인 이 연동 로직이 만날 때, 비로소 화재 걱정 없는 완벽한 스마트 히팅 시스템이 완성됩니다.
댓글
댓글 쓰기